mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 19:51:02 +00:00
zombienet: warp-sync integration test added (#12675)
* zombienet: warp-sync integration test added * spelling * Readme corrected * dir name updated * Check second phase of warp sync * zombienet pipeline enable + naive test network * zombienet stage added * paritypr/substrate-debug image added for zombienet testing * debugs added * debugs added * buildah problem fixed * rollback * runner tag * test name corrected * dir renamed (regex problem) * common code clean up * common code clean up * fix * warp sync test improvements * full sha used as short is too short (https://gitlab.parity.io/parity/mirrors/substrate/-/jobs/2051228#L38) * disable tracing for nodes * COMMON_USER -> DOCKERIO_USER * refs reworked * paritypr/substrate image used * DOCKERIO -> DOCKER * generate-ws-db toml cleanup * improvements * fix * raw chain spec used * zombienet v1.3.18 used * zombienet: warp sync test enabled * chain-spec path corrected * log parsing improved Checking if log does not container error or verification failed messages * warp sync test: removed validators * fix * review remarks applied * dir test name changed: 0000_block_building -> 0000-block-building * transaction finalized test added * transaction finalized test: error handling improved * trigger CI job * trigger CI job * trigger CI job * trigger CI job * Explicitly touch `version.rs` to invalidate the related cache * zombienet add logs as artifacts * Revert "Explicitly touch `version.rs` to invalidate the related cache" This reverts commit 9d00ccfe897a280581156c281961a32665dba6d5. * file naming changed Co-authored-by: parity-processbot <> Co-authored-by: Vladimir Istyufeev <vladimir@parity.io> Co-authored-by: Javier Viola <javier@parity.io>
This commit is contained in:
committed by
GitHub
parent
8751f88fc7
commit
39cb3b06cd
@@ -0,0 +1,15 @@
|
||||
[settings]
|
||||
enable_tracing = false
|
||||
|
||||
[relaychain]
|
||||
default_image = "{{ZOMBIENET_INTEGRATION_TEST_IMAGE}}"
|
||||
default_command = "substrate"
|
||||
chain = "local"
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "alice"
|
||||
validator = true
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "bob"
|
||||
validator = true
|
||||
@@ -0,0 +1,20 @@
|
||||
Description: Block building
|
||||
Network: ./block-building.toml
|
||||
Creds: config
|
||||
|
||||
alice: is up
|
||||
bob: is up
|
||||
|
||||
alice: reports node_roles is 4
|
||||
bob: reports node_roles is 4
|
||||
|
||||
alice: reports peers count is at least 1
|
||||
bob: reports peers count is at least 1
|
||||
|
||||
alice: reports block height is at least 5 within 20 seconds
|
||||
bob: reports block height is at least 5 within 20 seconds
|
||||
|
||||
alice: count of log lines containing "error" is 0 within 2 seconds
|
||||
bob: count of log lines containing "error" is 0 within 2 seconds
|
||||
|
||||
alice: js-script ./transaction-gets-finalized.js within 30 seconds
|
||||
@@ -0,0 +1,59 @@
|
||||
//based on: https://polkadot.js.org/docs/api/examples/promise/transfer-events
|
||||
|
||||
const assert = require("assert");
|
||||
|
||||
async function run(nodeName, networkInfo, args) {
|
||||
const {wsUri, userDefinedTypes} = networkInfo.nodesByName[nodeName];
|
||||
const api = await zombie.connect(wsUri, userDefinedTypes);
|
||||
|
||||
// Construct the keyring after the API (crypto has an async init)
|
||||
const keyring = new zombie.Keyring({ type: "sr25519" });
|
||||
|
||||
// Add Alice to our keyring with a hard-derivation path (empty phrase, so uses dev)
|
||||
const alice = keyring.addFromUri('//Alice');
|
||||
const bob = '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty';
|
||||
|
||||
// Create a extrinsic, transferring 10^20 units to Bob
|
||||
const transfer = api.tx.balances.transfer(bob, 10n**20n);
|
||||
|
||||
let transaction_success_event = false;
|
||||
try {
|
||||
await new Promise( async (resolve, reject) => {
|
||||
const unsubscribe = await transfer
|
||||
.signAndSend(alice, { nonce: -1 }, ({ events = [], status }) => {
|
||||
console.log('Transaction status:', status.type);
|
||||
|
||||
if (status.isInBlock) {
|
||||
console.log('Included at block hash', status.asInBlock.toHex());
|
||||
console.log('Events:');
|
||||
|
||||
events.forEach(({ event: { data, method, section }, phase }) => {
|
||||
console.log('\t', phase.toString(), `: ${section}.${method}`, data.toString());
|
||||
|
||||
if (section=="system" && method =="ExtrinsicSuccess") {
|
||||
transaction_success_event = true;
|
||||
}
|
||||
});
|
||||
} else if (status.isFinalized) {
|
||||
console.log('Finalized block hash', status.asFinalized.toHex());
|
||||
unsubscribe();
|
||||
if (transaction_success_event) {
|
||||
resolve();
|
||||
} else {
|
||||
reject("ExtrinsicSuccess has not been seen");
|
||||
}
|
||||
} else if (status.isError) {
|
||||
unsubscribe();
|
||||
reject("Transaction status.isError");
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
} catch (error) {
|
||||
assert.fail("Transfer promise failed, error: " + error);
|
||||
}
|
||||
|
||||
assert.ok("test passed");
|
||||
}
|
||||
|
||||
module.exports = { run }
|
||||
Reference in New Issue
Block a user