diff --git a/node/pkg/p2p/registry_test.go b/node/pkg/p2p/registry_test.go new file mode 100644 index 000000000..039bc7087 --- /dev/null +++ b/node/pkg/p2p/registry_test.go @@ -0,0 +1,61 @@ +package p2p + +import ( + "crypto/ed25519" + "crypto/rand" + gossipv1 "github.com/certusone/wormhole/node/pkg/proto/gossip/v1" + "github.com/certusone/wormhole/node/pkg/vaa" + "github.com/mr-tron/base58" + "github.com/stretchr/testify/assert" + "testing" +) + +func TestNewRegistry(t *testing.T) { + registry := NewRegistry() + assert.Equal(t, "", registry.guardianAddress) + assert.Equal(t, 0, len(registry.errorCounters)) + assert.Equal(t, 0, len(registry.networkStats)) +} + +func TestSetGuardianAddress(t *testing.T) { + registry := NewRegistry() + registry.SetGuardianAddress("foo") + assert.Equal(t, "foo", registry.guardianAddress) +} + +func TestSetNetworkStats(t *testing.T) { + registry := NewRegistry() + + pub, _, _ := ed25519.GenerateKey(rand.Reader) + contractAddr := base58.Encode(pub[:]) + + heartBeat := &gossipv1.Heartbeat_Network{ + ContractAddress: contractAddr, + } + + expect := make(map[vaa.ChainID]*gossipv1.Heartbeat_Network) + expect[vaa.ChainIDEthereum] = heartBeat + + registry.SetNetworkStats(vaa.ChainIDEthereum, heartBeat) + assert.Equal(t, expect, registry.networkStats) +} + +func TestAddErrorCount(t *testing.T) { + registry := NewRegistry() + + expect := make(map[vaa.ChainID]uint64) + expect[vaa.ChainIDEthereum] = 1 + + registry.AddErrorCount(vaa.ChainIDEthereum, uint64(1)) + assert.Equal(t, expect, registry.errorCounters) +} + +func TestGetErrorCount(t *testing.T) { + registry := NewRegistry() + assert.Equal(t, uint64(0), registry.GetErrorCount(vaa.ChainIDEthereum)) + assert.Equal(t, uint64(0), registry.GetErrorCount(vaa.ChainIDSolana)) + + registry.AddErrorCount(vaa.ChainIDEthereum, uint64(1)) + assert.Equal(t, uint64(1), registry.GetErrorCount(vaa.ChainIDEthereum)) + assert.Equal(t, uint64(0), registry.GetErrorCount(vaa.ChainIDSolana)) +}