From 58533be562c8d8b8796023fb818a78703cddb4ce Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Oct 2023 00:36:20 +0000 Subject: [PATCH 01/17] chore(deps): update libp2p --- Cargo.lock | 20 ++++++++++++++++---- Cargo.toml | 2 +- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0feeaab045..4ee1a563ef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3065,7 +3065,7 @@ dependencies = [ "multihash 0.19.1", "once_cell", "particle-protocol", - "prometheus-client", + "prometheus-client 0.22.0", "prost 0.12.1", "serde_json", "server-config", @@ -3424,7 +3424,7 @@ dependencies = [ "libp2p-ping", "libp2p-swarm", "once_cell", - "prometheus-client", + "prometheus-client 0.21.2", ] [[package]] @@ -4488,7 +4488,7 @@ dependencies = [ "particle-execution", "particle-protocol", "peer-metrics", - "prometheus-client", + "prometheus-client 0.22.0", "rand 0.8.5", "serde", "serde_json", @@ -5022,7 +5022,7 @@ dependencies = [ "log", "parking_lot", "particle-execution", - "prometheus-client", + "prometheus-client 0.22.0", "serde", "serde_json", "tokio", @@ -5244,6 +5244,18 @@ dependencies = [ "prometheus-client-derive-encode", ] +[[package]] +name = "prometheus-client" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "510c4f1c9d81d556458f94c98f857748130ea9737bbd6053da497503b26ea63c" +dependencies = [ + "dtoa", + "itoa", + "parking_lot", + "prometheus-client-derive-encode", +] + [[package]] name = "prometheus-client-derive-encode" version = "0.4.1" diff --git a/Cargo.toml b/Cargo.toml index cada28ca2b..1e05416089 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -115,7 +115,7 @@ libp2p-identity = "0.2.7" libp2p-connection-limits = "0.2.1" libp2p-kad = "0.44.6" multihash = "0.19.1" -prometheus-client = "0.21.2" +prometheus-client = "0.22.0" eyre = "0.6.8" base64 = "0.21.5" From 7a6f08a493d116c7415e28ab077320c23075f5d2 Mon Sep 17 00:00:00 2001 From: Nick Date: Sat, 28 Oct 2023 12:29:55 +0300 Subject: [PATCH 02/17] Revert prometheus-client update --- Cargo.lock | 20 ++++---------------- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4ee1a563ef..0feeaab045 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3065,7 +3065,7 @@ dependencies = [ "multihash 0.19.1", "once_cell", "particle-protocol", - "prometheus-client 0.22.0", + "prometheus-client", "prost 0.12.1", "serde_json", "server-config", @@ -3424,7 +3424,7 @@ dependencies = [ "libp2p-ping", "libp2p-swarm", "once_cell", - "prometheus-client 0.21.2", + "prometheus-client", ] [[package]] @@ -4488,7 +4488,7 @@ dependencies = [ "particle-execution", "particle-protocol", "peer-metrics", - "prometheus-client 0.22.0", + "prometheus-client", "rand 0.8.5", "serde", "serde_json", @@ -5022,7 +5022,7 @@ dependencies = [ "log", "parking_lot", "particle-execution", - "prometheus-client 0.22.0", + "prometheus-client", "serde", "serde_json", "tokio", @@ -5244,18 +5244,6 @@ dependencies = [ "prometheus-client-derive-encode", ] -[[package]] -name = "prometheus-client" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "510c4f1c9d81d556458f94c98f857748130ea9737bbd6053da497503b26ea63c" -dependencies = [ - "dtoa", - "itoa", - "parking_lot", - "prometheus-client-derive-encode", -] - [[package]] name = "prometheus-client-derive-encode" version = "0.4.1" diff --git a/Cargo.toml b/Cargo.toml index 1e05416089..cada28ca2b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -115,7 +115,7 @@ libp2p-identity = "0.2.7" libp2p-connection-limits = "0.2.1" libp2p-kad = "0.44.6" multihash = "0.19.1" -prometheus-client = "0.22.0" +prometheus-client = "0.21.2" eyre = "0.6.8" base64 = "0.21.5" From 9e89d9c02bd75fcbdb582d824cb4fca03af74661 Mon Sep 17 00:00:00 2001 From: Nick Date: Sat, 28 Oct 2023 12:37:59 +0300 Subject: [PATCH 03/17] chore: fix test thread count --- .config/nextest.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/.config/nextest.toml b/.config/nextest.toml index c490634380..58b969139c 100644 --- a/.config/nextest.toml +++ b/.config/nextest.toml @@ -22,7 +22,6 @@ retries = { backoff = "exponential", count = 3, delay = "5s", jitter = true } [profile.ci] fail-fast = false -test-threads = 10 [profile.ci.junit] path = "junit.xml" From 52af1dda75fafdb305edd751cd0829096a313228 Mon Sep 17 00:00:00 2001 From: Nick Date: Sat, 28 Oct 2023 12:44:16 +0300 Subject: [PATCH 04/17] chore: fix test thread count --- Cargo.lock | 339 +++++++++++++++++++---------------------------------- Cargo.toml | 12 +- 2 files changed, 129 insertions(+), 222 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0feeaab045..35f9b6b0b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -131,12 +131,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fef8356baa3febe122b4afc7b36d26ca2784a0f0b41e2fe105a8d07f10c811eb" -[[package]] -name = "allocator-api2" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" - [[package]] name = "ambient-authority" version = "0.0.2" @@ -407,9 +401,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.74" +version = "0.1.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ "proc-macro2", "quote", @@ -436,17 +430,6 @@ dependencies = [ "pin-project-lite 0.2.13", ] -[[package]] -name = "attohttpc" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d9a9bf8b79a749ee0b911b91b671cc2b6c670bdbc7e3dfd537576ddc94bb2a2" -dependencies = [ - "http", - "log", - "url", -] - [[package]] name = "atty" version = "0.2.14" @@ -940,7 +923,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.48.5", + "windows-targets 0.48.1", ] [[package]] @@ -1755,18 +1738,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "enum-as-inner" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "syn 2.0.28", -] - [[package]] name = "env_logger" version = "0.7.1" @@ -2057,9 +2028,9 @@ dependencies = [ [[package]] name = "fluence-spell-distro" -version = "0.5.26" +version = "0.5.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bc35423cc48f28341f9a7c3a590b35c7fe529890d75aea60d498faf401a54cb" +checksum = "940140e9a6f4ad012566e0f418c28d4a7e2561d1985356d74abe2d0f8bbfc895" dependencies = [ "built 0.6.1", "maplit", @@ -2067,9 +2038,9 @@ dependencies = [ [[package]] name = "fluence-spell-dtos" -version = "0.5.26" +version = "0.5.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c131e13a5339f1e67a831a37f4ce9ef23732e1754f91ef656dde42550ce5e317" +checksum = "f4c44ba1c717e65ae24f23ac16535617d78935627a205532bfccf7d0e04f4e9a" dependencies = [ "eyre", "marine-rs-sdk 0.9.0", @@ -2172,16 +2143,6 @@ dependencies = [ "futures-util", ] -[[package]] -name = "futures-bounded" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b07bbbe7d7e78809544c6f718d875627addc73a7c3582447abc052cd3dc67e0" -dependencies = [ - "futures-timer", - "futures-util", -] - [[package]] name = "futures-channel" version = "0.3.29" @@ -2386,14 +2347,19 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ "ahash 0.8.3", - "allocator-api2", ] +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + [[package]] name = "hdrhistogram" version = "7.5.2" @@ -2679,9 +2645,9 @@ dependencies = [ [[package]] name = "if-watch" -version = "3.1.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb892e5777fe09e16f3d44de7802f4daa7267ecbe8c466f19d94e25bb0c303e" +checksum = "a9465340214b296cd17a0009acdb890d6160010b8adf8f78a00d0d7ab270f79f" dependencies = [ "async-io", "core-foundation", @@ -2693,26 +2659,7 @@ dependencies = [ "rtnetlink", "system-configuration", "tokio", - "windows 0.51.1", -] - -[[package]] -name = "igd-next" -version = "0.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57e065e90a518ab5fedf79aa1e4b784e10f8e484a834f6bda85c42633a2cb7af" -dependencies = [ - "async-trait", - "attohttpc", - "bytes", - "futures", - "http", - "hyper", - "log", - "rand 0.8.5", - "tokio", - "url", - "xmltree", + "windows 0.34.0", ] [[package]] @@ -2823,7 +2770,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.5", + "socket2 0.5.3", "widestring", "windows-sys 0.48.0", "winreg", @@ -3114,9 +3061,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.149" +version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "libipld" @@ -3215,12 +3162,11 @@ checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" [[package]] name = "libp2p" -version = "0.52.4" +version = "0.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94495eb319a85b70a68b85e2389a95bb3555c71c49025b78c691a854a7e6464" +checksum = "32d07d1502a027366d55afe187621c2d7895dc111a3df13b35fed698049681d7" dependencies = [ "bytes", - "either", "futures", "futures-timer", "getrandom 0.2.10", @@ -3239,13 +3185,10 @@ dependencies = [ "libp2p-quic", "libp2p-swarm", "libp2p-tcp", - "libp2p-upnp", "libp2p-websocket", "libp2p-yamux", "multiaddr", "pin-project", - "rw-stream-sink", - "thiserror", ] [[package]] @@ -3302,11 +3245,10 @@ dependencies = [ [[package]] name = "libp2p-dns" -version = "0.40.1" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6a18db73084b4da2871438f6239fef35190b05023de7656e877c18a00541a3b" +checksum = "fd4394c81c0c06d7b4a60f3face7e8e8a9b246840f98d2c80508d0721b032147" dependencies = [ - "async-trait", "futures", "libp2p-core", "libp2p-identity", @@ -3318,14 +3260,13 @@ dependencies = [ [[package]] name = "libp2p-identify" -version = "0.43.1" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45a96638a0a176bec0a4bcaebc1afa8cf909b114477209d7456ade52c61cd9cd" +checksum = "6a29675a32dbcc87790db6cf599709e64308f1ae9d5ecea2d259155889982db8" dependencies = [ "asynchronous-codec", "either", "futures", - "futures-bounded", "futures-timer", "libp2p-core", "libp2p-identity", @@ -3341,9 +3282,9 @@ dependencies = [ [[package]] name = "libp2p-identity" -version = "0.2.7" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdd6317441f361babc74c2989c6484eb0726045399b6648de039e1805ea96972" +checksum = "31e6cc3b46b1183c2de7c452efbc64813389036be632aaae71de2f15f1994fad" dependencies = [ "asn1_der 0.7.6", "bs58", @@ -3362,9 +3303,9 @@ dependencies = [ [[package]] name = "libp2p-kad" -version = "0.44.6" +version = "0.44.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16ea178dabba6dde6ffc260a8e0452ccdc8f79becf544946692fff9d412fc29d" +checksum = "41c5c483b1e90e79409711f515c5bea5de9c4d772a245b1ac01a2233fbcb67fe" dependencies = [ "arrayvec", "asynchronous-codec", @@ -3404,9 +3345,9 @@ dependencies = [ "log", "rand 0.8.5", "smallvec", - "socket2 0.5.5", + "socket2 0.5.3", "tokio", - "trust-dns-proto 0.22.0", + "trust-dns-proto", "void", ] @@ -3473,9 +3414,9 @@ dependencies = [ [[package]] name = "libp2p-ping" -version = "0.43.1" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e702d75cd0827dfa15f8fd92d15b9932abe38d10d21f47c50438c71dd1b5dae3" +checksum = "3cd5ee3270229443a2b34b27ed0cb7470ef6b4a6e45e54e89a8771fa683bab48" dependencies = [ "either", "futures", @@ -3491,9 +3432,9 @@ dependencies = [ [[package]] name = "libp2p-quic" -version = "0.9.3" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "130d451d83f21b81eb7b35b360bc7972aeafb15177784adc56528db082e6b927" +checksum = "4cb763e88f9a043546bfebd3575f340e7dd3d6c1b2cf2629600ec8965360c63a" dependencies = [ "bytes", "futures", @@ -3506,18 +3447,17 @@ dependencies = [ "parking_lot", "quinn", "rand 0.8.5", - "ring", "rustls", - "socket2 0.5.5", + "socket2 0.5.3", "thiserror", "tokio", ] [[package]] name = "libp2p-swarm" -version = "0.43.7" +version = "0.43.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "580189e0074af847df90e75ef54f3f30059aedda37ea5a1659e8b9fca05c0141" +checksum = "ab94183f8fc2325817835b57946deb44340c99362cd4606c0a5717299b2ba369" dependencies = [ "either", "fnv", @@ -3551,9 +3491,9 @@ dependencies = [ [[package]] name = "libp2p-tcp" -version = "0.40.1" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b558dd40d1bcd1aaaed9de898e9ec6a436019ecc2420dd0016e712fbb61c5508" +checksum = "09bfdfb6f945c5c014b87872a0bdb6e0aef90e92f380ef57cd9013f118f9289d" dependencies = [ "futures", "futures-timer", @@ -3562,7 +3502,7 @@ dependencies = [ "libp2p-core", "libp2p-identity", "log", - "socket2 0.5.5", + "socket2 0.5.3", "tokio", ] @@ -3585,22 +3525,6 @@ dependencies = [ "yasna", ] -[[package]] -name = "libp2p-upnp" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82775a47b34f10f787ad3e2a22e2c1541e6ebef4fe9f28f3ac553921554c94c1" -dependencies = [ - "futures", - "futures-timer", - "igd-next", - "libp2p-core", - "libp2p-swarm", - "log", - "tokio", - "void", -] - [[package]] name = "libp2p-websocket" version = "0.42.1" @@ -3763,11 +3687,11 @@ dependencies = [ [[package]] name = "lru" -version = "0.12.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efa59af2ddfad1854ae27d75009d538d0998b4b2fd47083e743ac1a10e46c60" +checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" dependencies = [ - "hashbrown 0.14.0", + "hashbrown 0.13.2", ] [[package]] @@ -4817,7 +4741,7 @@ dependencies = [ "libc", "redox_syscall 0.3.5", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.48.1", ] [[package]] @@ -5257,9 +5181,9 @@ dependencies = [ [[package]] name = "proptest" -version = "1.3.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c003ac8c77cb07bb74f5f198bce836a689bcd5a42574612bf14d17bfd08c20e" +checksum = "4e35c06b98bf36aba164cc17cb25f7e232f5c4aeea73baa14b8a9f0d92dbfa65" dependencies = [ "bit-set", "bit-vec", @@ -5269,7 +5193,7 @@ dependencies = [ "rand 0.8.5", "rand_chacha 0.3.1", "rand_xorshift", - "regex-syntax 0.7.3", + "regex-syntax 0.6.29", "rusty-fork", "tempfile", "unarray", @@ -5421,7 +5345,7 @@ checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" dependencies = [ "bytes", "libc", - "socket2 0.5.5", + "socket2 0.5.3", "tracing", "windows-sys 0.48.0", ] @@ -6294,9 +6218,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" dependencies = [ "libc", "windows-sys 0.48.0", @@ -6790,7 +6714,7 @@ dependencies = [ "parking_lot", "pin-project-lite 0.2.13", "signal-hook-registry", - "socket2 0.5.5", + "socket2 0.5.3", "tokio-macros", "tracing", "windows-sys 0.48.0", @@ -7114,7 +7038,7 @@ dependencies = [ "async-trait", "cfg-if", "data-encoding", - "enum-as-inner 0.5.1", + "enum-as-inner", "futures-channel", "futures-io", "futures-util", @@ -7131,50 +7055,24 @@ dependencies = [ "url", ] -[[package]] -name = "trust-dns-proto" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "559ac980345f7f5020883dd3bcacf176355225e01916f8c2efecad7534f682c6" -dependencies = [ - "async-trait", - "cfg-if", - "data-encoding", - "enum-as-inner 0.6.0", - "futures-channel", - "futures-io", - "futures-util", - "idna 0.4.0", - "ipnet", - "once_cell", - "rand 0.8.5", - "smallvec", - "thiserror", - "tinyvec", - "tokio", - "tracing", - "url", -] - [[package]] name = "trust-dns-resolver" -version = "0.23.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c723b0e608b24ad04c73b2607e0241b2c98fd79795a95e98b068b6966138a29d" +checksum = "aff21aa4dcefb0a1afbfac26deb0adc93888c7d295fb63ab273ef276ba2b7cfe" dependencies = [ "cfg-if", "futures-util", "ipconfig", + "lazy_static", "lru-cache", - "once_cell", "parking_lot", - "rand 0.8.5", "resolv-conf", "smallvec", "thiserror", "tokio", "tracing", - "trust-dns-proto 0.23.1", + "trust-dns-proto", ] [[package]] @@ -7929,30 +7827,24 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.48.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "45296b64204227616fdbf2614cefa4c236b98ee64dfaaaa435207ed99fe7829f" dependencies = [ - "windows-targets 0.48.5", + "windows_aarch64_msvc 0.34.0", + "windows_i686_gnu 0.34.0", + "windows_i686_msvc 0.34.0", + "windows_x86_64_gnu 0.34.0", + "windows_x86_64_msvc 0.34.0", ] [[package]] name = "windows" -version = "0.51.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9" -dependencies = [ - "windows-core", - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-core" -version = "0.51.1" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.48.1", ] [[package]] @@ -7985,7 +7877,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.48.1", ] [[package]] @@ -8005,17 +7897,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.5" +version = "0.48.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", ] [[package]] @@ -8026,9 +7918,15 @@ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.5" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d" [[package]] name = "windows_aarch64_msvc" @@ -8038,9 +7936,15 @@ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" -version = "0.48.5" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed" [[package]] name = "windows_i686_gnu" @@ -8050,9 +7954,15 @@ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" -version = "0.48.5" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956" [[package]] name = "windows_i686_msvc" @@ -8062,9 +7972,15 @@ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" -version = "0.48.5" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4" [[package]] name = "windows_x86_64_gnu" @@ -8074,9 +7990,9 @@ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" -version = "0.48.5" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" [[package]] name = "windows_x86_64_gnullvm" @@ -8086,9 +8002,15 @@ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.5" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9" [[package]] name = "windows_x86_64_msvc" @@ -8098,9 +8020,9 @@ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" -version = "0.48.5" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] name = "winnow" @@ -8192,21 +8114,6 @@ dependencies = [ "time", ] -[[package]] -name = "xml-rs" -version = "0.8.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" - -[[package]] -name = "xmltree" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7d8a75eaf6557bb84a65ace8609883db44a29951042ada9b393151532e41fcb" -dependencies = [ - "xml-rs", -] - [[package]] name = "yamux" version = "0.12.0" diff --git a/Cargo.toml b/Cargo.toml index cada28ca2b..2fec61e4b4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -92,8 +92,8 @@ health = { path = "crates/health" } subnet-resolver = { path = "crates/subnet-resolver" } # spell -fluence-spell-dtos = "=0.5.26" -fluence-spell-distro = "=0.5.26" +fluence-spell-dtos = "=0.5.24" +fluence-spell-distro = "=0.5.24" # marine fluence-app-service = { version = "0.29.0" } @@ -105,15 +105,15 @@ avm-server = { version = "0.33.2" } air-interpreter-wasm = { version = "0.52.0" } # libp2p -libp2p = { version = "0.52.4", features = ["noise", "tcp", "dns", "websocket", "yamux", "tokio", "kad", "ping", "identify", "macros"] } +libp2p = { version = "0.52.3", features = ["noise", "tcp", "dns", "websocket", "yamux", "tokio", "kad", "ping", "identify", "macros"] } libp2p-core = { version = "0.40.1", default-features = false, features = ["secp256k1"] } libp2p-metrics = "0.13.1" libp2p-noise = "0.43.2" libp2p-mplex = "0.40.0" -libp2p-swarm = "0.43.7" -libp2p-identity = "0.2.7" +libp2p-swarm = "0.43.5" +libp2p-identity = "0.2.6" libp2p-connection-limits = "0.2.1" -libp2p-kad = "0.44.6" +libp2p-kad = "0.44.5" multihash = "0.19.1" prometheus-client = "0.21.2" From b9f7d3453059be41a6fa5223b1bd5b19b7650823 Mon Sep 17 00:00:00 2001 From: Nick Date: Sat, 28 Oct 2023 12:44:56 +0300 Subject: [PATCH 05/17] chore: fix test thread count --- Cargo.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 35f9b6b0b9..182a7ba780 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -401,9 +401,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.73" +version = "0.1.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ "proc-macro2", "quote", @@ -3061,9 +3061,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.147" +version = "0.2.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" [[package]] name = "libipld" @@ -5181,9 +5181,9 @@ dependencies = [ [[package]] name = "proptest" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e35c06b98bf36aba164cc17cb25f7e232f5c4aeea73baa14b8a9f0d92dbfa65" +checksum = "7c003ac8c77cb07bb74f5f198bce836a689bcd5a42574612bf14d17bfd08c20e" dependencies = [ "bit-set", "bit-vec", @@ -5193,7 +5193,7 @@ dependencies = [ "rand 0.8.5", "rand_chacha 0.3.1", "rand_xorshift", - "regex-syntax 0.6.29", + "regex-syntax 0.7.3", "rusty-fork", "tempfile", "unarray", From 3d4dfb476415725685596b784de169e2ce3b5c47 Mon Sep 17 00:00:00 2001 From: Nick Date: Sat, 28 Oct 2023 12:44:56 +0300 Subject: [PATCH 06/17] chore: fix test thread count --- Cargo.lock | 325 ++++++++++++++++++++++++++++++++++------------------- Cargo.toml | 12 +- 2 files changed, 215 insertions(+), 122 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 182a7ba780..f5664b41c9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -131,6 +131,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fef8356baa3febe122b4afc7b36d26ca2784a0f0b41e2fe105a8d07f10c811eb" +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + [[package]] name = "ambient-authority" version = "0.0.2" @@ -430,6 +436,17 @@ dependencies = [ "pin-project-lite 0.2.13", ] +[[package]] +name = "attohttpc" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d9a9bf8b79a749ee0b911b91b671cc2b6c670bdbc7e3dfd537576ddc94bb2a2" +dependencies = [ + "http", + "log", + "url", +] + [[package]] name = "atty" version = "0.2.14" @@ -923,7 +940,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.48.1", + "windows-targets 0.48.5", ] [[package]] @@ -1738,6 +1755,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "enum-as-inner" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.28", +] + [[package]] name = "env_logger" version = "0.7.1" @@ -2028,9 +2057,9 @@ dependencies = [ [[package]] name = "fluence-spell-distro" -version = "0.5.24" +version = "0.5.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "940140e9a6f4ad012566e0f418c28d4a7e2561d1985356d74abe2d0f8bbfc895" +checksum = "4bc35423cc48f28341f9a7c3a590b35c7fe529890d75aea60d498faf401a54cb" dependencies = [ "built 0.6.1", "maplit", @@ -2038,9 +2067,9 @@ dependencies = [ [[package]] name = "fluence-spell-dtos" -version = "0.5.24" +version = "0.5.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c44ba1c717e65ae24f23ac16535617d78935627a205532bfccf7d0e04f4e9a" +checksum = "c131e13a5339f1e67a831a37f4ce9ef23732e1754f91ef656dde42550ce5e317" dependencies = [ "eyre", "marine-rs-sdk 0.9.0", @@ -2143,6 +2172,16 @@ dependencies = [ "futures-util", ] +[[package]] +name = "futures-bounded" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b07bbbe7d7e78809544c6f718d875627addc73a7c3582447abc052cd3dc67e0" +dependencies = [ + "futures-timer", + "futures-util", +] + [[package]] name = "futures-channel" version = "0.3.29" @@ -2347,19 +2386,14 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" dependencies = [ "ahash 0.8.3", + "allocator-api2", ] -[[package]] -name = "hashbrown" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" - [[package]] name = "hdrhistogram" version = "7.5.2" @@ -2645,9 +2679,9 @@ dependencies = [ [[package]] name = "if-watch" -version = "3.0.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9465340214b296cd17a0009acdb890d6160010b8adf8f78a00d0d7ab270f79f" +checksum = "bbb892e5777fe09e16f3d44de7802f4daa7267ecbe8c466f19d94e25bb0c303e" dependencies = [ "async-io", "core-foundation", @@ -2659,7 +2693,26 @@ dependencies = [ "rtnetlink", "system-configuration", "tokio", - "windows 0.34.0", + "windows 0.51.1", +] + +[[package]] +name = "igd-next" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57e065e90a518ab5fedf79aa1e4b784e10f8e484a834f6bda85c42633a2cb7af" +dependencies = [ + "async-trait", + "attohttpc", + "bytes", + "futures", + "http", + "hyper", + "log", + "rand 0.8.5", + "tokio", + "url", + "xmltree", ] [[package]] @@ -2770,7 +2823,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.3", + "socket2 0.5.5", "widestring", "windows-sys 0.48.0", "winreg", @@ -3162,11 +3215,12 @@ checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" [[package]] name = "libp2p" -version = "0.52.3" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d07d1502a027366d55afe187621c2d7895dc111a3df13b35fed698049681d7" +checksum = "e94495eb319a85b70a68b85e2389a95bb3555c71c49025b78c691a854a7e6464" dependencies = [ "bytes", + "either", "futures", "futures-timer", "getrandom 0.2.10", @@ -3185,10 +3239,13 @@ dependencies = [ "libp2p-quic", "libp2p-swarm", "libp2p-tcp", + "libp2p-upnp", "libp2p-websocket", "libp2p-yamux", "multiaddr", "pin-project", + "rw-stream-sink", + "thiserror", ] [[package]] @@ -3245,10 +3302,11 @@ dependencies = [ [[package]] name = "libp2p-dns" -version = "0.40.0" +version = "0.40.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd4394c81c0c06d7b4a60f3face7e8e8a9b246840f98d2c80508d0721b032147" +checksum = "e6a18db73084b4da2871438f6239fef35190b05023de7656e877c18a00541a3b" dependencies = [ + "async-trait", "futures", "libp2p-core", "libp2p-identity", @@ -3260,13 +3318,14 @@ dependencies = [ [[package]] name = "libp2p-identify" -version = "0.43.0" +version = "0.43.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a29675a32dbcc87790db6cf599709e64308f1ae9d5ecea2d259155889982db8" +checksum = "45a96638a0a176bec0a4bcaebc1afa8cf909b114477209d7456ade52c61cd9cd" dependencies = [ "asynchronous-codec", "either", "futures", + "futures-bounded", "futures-timer", "libp2p-core", "libp2p-identity", @@ -3282,9 +3341,9 @@ dependencies = [ [[package]] name = "libp2p-identity" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6cc3b46b1183c2de7c452efbc64813389036be632aaae71de2f15f1994fad" +checksum = "cdd6317441f361babc74c2989c6484eb0726045399b6648de039e1805ea96972" dependencies = [ "asn1_der 0.7.6", "bs58", @@ -3303,9 +3362,9 @@ dependencies = [ [[package]] name = "libp2p-kad" -version = "0.44.5" +version = "0.44.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c5c483b1e90e79409711f515c5bea5de9c4d772a245b1ac01a2233fbcb67fe" +checksum = "16ea178dabba6dde6ffc260a8e0452ccdc8f79becf544946692fff9d412fc29d" dependencies = [ "arrayvec", "asynchronous-codec", @@ -3345,9 +3404,9 @@ dependencies = [ "log", "rand 0.8.5", "smallvec", - "socket2 0.5.3", + "socket2 0.5.5", "tokio", - "trust-dns-proto", + "trust-dns-proto 0.22.0", "void", ] @@ -3414,9 +3473,9 @@ dependencies = [ [[package]] name = "libp2p-ping" -version = "0.43.0" +version = "0.43.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cd5ee3270229443a2b34b27ed0cb7470ef6b4a6e45e54e89a8771fa683bab48" +checksum = "e702d75cd0827dfa15f8fd92d15b9932abe38d10d21f47c50438c71dd1b5dae3" dependencies = [ "either", "futures", @@ -3432,9 +3491,9 @@ dependencies = [ [[package]] name = "libp2p-quic" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cb763e88f9a043546bfebd3575f340e7dd3d6c1b2cf2629600ec8965360c63a" +checksum = "130d451d83f21b81eb7b35b360bc7972aeafb15177784adc56528db082e6b927" dependencies = [ "bytes", "futures", @@ -3447,17 +3506,18 @@ dependencies = [ "parking_lot", "quinn", "rand 0.8.5", + "ring", "rustls", - "socket2 0.5.3", + "socket2 0.5.5", "thiserror", "tokio", ] [[package]] name = "libp2p-swarm" -version = "0.43.5" +version = "0.43.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab94183f8fc2325817835b57946deb44340c99362cd4606c0a5717299b2ba369" +checksum = "48ff0e918a45fec0b6f27b30b0547a57c6c214aa8b13be3647b7701bfd8b8797" dependencies = [ "either", "fnv", @@ -3491,9 +3551,9 @@ dependencies = [ [[package]] name = "libp2p-tcp" -version = "0.40.0" +version = "0.40.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09bfdfb6f945c5c014b87872a0bdb6e0aef90e92f380ef57cd9013f118f9289d" +checksum = "b558dd40d1bcd1aaaed9de898e9ec6a436019ecc2420dd0016e712fbb61c5508" dependencies = [ "futures", "futures-timer", @@ -3502,7 +3562,7 @@ dependencies = [ "libp2p-core", "libp2p-identity", "log", - "socket2 0.5.3", + "socket2 0.5.5", "tokio", ] @@ -3525,6 +3585,22 @@ dependencies = [ "yasna", ] +[[package]] +name = "libp2p-upnp" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82775a47b34f10f787ad3e2a22e2c1541e6ebef4fe9f28f3ac553921554c94c1" +dependencies = [ + "futures", + "futures-timer", + "igd-next", + "libp2p-core", + "libp2p-swarm", + "log", + "tokio", + "void", +] + [[package]] name = "libp2p-websocket" version = "0.42.1" @@ -3687,11 +3763,11 @@ dependencies = [ [[package]] name = "lru" -version = "0.10.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" +checksum = "1efa59af2ddfad1854ae27d75009d538d0998b4b2fd47083e743ac1a10e46c60" dependencies = [ - "hashbrown 0.13.2", + "hashbrown 0.14.0", ] [[package]] @@ -4741,7 +4817,7 @@ dependencies = [ "libc", "redox_syscall 0.3.5", "smallvec", - "windows-targets 0.48.1", + "windows-targets 0.48.5", ] [[package]] @@ -5345,7 +5421,7 @@ checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" dependencies = [ "bytes", "libc", - "socket2 0.5.3", + "socket2 0.5.5", "tracing", "windows-sys 0.48.0", ] @@ -6218,9 +6294,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" dependencies = [ "libc", "windows-sys 0.48.0", @@ -6714,7 +6790,7 @@ dependencies = [ "parking_lot", "pin-project-lite 0.2.13", "signal-hook-registry", - "socket2 0.5.3", + "socket2 0.5.5", "tokio-macros", "tracing", "windows-sys 0.48.0", @@ -7038,7 +7114,7 @@ dependencies = [ "async-trait", "cfg-if", "data-encoding", - "enum-as-inner", + "enum-as-inner 0.5.1", "futures-channel", "futures-io", "futures-util", @@ -7055,24 +7131,50 @@ dependencies = [ "url", ] +[[package]] +name = "trust-dns-proto" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "559ac980345f7f5020883dd3bcacf176355225e01916f8c2efecad7534f682c6" +dependencies = [ + "async-trait", + "cfg-if", + "data-encoding", + "enum-as-inner 0.6.0", + "futures-channel", + "futures-io", + "futures-util", + "idna 0.4.0", + "ipnet", + "once_cell", + "rand 0.8.5", + "smallvec", + "thiserror", + "tinyvec", + "tokio", + "tracing", + "url", +] + [[package]] name = "trust-dns-resolver" -version = "0.22.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aff21aa4dcefb0a1afbfac26deb0adc93888c7d295fb63ab273ef276ba2b7cfe" +checksum = "c723b0e608b24ad04c73b2607e0241b2c98fd79795a95e98b068b6966138a29d" dependencies = [ "cfg-if", "futures-util", "ipconfig", - "lazy_static", "lru-cache", + "once_cell", "parking_lot", + "rand 0.8.5", "resolv-conf", "smallvec", "thiserror", "tokio", "tracing", - "trust-dns-proto", + "trust-dns-proto 0.23.1", ] [[package]] @@ -7827,24 +7929,30 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.34.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45296b64204227616fdbf2614cefa4c236b98ee64dfaaaa435207ed99fe7829f" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows_aarch64_msvc 0.34.0", - "windows_i686_gnu 0.34.0", - "windows_i686_msvc 0.34.0", - "windows_x86_64_gnu 0.34.0", - "windows_x86_64_msvc 0.34.0", + "windows-targets 0.48.5", ] [[package]] name = "windows" -version = "0.48.0" +version = "0.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9" +dependencies = [ + "windows-core", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-core" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" dependencies = [ - "windows-targets 0.48.1", + "windows-targets 0.48.5", ] [[package]] @@ -7877,7 +7985,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.1", + "windows-targets 0.48.5", ] [[package]] @@ -7897,17 +8005,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -7918,15 +8026,9 @@ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.34.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" @@ -7936,15 +8038,9 @@ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" - -[[package]] -name = "windows_i686_gnu" -version = "0.34.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" @@ -7954,15 +8050,9 @@ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" - -[[package]] -name = "windows_i686_msvc" -version = "0.34.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" @@ -7972,15 +8062,9 @@ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.34.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" @@ -7990,9 +8074,9 @@ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" @@ -8002,15 +8086,9 @@ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.34.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" @@ -8020,9 +8098,9 @@ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" @@ -8114,6 +8192,21 @@ dependencies = [ "time", ] +[[package]] +name = "xml-rs" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" + +[[package]] +name = "xmltree" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7d8a75eaf6557bb84a65ace8609883db44a29951042ada9b393151532e41fcb" +dependencies = [ + "xml-rs", +] + [[package]] name = "yamux" version = "0.12.0" diff --git a/Cargo.toml b/Cargo.toml index 2fec61e4b4..fc100ff92e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -92,8 +92,8 @@ health = { path = "crates/health" } subnet-resolver = { path = "crates/subnet-resolver" } # spell -fluence-spell-dtos = "=0.5.24" -fluence-spell-distro = "=0.5.24" +fluence-spell-dtos = "=0.5.26" +fluence-spell-distro = "=0.5.26" # marine fluence-app-service = { version = "0.29.0" } @@ -105,15 +105,15 @@ avm-server = { version = "0.33.2" } air-interpreter-wasm = { version = "0.52.0" } # libp2p -libp2p = { version = "0.52.3", features = ["noise", "tcp", "dns", "websocket", "yamux", "tokio", "kad", "ping", "identify", "macros"] } +libp2p = { version = "0.52.4", features = ["noise", "tcp", "dns", "websocket", "yamux", "tokio", "kad", "ping", "identify", "macros"] } libp2p-core = { version = "0.40.1", default-features = false, features = ["secp256k1"] } libp2p-metrics = "0.13.1" libp2p-noise = "0.43.2" libp2p-mplex = "0.40.0" -libp2p-swarm = "0.43.5" -libp2p-identity = "0.2.6" +libp2p-swarm = "0.43.6" +libp2p-identity = "0.2.7" libp2p-connection-limits = "0.2.1" -libp2p-kad = "0.44.5" +libp2p-kad = "0.44.6" multihash = "0.19.1" prometheus-client = "0.21.2" From d753767c995b9f29beb9fa256a356a14cabb5333 Mon Sep 17 00:00:00 2001 From: Nick Date: Sat, 28 Oct 2023 13:07:18 +0300 Subject: [PATCH 07/17] fix tests --- crates/nox-tests/tests/builtin.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/crates/nox-tests/tests/builtin.rs b/crates/nox-tests/tests/builtin.rs index e7ae077f90..a2a179c180 100644 --- a/crates/nox-tests/tests/builtin.rs +++ b/crates/nox-tests/tests/builtin.rs @@ -297,8 +297,9 @@ async fn non_owner_remove_service() { ) .await; - client2.send_particle( - r#" + let args = client2 + .execute_particle( + r#" (seq (seq (call relay ("srv" "list") [] list_before) @@ -313,15 +314,16 @@ async fn non_owner_remove_service() { ) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "service" => json!(tetraplets_service.id), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "service" => json!(tetraplets_service.id), + }, + ) + .await + .unwrap(); use serde_json::Value::{Array, String}; - let args = client2.receive_args().await.unwrap(); if let [Array(before), Array(after), String(error)] = args.as_slice() { assert_eq!(before.len(), 1); assert_eq!(after.len(), 1); From 8de0180ee627a55dc269714493bfd130d91bf9c5 Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 29 Oct 2023 15:13:53 +0300 Subject: [PATCH 08/17] wip --- Cargo.lock | 1 + crates/connected-client/src/connected_client.rs | 12 ++++++++---- crates/local-vm/Cargo.toml | 1 + crates/local-vm/src/local_vm.rs | 4 ++-- crates/nox-tests/tests/local_vm.rs | 5 +++-- crates/nox-tests/tests/network/network_explore.rs | 1 + 6 files changed, 16 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f5664b41c9..d10a7f33af 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3727,6 +3727,7 @@ dependencies = [ "particle-execution", "particle-protocol", "serde_json", + "tokio", "tracing", "uuid-utils", ] diff --git a/crates/connected-client/src/connected_client.rs b/crates/connected-client/src/connected_client.rs index d75013f0a0..127038f4f5 100644 --- a/crates/connected-client/src/connected_client.rs +++ b/crates/connected-client/src/connected_client.rs @@ -252,7 +252,8 @@ impl ConnectedClient { self.peer_id, &mut self.local_vm.lock(), &self.key_pair, - ); + ) + .await; match result { Some(result) => result.map_err(|args| eyre!("AIR caught an error: {:?}", args)), None => Err(eyre!("Received a particle, but it didn't return anything")), @@ -277,7 +278,8 @@ impl ConnectedClient { self.peer_id, &mut self.local_vm.lock(), &self.key_pair, - ); + ) + .await; if let Some(result) = result { result.map_err(|args| eyre!("AIR caught an error: {:?}", args)) } else { @@ -303,7 +305,8 @@ impl ConnectedClient { self.peer_id, &mut self.local_vm.lock(), &self.key_pair, - ); + ) + .await; if let Some(result) = result { break result.map_err(|args| eyre!("AIR caught an error: {:?}", args)); } @@ -332,7 +335,8 @@ impl ConnectedClient { self.peer_id, &mut self.local_vm.lock(), &self.key_pair, - ); + ) + .await; if let Some(args) = args { return f(args); } diff --git a/crates/local-vm/Cargo.toml b/crates/local-vm/Cargo.toml index 0a344036a3..c225c9b869 100644 --- a/crates/local-vm/Cargo.toml +++ b/crates/local-vm/Cargo.toml @@ -28,3 +28,4 @@ parking_lot = { workspace = true } maplit = { workspace = true } log = { workspace = true } tracing = { workspace = true } +tokio = { workspace = true } diff --git a/crates/local-vm/src/local_vm.rs b/crates/local-vm/src/local_vm.rs index 584ab1143f..8aeb0fbde9 100644 --- a/crates/local-vm/src/local_vm.rs +++ b/crates/local-vm/src/local_vm.rs @@ -318,7 +318,7 @@ pub fn make_particle( particle } -pub fn read_args( +pub async fn read_args( particle: Particle, peer_id: PeerId, local_vm: &mut AVM, @@ -347,7 +347,6 @@ pub fn read_args( key_pair, ) .expect("execute & make particle"); - particle_data = data; call_results = <_>::default(); @@ -363,5 +362,6 @@ pub fn read_args( return returned; } } + tokio::task::yield_now().await; } } diff --git a/crates/nox-tests/tests/local_vm.rs b/crates/nox-tests/tests/local_vm.rs index d75f3eb9cb..70a274d12e 100644 --- a/crates/nox-tests/tests/local_vm.rs +++ b/crates/nox-tests/tests/local_vm.rs @@ -26,8 +26,8 @@ use serde_json::json; use local_vm::{make_particle, make_vm, read_args}; -#[test] -fn make() { +#[tokio::test] +async fn make() { let keypair_a = KeyPair::generate_ed25519(); let keypair_b = KeyPair::generate_ed25519(); let client_a = keypair_a.get_peer_id(); @@ -61,6 +61,7 @@ fn make() { ); let args = read_args(particle, client_b, &mut local_vm_b, &keypair_b) + .await .expect("read args") .expect("read args"); assert_eq!(data["a"], args[0]); diff --git a/crates/nox-tests/tests/network/network_explore.rs b/crates/nox-tests/tests/network/network_explore.rs index 442769900e..d892e45aad 100644 --- a/crates/nox-tests/tests/network/network_explore.rs +++ b/crates/nox-tests/tests/network/network_explore.rs @@ -406,6 +406,7 @@ async fn explore_services_fixed_flaky() { &mut client.local_vm.lock(), &client.key_pair, ) + .await .expect("read args") .expect("no error"); received.push(args); From 9b8bc38ea25572dc1de4870571e5f02a6a4022fe Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 29 Oct 2023 15:43:54 +0300 Subject: [PATCH 09/17] wip --- .../connected-client/src/connected_client.rs | 55 +-- crates/nox-tests/tests/builtin.rs | 328 ++++++++++-------- .../nox-tests/tests/network/loop_topology.rs | 72 ++-- .../tests/network/network_explore.rs | 58 ++-- crates/nox-tests/tests/services.rs | 4 +- crates/nox-tests/tests/spells.rs | 112 +++--- crates/nox-tests/tests/tetraplets.rs | 2 +- crates/nox-tests/tests/topology.rs | 45 +-- crates/nox-tests/tests/vault.rs | 72 ++-- 9 files changed, 401 insertions(+), 347 deletions(-) diff --git a/crates/connected-client/src/connected_client.rs b/crates/connected-client/src/connected_client.rs index 127038f4f5..07dd4b547d 100644 --- a/crates/connected-client/src/connected_client.rs +++ b/crates/connected-client/src/connected_client.rs @@ -23,7 +23,6 @@ use fluence_keypair::KeyPair; use fluence_libp2p::Transport; use libp2p::{core::Multiaddr, PeerId}; use local_vm::{make_particle, make_vm, read_args, DataStoreError}; -use parking_lot::Mutex; use particle_protocol::Particle; use serde_json::{Value as JValue, Value}; use test_constants::{KAD_TIMEOUT, PARTICLE_TTL, SHORT_TIMEOUT, TIMEOUT, TRANSPORT_TIMEOUT}; @@ -41,7 +40,7 @@ pub struct ConnectedClient { pub timeout: Duration, pub short_timeout: Duration, pub kad_timeout: Duration, - pub local_vm: LazyCell, Box Mutex>>, + pub local_vm: LazyCell, Box tokio::sync::Mutex>>, pub particle_ttl: Duration, } @@ -149,7 +148,8 @@ impl ConnectedClient { particle_ttl: Option, ) -> Self { let peer_id = client.peer_id; - let f: Box Mutex> = Box::new(move || Mutex::new(make_vm(peer_id))); + let f: Box tokio::sync::Mutex> = + Box::new(move || tokio::sync::Mutex::new(make_vm(peer_id))); let local_vm = LazyCell::new(f); Self { @@ -168,12 +168,12 @@ impl ConnectedClient { self.client.send(particle, self.node) } - pub fn send_particle( + pub async fn send_particle( &mut self, script: impl Into, data: HashMap<&str, JValue>, ) -> String { - self.send_particle_ext(script, data, false) + self.send_particle_ext(script, data, false).await } pub async fn execute_particle( @@ -181,11 +181,11 @@ impl ConnectedClient { script: impl Into, data: HashMap<&str, JValue>, ) -> Result> { - let particle_id = self.send_particle_ext(script, data, false); + let particle_id = self.send_particle_ext(script, data, false).await; self.wait_particle_args(particle_id.clone()).await } - pub fn send_particle_ext( + pub async fn send_particle_ext( &mut self, script: impl Into, data: HashMap<&str, JValue>, @@ -195,12 +195,13 @@ impl ConnectedClient { .into_iter() .map(|(key, value)| (key.to_string(), value)) .collect(); + let mut guard = self.local_vm.lock().await; let particle = make_particle( self.peer_id, &data, script.into(), self.node, - &mut self.local_vm.lock(), + &mut guard, generated, self.particle_ttl(), &self.key_pair, @@ -247,13 +248,8 @@ impl ConnectedClient { pub async fn receive_args(&mut self) -> Result> { let particle = self.receive().await.wrap_err("receive_args")?; - let result = read_args( - particle, - self.peer_id, - &mut self.local_vm.lock(), - &self.key_pair, - ) - .await; + let mut guard = self.local_vm.lock().await; + let result = read_args(particle, self.peer_id, &mut guard, &self.key_pair).await; match result { Some(result) => result.map_err(|args| eyre!("AIR caught an error: {:?}", args)), None => Err(eyre!("Received a particle, but it didn't return anything")), @@ -273,13 +269,9 @@ impl ConnectedClient { match head { Some(index) => { let particle = self.fetched.remove(index); - let result = read_args( - particle, - self.peer_id, - &mut self.local_vm.lock(), - &self.key_pair, - ) - .await; + let mut guard = self.local_vm.lock().await; + let result = read_args(particle, self.peer_id, &mut guard, &self.key_pair).await; + drop(guard); if let Some(result) = result { result.map_err(|args| eyre!("AIR caught an error: {:?}", args)) } else { @@ -300,13 +292,9 @@ impl ConnectedClient { let particle = self.raw_receive().await.ok(); if let Some(particle) = particle { if particle.id == particle_id.as_ref() { - let result = read_args( - particle, - self.peer_id, - &mut self.local_vm.lock(), - &self.key_pair, - ) - .await; + let mut guard = self.local_vm.lock().await; + let result = + read_args(particle, self.peer_id, &mut guard, &self.key_pair).await; if let Some(result) = result { break result.map_err(|args| eyre!("AIR caught an error: {:?}", args)); } @@ -330,13 +318,8 @@ impl ConnectedClient { let particle = self.receive().await.ok(); if let Some(particle) = particle { - let args = read_args( - particle, - self.peer_id, - &mut self.local_vm.lock(), - &self.key_pair, - ) - .await; + let mut guard = self.local_vm.lock().await; + let args = read_args(particle, self.peer_id, &mut guard, &self.key_pair).await; if let Some(args) = args { return f(args); } diff --git a/crates/nox-tests/tests/builtin.rs b/crates/nox-tests/tests/builtin.rs index a2a179c180..67ee94f9ce 100644 --- a/crates/nox-tests/tests/builtin.rs +++ b/crates/nox-tests/tests/builtin.rs @@ -60,18 +60,20 @@ async fn identify() { .wrap_err("connect client") .unwrap(); - client.send_particle( - r#" + client + .send_particle( + r#" (seq (call relay ("peer" "identify") [] info) (call client ("op" "return") [info]) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "client" => json!(client.peer_id.to_string()), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "client" => json!(client.peer_id.to_string()), + }, + ) + .await; let info = client .receive_args() @@ -119,8 +121,9 @@ async fn remove_service() { ) .await; - client.send_particle( - r#" + client + .send_particle( + r#" (seq (seq (call relay ("srv" "list") [] list_before) @@ -132,11 +135,12 @@ async fn remove_service() { ) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "service" => json!(tetraplets_service.id), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "service" => json!(tetraplets_service.id), + }, + ) + .await; use serde_json::Value::Array; @@ -165,8 +169,9 @@ async fn remove_service_restart() { ) .await; - client.send_particle( - r#" + client + .send_particle( + r#" (seq (seq (call relay ("srv" "list") [] list_before) @@ -178,11 +183,12 @@ async fn remove_service_restart() { ) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "service" => json!(tetraplets_service.id), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "service" => json!(tetraplets_service.id), + }, + ) + .await; use serde_json::Value::Array; @@ -204,18 +210,20 @@ async fn remove_service_restart() { .wrap_err("connect client") .unwrap(); - client.send_particle( - r#" + client + .send_particle( + r#" (seq (call relay ("srv" "list") [] list_after) (call %init_peer_id% ("op" "return") [list_after]) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "service" => json!(tetraplets_service.id), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "service" => json!(tetraplets_service.id), + }, + ) + .await; if let [Array(after)] = client.receive_args().await.unwrap().as_slice() { assert_eq!(after.len(), 0); @@ -243,8 +251,9 @@ async fn remove_service_by_alias() { ) .await; - client.send_particle( - r#" + client + .send_particle( + r#" (seq (seq (call relay ("srv" "add_alias") [alias service]) @@ -259,12 +268,13 @@ async fn remove_service_by_alias() { ) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "service" => json!(tetraplets_service.id), - "alias" => json!("some_alias".to_string()), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "service" => json!(tetraplets_service.id), + "alias" => json!("some_alias".to_string()), + }, + ) + .await; use serde_json::Value::Array; @@ -354,8 +364,9 @@ async fn resolve_alias() { ) .await; - client.send_particle( - r#" + client + .send_particle( + r#" (seq (seq (call relay ("srv" "add_alias") [alias service]) @@ -364,12 +375,13 @@ async fn resolve_alias() { (call %init_peer_id% ("op" "return") [result]) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "service" => json!(tetraplets_service.id), - "alias" => json!("some_alias".to_string()), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "service" => json!(tetraplets_service.id), + "alias" => json!("some_alias".to_string()), + }, + ) + .await; let service_id = client .receive_args() @@ -391,8 +403,9 @@ async fn resolve_alias_not_exists() { .wrap_err("connect client") .unwrap(); - client.send_particle( - r#" + client + .send_particle( + r#" (xor (seq (call relay ("srv" "resolve_alias") [alias] result) @@ -401,11 +414,12 @@ async fn resolve_alias_not_exists() { (call %init_peer_id% ("op" "return") [%last_error%.$.instruction]) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "alias" => json!("some_alias".to_string()), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "alias" => json!("some_alias".to_string()), + }, + ) + .await; let error = client .receive_args() @@ -439,8 +453,9 @@ async fn resolve_alias_opt() { ) .await; - client.send_particle( - r#" + client + .send_particle( + r#" (seq (seq (call relay ("srv" "add_alias") [alias service]) @@ -449,12 +464,13 @@ async fn resolve_alias_opt() { (call %init_peer_id% ("op" "return") [result.$.[0]!]) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "service" => json!(tetraplets_service.id), - "alias" => json!("some_alias".to_string()), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "service" => json!(tetraplets_service.id), + "alias" => json!("some_alias".to_string()), + }, + ) + .await; let service_id = client .receive_args() @@ -476,8 +492,9 @@ async fn resolve_alias_opt_not_exists() { .wrap_err("connect client") .unwrap(); - client.send_particle( - r#" + client + .send_particle( + r#" (xor (seq (call relay ("srv" "resolve_alias_opt") [alias] result) @@ -486,11 +503,12 @@ async fn resolve_alias_opt_not_exists() { (call %init_peer_id% ("op" "return") [%last_error%.$.instruction]) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "alias" => json!("some_alias".to_string()), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "alias" => json!("some_alias".to_string()), + }, + ) + .await; let result = client .receive_args() @@ -522,8 +540,9 @@ async fn resolve_alias_removed() { ) .await; - client.send_particle( - r#" + client + .send_particle( + r#" (xor (seq (seq @@ -535,12 +554,13 @@ async fn resolve_alias_removed() { (call %init_peer_id% ("op" "return") [%last_error%.$.instruction]) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "service" => json!(tetraplets_service.id), - "alias" => json!("some_alias".to_string()), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "service" => json!(tetraplets_service.id), + "alias" => json!("some_alias".to_string()), + }, + ) + .await; let error = client .receive_args() @@ -564,18 +584,20 @@ async fn timestamp_ms() { .wrap_err("connect client") .unwrap(); - client.send_particle( - r#" + client + .send_particle( + r#" (seq (call relay ("peer" "timestamp_ms") [] result) (call client ("op" "return") [result]) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "client" => json!(client.peer_id.to_string()), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "client" => json!(client.peer_id.to_string()), + }, + ) + .await; let result = client .receive_args() @@ -595,18 +617,20 @@ async fn timestamp_sec() { .wrap_err("connect client") .unwrap(); - client.send_particle( - r#" + client + .send_particle( + r#" (seq (call relay ("peer" "timestamp_sec") [] result) (call client ("op" "return") [result]) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "client" => json!(client.peer_id.to_string()), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "client" => json!(client.peer_id.to_string()), + }, + ) + .await; let result = client .receive_args() @@ -1386,18 +1410,20 @@ async fn service_mem() { ) .await; - client.send_particle( - r#" + client + .send_particle( + r#" (seq (call relay ("stat" "service_memory") [service] memory_stat) (call %init_peer_id% ("op" "return") [memory_stat]) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "service" => json!(tetraplets_service.id), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "service" => json!(tetraplets_service.id), + }, + ) + .await; use serde_json::Value::Array; @@ -1424,8 +1450,9 @@ async fn service_stats() { ) .await; - let particle_id = client.send_particle( - r#" + let particle_id = client + .send_particle( + r#" (seq (seq (call relay (service "not") [true] result) @@ -1437,30 +1464,33 @@ async fn service_stats() { (call %init_peer_id% ("op" "return") []) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "service" => json!(tetraplets_service.id), - "key" => json!("keeeyyy"), - "bigstring" => json!("a".repeat(100_000)), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "service" => json!(tetraplets_service.id), + "key" => json!("keeeyyy"), + "bigstring" => json!("a".repeat(100_000)), + }, + ) + .await; client .wait_particle_args(particle_id) .await .expect("receive particle"); - client.send_particle( - r#" + client + .send_particle( + r#" (seq (call relay ("stat" "service_stat") [service] stat) (call %init_peer_id% ("op" "return") [stat]) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "service" => json!(tetraplets_service.id), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "service" => json!(tetraplets_service.id), + }, + ) + .await; if let Ok([result]) = client.receive_args().await.as_deref() { assert_eq!(result.get("error"), Some(&json!(""))); @@ -1524,18 +1554,20 @@ async fn service_stats_uninitialized() { ) .await; - client.send_particle( - r#" + client + .send_particle( + r#" (seq (call relay ("stat" "service_stat") [service] stat) (call %init_peer_id% ("op" "return") [stat]) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "service" => json!(tetraplets_service.id), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "service" => json!(tetraplets_service.id), + }, + ) + .await; use serde_json::Value::Object; @@ -1677,7 +1709,7 @@ async fn sign_invalid_tetraplets() { "wrong_peer" => json!(wrong_peer), "array" => json!(vec![1u8, 2u8, 3u8]) }, - ); + ).await; use serde_json::Value::String; @@ -1726,7 +1758,7 @@ async fn sig_verify_invalid_signature() { "invalid_signature" => json!(vec![1u8, 2u8, 3u8]), "invalid_data" => json!(vec![3u8, 2u8, 1u8]) }, - ); + ).await; use serde_json::Value::Bool; @@ -1912,7 +1944,7 @@ async fn insecure_sign_verify() { hashmap! { "relay" => json!(client.node.to_string()), }, - ); + ).await; use serde_json::Value::Array; use serde_json::Value::Bool; @@ -2045,8 +2077,9 @@ async fn add_alias_list() { .await; let alias = "tetraplets".to_string(); - client.send_particle( - r#" + client + .send_particle( + r#" (seq (seq (call relay ("srv" "add_alias") [alias service]) @@ -2055,12 +2088,13 @@ async fn add_alias_list() { (call %init_peer_id% ("op" "return") [list]) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "service" => json!(tetraplets_service.id), - "alias" => json!(alias.clone()) - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "service" => json!(tetraplets_service.id), + "alias" => json!(alias.clone()) + }, + ) + .await; use serde_json::Value::Array; @@ -2103,8 +2137,9 @@ async fn aliases_restart() { .await; let alias = "tetraplets".to_string(); - client.send_particle( - r#" + client + .send_particle( + r#" (xor (seq (call relay ("srv" "add_alias") [alias service]) @@ -2113,12 +2148,13 @@ async fn aliases_restart() { (call %init_peer_id% ("op" "return") [%last_error%.$.instruction]) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "service" => json!(tetraplets_service.id), - "alias" => json!(alias.clone()) - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "service" => json!(tetraplets_service.id), + "alias" => json!(alias.clone()) + }, + ) + .await; if let [JValue::String(result)] = client.receive_args().await.unwrap().as_slice() { assert_eq!(*result, "ok"); @@ -2140,18 +2176,20 @@ async fn aliases_restart() { .wrap_err("connect client") .unwrap(); - client.send_particle( - r#" + client + .send_particle( + r#" (seq (call relay ("srv" "list") [] list_after) (call %init_peer_id% ("op" "return") [list_after]) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "service" => json!(tetraplets_service.id), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "service" => json!(tetraplets_service.id), + }, + ) + .await; if let [Array(after)] = client.receive_args().await.unwrap().as_slice() { assert_eq!(after.len(), 1); @@ -2245,7 +2283,7 @@ async fn subnet_resolve() { hashmap! { "relay" => json!(client.node.to_string()), }, - ); + ).await; let mut result = client.receive_args().await.unwrap(); diff --git a/crates/nox-tests/tests/network/loop_topology.rs b/crates/nox-tests/tests/network/loop_topology.rs index f41df33cf9..08bc5a7a9f 100644 --- a/crates/nox-tests/tests/network/loop_topology.rs +++ b/crates/nox-tests/tests/network/loop_topology.rs @@ -69,14 +69,16 @@ async fn abuse_fold(air: &str) -> Abuse { println!("elems {}", json!(elems)); - client.send_particle( - air, - hashmap! { - "relay" => json!(client.node.to_string()), - "client" => json!(client.peer_id.to_string()), - "permutations" => json!(elems), - }, - ); + client + .send_particle( + air, + hashmap! { + "relay" => json!(client.node.to_string()), + "client" => json!(client.peer_id.to_string()), + "permutations" => json!(elems), + }, + ) + .await; client.timeout = Duration::from_secs(1); @@ -286,9 +288,10 @@ async fn fold_par_same_node_stream() { client.timeout = Duration::from_secs(200); client.particle_ttl = Duration::from_secs(400); - client.send_particle( - format!( - r#" + client + .send_particle( + format!( + r#" (seq (seq (null) @@ -332,16 +335,17 @@ async fn fold_par_same_node_stream() { ) ) "#, - join_stream("result", "relay", "flat_length", "joined_result") + join_stream("result", "relay", "flat_length", "joined_result") + ) + .as_str(), + hashmap! { + "relay" => json!(client.node.to_string()), + "client" => json!(client.peer_id.to_string()), + "permutations" => json!(permutations), + "flat_length" => json!(flat.len()) + }, ) - .as_str(), - hashmap! { - "relay" => json!(client.node.to_string()), - "client" => json!(client.peer_id.to_string()), - "permutations" => json!(permutations), - "flat_length" => json!(flat.len()) - }, - ); + .await; let mut args = client .receive_args() @@ -383,8 +387,9 @@ async fn fold_fold_seq_join() { let flat: Vec<_> = array.iter().flatten().copied().collect(); - client.send_particle( - r#" + client + .send_particle( + r#" (seq (seq (fold array chars @@ -430,12 +435,13 @@ async fn fold_fold_seq_join() { ) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "array" => json!(array), - "flat_length" => json!(flat.len()) - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "array" => json!(array), + "flat_length" => json!(flat.len()) + }, + ) + .await; let mut args = client.receive_args().await.expect("receive args"); let can = args.remove(0); @@ -525,7 +531,7 @@ async fn fold_fold_pairs_seq_join() { "array" => json!(array), "flat_length" => json!(flat.len()) }, - ); + ).await; let mut args = client.receive_args().await.expect("receive args"); let can = args.remove(0); @@ -581,7 +587,7 @@ async fn fold_seq_join() { "array" => json!(array), "array_length" => json!(array.len()) }, - ); + ).await; let arg = client.receive_args().await.expect("receive args").remove(0); let can: Vec = serde_json::from_value(arg).unwrap(); @@ -728,7 +734,7 @@ async fn fold_null_seq_same_node_stream() { "permutations" => json!(permutations), "flat_length" => json!(flat.len()) }, - ); + ).await; let mut args = client .receive_args() @@ -827,7 +833,7 @@ async fn fold_via() { "viaAr" => json!(swarms.iter().map(|s| s.peer_id.to_string()).collect::>()), }, true, - ); + ).await; client.receive().await.unwrap(); } @@ -858,7 +864,7 @@ async fn join_empty_stream() { "relay" => json!(client.node.to_string()), "nodes" => json!(swarms.iter().map(|s| s.peer_id.to_base58()).collect::>()), }, - ); + ).await; let err = client.receive_args().await.expect_err("receive error"); assert_eq!( diff --git a/crates/nox-tests/tests/network/network_explore.rs b/crates/nox-tests/tests/network/network_explore.rs index d892e45aad..ae1b73cdfa 100644 --- a/crates/nox-tests/tests/network/network_explore.rs +++ b/crates/nox-tests/tests/network/network_explore.rs @@ -85,8 +85,9 @@ async fn get_interfaces() { ) .await; - client.send_particle( - r#" + client + .send_particle( + r#" (seq (seq (call relay ("srv" "list") [] services) @@ -103,11 +104,12 @@ async fn get_interfaces() { ) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "client" => json!(client.peer_id.to_string()), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "client" => json!(client.peer_id.to_string()), + }, + ) + .await; let args = client .receive_args() @@ -163,7 +165,7 @@ async fn get_modules() { "relay" => json!(client.node.to_string()), "client" => json!(client.peer_id.to_string()), }, - ); + ).await; let value = client .receive_args() @@ -195,8 +197,9 @@ async fn list_blueprints() { let bytes = b"module"; let module_hash = Hash::new(bytes).unwrap().to_string(); - client.send_particle( - r#" + client + .send_particle( + r#" (seq (call relay ("dist" "add_module") [module_bytes module_config] module_hash) (seq @@ -211,15 +214,16 @@ async fn list_blueprints() { ) ) "#, - hashmap! { - "module_bytes" => json!(base64.encode(bytes)), - "module_config" => json!(module_config("module")), - "relay" => json!(client.node.to_string()), - "client" => json!(client.peer_id.to_string()), - "name" => json!("blueprint"), - "dependencies" => json!(vec![module_hash.clone()]) , - }, - ); + hashmap! { + "module_bytes" => json!(base64.encode(bytes)), + "module_config" => json!(module_config("module")), + "relay" => json!(client.node.to_string()), + "client" => json!(client.peer_id.to_string()), + "name" => json!("blueprint"), + "dependencies" => json!(vec![module_hash.clone()]) , + }, + ) + .await; let args = client .receive_args() @@ -389,7 +393,7 @@ async fn explore_services_fixed_flaky() { "relayId" => json!(client.node.to_string()), }; - client.send_particle(script, data); + client.send_particle(script, data).await; let now = Instant::now(); let tout = Duration::from_secs(10); @@ -400,15 +404,11 @@ async fn explore_services_fixed_flaky() { if let Ok(Some(event)) = timeout(Duration::from_secs(1), receive_task).await { match event { ClientEvent::Particle { particle, .. } => { - let args = read_args( - particle, - client.peer_id, - &mut client.local_vm.lock(), - &client.key_pair, - ) - .await - .expect("read args") - .expect("no error"); + let mut guard = client.local_vm.lock().await; + let args = read_args(particle, client.peer_id, &mut guard, &client.key_pair) + .await + .expect("read args") + .expect("no error"); received.push(args); } ClientEvent::NewConnection { .. } => {} diff --git a/crates/nox-tests/tests/services.rs b/crates/nox-tests/tests/services.rs index 23e16caca6..8921fef7ca 100644 --- a/crates/nox-tests/tests/services.rs +++ b/crates/nox-tests/tests/services.rs @@ -269,7 +269,7 @@ async fn create_service_from_config() { "config" => config, "module_bytes" => json!(base64.encode(module)), }; - client.send_particle_ext(script, data, true); + client.send_particle_ext(script, data, true).await; let result = client.receive_args().await.expect("receive"); if let [JValue::String(service_id)] = &result[..] { let result = client @@ -436,7 +436,7 @@ async fn handle_same_dir_in_preopens_and_mapped_dirs() { "config" => config, "module_bytes" => json!(base64.encode(module)), }; - client.send_particle_ext(script, data, true); + client.send_particle_ext(script, data, true).await; let result = client.receive_args().await; if result.is_ok() { panic!("expected error for module with invalid config") diff --git a/crates/nox-tests/tests/spells.rs b/crates/nox-tests/tests/spells.rs index 4e875e4ab4..c4a124f6d9 100644 --- a/crates/nox-tests/tests/spells.rs +++ b/crates/nox-tests/tests/spells.rs @@ -1389,13 +1389,15 @@ async fn resolve_global_alias() { ) .await; - client.send_particle( - r#"(call relay ("srv" "add_alias") ["alias" service])"#, - hashmap! { - "relay" => json!(client.node.to_string()), - "service" => json!(tetraplets_service.id), - }, - ); + client + .send_particle( + r#"(call relay ("srv" "add_alias") ["alias" service])"#, + hashmap! { + "relay" => json!(client.node.to_string()), + "service" => json!(tetraplets_service.id), + }, + ) + .await; let script = format!( r#" @@ -1518,8 +1520,9 @@ async fn spell_create_worker_twice() { "client" => json!(client.peer_id.to_string()), "relay" => json!(client.node.to_string()), }; - client.send_particle( - r#" + client + .send_particle( + r#" (xor (seq (seq @@ -1533,8 +1536,9 @@ async fn spell_create_worker_twice() { ) (call client ("return" "") [%last_error%.$.message worker_peer_id get_worker_peer_id]) )"#, - data.clone(), - ); + data.clone(), + ) + .await; let response = client.receive_args().await.wrap_err("receive").unwrap(); let error_msg = response[0].as_str().unwrap().to_string(); @@ -1669,8 +1673,9 @@ async fn create_remove_worker() { "spell_id" => json!(spell_id.clone()), "srv_id" => json!(service.id.clone()), }; - client.send_particle( - r#" + client + .send_particle( + r#" (xor (seq (seq @@ -1697,8 +1702,9 @@ async fn create_remove_worker() { (call client ("return" "") [%last_error%.$.message]) ) "#, - data.clone(), - ); + data.clone(), + ) + .await; if let [JValue::Array(before), JValue::String(spell_err), JValue::String(srv_err)] = client .receive_args() @@ -1754,8 +1760,9 @@ async fn spell_update_trigger_by_alias() { new_config.connections.connect = true; new_config.connections.disconnect = true; - let id = client.send_particle( - r#"(seq + let id = client + .send_particle( + r#"(seq (seq (call relay ("op" "noop") []) (call worker ("srv" "add_alias") ["alias" spell_id]) @@ -1765,13 +1772,14 @@ async fn spell_update_trigger_by_alias() { (call %init_peer_id% ("return" "") ["ok"]) ) )"#, - hashmap! { - "relay" => json!(client.node.to_string()), - "worker" => json!(worker), - "spell_id" => json!(spell_id.clone()), - "config" => json!(new_config) - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "worker" => json!(worker), + "spell_id" => json!(spell_id.clone()), + "config" => json!(new_config) + }, + ) + .await; client.wait_particle_args(id).await.unwrap(); @@ -1820,16 +1828,18 @@ async fn test_worker_list() { let worker_id1 = create_worker(&mut client, Some("deal_id1".to_string())).await; let worker_id2 = create_worker(&mut client, None).await; - client.send_particle( - r#"(seq + client + .send_particle( + r#"(seq (call relay ("worker" "list") [] result) (call client ("return" "") [result]) )"#, - hashmap! { - "relay" => json!(client.node.to_string()), - "client" => json!(client.peer_id.to_string()) - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "client" => json!(client.peer_id.to_string()) + }, + ) + .await; if let [JValue::Array(workers)] = client .receive_args() @@ -1889,8 +1899,9 @@ async fn test_spell_list() { ) .await; - client.send_particle( - r#"(seq + client + .send_particle( + r#"(seq (seq (call relay ("op" "noop") []) (seq @@ -1900,13 +1911,14 @@ async fn test_spell_list() { ) (call client ("return" "") [worker1_spells worker2_spells]) )"#, - hashmap! { - "relay" => json!(client.node.to_string()), - "client" => json!(client.peer_id.to_string()), - "worker1" => json!(worker_id1), - "worker2" => json!(worker_id2), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "client" => json!(client.peer_id.to_string()), + "worker1" => json!(worker_id1), + "worker2" => json!(worker_id2), + }, + ) + .await; if let [JValue::Array(worker1_spells), JValue::Array(worker2_spells)] = client .receive_args() @@ -2053,8 +2065,9 @@ async fn set_alias_by_worker_creator() { ) .await; - client.send_particle( - r#"(seq + client + .send_particle( + r#"(seq (seq (call relay ("op" "noop") []) (call worker ("srv" "add_alias") ["alias" service]) @@ -2064,13 +2077,14 @@ async fn set_alias_by_worker_creator() { (call client ("return" "") [resolved.$.[0]!]) ) )"#, - hashmap! { - "relay" => json!(client.node.to_string()), - "client" => json!(client.peer_id.to_string()), - "service" => json!(tetraplets_service.id), - "worker" => json!(worker_id), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "client" => json!(client.peer_id.to_string()), + "service" => json!(tetraplets_service.id), + "worker" => json!(worker_id), + }, + ) + .await; if let [JValue::String(resolved)] = client .receive_args() diff --git a/crates/nox-tests/tests/tetraplets.rs b/crates/nox-tests/tests/tetraplets.rs index b1c9947cea..d5e161f594 100644 --- a/crates/nox-tests/tests/tetraplets.rs +++ b/crates/nox-tests/tests/tetraplets.rs @@ -82,7 +82,7 @@ async fn test_tetraplets() { "service_id" => json!(tetraplets_service.id), }; - client.send_particle(script, data.clone()); + client.send_particle(script, data.clone()).await; let args = client.receive_args().await.wrap_err("receive").unwrap(); let mut args = args.into_iter(); diff --git a/crates/nox-tests/tests/topology.rs b/crates/nox-tests/tests/topology.rs index a5a1077f95..35ef94abb8 100644 --- a/crates/nox-tests/tests/topology.rs +++ b/crates/nox-tests/tests/topology.rs @@ -66,7 +66,8 @@ async fn identity() { "node_c" => json!(swarms[2].peer_id.to_string()), "client_b" => json!(b.peer_id.to_string()), }, - ); + ) + .await; b.receive().await.wrap_err("receive").unwrap(); } @@ -79,8 +80,9 @@ async fn init_peer_id() { .wrap_err("connect client") .unwrap(); - client.send_particle( - r#" + client + .send_particle( + r#" (seq (call relay ("kad" "neighborhood") [client] peers) (seq @@ -89,11 +91,12 @@ async fn init_peer_id() { ) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "client" => json!(client.peer_id.to_string()), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "client" => json!(client.peer_id.to_string()), + }, + ) + .await; client.receive().await.wrap_err("receive").unwrap(); } @@ -107,9 +110,10 @@ async fn join() { .wrap_err("connect client") .unwrap(); - client.send_particle( - format!( - r#" + client + .send_particle( + format!( + r#" (seq (seq (call relay ("op" "noop") []) @@ -132,15 +136,16 @@ async fn join() { ) ) "#, - join_stream("results", "%init_peer_id%", "len", "results"), - ), - hashmap! { - "nodes" => json!(swarms.iter().map(|s| s.peer_id.to_base58()).collect::>()), - "client" => json!(client.peer_id.to_string()), - "relay" => json!(client.node.to_string()), - "len" => json!(swarms.len()), - }, - ); + join_stream("results", "%init_peer_id%", "len", "results"), + ), + hashmap! { + "nodes" => json!(swarms.iter().map(|s| s.peer_id.to_base58()).collect::>()), + "client" => json!(client.peer_id.to_string()), + "relay" => json!(client.node.to_string()), + "len" => json!(swarms.len()), + }, + ) + .await; let received = client .listen_for_n(4, |peer_ids| { diff --git a/crates/nox-tests/tests/vault.rs b/crates/nox-tests/tests/vault.rs index 0b76869067..a4b2ded5c3 100644 --- a/crates/nox-tests/tests/vault.rs +++ b/crates/nox-tests/tests/vault.rs @@ -45,8 +45,9 @@ async fn share_file() { let first = create_file_share(&mut client).await; let second = create_file_share(&mut client).await; - client.send_particle( - r#" + client + .send_particle( + r#" (seq (call relay ("srv" "get_interface") [first] interface) (xor @@ -61,13 +62,14 @@ async fn share_file() { ) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "first" => json!(first.id), - "second" => json!(second.id), - "input_content" => json!("Hello!") - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "first" => json!(first.id), + "second" => json!(second.id), + "input_content" => json!("Hello!") + }, + ) + .await; use serde_json::Value::String; @@ -131,7 +133,7 @@ async fn deploy_from_vault() { "module" => json!(base64.encode(&module)), "q" => json!("\""), }, - ); + ).await; use serde_json::Value::String; @@ -154,8 +156,9 @@ async fn load_blueprint_from_vault() { // upload module let module = load_module("tests/file_share/artifacts", "file_share").expect("load module"); - client.send_particle( - r#" + client + .send_particle( + r#" (seq (seq (call relay ("dist" "default_module_config") ["file_share"] config) @@ -164,11 +167,12 @@ async fn load_blueprint_from_vault() { (call %init_peer_id% ("op" "return") [hash]) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "module" => json!(base64.encode(module)), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "module" => json!(base64.encode(module)), + }, + ) + .await; let args = client.receive_args().await.unwrap(); let module_hash = args[0].as_str().expect("single string"); @@ -182,8 +186,9 @@ async fn load_blueprint_from_vault() { ) .to_string() .unwrap(); - client.send_particle( - r#" + client + .send_particle( + r#" (seq (seq (call relay (first_service "create_vault_file") [blueprint_string] filename) @@ -201,12 +206,13 @@ async fn load_blueprint_from_vault() { ) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "first_service" => json!(file_share.id), - "blueprint_string" => json!(blueprint_string), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "first_service" => json!(file_share.id), + "blueprint_string" => json!(blueprint_string), + }, + ) + .await; use serde_json::Value::String; @@ -229,8 +235,9 @@ async fn put_cat_vault() { let payload = "test-test-test".to_string(); - client.send_particle( - r#" + client + .send_particle( + r#" (seq (seq (call relay ("vault" "put") [payload] filename) @@ -239,11 +246,12 @@ async fn put_cat_vault() { (call %init_peer_id% ("op" "return") [output_content]) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "payload" => json!(payload.clone()), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "payload" => json!(payload.clone()), + }, + ) + .await; use serde_json::Value::String; From 19a1d60c32d245922aa834ddab771428f81707bd Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 29 Oct 2023 15:44:02 +0300 Subject: [PATCH 10/17] wip --- .../nox-tests/tests/network/loop_topology.rs | 54 ++++++++++--------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/crates/nox-tests/tests/network/loop_topology.rs b/crates/nox-tests/tests/network/loop_topology.rs index 08bc5a7a9f..f607632fc0 100644 --- a/crates/nox-tests/tests/network/loop_topology.rs +++ b/crates/nox-tests/tests/network/loop_topology.rs @@ -554,8 +554,9 @@ async fn fold_seq_join() { let array: Vec<_> = (1..10).collect(); - client.send_particle( - r#" + client + .send_particle( + r#" (seq (seq (fold array e @@ -582,12 +583,13 @@ async fn fold_seq_join() { ) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "array" => json!(array), - "array_length" => json!(array.len()) - }, - ).await; + hashmap! { + "relay" => json!(client.node.to_string()), + "array" => json!(array), + "array_length" => json!(array.len()) + }, + ) + .await; let arg = client.receive_args().await.expect("receive args").remove(0); let can: Vec = serde_json::from_value(arg).unwrap(); @@ -766,8 +768,9 @@ async fn fold_via() { .wrap_err("connect client") .unwrap(); - client.send_particle_ext( - r#" + client + .send_particle_ext( + r#" (xor (seq (seq @@ -827,13 +830,14 @@ async fn fold_via() { (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) ) "#, - hashmap! { - "-relay-" => json!(client.node.to_base58()), - "node_id" => json!(client.node.to_base58()), - "viaAr" => json!(swarms.iter().map(|s| s.peer_id.to_string()).collect::>()), - }, - true, - ).await; + hashmap! { + "-relay-" => json!(client.node.to_base58()), + "node_id" => json!(client.node.to_base58()), + "viaAr" => json!(swarms.iter().map(|s| s.peer_id.to_string()).collect::>()), + }, + true, + ) + .await; client.receive().await.unwrap(); } @@ -847,8 +851,9 @@ async fn join_empty_stream() { .wrap_err("connect client") .unwrap(); - client.send_particle( - r#" + client + .send_particle( + r#" (seq (xor (call relay ("op" "noop") []) @@ -860,11 +865,12 @@ async fn join_empty_stream() { ) ) "#, - hashmap! { - "relay" => json!(client.node.to_string()), - "nodes" => json!(swarms.iter().map(|s| s.peer_id.to_base58()).collect::>()), - }, - ).await; + hashmap! { + "relay" => json!(client.node.to_string()), + "nodes" => json!(swarms.iter().map(|s| s.peer_id.to_base58()).collect::>()), + }, + ) + .await; let err = client.receive_args().await.expect_err("receive error"); assert_eq!( From 7c3693b33eae6610708cc912444e68cee3307dd5 Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 29 Oct 2023 16:06:13 +0300 Subject: [PATCH 11/17] wip --- crates/nox-tests/tests/builtin.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/nox-tests/tests/builtin.rs b/crates/nox-tests/tests/builtin.rs index 67ee94f9ce..694b257b10 100644 --- a/crates/nox-tests/tests/builtin.rs +++ b/crates/nox-tests/tests/builtin.rs @@ -288,6 +288,7 @@ async fn remove_service_by_alias() { #[tokio::test] async fn non_owner_remove_service() { + log_utils::enable_logs(); let swarms = make_swarms(1).await; let mut client = ConnectedClient::connect_to(swarms[0].multiaddr.clone()) From 7c8659d5ab521efbfb2b87a818676299918704e3 Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 29 Oct 2023 16:18:44 +0300 Subject: [PATCH 12/17] wip --- crates/connected-client/src/connected_client.rs | 3 ++- crates/local-vm/src/local_vm.rs | 3 ++- crates/nox-tests/tests/local_vm.rs | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/crates/connected-client/src/connected_client.rs b/crates/connected-client/src/connected_client.rs index 07dd4b547d..b9b056a19f 100644 --- a/crates/connected-client/src/connected_client.rs +++ b/crates/connected-client/src/connected_client.rs @@ -205,7 +205,8 @@ impl ConnectedClient { generated, self.particle_ttl(), &self.key_pair, - ); + ) + .await; let id = particle.id.clone(); self.send(particle); id diff --git a/crates/local-vm/src/local_vm.rs b/crates/local-vm/src/local_vm.rs index 8aeb0fbde9..9d889ad9ed 100644 --- a/crates/local-vm/src/local_vm.rs +++ b/crates/local-vm/src/local_vm.rs @@ -247,7 +247,7 @@ pub fn wrap_script( } #[allow(clippy::too_many_arguments)] -pub fn make_particle( +pub async fn make_particle( peer_id: PeerId, service_in: &HashMap, script: String, @@ -299,6 +299,7 @@ pub fn make_particle( let result = host_call(service_in, args); call_results.insert(id, result.0); } + tokio::task::yield_now().await; } tracing::info!(particle_id = id, "Made a particle"); diff --git a/crates/nox-tests/tests/local_vm.rs b/crates/nox-tests/tests/local_vm.rs index 70a274d12e..1f9dea5ba5 100644 --- a/crates/nox-tests/tests/local_vm.rs +++ b/crates/nox-tests/tests/local_vm.rs @@ -58,7 +58,7 @@ async fn make() { false, Duration::from_secs(20), &keypair_a, - ); + ).await; let args = read_args(particle, client_b, &mut local_vm_b, &keypair_b) .await From 44a6a2309d45bb1ef8f41402f86abc821277577c Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 29 Oct 2023 16:23:54 +0300 Subject: [PATCH 13/17] wip --- crates/nox-tests/tests/builtin.rs | 1 - crates/nox-tests/tests/local_vm.rs | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/nox-tests/tests/builtin.rs b/crates/nox-tests/tests/builtin.rs index 694b257b10..67ee94f9ce 100644 --- a/crates/nox-tests/tests/builtin.rs +++ b/crates/nox-tests/tests/builtin.rs @@ -288,7 +288,6 @@ async fn remove_service_by_alias() { #[tokio::test] async fn non_owner_remove_service() { - log_utils::enable_logs(); let swarms = make_swarms(1).await; let mut client = ConnectedClient::connect_to(swarms[0].multiaddr.clone()) diff --git a/crates/nox-tests/tests/local_vm.rs b/crates/nox-tests/tests/local_vm.rs index 1f9dea5ba5..20c050d4e2 100644 --- a/crates/nox-tests/tests/local_vm.rs +++ b/crates/nox-tests/tests/local_vm.rs @@ -58,7 +58,8 @@ async fn make() { false, Duration::from_secs(20), &keypair_a, - ).await; + ) + .await; let args = read_args(particle, client_b, &mut local_vm_b, &keypair_b) .await From c5d8e16556b58292865ba5ecda68b59df60f7bc3 Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 30 Oct 2023 12:47:10 +0300 Subject: [PATCH 14/17] wip --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index fc100ff92e..cada28ca2b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -110,7 +110,7 @@ libp2p-core = { version = "0.40.1", default-features = false, features = ["secp2 libp2p-metrics = "0.13.1" libp2p-noise = "0.43.2" libp2p-mplex = "0.40.0" -libp2p-swarm = "0.43.6" +libp2p-swarm = "0.43.7" libp2p-identity = "0.2.7" libp2p-connection-limits = "0.2.1" libp2p-kad = "0.44.6" From 68752d99b1556205483096fb9d7fd3c0568f79e2 Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 30 Oct 2023 15:18:00 +0300 Subject: [PATCH 15/17] wip --- Cargo.lock | 4 +-- .../connected-client/src/connected_client.rs | 26 ++++++++++--------- .../nox-tests/tests/network/loop_topology.rs | 1 + .../tests/network/network_explore.rs | 2 +- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d10a7f33af..23f1f7da4e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3515,9 +3515,9 @@ dependencies = [ [[package]] name = "libp2p-swarm" -version = "0.43.6" +version = "0.43.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48ff0e918a45fec0b6f27b30b0547a57c6c214aa8b13be3647b7701bfd8b8797" +checksum = "580189e0074af847df90e75ef54f3f30059aedda37ea5a1659e8b9fca05c0141" dependencies = [ "either", "fnv", diff --git a/crates/connected-client/src/connected_client.rs b/crates/connected-client/src/connected_client.rs index b9b056a19f..8f909a1d8c 100644 --- a/crates/connected-client/src/connected_client.rs +++ b/crates/connected-client/src/connected_client.rs @@ -15,7 +15,7 @@ */ use core::ops::Deref; -use std::{cell::LazyCell, collections::HashMap, ops::DerefMut, time::Duration}; +use std::{collections::HashMap, ops::DerefMut, time::Duration}; use eyre::Result; use eyre::{bail, eyre, WrapErr}; @@ -40,7 +40,7 @@ pub struct ConnectedClient { pub timeout: Duration, pub short_timeout: Duration, pub kad_timeout: Duration, - pub local_vm: LazyCell, Box tokio::sync::Mutex>>, + pub local_vm: tokio::sync::OnceCell>, pub particle_ttl: Duration, } @@ -141,17 +141,19 @@ impl ConnectedClient { Ok(result) } + pub async fn get_local_vm(&self) -> &tokio::sync::Mutex { + let peer_id = self.client.peer_id; + self.local_vm + .get_or_init(|| async { tokio::sync::Mutex::new(make_vm(peer_id)) }) + .await + } pub fn new( client: Client, node: PeerId, node_address: Multiaddr, particle_ttl: Option, ) -> Self { - let peer_id = client.peer_id; - let f: Box tokio::sync::Mutex> = - Box::new(move || tokio::sync::Mutex::new(make_vm(peer_id))); - let local_vm = LazyCell::new(f); - + let local_vm = tokio::sync::OnceCell::const_new(); Self { client, node, @@ -195,7 +197,7 @@ impl ConnectedClient { .into_iter() .map(|(key, value)| (key.to_string(), value)) .collect(); - let mut guard = self.local_vm.lock().await; + let mut guard = self.get_local_vm().await.lock().await; let particle = make_particle( self.peer_id, &data, @@ -249,7 +251,7 @@ impl ConnectedClient { pub async fn receive_args(&mut self) -> Result> { let particle = self.receive().await.wrap_err("receive_args")?; - let mut guard = self.local_vm.lock().await; + let mut guard = self.get_local_vm().await.lock().await; let result = read_args(particle, self.peer_id, &mut guard, &self.key_pair).await; match result { Some(result) => result.map_err(|args| eyre!("AIR caught an error: {:?}", args)), @@ -270,7 +272,7 @@ impl ConnectedClient { match head { Some(index) => { let particle = self.fetched.remove(index); - let mut guard = self.local_vm.lock().await; + let mut guard = self.get_local_vm().await.lock().await; let result = read_args(particle, self.peer_id, &mut guard, &self.key_pair).await; drop(guard); if let Some(result) = result { @@ -293,7 +295,7 @@ impl ConnectedClient { let particle = self.raw_receive().await.ok(); if let Some(particle) = particle { if particle.id == particle_id.as_ref() { - let mut guard = self.local_vm.lock().await; + let mut guard = self.get_local_vm().await.lock().await; let result = read_args(particle, self.peer_id, &mut guard, &self.key_pair).await; if let Some(result) = result { @@ -319,7 +321,7 @@ impl ConnectedClient { let particle = self.receive().await.ok(); if let Some(particle) = particle { - let mut guard = self.local_vm.lock().await; + let mut guard = self.get_local_vm().await.lock().await; let args = read_args(particle, self.peer_id, &mut guard, &self.key_pair).await; if let Some(args) = args { return f(args); diff --git a/crates/nox-tests/tests/network/loop_topology.rs b/crates/nox-tests/tests/network/loop_topology.rs index f607632fc0..fef955781e 100644 --- a/crates/nox-tests/tests/network/loop_topology.rs +++ b/crates/nox-tests/tests/network/loop_topology.rs @@ -257,6 +257,7 @@ async fn fold_fold_fold_seq_two_par_null_folds_flaky() { #[tokio::test] async fn fold_par_same_node_stream() { + log_utils::enable_console(); let swarms = make_swarms(3).await; let mut client = ConnectedClient::connect_to(swarms[0].multiaddr.clone()) diff --git a/crates/nox-tests/tests/network/network_explore.rs b/crates/nox-tests/tests/network/network_explore.rs index ae1b73cdfa..4d1f5780c8 100644 --- a/crates/nox-tests/tests/network/network_explore.rs +++ b/crates/nox-tests/tests/network/network_explore.rs @@ -404,7 +404,7 @@ async fn explore_services_fixed_flaky() { if let Ok(Some(event)) = timeout(Duration::from_secs(1), receive_task).await { match event { ClientEvent::Particle { particle, .. } => { - let mut guard = client.local_vm.lock().await; + let mut guard = client.get_local_vm().await.lock().await; let args = read_args(particle, client.peer_id, &mut guard, &client.key_pair) .await .expect("read args") From 72a272fa3b917a67eedd2ca8508fd66f7cc52e2b Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 30 Oct 2023 15:19:19 +0300 Subject: [PATCH 16/17] wip --- crates/nox-tests/tests/network/loop_topology.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/nox-tests/tests/network/loop_topology.rs b/crates/nox-tests/tests/network/loop_topology.rs index fef955781e..f607632fc0 100644 --- a/crates/nox-tests/tests/network/loop_topology.rs +++ b/crates/nox-tests/tests/network/loop_topology.rs @@ -257,7 +257,6 @@ async fn fold_fold_fold_seq_two_par_null_folds_flaky() { #[tokio::test] async fn fold_par_same_node_stream() { - log_utils::enable_console(); let swarms = make_swarms(3).await; let mut client = ConnectedClient::connect_to(swarms[0].multiaddr.clone()) From 50c1e2f9433b8be77f90c98167a0c8de073954d7 Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 30 Oct 2023 15:37:05 +0300 Subject: [PATCH 17/17] wip --- crates/nox-tests/tests/spells.rs | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/crates/nox-tests/tests/spells.rs b/crates/nox-tests/tests/spells.rs index c4a124f6d9..85f853b301 100644 --- a/crates/nox-tests/tests/spells.rs +++ b/crates/nox-tests/tests/spells.rs @@ -2125,19 +2125,21 @@ async fn test_decider_api_endpoint_rewrite() { .wrap_err("connect client") .unwrap(); - client.send_particle( - r#"(seq + client + .send_particle( + r#"(seq (call relay ("decider" "get_string") ["chain"] chain_info_str) (seq (call relay ("json" "parse") [chain_info_str.$.str] chain_info) (call client ("return" "") [chain_info.$.api_endpoint]) ) )"#, - hashmap! { - "relay" => json!(client.node.to_string()), - "client" => json!(client.peer_id.to_string()), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "client" => json!(client.peer_id.to_string()), + }, + ) + .await; if let [JValue::String(endpoint)] = client .receive_args() @@ -2179,19 +2181,21 @@ async fn test_decider_api_endpoint_rewrite() { .wrap_err("connect client") .unwrap(); - client.send_particle( - r#"(seq + client + .send_particle( + r#"(seq (call relay ("decider" "get_string") ["chain"] chain_info_str) (seq (call relay ("json" "parse") [chain_info_str.$.str] chain_info) (call client ("return" "") [chain_info.$.api_endpoint]) ) )"#, - hashmap! { - "relay" => json!(client.node.to_string()), - "client" => json!(client.peer_id.to_string()), - }, - ); + hashmap! { + "relay" => json!(client.node.to_string()), + "client" => json!(client.peer_id.to_string()), + }, + ) + .await; if let [JValue::String(endpoint)] = client .receive_args()