From 29caa1916da93b04fff694bf2bb4150229d33464 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 23 Dec 2022 20:58:26 +0800 Subject: [PATCH] tests: make integration test more stable (#1488) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * wait new blk right before send tx * larger timeout_commit for priority test * larger timeout_commit for mempool related test * mv chain id test to cluster used test * keep cluster in module scope * sync gomod2nix * adjust timeout_commit * rm prune all in indexer config * add missing min_gas_multiplier * wait 1 more blk in upgrade * only keep 2 validators * add retry for grpc_eth_call * wait 1 block before stop * fix lint * disable recheck * bump up upgrade * sync gomod2nix * Apply suggestions from code review * Apply suggestions from code review * append node log * fix lint * expect less gas after ecd76396eb55dc44535842018c5f13f234af7da3 * allow retry continue on empty rsp * update gomod2nix * fix flake * mod tidy * keep grpc only test * tests(integration): enable recheck tx mode * update gomod2nix Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> Co-authored-by: Freddy Caceres Co-authored-by: Tom --- gomod2nix.toml | 54 +++++++++---------- .../configs/cosmovisor.jsonnet | 5 +- .../integration_tests/configs/default.jsonnet | 4 -- .../configs/enable-indexer.jsonnet | 13 +++-- .../configs/long_timeout_commit.jsonnet | 11 ++++ .../configs/pruned_node.jsonnet | 9 ++++ .../configs/rollback-test.jsonnet | 2 +- .../configs/upgrade-test-package.nix | 4 +- tests/integration_tests/conftest.py | 34 +----------- tests/integration_tests/cosmoscli.py | 10 ++-- tests/integration_tests/expected_constants.py | 8 +-- tests/integration_tests/network.py | 8 ++- tests/integration_tests/test_basic.py | 3 -- tests/integration_tests/test_filters.py | 46 ++++++++++++++++ tests/integration_tests/test_grpc_only.py | 40 ++++++++------ tests/integration_tests/test_priority.py | 14 +++-- tests/integration_tests/test_pruned_node.py | 2 +- tests/integration_tests/test_rollback.py | 38 ++++++------- tests/integration_tests/test_upgrade.py | 7 ++- tests/integration_tests/utils.py | 11 ++-- 20 files changed, 189 insertions(+), 134 deletions(-) create mode 100644 tests/integration_tests/configs/long_timeout_commit.jsonnet delete mode 100644 tests/integration_tests/test_basic.py diff --git a/gomod2nix.toml b/gomod2nix.toml index 7689bb32..b0ca46f2 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -60,8 +60,8 @@ schema = 3 version = "v0.22.1" hash = "sha256-hBU+roIELcmbW2Gz7eGZzL9qNA1bakq5wNxqCgs4TKc=" [mod."github.com/btcsuite/btcd/btcec/v2"] - version = "v2.2.0" - hash = "sha256-cwoIqi0SiAaGEBtuQKip9OVirKIeJw5fUoWo7x/xfOc=" + version = "v2.3.2" + hash = "sha256-natWs+yIAuD1UI07iZtjPilroQLfXizFn3lNOiOT83U=" [mod."github.com/btcsuite/btcd/chaincfg/chainhash"] version = "v1.0.1" hash = "sha256-vix0j/KGNvoKjhlKgVeSLY6un2FHeIEoZWMC4z3yvZ4=" @@ -91,14 +91,14 @@ schema = 3 hash = "sha256-mFKxFHp7RaE1L5NdtH9H9px2Cy6I5uOZVnFOgE8Nrew=" replaced = "github.com/cosmos/cosmos-sdk/ics23/go" [mod."github.com/cosmos/btcutil"] - version = "v1.0.4" - hash = "sha256-JvcBXBdjdmnaW/nyf/tw/uaOAGn1b78yxrtl2/Rs3kA=" + version = "v1.0.5" + hash = "sha256-t572Sr5iiHcuMKLMWa2i+LBAt192oa+G1oA371tG/eI=" [mod."github.com/cosmos/cosmos-proto"] version = "v1.0.0-beta.1" hash = "sha256-oATkuj+fM5eBn+ywO+w/tL0AFSIEkx0J3Yz+VhVe0QA=" [mod."github.com/cosmos/cosmos-sdk"] - version = "v0.46.6" - hash = "sha256-H1VZxZUWXhpXiY3A9smLp09MEGpXmh+XvX6YUiXPcpQ=" + version = "v0.46.7" + hash = "sha256-54DCF8lrnA1oUmBJlbUlWXOP5UbenRInUROn5P5I9qI=" [mod."github.com/cosmos/go-bip39"] version = "v1.0.0" hash = "sha256-Qm2aC2vaS8tjtMUbHmlBSagOSqbduEEDwc51qvQaBmA=" @@ -112,14 +112,11 @@ schema = 3 version = "v0.19.4" hash = "sha256-EmpRZ48pjPFq/fIHneut9Vyo5QJATfb3ZO7KzWnqs9g=" [mod."github.com/cosmos/ibc-go/v5"] - version = "v5.1.0" - hash = "sha256-9ZwGw6XqYkBtj+vTQ2IodNb7VcGesTFnVsxjd+G1I6Q=" + version = "v5.2.0" + hash = "sha256-Gfqhdz9ZKEgb7LCkHiXCwYZYUYluQ+vMew/GkssfVj8=" [mod."github.com/cosmos/ledger-cosmos-go"] - version = "v0.11.1" - hash = "sha256-yli+VvVtZmHo2LPvCY6lYVUfcCDn3sBLDL+a8KIlqDA=" - [mod."github.com/cosmos/ledger-go"] - version = "v0.9.2" - hash = "sha256-0YI+0A6wFBjiebBwzWOQjkgXkTakCrf7Gjg2xEaQdoM=" + version = "v0.12.1" + hash = "sha256-9+nr+/r4MyiogddS0JcXOuriPqXP4nxln8ts+mYQRcg=" [mod."github.com/creachadair/taskgroup"] version = "v0.3.2" hash = "sha256-Y261IO/d9xjV0UScqHvo31broxvnKn4IQQC9Mu6jNkE=" @@ -362,11 +359,11 @@ schema = 3 version = "v0.0.5" hash = "sha256-/5i70IkH/qSW5KjGzv8aQNKh9tHoz98tqtL0K2DMFn4=" [mod."github.com/onsi/ginkgo/v2"] - version = "v2.5.1" - hash = "sha256-VB29+H9k7l6il63oXJvsjamSUhsw/e99iI/BeTCderA=" + version = "v2.6.1" + hash = "sha256-OEiWYKCGPCaqL3vzSrHquHGm+Q8URT2anpanAVK5hRo=" [mod."github.com/onsi/gomega"] - version = "v1.24.1" - hash = "sha256-REfxQTDRcO23GnmJfOW8/MmPJf9oE2grVvvGiC1eSbo=" + version = "v1.24.2" + hash = "sha256-iascSzzBT1Uv/XybezSblIwwrq78BU4a9BVB5MvK6MM=" [mod."github.com/pelletier/go-toml"] version = "v1.9.5" hash = "sha256-RJ9K1BTId0Mled7S66iGgxHkZ5JKEIsrrNaEfM8aImc=" @@ -464,8 +461,8 @@ schema = 3 version = "v0.16.0" hash = "sha256-JW4zO/0vMzf1dXLePOqaMtiLUZgNbuIseh9GV+jQlf0=" [mod."github.com/tendermint/tendermint"] - version = "v0.34.23" - hash = "sha256-eir0vr8lQOG+FTPo+ZUeDidAIACfyUq2ie3XRE8rIa4=" + version = "v0.34.24" + hash = "sha256-3HFTv4XgN535RDaJ5OwUS+fnJHgkmLTwU7CNU2ilxEQ=" [mod."github.com/tendermint/tm-db"] version = "v0.6.7" hash = "sha256-hl/3RrBrpkk2zA6dmrNlIYKs1/GfqegSscDSkA5Pjlo=" @@ -482,8 +479,11 @@ schema = 3 version = "v0.5.8" hash = "sha256-bfG3dssBUn+mSOAuKL+a/DTGGLUA+eASgLoGv/Gkqs0=" [mod."github.com/zondax/hid"] - version = "v0.9.1-0.20220302062450-5552068d2266" - hash = "sha256-IZea8SHuLQxlltm1avieRVI054TWZg2jEoplodvNtwk=" + version = "v0.9.1" + hash = "sha256-hSVmN/f/lQHFhF60o6ej78ELC0MMoqQgqIX2hHjdTXg=" + [mod."github.com/zondax/ledger-go"] + version = "v0.14.0" + hash = "sha256-RozTPSNs4RerZ4DQMBcGmvREjoRtH1G69xjhccYjIOk=" [mod."go.etcd.io/bbolt"] version = "v1.3.6" hash = "sha256-DenVAmyN22xUiivk6fdJp4C9ZnUJXCMDUf8E0goRRV4=" @@ -497,8 +497,8 @@ schema = 3 version = "v0.0.0-20220722155223-a9213eeb770e" hash = "sha256-kNgzydWRpjm0sZl4uXEs3LX5L0xjJtJRAFf/CTlYUN4=" [mod."golang.org/x/net"] - version = "v0.2.0" - hash = "sha256-0MqnHDdLkkau6k7hlWD9MzIoAFROvxulyT+KzZkSXOs=" + version = "v0.4.0" + hash = "sha256-7IwGZh/xg4mQz88cJio2Ov5d3jGRXKj1itlAja/EAbQ=" [mod."golang.org/x/oauth2"] version = "v0.0.0-20221014153046-6fdb5e3db783" hash = "sha256-IoygidVNqyAZmN+3macDeIefK8hhJToygpcqlwehdYQ=" @@ -506,11 +506,11 @@ schema = 3 version = "v0.1.0" hash = "sha256-Hygjq9euZ0qz6TvHYQwOZEjNiTbTh1nSLRAWZ6KFGR8=" [mod."golang.org/x/sys"] - version = "v0.2.0" - hash = "sha256-N6yfQH7R2gfcvyWTQZbxWuSNyVy6hAxiab2WFzgAykI=" + version = "v0.3.0" + hash = "sha256-TIHhfYbZ99sCU1ZMikxwomXH5AEtD/lA1VMMW+UAhbU=" [mod."golang.org/x/term"] - version = "v0.2.0" - hash = "sha256-azcllZ0o/9TurqX9udaJ0o9yxqSoI0/bSJsvQQLYIQc=" + version = "v0.3.0" + hash = "sha256-NKv2o8wz8DB/2W2h/muGEIHb+S06mBXZxhG254RpQ5s=" [mod."golang.org/x/text"] version = "v0.5.0" hash = "sha256-ztH+xQyM/clOcQl+y/UEPcfNKbc3xApMbEPDDZ9up0o=" diff --git a/tests/integration_tests/configs/cosmovisor.jsonnet b/tests/integration_tests/configs/cosmovisor.jsonnet index 1fbf075f..dc3cb1a4 100644 --- a/tests/integration_tests/configs/cosmovisor.jsonnet +++ b/tests/integration_tests/configs/cosmovisor.jsonnet @@ -2,13 +2,14 @@ local config = import 'default.jsonnet'; config { 'ethermint_9000-1'+: { + 'app-config'+: { + 'minimum-gas-prices': '100000000000aphoton', + }, genesis+: { app_state+: { feemarket+: { params+: { - no_base_fee: false, base_fee:: super.base_fee, - initial_base_fee: super.base_fee, }, }, }, diff --git a/tests/integration_tests/configs/default.jsonnet b/tests/integration_tests/configs/default.jsonnet index e135056f..b181297d 100644 --- a/tests/integration_tests/configs/default.jsonnet +++ b/tests/integration_tests/configs/default.jsonnet @@ -4,10 +4,6 @@ cmd: 'ethermintd', 'start-flags': '--trace', config: { - consensus: { - // larger timeout for more stable mempool tests - timeout_commit: '2s', - }, mempool: { // use v1 mempool to enable tx prioritization version: 'v1', diff --git a/tests/integration_tests/configs/enable-indexer.jsonnet b/tests/integration_tests/configs/enable-indexer.jsonnet index c21c6a98..1a5b0d14 100644 --- a/tests/integration_tests/configs/enable-indexer.jsonnet +++ b/tests/integration_tests/configs/enable-indexer.jsonnet @@ -8,13 +8,18 @@ config { }, }, 'app-config'+: { - pruning: 'everything', - 'state-sync'+: { - 'snapshot-interval': 0, - }, 'json-rpc'+: { 'enable-indexer': true, }, }, + genesis+: { + app_state+: { + feemarket+: { + params+: { + min_gas_multiplier: '0', + }, + }, + }, + }, }, } diff --git a/tests/integration_tests/configs/long_timeout_commit.jsonnet b/tests/integration_tests/configs/long_timeout_commit.jsonnet new file mode 100644 index 00000000..b54ad60e --- /dev/null +++ b/tests/integration_tests/configs/long_timeout_commit.jsonnet @@ -0,0 +1,11 @@ +local default = import 'default.jsonnet'; + +default { + 'ethermint_9000-1'+: { + config+: { + consensus+: { + timeout_commit: '5s', + }, + }, + }, +} diff --git a/tests/integration_tests/configs/pruned_node.jsonnet b/tests/integration_tests/configs/pruned_node.jsonnet index ffb6a830..cd00fc0a 100644 --- a/tests/integration_tests/configs/pruned_node.jsonnet +++ b/tests/integration_tests/configs/pruned_node.jsonnet @@ -8,5 +8,14 @@ config { 'snapshot-interval': 0, }, }, + genesis+: { + app_state+: { + feemarket+: { + params+: { + min_gas_multiplier: '0', + }, + }, + }, + }, }, } diff --git a/tests/integration_tests/configs/rollback-test.jsonnet b/tests/integration_tests/configs/rollback-test.jsonnet index e39437ec..0e6c3ffc 100644 --- a/tests/integration_tests/configs/rollback-test.jsonnet +++ b/tests/integration_tests/configs/rollback-test.jsonnet @@ -2,7 +2,7 @@ local config = import 'default.jsonnet'; config { 'ethermint_9000-1'+: { - validators: super.validators + [{ + validators: super.validators[0:1] + [{ name: 'fullnode', }], }, diff --git a/tests/integration_tests/configs/upgrade-test-package.nix b/tests/integration_tests/configs/upgrade-test-package.nix index a703086f..6b8345ce 100644 --- a/tests/integration_tests/configs/upgrade-test-package.nix +++ b/tests/integration_tests/configs/upgrade-test-package.nix @@ -4,9 +4,9 @@ let released = pkgs.buildGo118Module rec { name = "ethermintd"; # the commit before https://github.com/evmos/ethermint/pull/943 - src = fetchEthermint "f21592ebfe74da7590eb42ed926dae970b2a9a3f"; + src = fetchEthermint "8866ae0ffd67a104e9d1cf4e50fba8391dda6c45"; subPackages = [ "cmd/ethermintd" ]; - vendorSha256 = "sha256-ABm5t6R/u2S6pThGrgdsqe8n3fH5tIWw7a57kxJPbYw="; + vendorSha256 = "sha256-oDtMamNlwe/393fZd+RNtRy6ipWpusbco8Xg1ZuKWYw="; doCheck = false; }; current = pkgs.callPackage ../../../. { }; diff --git a/tests/integration_tests/conftest.py b/tests/integration_tests/conftest.py index ea50d890..bd3f66fd 100644 --- a/tests/integration_tests/conftest.py +++ b/tests/integration_tests/conftest.py @@ -1,8 +1,6 @@ -from pathlib import Path - import pytest -from .network import setup_custom_ethermint, setup_ethermint, setup_geth +from .network import setup_ethermint, setup_geth @pytest.fixture(scope="session") @@ -11,42 +9,12 @@ def ethermint(tmp_path_factory): yield from setup_ethermint(path, 26650) -@pytest.fixture(scope="session") -def ethermint_indexer(tmp_path_factory): - path = tmp_path_factory.mktemp("indexer") - yield from setup_custom_ethermint( - path, 26660, Path(__file__).parent / "configs/enable-indexer.jsonnet" - ) - - @pytest.fixture(scope="session") def geth(tmp_path_factory): path = tmp_path_factory.mktemp("geth") yield from setup_geth(path, 8545) -@pytest.fixture( - scope="session", params=["ethermint", "geth", "ethermint-ws", "enable-indexer"] -) -def cluster(request, ethermint, ethermint_indexer, geth): - """ - run on both ethermint and geth - """ - provider = request.param - if provider == "ethermint": - yield ethermint - elif provider == "geth": - yield geth - elif provider == "ethermint-ws": - ethermint_ws = ethermint.copy() - ethermint_ws.use_websocket() - yield ethermint_ws - elif provider == "enable-indexer": - yield ethermint_indexer - else: - raise NotImplementedError - - @pytest.fixture( scope="session", params=["ethermint", "ethermint-ws"] ) diff --git a/tests/integration_tests/cosmoscli.py b/tests/integration_tests/cosmoscli.py index 7a1edbe6..71bde8f6 100644 --- a/tests/integration_tests/cosmoscli.py +++ b/tests/integration_tests/cosmoscli.py @@ -6,6 +6,7 @@ from dateutil.parser import isoparse from pystarport.utils import build_cli_args_safe, interact DEFAULT_GAS_PRICE = "5000000000000aphoton" +DEFAULT_GAS = "250000" class ChainCommand: @@ -636,16 +637,19 @@ class CosmosCLI: ) def gov_propose(self, proposer, kind, proposal, **kwargs): + method = "submit-legacy-proposal" kwargs.setdefault("gas_prices", DEFAULT_GAS_PRICE) + kwargs.setdefault("gas", DEFAULT_GAS) if kind == "software-upgrade": return json.loads( self.raw( "tx", "gov", - "submit-proposal", + method, kind, proposal["name"], "-y", + "--no-validate", from_=proposer, # content title=proposal.get("title"), @@ -664,7 +668,7 @@ class CosmosCLI: self.raw( "tx", "gov", - "submit-proposal", + method, kind, "-y", from_=proposer, @@ -685,7 +689,7 @@ class CosmosCLI: self.raw( "tx", "gov", - "submit-proposal", + method, kind, fp.name, "-y", diff --git a/tests/integration_tests/expected_constants.py b/tests/integration_tests/expected_constants.py index 2f75f715..e3d39d85 100644 --- a/tests/integration_tests/expected_constants.py +++ b/tests/integration_tests/expected_constants.py @@ -152,10 +152,10 @@ EXPECTED_STRUCT_TRACER = { EXPECTED_CONTRACT_CREATE_TRACER = { "from": "0x57f96e6b86cdefdb3d412547816a82e3e0ebf9d2", - "gas": "0x810ee", - "gasUsed": "0x810ee", - "input": "0x608060405234801561001057600080fd5b50604080518082018252600981526805465737445524332360bc1b60208083019182528351808501909452600484526315195cdd60e21b90840152815191929161005c91600391610176565b508051610070906004906020840190610176565b50505061008e336a52b7d2dcc80cd2e400000061009360201b60201c565b610270565b6001600160a01b0382166100ed5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546100ff919061020f565b90915550506001600160a01b0382166000908152602081905260408120805483929061012c90849061020f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b82805461018290610235565b90600052602060002090601f0160209004810192826101a457600085556101ea565b82601f106101bd57805160ff19168380011785556101ea565b828001600101855582156101ea579182015b828111156101ea5782518255916020019190600101906101cf565b506101f69291506101fa565b5090565b5b808211156101f657600081556001016101fb565b6000821982111561023057634e487b7160e01b600052601160045260246000fd5b500190565b600181811c9082168061024957607f821691505b6020821081141561026a57634e487b7160e01b600052602260045260246000fd5b50919050565b61088780620002806000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220c0d85a7786c0e64745bde36a97db64a8cb6d2d67c277d21b95a0c43bf2d1b86d64736f6c634300080a0033", # noqa: E501 - "output": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220c0d85a7786c0e64745bde36a97db64a8cb6d2d67c277d21b95a0c43bf2d1b86d64736f6c634300080a0033", # noqa: E501 + "gas": "0x7ef9d", + "gasUsed": "0x7ef9d", + "input": "0x608060405234801561001057600080fd5b50604080518082018252600981526805465737445524332360bc1b60208083019182528351808501909452600484526315195cdd60e21b90840152815191929161005c91600391610156565b508051610070906004906020840190610156565b50505061008e336a52b7d2dcc80cd2e400000061009360201b60201c565b610250565b6001600160a01b0382166100ed5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546100ff91906101ef565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b82805461016290610215565b90600052602060002090601f01602090048101928261018457600085556101ca565b82601f1061019d57805160ff19168380011785556101ca565b828001600101855582156101ca579182015b828111156101ca5782518255916020019190600101906101af565b506101d69291506101da565b5090565b5b808211156101d657600081556001016101db565b6000821982111561021057634e487b7160e01b600052601160045260246000fd5b500190565b600181811c9082168061022957607f821691505b6020821081141561024a57634e487b7160e01b600052602260045260246000fd5b50919050565b61085d8061025f6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c3919061069a565b60405180910390f35b6100df6100da36600461070b565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610735565b61024a565b604051601281526020016100c3565b6100df61013136600461070b565b61026e565b6100f3610144366004610771565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df61017536600461070b565b61029f565b6100df61018836600461070b565b61031f565b6100f361019b366004610793565b61032d565b6060600380546101af906107c6565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107c6565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b9190610801565b610358565b6060600480546101af906107c6565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104f0565b600060208083528351808285015260005b818110156106c7578581018301518582016040015282016106ab565b818111156106d9576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461070657600080fd5b919050565b6000806040838503121561071e57600080fd5b610727836106ef565b946020939093013593505050565b60008060006060848603121561074a57600080fd5b610753846106ef565b9250610761602085016106ef565b9150604084013590509250925092565b60006020828403121561078357600080fd5b61078c826106ef565b9392505050565b600080604083850312156107a657600080fd5b6107af836106ef565b91506107bd602084016106ef565b90509250929050565b600181811c908216806107da57607f821691505b602082108114156107fb57634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561082257634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220fee840cc9e1cfac46e073588ade030be1401c580c5849dd4e63f659a75eb220c64736f6c634300080a0033", # noqa: E501 + "output": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c3919061069a565b60405180910390f35b6100df6100da36600461070b565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610735565b61024a565b604051601281526020016100c3565b6100df61013136600461070b565b61026e565b6100f3610144366004610771565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df61017536600461070b565b61029f565b6100df61018836600461070b565b61031f565b6100f361019b366004610793565b61032d565b6060600380546101af906107c6565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107c6565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b9190610801565b610358565b6060600480546101af906107c6565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104f0565b600060208083528351808285015260005b818110156106c7578581018301518582016040015282016106ab565b818111156106d9576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461070657600080fd5b919050565b6000806040838503121561071e57600080fd5b610727836106ef565b946020939093013593505050565b60008060006060848603121561074a57600080fd5b610753846106ef565b9250610761602085016106ef565b9150604084013590509250925092565b60006020828403121561078357600080fd5b61078c826106ef565b9392505050565b600080604083850312156107a657600080fd5b6107af836106ef565b91506107bd602084016106ef565b90509250929050565b600181811c908216806107da57607f821691505b602082108114156107fb57634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561082257634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220fee840cc9e1cfac46e073588ade030be1401c580c5849dd4e63f659a75eb220c64736f6c634300080a0033", # noqa: E501 "to": "0x8c76cfc1934d5120cc673b6e5ddf7b88feb1c18c", "type": "CREATE", "value": "0x0", diff --git a/tests/integration_tests/network.py b/tests/integration_tests/network.py index 31341515..c638e2a5 100644 --- a/tests/integration_tests/network.py +++ b/tests/integration_tests/network.py @@ -68,8 +68,12 @@ class Geth: self.w3 = w3 -def setup_ethermint(path, base_port): - cfg = Path(__file__).parent / "configs/default.jsonnet" +def setup_ethermint(path, base_port, long_timeout_commit=False): + cfg = Path(__file__).parent / ( + "configs/default.jsonnet" + if long_timeout_commit + else "configs/long_timeout_commit.jsonnet" + ) yield from setup_custom_ethermint(path, base_port, cfg) diff --git a/tests/integration_tests/test_basic.py b/tests/integration_tests/test_basic.py deleted file mode 100644 index ed2b19fe..00000000 --- a/tests/integration_tests/test_basic.py +++ /dev/null @@ -1,3 +0,0 @@ -def test_basic(cluster): - w3 = cluster.w3 - assert w3.eth.chain_id == 9000 diff --git a/tests/integration_tests/test_filters.py b/tests/integration_tests/test_filters.py index b20f807e..353e82ed 100644 --- a/tests/integration_tests/test_filters.py +++ b/tests/integration_tests/test_filters.py @@ -1,8 +1,11 @@ +from pathlib import Path + import pytest from eth_abi import abi from hexbytes import HexBytes from web3 import Web3 +from .network import setup_custom_ethermint, setup_ethermint from .utils import ( ADDRS, CONTRACTS, @@ -12,6 +15,48 @@ from .utils import ( w3_wait_for_new_blocks, ) + +@pytest.fixture(scope="module") +def custom_ethermint(tmp_path_factory): + path = tmp_path_factory.mktemp("filters") + yield from setup_ethermint(path, 26200, long_timeout_commit=True) + + +@pytest.fixture(scope="module") +def ethermint_indexer(tmp_path_factory): + path = tmp_path_factory.mktemp("indexer") + yield from setup_custom_ethermint( + path, 26660, Path(__file__).parent / "configs/enable-indexer.jsonnet" + ) + + +@pytest.fixture( + scope="module", params=["ethermint", "geth", "ethermint-ws", "enable-indexer"] +) +def cluster(request, custom_ethermint, ethermint_indexer, geth): + """ + run on both ethermint and geth + """ + provider = request.param + if provider == "ethermint": + yield custom_ethermint + elif provider == "geth": + yield geth + elif provider == "ethermint-ws": + ethermint_ws = custom_ethermint.copy() + ethermint_ws.use_websocket() + yield ethermint_ws + elif provider == "enable-indexer": + yield ethermint_indexer + else: + raise NotImplementedError + + +def test_basic(cluster): + w3 = cluster.w3 + assert w3.eth.chain_id == 9000 + + # Smart contract names GREETER_CONTRACT = "Greeter" ERC20_CONTRACT = "TestERC20A" @@ -58,6 +103,7 @@ def test_pending_transaction_filter(cluster): # without tx assert flt.get_new_entries() == [] # GetFilterChanges + w3_wait_for_new_blocks(w3, 1, sleep=0.1) # with tx txhash = send_successful_transaction(w3) assert txhash in flt.get_new_entries() diff --git a/tests/integration_tests/test_grpc_only.py b/tests/integration_tests/test_grpc_only.py index 64d17268..0531bcfa 100644 --- a/tests/integration_tests/test_grpc_only.py +++ b/tests/integration_tests/test_grpc_only.py @@ -1,6 +1,7 @@ import base64 import json import subprocess +import time from pathlib import Path import pytest @@ -13,6 +14,7 @@ from .utils import ( decode_bech32, deploy_contract, supervisorctl, + wait_for_block, wait_for_port, ) @@ -45,9 +47,6 @@ def grpc_eth_call(port: int, args: dict, chain_id=None, proposer_address=None): ).json() -@pytest.mark.skip( - reason="undeterministic test - https://github.com/evmos/ethermint/issues/1530" -) def test_grpc_mode(custom_ethermint): """ - restart a fullnode in grpc-only mode @@ -61,33 +60,43 @@ def test_grpc_mode(custom_ethermint): "to": contract.address, "data": contract.encodeABI(fn_name="currentChainID"), } - api_port = ports.api_port(custom_ethermint.base_port(2)) + api_port = ports.api_port(custom_ethermint.base_port(1)) # in normal mode, grpc query works even if we don't pass chain_id explicitly - rsp = grpc_eth_call(api_port, msg) - print(rsp) - assert "code" not in rsp, str(rsp) - assert 9000 == int.from_bytes(base64.b64decode(rsp["ret"].encode()), "big") - + success = False + max_retry = 3 + sleep = 1 + for i in range(max_retry): + rsp = grpc_eth_call(api_port, msg) + ret = rsp["ret"] + valid = ret is not None + if valid and 9000 == int.from_bytes(base64.b64decode(ret.encode()), "big"): + success = True + break + time.sleep(sleep) + assert success + # wait 1 more block for both nodes to avoid node stopped before tnx get included + for i in range(2): + wait_for_block(custom_ethermint.cosmos_cli(i), 1) supervisorctl( - custom_ethermint.base_dir / "../tasks.ini", "stop", "ethermint_9000-1-node2" + custom_ethermint.base_dir / "../tasks.ini", "stop", "ethermint_9000-1-node1" ) # run grpc-only mode directly with existing chain state - with (custom_ethermint.base_dir / "node2.log").open("w") as logfile: + with (custom_ethermint.base_dir / "node1.log").open("a") as logfile: proc = subprocess.Popen( [ "ethermintd", "start", "--grpc-only", "--home", - custom_ethermint.base_dir / "node2", + custom_ethermint.base_dir / "node1", ], stdout=logfile, stderr=subprocess.STDOUT, ) try: # wait for grpc and rest api ports - grpc_port = ports.grpc_port(custom_ethermint.base_port(2)) + grpc_port = ports.grpc_port(custom_ethermint.base_port(1)) wait_for_port(grpc_port) wait_for_port(api_port) @@ -102,9 +111,8 @@ def test_grpc_mode(custom_ethermint): assert "validator does not exist" in rsp["message"] # pass the first validator's consensus address to grpc query - cons_addr = decode_bech32( - custom_ethermint.cosmos_cli(0).consensus_address() - ) + addr = custom_ethermint.cosmos_cli(0).consensus_address() + cons_addr = decode_bech32(addr) # should work with both chain_id and proposer_address set rsp = grpc_eth_call( diff --git a/tests/integration_tests/test_priority.py b/tests/integration_tests/test_priority.py index c3de9cec..c505f7a5 100644 --- a/tests/integration_tests/test_priority.py +++ b/tests/integration_tests/test_priority.py @@ -1,11 +1,19 @@ import sys -from .network import Ethermint +import pytest + +from .network import setup_ethermint from .utils import ADDRS, KEYS, eth_to_bech32, sign_transaction, wait_for_new_blocks PRIORITY_REDUCTION = 1000000 +@pytest.fixture(scope="module") +def custom_ethermint(tmp_path_factory): + path = tmp_path_factory.mktemp("priority") + yield from setup_ethermint(path, 26800, long_timeout_commit=True) + + def effective_gas_price(tx, base_fee): if "maxFeePerGas" in tx: # dynamic fee tx @@ -27,7 +35,7 @@ def tx_priority(tx, base_fee): return (tx["gasPrice"] - base_fee) // PRIORITY_REDUCTION -def test_priority(ethermint: Ethermint): +def test_priority(ethermint): """ test priorities of different tx types @@ -112,7 +120,7 @@ def test_priority(ethermint: Ethermint): assert all(i1 > i2 for i1, i2 in zip(tx_indexes, tx_indexes[1:])) -def test_native_tx_priority(ethermint: Ethermint): +def test_native_tx_priority(ethermint): cli = ethermint.cosmos_cli() base_fee = cli.query_base_fee() print("base_fee", base_fee) diff --git a/tests/integration_tests/test_pruned_node.py b/tests/integration_tests/test_pruned_node.py index de21d122..9ead5424 100644 --- a/tests/integration_tests/test_pruned_node.py +++ b/tests/integration_tests/test_pruned_node.py @@ -103,7 +103,7 @@ def test_pruned_node(pruned): exp_tx = AttributeDict( { "from": "0x57f96e6B86CdeFdB3d412547816a82E3E0EbF9D2", - "gas": 51542, + "gas": 51406, "input": ( "0xa9059cbb000000000000000000000000378c50d9264c63f3f92b806d4ee56e" "9d86ffb3ec000000000000000000000000000000000000000000000000000000" diff --git a/tests/integration_tests/test_rollback.py b/tests/integration_tests/test_rollback.py index 1fbe3163..f6dd656a 100644 --- a/tests/integration_tests/test_rollback.py +++ b/tests/integration_tests/test_rollback.py @@ -10,7 +10,7 @@ from .network import setup_custom_ethermint from .utils import supervisorctl, wait_for_block, wait_for_port -def update_node2_cmd(path, cmd, i): +def update_node_cmd(path, cmd, i): ini_path = path / SUPERVISOR_CONFIG_FILE ini = configparser.RawConfigParser() ini.read(ini_path) @@ -29,7 +29,7 @@ def update_node2_cmd(path, cmd, i): def post_init(broken_binary): def inner(path, base_port, config): chain_id = "ethermint_9000-1" - update_node2_cmd(path / chain_id, broken_binary, 2) + update_node_cmd(path / chain_id, broken_binary, 1) return inner @@ -66,33 +66,33 @@ def test_rollback(custom_ethermint): - use rollback command to rollback the db. - switch to correct binary should make the node syncing again. """ - wait_for_port(ports.rpc_port(custom_ethermint.base_port(2))) + target_port = ports.rpc_port(custom_ethermint.base_port(1)) + wait_for_port(target_port) - print("wait for node2 to sync the first 10 blocks") - cli2 = custom_ethermint.cosmos_cli(2) - wait_for_block(cli2, 10) + print("wait for node1 to sync the first 10 blocks") + cli1 = custom_ethermint.cosmos_cli(1) + wait_for_block(cli1, 10) print("wait for a few more blocks on the healthy nodes") - cli = custom_ethermint.cosmos_cli(0) - wait_for_block(cli, 13) + cli0 = custom_ethermint.cosmos_cli(0) + wait_for_block(cli0, 13) # (app hash mismatch happens after the 10th block, detected in the 11th block) - print("check node2 get stuck at block 10") - assert cli2.block_height() == 10 + print("check node1 get stuck at block 10") + assert cli1.block_height() == 10 - print("stop node2") + print("stop node1") supervisorctl( - custom_ethermint.base_dir / "../tasks.ini", "stop", "ethermint_9000-1-node2" + custom_ethermint.base_dir / "../tasks.ini", "stop", "ethermint_9000-1-node1" ) - print("do rollback on node2") - cli2.rollback() + print("do rollback on node1") + cli1.rollback() print("switch to normal binary") - update_node2_cmd(custom_ethermint.base_dir, "ethermintd", 2) + update_node_cmd(custom_ethermint.base_dir, "ethermintd", 1) supervisorctl(custom_ethermint.base_dir / "../tasks.ini", "update") - wait_for_port(ports.rpc_port(custom_ethermint.base_port(2))) + wait_for_port(target_port) - print("check node2 sync again") - cli2 = custom_ethermint.cosmos_cli(2) - wait_for_block(cli2, 15) + print("check node1 sync again") + wait_for_block(cli1, 15) diff --git a/tests/integration_tests/test_upgrade.py b/tests/integration_tests/test_upgrade.py index 9ce3fbd2..566f41e3 100644 --- a/tests/integration_tests/test_upgrade.py +++ b/tests/integration_tests/test_upgrade.py @@ -92,9 +92,6 @@ def test_cosmovisor_upgrade(custom_ethermint: Ethermint): - check that queries on legacy blocks still works after upgrade. """ cli = custom_ethermint.cosmos_cli() - height = cli.block_height() - target_height = height + 10 - print("upgrade height", target_height) w3 = custom_ethermint.w3 contract, _ = deploy_contract(w3, CONTRACTS["TestERC20A"]) @@ -104,6 +101,9 @@ def test_cosmovisor_upgrade(custom_ethermint: Ethermint): old_erc20_balance = contract.caller.balanceOf(ADDRS["validator"]) print("old values", old_height, old_balance, old_base_fee) + target_height = w3.eth.block_number + 10 + print("upgrade height", target_height) + plan_name = "integration-test-upgrade" rsp = cli.gov_propose( "community", @@ -120,7 +120,6 @@ def test_cosmovisor_upgrade(custom_ethermint: Ethermint): # get proposal_id ev = parse_events(rsp["logs"])["submit_proposal"] - assert ev["proposal_type"] == "SoftwareUpgrade", rsp proposal_id = ev["proposal_id"] rsp = cli.gov_vote("validator", proposal_id, "yes") diff --git a/tests/integration_tests/utils.py b/tests/integration_tests/utils.py index 84893abe..ce28e9c4 100644 --- a/tests/integration_tests/utils.py +++ b/tests/integration_tests/utils.py @@ -74,13 +74,12 @@ def w3_wait_for_new_blocks(w3, n, sleep=0.5): break -def wait_for_new_blocks(cli, n): - begin_height = int((cli.status())["SyncInfo"]["latest_block_height"]) - while True: - time.sleep(0.5) +def wait_for_new_blocks(cli, n, sleep=0.5): + cur_height = begin_height = int((cli.status())["SyncInfo"]["latest_block_height"]) + while cur_height - begin_height < n: + time.sleep(sleep) cur_height = int((cli.status())["SyncInfo"]["latest_block_height"]) - if cur_height - begin_height >= n: - break + return cur_height def wait_for_block(cli, height, timeout=240):