Skip to content

Commit

Permalink
make canonicalValidatorClient interface + generate mocks
Browse files Browse the repository at this point in the history
  • Loading branch information
iansuvak committed Oct 14, 2024
1 parent 312a2ff commit fe4cd5a
Show file tree
Hide file tree
Showing 4 changed files with 134 additions and 11 deletions.
2 changes: 1 addition & 1 deletion peers/app_request_network.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ type appRequestNetwork struct {
infoAPI *InfoAPI
logger logging.Logger
lock *sync.Mutex
validatorClient *validators.CanonicalValidatorClient
validatorClient validators.CanonicalValidatorClient
metrics *AppRequestNetworkMetrics
}

Expand Down
24 changes: 15 additions & 9 deletions peers/validators/canonical_validator_client.go
Original file line number Diff line number Diff line change
@@ -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 (
Expand All @@ -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,
Expand Down
117 changes: 117 additions & 0 deletions peers/validators/mocks/mock_canonical_validator_client.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion signature-aggregator/aggregator/proposer_height_cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit fe4cd5a

Please sign in to comment.