package metrics_test import ( "testing" kitmetrics "github.com/go-kit/kit/metrics" "github.com/stretchr/testify/require" tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/0glabs/0g-chain/app" "github.com/0glabs/0g-chain/x/metrics" "github.com/0glabs/0g-chain/x/metrics/types" ) type MockGauge struct { value float64 } func (mg *MockGauge) With(labelValues ...string) kitmetrics.Gauge { return mg } func (mg *MockGauge) Set(value float64) { mg.value = value } func (*MockGauge) Add(_ float64) {} func ctxWithHeight(height int64) sdk.Context { tApp := app.NewTestApp() tApp.InitializeFromGenesisStates() return tApp.NewContext(false, tmproto.Header{Height: height}) } func TestBeginBlockEmitsLatestHeight(t *testing.T) { gauge := MockGauge{} myMetrics := &types.Metrics{ LatestBlockHeight: &gauge, } metrics.BeginBlocker(ctxWithHeight(1), myMetrics) require.EqualValues(t, 1, gauge.value) metrics.BeginBlocker(ctxWithHeight(100), myMetrics) require.EqualValues(t, 100, gauge.value) metrics.BeginBlocker(ctxWithHeight(17e6), myMetrics) require.EqualValues(t, 17e6, gauge.value) }