From 7125f65fe6c0d59d215fc4caf600458d273ee5f8 Mon Sep 17 00:00:00 2001 From: ordian <write@reusable.software> Date: Mon, 28 Aug 2023 19:03:44 +0200 Subject: [PATCH] less flaky dispute slashing test (#1218) --- ...0004-parachains-disputes-past-session.toml | 15 +++--- ...004-parachains-disputes-past-session.zndsl | 52 ++++++++++++------- 2 files changed, 42 insertions(+), 25 deletions(-) diff --git a/polkadot/zombienet_tests/functional/0004-parachains-disputes-past-session.toml b/polkadot/zombienet_tests/functional/0004-parachains-disputes-past-session.toml index 3b05c91e134..50c465950f7 100644 --- a/polkadot/zombienet_tests/functional/0004-parachains-disputes-past-session.toml +++ b/polkadot/zombienet_tests/functional/0004-parachains-disputes-past-session.toml @@ -4,8 +4,8 @@ bootnode = true [relaychain.genesis.runtime.configuration.config] max_validators_per_core = 1 - needed_approvals = 3 - group_rotation_frequency = 4 + needed_approvals = 2 + group_rotation_frequency = 3 [relaychain] default_image = "{{ZOMBIENET_INTEGRATION_TEST_IMAGE}}" @@ -16,15 +16,16 @@ default_command = "polkadot" limits = { memory = "4G", cpu = "2" } requests = { memory = "2G", cpu = "1" } - [[relaychain.nodes]] - name = "alice" + [[relaychain.node_groups]] + name = "honest-flaky-validator" invulnerable = true # it will go offline, we don't want to disable it - args = ["-lparachain=debug,runtime=debug"] + count = 2 + args = ["-lparachain=debug"] [[relaychain.node_groups]] name = "honest-validator" - count = 2 - args = ["-lruntime=debug,sync=trace"] + count = 1 + args = ["-lparachain=debug"] [[relaychain.node_groups]] image = "{{MALUS_IMAGE}}" diff --git a/polkadot/zombienet_tests/functional/0004-parachains-disputes-past-session.zndsl b/polkadot/zombienet_tests/functional/0004-parachains-disputes-past-session.zndsl index 8e792f974fe..bf3fb0ac9de 100644 --- a/polkadot/zombienet_tests/functional/0004-parachains-disputes-past-session.zndsl +++ b/polkadot/zombienet_tests/functional/0004-parachains-disputes-past-session.zndsl @@ -2,36 +2,52 @@ Description: Past-session dispute slashing Network: ./0004-parachains-disputes-past-session.toml Creds: config -alice: reports node_roles is 4 +# Ensure nodes are up and running +honest-flaky-validator: reports node_roles is 4 -# pause alice so that disputes don't conclude -alice: pause +# Stop issuing disputes for now +malus-validator: pause -# Ensure parachain is registered. -honest-validator-0: parachain 1000 is registered within 100 seconds +# Ensure parachain is registered +honest-validator: parachain 1000 is registered within 100 seconds -# Ensure parachain made progress. -honest-validator-0: parachain 1000 block height is at least 1 within 300 seconds +# Ensure parachain made progress +honest-validator: parachain 1000 block height is at least 1 within 300 seconds -# There should be disputes initiated -honest-validator-0: reports polkadot_parachain_candidate_disputes_total is at least 2 within 200 seconds +# Start issuing disputes +malus-validator: resume -# Stop issuing disputes -malus-validator-0: pause +# Wait for malus to back garbage candidate +malus-validator: log line matches "Suggesting malicious candidate" within 200 seconds + +# Pause first flaky node +# Availability and finality will continue with 3/4 nodes online (incl. malus) +honest-flaky-validator-0: pause + +# Wait for the dispute +honest-flaky-validator-1: reports parachain_candidate_disputes_total is at least 1 within 40 seconds + +# Pause second flaky node so that we do not revert blocks due to f+1 invalid votes +# Availability and finality will stop +honest-flaky-validator-1: pause -# wait for the next session +# Wait for 1 full session to pass after the last unconcluded dispute. sleep 120 seconds -# But should not resolve -honest-validator-0: reports block height minus finalised block is at least 10 within 100 seconds +# Now resume flaky validators +honest-flaky-validator: resume -# Now resume alice -alice: resume +# Stop issuing disputes +malus-validator: pause # Disputes should start concluding now -honest-validator-0: reports polkadot_parachain_candidate_dispute_concluded{validity="invalid"} is at least 1 within 200 seconds +honest-validator: reports polkadot_parachain_candidate_dispute_concluded{validity="invalid"} is at least 1 within 200 seconds + # Disputes should always end as "invalid" -honest-validator-0: reports polkadot_parachain_candidate_dispute_concluded{validity="valid"} is 0 +honest-validator: reports polkadot_parachain_candidate_dispute_concluded{validity="valid"} is 0 # Check an unsigned extrinsic is submitted honest-validator: log line contains "Successfully reported pending slash" within 180 seconds + +# Finality should not lag after dispute resolution +honest-validator: reports block height minus finalised block is lower than 8 within 100 seconds -- GitLab