From 5e11256cfa54a017d30fa9e696f8e237bc9e3e2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20Jela=C4=8Da?= Date: Mon, 9 Oct 2023 15:06:46 +0200 Subject: [PATCH] Relayer and Validator node types are represented as enum flags in E2E framework (#1962) * Relayer and isValidator are represented as enum flags * CR fix --- e2e-polybft/e2e/consensus_test.go | 4 ++-- e2e-polybft/e2e/migration_test.go | 2 +- e2e-polybft/framework/test-cluster.go | 33 +++++++++++++++++++++------ 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/e2e-polybft/e2e/consensus_test.go b/e2e-polybft/e2e/consensus_test.go index 50516d9fee..b65d5d0928 100644 --- a/e2e-polybft/e2e/consensus_test.go +++ b/e2e-polybft/e2e/consensus_test.go @@ -233,10 +233,10 @@ func TestE2E_Consensus_RegisterValidator(t *testing.T) { // start the first and the second validator cluster.InitTestServer(t, cluster.Config.ValidatorPrefix+strconv.Itoa(validatorSetSize+1), - cluster.Bridge.JSONRPCAddr(), true, false) + cluster.Bridge.JSONRPCAddr(), framework.Validator) cluster.InitTestServer(t, cluster.Config.ValidatorPrefix+strconv.Itoa(validatorSetSize+2), - cluster.Bridge.JSONRPCAddr(), true, false) + cluster.Bridge.JSONRPCAddr(), framework.Validator) // collect the first and the second validator from the cluster firstValidator := cluster.Servers[validatorSetSize] diff --git a/e2e-polybft/e2e/migration_test.go b/e2e-polybft/e2e/migration_test.go index caccb2210f..04eae9cb40 100644 --- a/e2e-polybft/e2e/migration_test.go +++ b/e2e-polybft/e2e/migration_test.go @@ -204,6 +204,6 @@ func TestE2E_Migration(t *testing.T) { _, err = cluster.InitSecrets("test-chain-8", 1) require.NoError(t, err) - cluster.InitTestServer(t, "test-chain-8", cluster.Bridge.JSONRPCAddr(), false, false) + cluster.InitTestServer(t, "test-chain-8", cluster.Bridge.JSONRPCAddr(), frameworkpolybft.None) require.NoError(t, cluster.WaitForBlock(33, time.Minute)) } diff --git a/e2e-polybft/framework/test-cluster.go b/e2e-polybft/framework/test-cluster.go index d34006bafe..04aae87b70 100644 --- a/e2e-polybft/framework/test-cluster.go +++ b/e2e-polybft/framework/test-cluster.go @@ -51,6 +51,22 @@ const ( nonValidatorPrefix = "test-non-validator-" ) +type NodeType int + +const ( + None NodeType = 0 + Validator NodeType = 1 << iota + Relayer NodeType = 2 +) + +func (nt NodeType) IsSet(value NodeType) bool { + return nt&value == value +} + +func (nt *NodeType) Append(value NodeType) { + *nt |= value +} + var ( startTime int64 testRewardWalletAddr = types.StringToAddress("0xFFFFFFFF") @@ -639,22 +655,25 @@ func NewTestCluster(t *testing.T, validatorsCount int, opts ...ClusterOption) *T require.NoError(t, err) for i := 1; i <= int(cluster.Config.ValidatorSetSize); i++ { + nodeType := Validator + if i == 1 { + nodeType.Append(Relayer) + } + dir := cluster.Config.ValidatorPrefix + strconv.Itoa(i) - cluster.InitTestServer(t, dir, cluster.Bridge.JSONRPCAddr(), - true, i == 1 /* relayer */) + cluster.InitTestServer(t, dir, cluster.Bridge.JSONRPCAddr(), nodeType) } for i := 1; i <= cluster.Config.NonValidatorCount; i++ { dir := nonValidatorPrefix + strconv.Itoa(i) - cluster.InitTestServer(t, dir, cluster.Bridge.JSONRPCAddr(), - false, false /* relayer */) + cluster.InitTestServer(t, dir, cluster.Bridge.JSONRPCAddr(), None) } return cluster } func (c *TestCluster) InitTestServer(t *testing.T, - dataDir string, bridgeJSONRPC string, isValidator bool, relayer bool) { + dataDir string, bridgeJSONRPC string, nodeType NodeType) { t.Helper() logLevel := os.Getenv(envLogLevel) @@ -669,11 +688,11 @@ func (c *TestCluster) InitTestServer(t *testing.T, srv := NewTestServer(t, c.Config, bridgeJSONRPC, func(config *TestServerConfig) { config.DataDir = dataDir - config.Seal = isValidator + config.Seal = nodeType.IsSet(Validator) config.Chain = c.Config.Dir("genesis.json") config.P2PPort = c.getOpenPort() config.LogLevel = logLevel - config.Relayer = relayer + config.Relayer = nodeType.IsSet(Relayer) config.NumBlockConfirmations = c.Config.NumBlockConfirmations config.BridgeJSONRPC = bridgeJSONRPC config.RelayerTrackerPollInterval = c.Config.RelayerTrackerPollInterval