added TestGetEpochBounds
This commit is contained in:
parent
76755da9f3
commit
dadf7ec668
|
@ -281,7 +281,6 @@ func main() {
|
||||||
ctx, cancel := context.WithCancel(ctx)
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
go slotWatcher.WatchSlots(ctx, collector.slotPace)
|
go slotWatcher.WatchSlots(ctx, collector.slotPace)
|
||||||
go collector.WatchHealth(context.Background())
|
|
||||||
|
|
||||||
prometheus.MustRegister(collector)
|
prometheus.MustRegister(collector)
|
||||||
http.Handle("/metrics", promhttp.Handler())
|
http.Handle("/metrics", promhttp.Handler())
|
||||||
|
|
|
@ -178,6 +178,12 @@ func (c *staticRPCClient) GetBlock(
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//goland:noinspection GoUnusedParameter
|
||||||
|
func (c *staticRPCClient) GetHealth(ctx context.Context) (*string, error) {
|
||||||
|
health := "ok"
|
||||||
|
return &health, nil
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
===== DYNAMIC CLIENT =====:
|
===== DYNAMIC CLIENT =====:
|
||||||
*/
|
*/
|
||||||
|
@ -373,6 +379,12 @@ func (c *dynamicRPCClient) GetBlock(
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//goland:noinspection GoUnusedParameter
|
||||||
|
func (c *dynamicRPCClient) GetHealth(ctx context.Context) (*string, error) {
|
||||||
|
health := "ok"
|
||||||
|
return &health, nil
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
===== OTHER TEST UTILITIES =====:
|
===== OTHER TEST UTILITIES =====:
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -205,7 +205,7 @@ func (c *SlotWatcher) WatchSlots(ctx context.Context, pace time.Duration) {
|
||||||
// and updates the prometheus gauges associated with those metrics.
|
// and updates the prometheus gauges associated with those metrics.
|
||||||
func (c *SlotWatcher) trackEpoch(ctx context.Context, epoch *rpc.EpochInfo) {
|
func (c *SlotWatcher) trackEpoch(ctx context.Context, epoch *rpc.EpochInfo) {
|
||||||
klog.Infof("Tracking epoch %v (from %v)", epoch.Epoch, c.currentEpoch)
|
klog.Infof("Tracking epoch %v (from %v)", epoch.Epoch, c.currentEpoch)
|
||||||
firstSlot, lastSlot := getEpochBounds(epoch)
|
firstSlot, lastSlot := GetEpochBounds(epoch)
|
||||||
// if we haven't yet set c.currentEpoch, that (hopefully) means this is the initial setup,
|
// if we haven't yet set c.currentEpoch, that (hopefully) means this is the initial setup,
|
||||||
// and so we can simply store the tracking numbers
|
// and so we can simply store the tracking numbers
|
||||||
if c.currentEpoch == 0 {
|
if c.currentEpoch == 0 {
|
||||||
|
@ -393,12 +393,6 @@ func (c *SlotWatcher) fetchAndEmitSingleBlockInfo(
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// getEpochBounds returns the first slot and last slot within an [inclusive] Epoch
|
|
||||||
func getEpochBounds(info *rpc.EpochInfo) (int64, int64) {
|
|
||||||
firstSlot := info.AbsoluteSlot - info.SlotIndex
|
|
||||||
return firstSlot, firstSlot + info.SlotsInEpoch - 1
|
|
||||||
}
|
|
||||||
|
|
||||||
// fetchAndEmitInflationRewards fetches and emits the inflation rewards for the configured inflationRewardAddresses
|
// fetchAndEmitInflationRewards fetches and emits the inflation rewards for the configured inflationRewardAddresses
|
||||||
// at the provided epoch
|
// at the provided epoch
|
||||||
func (c *SlotWatcher) fetchAndEmitInflationRewards(ctx context.Context, epoch int64) error {
|
func (c *SlotWatcher) fetchAndEmitInflationRewards(ctx context.Context, epoch int64) error {
|
||||||
|
|
|
@ -106,7 +106,7 @@ func TestSolanaCollector_WatchSlots_Static(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
time.Sleep(1 * time.Second)
|
time.Sleep(1 * time.Second)
|
||||||
|
|
||||||
firstSlot, lastSlot := getEpochBounds(&staticEpochInfo)
|
firstSlot, lastSlot := GetEpochBounds(&staticEpochInfo)
|
||||||
type testCase struct {
|
type testCase struct {
|
||||||
expectedValue float64
|
expectedValue float64
|
||||||
metric prometheus.Gauge
|
metric prometheus.Gauge
|
||||||
|
|
|
@ -113,3 +113,9 @@ func CombineUnique[T comparable](args ...[]T) []T {
|
||||||
}
|
}
|
||||||
return uniqueItems
|
return uniqueItems
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetEpochBounds returns the first slot and last slot within an [inclusive] Epoch
|
||||||
|
func GetEpochBounds(info *rpc.EpochInfo) (int64, int64) {
|
||||||
|
firstSlot := info.AbsoluteSlot - info.SlotIndex
|
||||||
|
return firstSlot, firstSlot + info.SlotsInEpoch - 1
|
||||||
|
}
|
||||||
|
|
|
@ -56,3 +56,10 @@ func TestGetAssociatedVoteAccounts(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, votekeys, voteAccounts)
|
assert.Equal(t, votekeys, voteAccounts)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetEpochBounds(t *testing.T) {
|
||||||
|
epoch := rpc.EpochInfo{AbsoluteSlot: 25, SlotIndex: 5, SlotsInEpoch: 10}
|
||||||
|
first, last := GetEpochBounds(&epoch)
|
||||||
|
assert.Equal(t, int64(20), first)
|
||||||
|
assert.Equal(t, int64(29), last)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue