Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add zombienet tests part 3 #1803

Merged
merged 3 commits into from
Sep 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ charlie: reports parachain_candidate_dispute_concluded{validity="invalid"} is 0
# Check lag - approval
alice: reports polkadot_parachain_approval_checking_finality_lag is 0
bob: reports polkadot_parachain_approval_checking_finality_lag is 0
charlie: reports polkadot_parachain_approval_checking_finality_lag is 0
charlie: reports kagome_parachain_approval_checking_finality_lag is 0
dave: reports polkadot_parachain_approval_checking_finality_lag is 0
ferdie: reports polkadot_parachain_approval_checking_finality_lag is 0
eve: reports polkadot_parachain_approval_checking_finality_lag is 0
Expand All @@ -59,7 +59,7 @@ two: reports polkadot_parachain_approval_checking_finality_lag is 0
# Check lag - dispute conclusion
alice: reports polkadot_parachain_disputes_finality_lag is 0
bob: reports polkadot_parachain_disputes_finality_lag is 0
charlie: reports polkadot_parachain_disputes_finality_lag is 0
charlie: reports kagome_parachain_disputes_finality_lag is 0
dave: reports polkadot_parachain_disputes_finality_lag is 0
ferdie: reports polkadot_parachain_disputes_finality_lag is 0
eve: reports polkadot_parachain_disputes_finality_lag is 0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ bootnode = true
needed_approvals = 2

[relaychain]
default_image = "{{ZOMBIENET_INTEGRATION_TEST_IMAGE}}"
chain = "rococo-local"
chain_spec_command = "polkadot build-spec --chain rococo-local --disable-default-bootnode"
default_command = "polkadot"
Expand All @@ -29,7 +28,6 @@ requests = { memory = "2G", cpu = "1" }
args = ["--wasm-execution Compiled --unsafe-cached-wavm-runtime"]

[[relaychain.node_groups]]
image = "{{MALUS_IMAGE}}"
name = "malus-validator"
command = "malus suggest-garbage-candidate"
args = ["-lparachain=debug,MALUS=trace"]
Expand All @@ -41,7 +39,6 @@ id = {{id}}
addToGenesis = true
genesis_state_generator = "undying-collator export-genesis-state --pov-size={{10000*(id-1999)}} --pvf-complexity={{id - 1999}}"
[parachains.collator]
image = "{{COL_IMAGE}}"
name = "collator"
command = "undying-collator"
args = ["-lparachain=debug", "--pov-size={{10000*(id-1999)}}", "--parachain-id={{id}}", "--pvf-complexity={{id - 1999}}"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,15 @@ honest-validator-1: log line contains "reverted due to a bad parachain block" wi
# Check if disputes are concluded in less than 2 blocks.
honest-validator-0: reports polkadot_parachain_disputes_finality_lag is lower than 2
honest-validator-1: reports polkadot_parachain_disputes_finality_lag is lower than 2
kagome-validator-0: reports polkadot_parachain_disputes_finality_lag is lower than 2
kagome-validator-0: reports kagome_parachain_disputes_finality_lag is lower than 2

# Allow more time for malicious validator activity.
sleep 30 seconds

# Check that garbage parachain blocks included by malicious validators are being disputed.
honest-validator-0: reports polkadot_parachain_candidate_disputes_total is at least 2 within 15 seconds
honest-validator-1: reports polkadot_parachain_candidate_disputes_total is at least 2 within 15 seconds
kagome-validator-0: reports polkadot_parachain_candidate_disputes_total is at least 2 within 15 seconds
kagome-validator-0: reports kagome_parachain_candidate_disputes_total is at least 2 within 15 seconds

# Disputes should always end as "invalid"
honest-validator-0: reports polkadot_parachain_candidate_dispute_concluded{validity="invalid"} is at least 2 within 15 seconds
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
[settings]
timeout = 1000

[relaychain]
chain = "rococo-local"
default_command = "polkadot"

[[relaychain.nodes]]
name = "alice"
args = ["-lruntime=debug,parachain=trace" ]

[[relaychain.nodes]]
name = "bob"
args = [ "-lruntime=debug,parachain=trace" ]

[[relaychain.nodes]]
name = "charlie"
args = [ "-lruntime=debug,parachain=trace" ]

[[relaychain.nodes]]
name = "dave"
args = [ "-lruntime=debug,parachain=trace" ]
command = "kagome"
prometheus_prefix = "kagome"
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
Description: Deregister / Register Validator Smoke
Network: ./0008-deregister-register-validator-smoke.toml
Creds: config

alice: is up within 30 seconds
bob: is up within 30 seconds
charlie: is up within 30 seconds
dave: is up within 30 seconds

# ensure dave is in the validator set
dave: reports kagome_node_is_parachain_validator is 1 within 240 secs
dave: reports kagome_node_is_active_validator is 1 within 240 secs

# deregister and check
alice: js-script ./0008-deregister-register-validator.js with "deregister,dave" return is 0 within 30 secs

# Wait 2 sessions. The authority set change is enacted at curent_session + 2.
sleep 120 seconds
dave: reports kagome_node_is_parachain_validator is 0 within 180 secs
dave: reports kagome_node_is_active_validator is 0 within 180 secs

# register and check
alice: js-script ./0008-deregister-register-validator.js with "register,dave" return is 0 within 30 secs

# Wait 2 sessions. The authority set change is enacted at curent_session + 2.
sleep 120 seconds
dave: reports kagome_node_is_parachain_validator is 1 within 180 secs
dave: reports kagome_node_is_active_validator is 1 within 180 secs
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
const assert = require("assert");

function nameCase(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}

async function run(nodeName, networkInfo, jsArgs) {
const {wsUri, userDefinedTypes} = networkInfo.nodesByName[nodeName];
const api = await zombie.connect(wsUri, userDefinedTypes);
const action = jsArgs[0] === "register" ? "registerValidators" : "deregisterValidators"
const validatorName = jsArgs[1]; // used as seed

await zombie.util.cryptoWaitReady();

// account to submit tx
const keyring = new zombie.Keyring({ type: "sr25519" });
const alice = keyring.addFromUri("//Alice");
const validatorStash = keyring.createFromUri(`//${nameCase(validatorName)}//stash`);

await new Promise(async (resolve, reject) => {
const unsub = await api.tx.sudo
.sudo(api.tx.validatorManager[action]([validatorStash.address]))
.signAndSend(alice, (result) => {
console.log(`Current status is ${result.status}`);
if (result.status.isInBlock) {
console.log(
`Transaction included at blockHash ${result.status.asInBlock}`
);
} else if (result.status.isFinalized) {
console.log(
`Transaction finalized at blockHash ${result.status.asFinalized}`
);
unsub();
return resolve();
} else if (result.isError) {
console.log(`Transaction Error`);
unsub();
return reject();
}
});
});

return 0;
}

module.exports = { run }
31 changes: 31 additions & 0 deletions zombienet/0009-basic-warp-sync/0009-basic-warp-sync.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
[settings]
enable_tracing = false

[relaychain]
default_command = "polkadot"

chain = "gen-db"
chain_spec_path = "kagome/zombienet/0009-basic-warp-sync/gen-db-raw.json"

[[relaychain.nodes]]
name = "alice"
validator = false
db_snapshot="https://www.googleapis.com/drive/v3/files/12T_sO7BGc3aRNw8aMIZDf36bO6HUsEgY?alt=media&key=AIzaSyB-qssH0qmtahNKJf_T6iMZMs-9SkColu8"

[[relaychain.nodes]]
name = "bob"
validator = false
db_snapshot="https://www.googleapis.com/drive/v3/files/12T_sO7BGc3aRNw8aMIZDf36bO6HUsEgY?alt=media&key=AIzaSyB-qssH0qmtahNKJf_T6iMZMs-9SkColu8"

#we need at least 3 nodes for warp sync
[[relaychain.nodes]]
name = "charlie"
validator = false
db_snapshot="https://www.googleapis.com/drive/v3/files/12T_sO7BGc3aRNw8aMIZDf36bO6HUsEgY?alt=media&key=AIzaSyB-qssH0qmtahNKJf_T6iMZMs-9SkColu8"

[[relaychain.nodes]]
name = "dave"
validator = false
command = "kagome"
prometheus_prefix = "kagome"
args = ["--sync Warp"]
25 changes: 25 additions & 0 deletions zombienet/0009-basic-warp-sync/0009-basic-warp-sync.zndsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
Description: Warp sync
Network: ./0009-basic-warp-sync.toml
Creds: config

alice: reports node_roles is 1
bob: reports node_roles is 1
charlie: reports node_roles is 1
dave: reports node_roles is 1

alice: reports peers count is at least 3 within 60 seconds
bob: reports peers count is at least 3 within 60 seconds
charlie: reports peers count is at least 3 within 60 seconds
dave: reports peers count is at least 3 within 60 seconds


# db snapshot has 5140 blocks
dave: reports block height is at least 1 within 60 seconds
dave: reports block height is at least 5140 within 60 seconds

alice: reports block height is at least 5140 within 60 seconds
bob: reports block height is at least 5140 within 60 seconds
charlie: reports block height is at least 5140 within 60 seconds

dave: log line matches "Synchronizer Sync of state for block #[0-9]+ \(0x.*?\) has started" within 60 seconds
dave: log line matches "Synchronizer State syncing block #[0-9]+ \(0x.*?\) has finished." within 60 seconds
166 changes: 166 additions & 0 deletions zombienet/0009-basic-warp-sync/gen-db-raw.json

Large diffs are not rendered by default.

36 changes: 36 additions & 0 deletions zombienet/0010-validators-warp-sync/0010-validators-warp-sync.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
[settings]
enable_tracing = false

[relaychain]
default_command = "polkadot"
chain_spec_path = "kagome/zombienet/0010-validators-warp-sync/gen-db-raw.json"
chain = "gen-db"

[[relaychain.nodes]]
name = "alice"
validator = true
args = ["--sync warp"]

[[relaychain.nodes]]
name = "bob"
validator = true
command = "kagome"
prometheus_prefix = "kagome"
args = ["--sync Warp"]

#we need at least 3 nodes for warp sync
[[relaychain.nodes]]
name = "charlie"
validator = false
db_snapshot = "https://www.googleapis.com/drive/v3/files/12T_sO7BGc3aRNw8aMIZDf36bO6HUsEgY?alt=media&key=AIzaSyB-qssH0qmtahNKJf_T6iMZMs-9SkColu8"

[[relaychain.nodes]]
name = "dave"
validator = false
db_snapshot = "https://www.googleapis.com/drive/v3/files/12T_sO7BGc3aRNw8aMIZDf36bO6HUsEgY?alt=media&key=AIzaSyB-qssH0qmtahNKJf_T6iMZMs-9SkColu8"

[[relaychain.nodes]]
name = "eve"
validator = false
db_snapshot = "https://www.googleapis.com/drive/v3/files/12T_sO7BGc3aRNw8aMIZDf36bO6HUsEgY?alt=media&key=AIzaSyB-qssH0qmtahNKJf_T6iMZMs-9SkColu8"

Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
Description: Warp sync
Network: ./0010-validators-warp-sync.toml
Creds: config

alice: reports node_roles is 4
bob: reports node_roles is 4
charlie: reports node_roles is 1
dave: reports node_roles is 1
eve: reports node_roles is 1

alice: reports peers count is at least 4 within 60 seconds
bob: reports peers count is at least 4 within 60 seconds
charlie: reports peers count is at least 4 within 60 seconds
dave: reports peers count is at least 4 within 60 seconds
eve: reports peers count is at least 4 within 60 seconds

# db snapshot has 5140 blocks
charlie: reports block height is at least 5140 within 60 seconds
dave: reports block height is at least 5140 within 60 seconds
eve: reports block height is at least 5140 within 60 seconds

alice: log line matches "Warp sync is complete" within 60 seconds
bob: log line matches "Synchronizer State syncing block #[0-9]+ \(0x.*?\) has finished." within 60 seconds

# workaround for: https://github.com/paritytech/zombienet/issues/580
alice: count of log lines containing "Block history download is complete" is 1 within 60 seconds

alice: reports block height is at least 5140 within 10 seconds
bob: reports block height is at least 5140 within 10 seconds

# new block were built
alice: reports block height is at least 5145 within 90 seconds
bob: reports block height is at least 5145 within 90 seconds
Loading