From 9f13b9b083da0ec45a48e57d5a283afdf698ba5b Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 8 Oct 2021 10:37:12 -0400 Subject: [PATCH] e2e: abci protocol should be consistent across networks (backport #7078) (#7085) * e2e: abci protocol should be consistent across networks (#7078) It seems weird in retrospect that we allow networks to contain applications that use different ABCI protocols. (cherry picked from commit f2a8f5e054cf99ebe246818bb6d71f41f9a30faa) --- test/e2e/generator/generate.go | 3 +-- test/e2e/pkg/manifest.go | 12 ++++++------ test/e2e/pkg/testnet.go | 13 +++++++++---- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/test/e2e/generator/generate.go b/test/e2e/generator/generate.go index 01bbdbe01..c7e1bad0c 100644 --- a/test/e2e/generator/generate.go +++ b/test/e2e/generator/generate.go @@ -67,6 +67,7 @@ func Generate(r *rand.Rand) ([]e2e.Manifest, error) { func generateTestnet(r *rand.Rand, opt map[string]interface{}) (e2e.Manifest, error) { manifest := e2e.Manifest{ IPv6: ipv6.Choose(r).(bool), + ABCIProtocol: nodeABCIProtocols.Choose(r).(string), InitialHeight: int64(opt["initialHeight"].(int)), InitialState: opt["initialState"].(map[string]string), Validators: &map[string]int64{}, @@ -207,7 +208,6 @@ func generateNode( Mode: string(mode), StartAt: startAt, Database: nodeDatabases.Choose(r).(string), - ABCIProtocol: nodeABCIProtocols.Choose(r).(string), PrivvalProtocol: nodePrivvalProtocols.Choose(r).(string), FastSync: nodeFastSyncs.Choose(r).(string), StateSync: nodeStateSyncs.Choose(r).(bool) && startAt > 0, @@ -264,7 +264,6 @@ func generateLightNode(r *rand.Rand, startAt int64, providers []string) *e2e.Man Mode: string(e2e.ModeLight), StartAt: startAt, Database: nodeDatabases.Choose(r).(string), - ABCIProtocol: "builtin", PersistInterval: ptrUint64(0), PersistentPeers: providers, } diff --git a/test/e2e/pkg/manifest.go b/test/e2e/pkg/manifest.go index 2ea9b22ba..563dca7d1 100644 --- a/test/e2e/pkg/manifest.go +++ b/test/e2e/pkg/manifest.go @@ -50,6 +50,12 @@ type Manifest struct { // KeyType sets the curve that will be used by validators. // Options are ed25519 & secp256k1 KeyType string `toml:"key_type"` + + // ABCIProtocol specifies the protocol used to communicate with the ABCI + // application: "unix", "tcp", "grpc", or "builtin". Defaults to builtin. + // builtin will build a complete Tendermint node into the application and + // launch it instead of launching a separate Tendermint process. + ABCIProtocol string `toml:"abci_protocol"` } // ManifestNode represents a node in a testnet manifest. @@ -72,12 +78,6 @@ type ManifestNode struct { // "rocksdb", "boltdb", or "badgerdb". Defaults to goleveldb. Database string `toml:"database"` - // ABCIProtocol specifies the protocol used to communicate with the ABCI - // application: "unix", "tcp", "grpc", or "builtin". Defaults to unix. - // builtin will build a complete Tendermint node into the application and - // launch it instead of launching a separate Tendermint process. - ABCIProtocol string `toml:"abci_protocol"` - // PrivvalProtocol specifies the protocol used to sign consensus messages: // "file", "unix", or "tcp". Defaults to "file". For unix and tcp, the ABCI // application will launch a remote signer client in a separate goroutine. diff --git a/test/e2e/pkg/testnet.go b/test/e2e/pkg/testnet.go index 401c13af1..41686c72d 100644 --- a/test/e2e/pkg/testnet.go +++ b/test/e2e/pkg/testnet.go @@ -60,6 +60,7 @@ type Testnet struct { ValidatorUpdates map[int64]map[*Node]int64 Nodes []*Node KeyType string + ABCIProtocol string } // Node represents a Tendermint node in a testnet. @@ -122,10 +123,17 @@ func LoadTestnet(file string) (*Testnet, error) { Validators: map[*Node]int64{}, ValidatorUpdates: map[int64]map[*Node]int64{}, Nodes: []*Node{}, + ABCIProtocol: manifest.ABCIProtocol, + } + if len(manifest.KeyType) != 0 { + testnet.KeyType = manifest.KeyType } if manifest.InitialHeight > 0 { testnet.InitialHeight = manifest.InitialHeight } + if testnet.ABCIProtocol == "" { + testnet.ABCIProtocol = string(ProtocolBuiltin) + } // Set up nodes, in alphabetical order (IPs and ports get same order). nodeNames := []string{} @@ -145,7 +153,7 @@ func LoadTestnet(file string) (*Testnet, error) { ProxyPort: proxyPortGen.Next(), Mode: ModeValidator, Database: "goleveldb", - ABCIProtocol: ProtocolBuiltin, + ABCIProtocol: Protocol(testnet.ABCIProtocol), PrivvalProtocol: ProtocolFile, StartAt: nodeManifest.StartAt, FastSync: nodeManifest.FastSync, @@ -165,9 +173,6 @@ func LoadTestnet(file string) (*Testnet, error) { if nodeManifest.Database != "" { node.Database = nodeManifest.Database } - if nodeManifest.ABCIProtocol != "" { - node.ABCIProtocol = Protocol(nodeManifest.ABCIProtocol) - } if nodeManifest.PrivvalProtocol != "" { node.PrivvalProtocol = Protocol(nodeManifest.PrivvalProtocol) }