Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

Commit cde8935

Browse files
committed
Applied suggestions
1 parent e2f3fdc commit cde8935

File tree

3 files changed

+66
-62
lines changed

3 files changed

+66
-62
lines changed

Cargo.lock

Lines changed: 12 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/parachain/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,9 @@ assert_cmd = "0.12"
5757
nix = "0.17"
5858
tempfile = "3.1"
5959
jsonrpsee = "0.1"
60-
async-std = "1.2.0"
60+
async-std = { version = "1.2.0", features = [ "attributes" ] }
6161
hex = "0.4"
62-
regex = "1"
62+
serde_json = "1.0"
6363

6464
# Polkadot dependencies
6565
polkadot-runtime-common = { git = "https://github.com/paritytech/polkadot", branch = "cumulus-branch" }

test/parachain/tests/integration_test.rs

Lines changed: 52 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use polkadot_primitives::parachain::{Info, Scheduling};
2323
use polkadot_primitives::Hash as PHash;
2424
use polkadot_runtime::{Header, OnlyStakingAndClaims, Runtime, SignedExtra, SignedPayload};
2525
use polkadot_runtime_common::{parachains, registrar, BlockHashCount};
26-
use regex::Regex;
26+
use serde_json::Value;
2727
use sp_arithmetic::traits::SaturatedConversion;
2828
use sp_runtime::generic;
2929
use sp_version::RuntimeVersion;
@@ -62,6 +62,11 @@ jsonrpsee::rpc_api! {
6262
#[rpc(method = "state_getRuntimeVersion")]
6363
fn runtime_version() -> RuntimeVersion;
6464
}
65+
66+
System {
67+
#[rpc(method = "system_networkState")]
68+
fn network_state() -> Value;
69+
}
6570
}
6671

6772
// Adapted from
@@ -140,21 +145,6 @@ impl<'a> ChildHelper<'a> {
140145
Ok(&self.stderr)
141146
}
142147

143-
fn read_stderr(&mut self, size: usize) -> io::Result<&str> {
144-
let mut buffer = vec![0; size];
145-
let size = self
146-
.child
147-
.stderr
148-
.as_mut()
149-
.ok_or_else(|| io::Error::new(io::ErrorKind::Other, "stderr not captured"))?
150-
.read(&mut buffer)?;
151-
152-
self.stderr
153-
.push_str(&String::from_utf8_lossy(&buffer[..size]));
154-
155-
Ok(&self.stderr)
156-
}
157-
158148
fn terminate(&mut self) {
159149
match self.child.try_wait() {
160150
Ok(Some(_)) => return,
@@ -223,13 +213,17 @@ fn wait_for_tcp<A: net::ToSocketAddrs>(address: A) -> io::Result<()> {
223213
}
224214
}
225215

226-
#[test]
216+
#[async_std::test]
227217
#[ignore]
228-
fn integration_test() {
218+
async fn integration_test() {
229219
assert!(
230220
!tcp_port_is_open("127.0.0.1:9933"),
231221
"tcp port is already open 127.0.0.1:9933, this test cannot be run",
232222
);
223+
assert!(
224+
!tcp_port_is_open("127.0.0.1:9934"),
225+
"tcp port is already open 127.0.0.1:9934, this test cannot be run",
226+
);
233227

234228
// start alice
235229
let polkadot_alice_dir = tempdir().unwrap();
@@ -243,9 +237,8 @@ fn integration_test() {
243237
.arg("--unsafe-rpc-expose")
244238
.spawn()
245239
.unwrap();
246-
let mut polkadot_alice_child = ChildHelper::new("alice", &mut polkadot_alice);
240+
let polkadot_alice_child = ChildHelper::new("alice", &mut polkadot_alice);
247241
wait_for_tcp("127.0.0.1:9933").unwrap();
248-
let polkadot_alice_id = find_local_node_identity(&mut polkadot_alice_child);
249242

250243
// start bob
251244
let polkadot_bob_dir = tempdir().unwrap();
@@ -256,10 +249,12 @@ fn integration_test() {
256249
.arg("--base-path")
257250
.arg(polkadot_bob_dir.path())
258251
.arg("--bob")
252+
.arg("--unsafe-rpc-expose")
253+
.arg("--rpc-port=9934")
259254
.spawn()
260255
.unwrap();
261-
let mut polkadot_bob_child = ChildHelper::new("bob", &mut polkadot_bob);
262-
let polkadot_bob_id = find_local_node_identity(&mut polkadot_bob_child);
256+
let polkadot_bob_child = ChildHelper::new("bob", &mut polkadot_bob);
257+
wait_for_tcp("127.0.0.1:9934").unwrap();
263258

264259
// wait a bit for some relay chains blocks to be generated
265260
thread::sleep(Duration::from_secs(10));
@@ -273,31 +268,43 @@ fn integration_test() {
273268
let output = &cmd.stdout;
274269
let genesis_state = hex::decode(&output[2..output.len() - 1]).unwrap();
275270

276-
// connect RPC client
277-
let transport_client =
271+
// connect RPC clients
272+
let transport_client_alice =
278273
jsonrpsee::transport::http::HttpTransportClient::new("http://127.0.0.1:9933");
279-
let mut client = jsonrpsee::raw::RawClient::new(transport_client);
274+
let mut client_alice = jsonrpsee::raw::RawClient::new(transport_client_alice);
275+
let transport_client_bob =
276+
jsonrpsee::transport::http::HttpTransportClient::new("http://127.0.0.1:9934");
277+
let mut client_bob = jsonrpsee::raw::RawClient::new(transport_client_bob);
278+
279+
// retrieve nodes network id
280+
let polkadot_alice_id = System::network_state(&mut client_alice).await.unwrap()["peerId"]
281+
.as_str()
282+
.unwrap()
283+
.to_string();
284+
let polkadot_bob_id = System::network_state(&mut client_bob).await.unwrap()["peerId"]
285+
.as_str()
286+
.unwrap()
287+
.to_string();
280288

281289
// retrieve runtime version
282-
let runtime_version =
283-
async_std::task::block_on(async { State::runtime_version(&mut client).await.unwrap() });
290+
let runtime_version = State::runtime_version(&mut client_alice).await.unwrap();
284291

285292
// get the current block
286-
let current_block_hash =
287-
async_std::task::block_on(async { Chain::block_hash(&mut client, None).await.unwrap() })
288-
.unwrap();
289-
let current_block = async_std::task::block_on(async {
290-
Chain::header(&mut client, current_block_hash)
291-
.await
292-
.unwrap()
293-
})
294-
.unwrap()
295-
.number
296-
.saturated_into::<u64>();
293+
let current_block_hash = Chain::block_hash(&mut client_alice, None)
294+
.await
295+
.unwrap()
296+
.unwrap();
297+
let current_block = Chain::header(&mut client_alice, current_block_hash)
298+
.await
299+
.unwrap()
300+
.unwrap()
301+
.number
302+
.saturated_into::<u64>();
297303

298-
let genesis_block =
299-
async_std::task::block_on(async { Chain::block_hash(&mut client, 0).await.unwrap() })
300-
.unwrap();
304+
let genesis_block = Chain::block_hash(&mut client_alice, 0)
305+
.await
306+
.unwrap()
307+
.unwrap();
301308

302309
// create and sign transaction
303310
let wasm =
@@ -357,10 +364,10 @@ fn integration_test() {
357364
sp_runtime::MultiSignature::Sr25519(signature),
358365
extra,
359366
);
360-
let _register_block_hash = async_std::task::block_on(async {
361-
Author::submit_extrinsic(&mut client, format!("0x{}", hex::encode(ex.encode()))).await
362-
})
363-
.unwrap();
367+
let _register_block_hash =
368+
Author::submit_extrinsic(&mut client_alice, format!("0x{}", hex::encode(ex.encode())))
369+
.await
370+
.unwrap();
364371

365372
// run cumulus
366373
let cumulus_dir = tempdir().unwrap();
@@ -395,17 +402,3 @@ fn integration_test() {
395402
"no parachain blocks seems to have been produced",
396403
);
397404
}
398-
399-
fn find_local_node_identity(instance: &mut ChildHelper) -> String {
400-
let regex = Regex::new(r"Local node identity is: (.+)\n").unwrap();
401-
402-
loop {
403-
let s = instance.read_stderr(200).unwrap();
404-
405-
if let Some(captures) = regex.captures(s) {
406-
break captures.get(1).unwrap().as_str().to_string();
407-
} else if s.len() > 2000 {
408-
panic!("could not find node identity");
409-
}
410-
}
411-
}

0 commit comments

Comments
 (0)