diff --git a/peers/app_request_network.go b/peers/app_request_network.go index f36d4028..4068512f 100644 --- a/peers/app_request_network.go +++ b/peers/app_request_network.go @@ -56,7 +56,7 @@ type appRequestNetwork struct { infoAPI *InfoAPI logger logging.Logger lock *sync.Mutex - validatorClient *validators.CanonicalValidatorClient + validatorClient validators.CanonicalValidatorClient metrics *AppRequestNetworkMetrics } diff --git a/peers/validators/canonical_validator_client.go b/peers/validators/canonical_validator_client.go index 324b4d07..14a55b3b 100644 --- a/peers/validators/canonical_validator_client.go +++ b/peers/validators/canonical_validator_client.go @@ -1,6 +1,8 @@ // Copyright (C) 2023, Ava Labs, Inc. All rights reserved. // See the file LICENSE for licensing terms. +//go:generate mockgen -source=$GOFILE -destination=./mocks/mock_canonical_validator_client.go -package=mocks + package validators import ( @@ -16,43 +18,47 @@ import ( "go.uber.org/zap" ) -var _ validators.State = &CanonicalValidatorClient{} +type CanonicalValidatorClient interface { + validators.State + + GetBlockByHeight(context.Context, uint64) ([]byte, error) +} // CanonicalValidatorClient wraps platformvm.Client and implements validators.State -type CanonicalValidatorClient struct { +type canonicalValidatorClient struct { logger logging.Logger client platformvm.Client options []rpc.Option } -func NewCanonicalValidatorClient(logger logging.Logger, apiConfig *config.APIConfig) *CanonicalValidatorClient { +func NewCanonicalValidatorClient(logger logging.Logger, apiConfig *config.APIConfig) CanonicalValidatorClient { client := platformvm.NewClient(apiConfig.BaseURL) options := utils.InitializeOptions(apiConfig) - return &CanonicalValidatorClient{ + return &canonicalValidatorClient{ logger: logger, client: client, options: options, } } -func (v *CanonicalValidatorClient) GetMinimumHeight(ctx context.Context) (uint64, error) { +func (v *canonicalValidatorClient) GetMinimumHeight(ctx context.Context) (uint64, error) { return v.client.GetHeight(ctx, v.options...) } -func (v *CanonicalValidatorClient) GetCurrentHeight(ctx context.Context) (uint64, error) { +func (v *canonicalValidatorClient) GetCurrentHeight(ctx context.Context) (uint64, error) { return v.client.GetHeight(ctx, v.options...) } -func (v *CanonicalValidatorClient) GetBlockByHeight(ctx context.Context, height uint64) ([]byte, error) { +func (v *canonicalValidatorClient) GetBlockByHeight(ctx context.Context, height uint64) ([]byte, error) { return v.client.GetBlockByHeight(ctx, height, v.options...) } -func (v *CanonicalValidatorClient) GetSubnetID(ctx context.Context, blockchainID ids.ID) (ids.ID, error) { +func (v *canonicalValidatorClient) GetSubnetID(ctx context.Context, blockchainID ids.ID) (ids.ID, error) { return v.client.ValidatedBy(ctx, blockchainID, v.options...) } // Gets the validator set of the given subnet at the given P-chain block height. -func (v *CanonicalValidatorClient) GetValidatorSet( +func (v *canonicalValidatorClient) GetValidatorSet( ctx context.Context, height uint64, subnetID ids.ID, diff --git a/peers/validators/mocks/mock_canonical_validator_client.go b/peers/validators/mocks/mock_canonical_validator_client.go new file mode 100644 index 00000000..3d277458 --- /dev/null +++ b/peers/validators/mocks/mock_canonical_validator_client.go @@ -0,0 +1,117 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: canonical_validator_client.go +// +// Generated by this command: +// +// mockgen -source=canonical_validator_client.go -destination=./mocks/mock_canonical_validator_client.go -package=mocks +// + +// Package mocks is a generated GoMock package. +package mocks + +import ( + context "context" + reflect "reflect" + + ids "github.com/ava-labs/avalanchego/ids" + validators "github.com/ava-labs/avalanchego/snow/validators" + gomock "go.uber.org/mock/gomock" +) + +// MockCanonicalValidatorClient is a mock of CanonicalValidatorClient interface. +type MockCanonicalValidatorClient struct { + ctrl *gomock.Controller + recorder *MockCanonicalValidatorClientMockRecorder +} + +// MockCanonicalValidatorClientMockRecorder is the mock recorder for MockCanonicalValidatorClient. +type MockCanonicalValidatorClientMockRecorder struct { + mock *MockCanonicalValidatorClient +} + +// NewMockCanonicalValidatorClient creates a new mock instance. +func NewMockCanonicalValidatorClient(ctrl *gomock.Controller) *MockCanonicalValidatorClient { + mock := &MockCanonicalValidatorClient{ctrl: ctrl} + mock.recorder = &MockCanonicalValidatorClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockCanonicalValidatorClient) EXPECT() *MockCanonicalValidatorClientMockRecorder { + return m.recorder +} + +// GetBlockByHeight mocks base method. +func (m *MockCanonicalValidatorClient) GetBlockByHeight(arg0 context.Context, arg1 uint64) ([]byte, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetBlockByHeight", arg0, arg1) + ret0, _ := ret[0].([]byte) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetBlockByHeight indicates an expected call of GetBlockByHeight. +func (mr *MockCanonicalValidatorClientMockRecorder) GetBlockByHeight(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBlockByHeight", reflect.TypeOf((*MockCanonicalValidatorClient)(nil).GetBlockByHeight), arg0, arg1) +} + +// GetCurrentHeight mocks base method. +func (m *MockCanonicalValidatorClient) GetCurrentHeight(arg0 context.Context) (uint64, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetCurrentHeight", arg0) + ret0, _ := ret[0].(uint64) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetCurrentHeight indicates an expected call of GetCurrentHeight. +func (mr *MockCanonicalValidatorClientMockRecorder) GetCurrentHeight(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCurrentHeight", reflect.TypeOf((*MockCanonicalValidatorClient)(nil).GetCurrentHeight), arg0) +} + +// GetMinimumHeight mocks base method. +func (m *MockCanonicalValidatorClient) GetMinimumHeight(arg0 context.Context) (uint64, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetMinimumHeight", arg0) + ret0, _ := ret[0].(uint64) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetMinimumHeight indicates an expected call of GetMinimumHeight. +func (mr *MockCanonicalValidatorClientMockRecorder) GetMinimumHeight(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMinimumHeight", reflect.TypeOf((*MockCanonicalValidatorClient)(nil).GetMinimumHeight), arg0) +} + +// GetSubnetID mocks base method. +func (m *MockCanonicalValidatorClient) GetSubnetID(ctx context.Context, chainID ids.ID) (ids.ID, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetSubnetID", ctx, chainID) + ret0, _ := ret[0].(ids.ID) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetSubnetID indicates an expected call of GetSubnetID. +func (mr *MockCanonicalValidatorClientMockRecorder) GetSubnetID(ctx, chainID any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSubnetID", reflect.TypeOf((*MockCanonicalValidatorClient)(nil).GetSubnetID), ctx, chainID) +} + +// GetValidatorSet mocks base method. +func (m *MockCanonicalValidatorClient) GetValidatorSet(ctx context.Context, height uint64, subnetID ids.ID) (map[ids.NodeID]*validators.GetValidatorOutput, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetValidatorSet", ctx, height, subnetID) + ret0, _ := ret[0].(map[ids.NodeID]*validators.GetValidatorOutput) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetValidatorSet indicates an expected call of GetValidatorSet. +func (mr *MockCanonicalValidatorClientMockRecorder) GetValidatorSet(ctx, height, subnetID any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetValidatorSet", reflect.TypeOf((*MockCanonicalValidatorClient)(nil).GetValidatorSet), ctx, height, subnetID) +} diff --git a/signature-aggregator/aggregator/proposer_height_cache.go b/signature-aggregator/aggregator/proposer_height_cache.go index 5bc144ab..ac19c938 100644 --- a/signature-aggregator/aggregator/proposer_height_cache.go +++ b/signature-aggregator/aggregator/proposer_height_cache.go @@ -26,7 +26,7 @@ const pChainLookback = 30 * time.Second type ProposerHeightCache struct { logger logging.Logger - pChainClient *validators.CanonicalValidatorClient + pChainClient validators.CanonicalValidatorClient // protected by timeToHeightLock timeToHeight *linked.Hashmap[time.Time, uint64] updateInterval time.Duration