diff --git a/fuzz-client/aqua/timestamp_gatherer.aqua b/fuzz-client/aqua/timestamp_gatherer.aqua index 8b2b74c..5ff1549 100644 --- a/fuzz-client/aqua/timestamp_gatherer.aqua +++ b/fuzz-client/aqua/timestamp_gatherer.aqua @@ -1,60 +1,72 @@ import "@fluencelabs/aqua-lib/builtin.aqua" +-- per-node timeout to decide if it's down +const TIMEOUT = 2000 --- simple timestamp getter for kademlia neigborhodd which is max size 20 -func ts_getter() -> []u64: +-- simple timestamp getter for kademlia neigborhood which is max size 20 +func collect_timestamps_from_neighborhood() -> []u64, []PeerId: + timestamps: *u64 + statuses: *string + dead_peers: *PeerId -- on this peer on HOST_PEER_ID: -- convert peer id to b58 k <- Op.string_to_b58(HOST_PEER_ID) -- get all neighbors nodes <- Kademlia.neighborhood(k, nil, nil) - res: *u64 -- for each neighbor for n <- nodes par: + status: *string -- on selected neighbor peer on n: -- get the timestamp from that node - res <- Peer.timestamp_ms() - -- hot fix to force switching to peer - Op.noop() - -- join the results, which is tricky rght now since we can't use array len - -- the testnet size n is 10 so n -1 - join res[9] - <- res + timestamps <- Peer.timestamp_ms() + status <<- "ok" + -- run timeout task in parallel, so if node `n` is down, we'll get `timed out` status + -- this pattern is documented: https://doc.fluence.dev/aqua-book/language/flow/parallel#timeout-and-race-patterns + par status <- Peer.timeout(TIMEOUT, "timed out") + statuses <<- status! + if status! != "ok": + dead_peers <<- n + + -- wait for all nodes to respond or timeout + length <- Op.array_length(nodes) + join statuses[length - 1] + <- timestamps, dead_peers --- timestamp getter with error collector over neighborhood -func ts_getter_with_timeout()-> []u64, []string: - -- timeout in ms - rtt = 1000 - res: *u64 +-- -- timestamp getter with error collector over neighborhood +-- func ts_getter_with_timeout()-> []u64, []string: +-- -- timeout in ms +-- rtt = 1000 - -- error value for no timestamp - err_value = 0 +-- res: *u64 - -- neighborhood n = 20 decr by 1 for array - n_neighborhood = 19 +-- -- error value for no timestamp +-- err_value = 0 - -- err message - msg = "timeout" +-- -- neighborhood n = 20 decr by 1 for array +-- n_neighborhood = 19 + +-- -- err message +-- msg = "timeout" - -- collect non-responsive peer ids, if any - dead_peers: *string - on HOST_PEER_ID: - k <- Op.string_to_b58(HOST_PEER_ID) - nodes <- Kademlia.neighborhood(k, nil, nil) - for n <- nodes par: - status: *string - on n: - res <- Peer.timestamp_ms() - status <<- "success" - par status <- Peer.timeout(rtt, msg) - if status! != "success": - res <<- err_value - dead_peers <<- n - Op.noop() +-- -- collect non-responsive peer ids, if any +-- dead_peers: *string +-- on HOST_PEER_ID: +-- k <- Op.string_to_b58(HOST_PEER_ID) +-- nodes <- Kademlia.neighborhood(k, nil, nil) +-- for n <- nodes par: +-- status: *string +-- on n: +-- res <- Peer.timestamp_ms() +-- status <<- "success" +-- par status <- Peer.timeout(rtt, msg) +-- if status! != "success": +-- res <<- err_value +-- dead_peers <<- n +-- Op.noop() - join res[n_neighborhood] - <- res, dead_peers +-- join res[n_neighborhood] +-- <- res, dead_peers diff --git a/fuzz-client/package-lock.json b/fuzz-client/package-lock.json index f03bf2f..65d90b4 100644 --- a/fuzz-client/package-lock.json +++ b/fuzz-client/package-lock.json @@ -9,14 +9,12 @@ "version": "0.1.0", "license": "MIT", "dependencies": { - "@fluencelabs/aqua-lib": "^0.4.3", - "@fluencelabs/fluence": "0.21.6", + "@fluencelabs/fluence": "^0.21.7", "@fluencelabs/fluence-network-environment": "1.0.13", - "it-all": "^1.0.6", - "ts-node": "^10.7.0" + "it-all": "^1.0.6" }, "devDependencies": { - "@fluencelabs/aqua": "^0.7.0-285", + "@fluencelabs/aqua": "0.7.1-293", "@fluencelabs/aqua-lib": "^0.4.3", "ts-node": "^10.7.0", "typescript": "^4.6.3" @@ -101,14 +99,14 @@ } }, "node_modules/@fluencelabs/aqua": { - "version": "0.7.0-287", - "resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.7.0-287.tgz", - "integrity": "sha512-mshgECE6u01MbTU3vZfDdoJn+ZBm3uuvjzRf5xhvytzq4B9v4I2pap/wrpnYezApXEdbgMkhYi8Sp1PHlRz0bg==", + "version": "0.7.1-293", + "resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.7.1-293.tgz", + "integrity": "sha512-D29meiuZrJBq076kCE8UbMq9PPHcLFctsgfRSENEgybfyw4MbgEPQZorHHHOrbDfckmBvAZB7+5oUNTIgiiwEw==", "dev": true, "dependencies": { "@fluencelabs/aqua-ipfs": "0.5.2", "@fluencelabs/aqua-lib": "0.4.0", - "@fluencelabs/fluence": "0.21.5", + "@fluencelabs/fluence": "0.21.7", "@fluencelabs/fluence-network-environment": "1.0.13", "ipfs-http-client": "50.1.2" }, @@ -144,40 +142,6 @@ "integrity": "sha512-bad282cCZrE//I+Hzsl/vWgudwXuNiaqJOonv11xkgOBBvL7Gg3SIap8HioNvkaDxIvylVB+POjYJ7E5sGNoVQ==", "dev": true }, - "node_modules/@fluencelabs/aqua/node_modules/@fluencelabs/fluence": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.21.5.tgz", - "integrity": "sha512-Zldn2I09ENp+F4MDYxsIMkJQOIQyfpiYmcAmVl60yTdKls78GmmnSyvAI+dZxUcNrhPqscnrtaENJoKwGwgm+Q==", - "dev": true, - "dependencies": { - "@chainsafe/libp2p-noise": "^4.1.1", - "@fluencelabs/avm": "^0.21.3", - "@fluencelabs/avm-runner-background": "0.2.0", - "@fluencelabs/avm-runner-interface": "^0.2.0", - "@fluencelabs/marine-js": "0.1.0", - "async": "3.2.0", - "browser-or-node": "^2.0.0", - "bs58": "4.0.1", - "buffer": "^6.0.3", - "cids": "0.8.1", - "it-length-prefixed": "3.0.1", - "it-pipe": "1.1.0", - "libp2p": "=0.33.0", - "libp2p-crypto": "=0.20.0", - "libp2p-mplex": "=0.10.2", - "libp2p-websockets": "^0.16.2", - "loglevel": "1.7.0", - "multiaddr": "^10.0.1", - "multiformats": "^9.6.4", - "peer-id": "=0.15.4", - "rxjs": "^7.3.0", - "ts-pattern": "^3.3.3", - "uuid": "8.3.0" - }, - "bin": { - "copy-avm-public": "dist/tools/copyAvmPublic.js" - } - }, "node_modules/@fluencelabs/avm": { "version": "0.21.7", "resolved": "https://registry.npmjs.org/@fluencelabs/avm/-/avm-0.21.7.tgz", @@ -205,9 +169,9 @@ "integrity": "sha512-Y41pL+UwZZVdormxju8cJQsNRp6tdER0VqJ9Kg9gH2wd1KJAaYTJkyVbn8NB7fEFRUbqfbb1BXHi9wWBYOgGYQ==" }, "node_modules/@fluencelabs/fluence": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.21.6.tgz", - "integrity": "sha512-g0nbg6IeBdivcU7jutb3M6UdNrUvVX4IIQKsZ80y6yzVqeWTqHbYsb+6q0zzv12q4OllpO4lcUWKUbUQyl4QMg==", + "version": "0.21.7", + "resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.21.7.tgz", + "integrity": "sha512-ry7sAaWDaMT0tuy4IZ0kaEY5mzuflEV3lPj8c/xkvZmvuf9fVfJdVr+v63yr1Qb/XuA8QHor64BP10/a8aa3Dw==", "dependencies": { "@chainsafe/libp2p-noise": "^4.1.1", "@fluencelabs/avm": "^0.21.3", @@ -215,7 +179,6 @@ "@fluencelabs/avm-runner-interface": "^0.2.0", "@fluencelabs/marine-js": "0.1.0", "async": "3.2.0", - "browser-or-node": "^2.0.0", "bs58": "4.0.1", "buffer": "^6.0.3", "cids": "0.8.1", @@ -229,6 +192,7 @@ "multiaddr": "^10.0.1", "multiformats": "^9.6.4", "peer-id": "=0.15.4", + "platform": "^1.3.6", "rxjs": "^7.3.0", "ts-pattern": "^3.3.3", "uuid": "8.3.0" @@ -3726,6 +3690,11 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "node_modules/platform": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" + }, "node_modules/private-ip": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/private-ip/-/private-ip-2.3.3.tgz", @@ -4410,14 +4379,14 @@ } }, "@fluencelabs/aqua": { - "version": "0.7.0-287", - "resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.7.0-287.tgz", - "integrity": "sha512-mshgECE6u01MbTU3vZfDdoJn+ZBm3uuvjzRf5xhvytzq4B9v4I2pap/wrpnYezApXEdbgMkhYi8Sp1PHlRz0bg==", + "version": "0.7.1-293", + "resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.7.1-293.tgz", + "integrity": "sha512-D29meiuZrJBq076kCE8UbMq9PPHcLFctsgfRSENEgybfyw4MbgEPQZorHHHOrbDfckmBvAZB7+5oUNTIgiiwEw==", "dev": true, "requires": { "@fluencelabs/aqua-ipfs": "0.5.2", "@fluencelabs/aqua-lib": "0.4.0", - "@fluencelabs/fluence": "0.21.5", + "@fluencelabs/fluence": "0.21.7", "@fluencelabs/fluence-network-environment": "1.0.13", "ipfs-http-client": "50.1.2" }, @@ -4427,37 +4396,6 @@ "resolved": "https://registry.npmjs.org/@fluencelabs/aqua-lib/-/aqua-lib-0.4.0.tgz", "integrity": "sha512-bad282cCZrE//I+Hzsl/vWgudwXuNiaqJOonv11xkgOBBvL7Gg3SIap8HioNvkaDxIvylVB+POjYJ7E5sGNoVQ==", "dev": true - }, - "@fluencelabs/fluence": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.21.5.tgz", - "integrity": "sha512-Zldn2I09ENp+F4MDYxsIMkJQOIQyfpiYmcAmVl60yTdKls78GmmnSyvAI+dZxUcNrhPqscnrtaENJoKwGwgm+Q==", - "dev": true, - "requires": { - "@chainsafe/libp2p-noise": "^4.1.1", - "@fluencelabs/avm": "^0.21.3", - "@fluencelabs/avm-runner-background": "0.2.0", - "@fluencelabs/avm-runner-interface": "^0.2.0", - "@fluencelabs/marine-js": "0.1.0", - "async": "3.2.0", - "browser-or-node": "^2.0.0", - "bs58": "4.0.1", - "buffer": "^6.0.3", - "cids": "0.8.1", - "it-length-prefixed": "3.0.1", - "it-pipe": "1.1.0", - "libp2p": "=0.33.0", - "libp2p-crypto": "=0.20.0", - "libp2p-mplex": "=0.10.2", - "libp2p-websockets": "^0.16.2", - "loglevel": "1.7.0", - "multiaddr": "^10.0.1", - "multiformats": "^9.6.4", - "peer-id": "=0.15.4", - "rxjs": "^7.3.0", - "ts-pattern": "^3.3.3", - "uuid": "8.3.0" - } } } }, @@ -4505,9 +4443,9 @@ "integrity": "sha512-Y41pL+UwZZVdormxju8cJQsNRp6tdER0VqJ9Kg9gH2wd1KJAaYTJkyVbn8NB7fEFRUbqfbb1BXHi9wWBYOgGYQ==" }, "@fluencelabs/fluence": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.21.6.tgz", - "integrity": "sha512-g0nbg6IeBdivcU7jutb3M6UdNrUvVX4IIQKsZ80y6yzVqeWTqHbYsb+6q0zzv12q4OllpO4lcUWKUbUQyl4QMg==", + "version": "0.21.7", + "resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.21.7.tgz", + "integrity": "sha512-ry7sAaWDaMT0tuy4IZ0kaEY5mzuflEV3lPj8c/xkvZmvuf9fVfJdVr+v63yr1Qb/XuA8QHor64BP10/a8aa3Dw==", "requires": { "@chainsafe/libp2p-noise": "^4.1.1", "@fluencelabs/avm": "^0.21.3", @@ -4515,7 +4453,6 @@ "@fluencelabs/avm-runner-interface": "^0.2.0", "@fluencelabs/marine-js": "0.1.0", "async": "3.2.0", - "browser-or-node": "^2.0.0", "bs58": "4.0.1", "buffer": "^6.0.3", "cids": "0.8.1", @@ -4529,6 +4466,7 @@ "multiaddr": "^10.0.1", "multiformats": "^9.6.4", "peer-id": "=0.15.4", + "platform": "^1.3.6", "rxjs": "^7.3.0", "ts-pattern": "^3.3.3", "uuid": "8.3.0" @@ -7468,6 +7406,11 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "platform": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" + }, "private-ip": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/private-ip/-/private-ip-2.3.3.tgz", diff --git a/fuzz-client/package.json b/fuzz-client/package.json index fb66e16..c43757b 100644 --- a/fuzz-client/package.json +++ b/fuzz-client/package.json @@ -13,11 +13,9 @@ "package-lock.json" ], "dependencies": { - "@fluencelabs/aqua-lib": "^0.4.3", - "@fluencelabs/fluence": "0.21.6", + "@fluencelabs/fluence": "^0.21.7", "@fluencelabs/fluence-network-environment": "1.0.13", - "it-all": "^1.0.6", - "ts-node": "^10.7.0" + "it-all": "^1.0.6" }, "scripts": { "start": "node -r ts-node/register src/index.ts", @@ -34,7 +32,7 @@ "url": "git+https://github.com/fluencelabs/examples/issues" }, "devDependencies": { - "@fluencelabs/aqua": "^0.7.0-285", + "@fluencelabs/aqua": "0.7.1-293", "@fluencelabs/aqua-lib": "^0.4.3", "ts-node": "^10.7.0", "typescript": "^4.6.3" diff --git a/fuzz-client/src/_aqua/timestamp_gatherer.ts b/fuzz-client/src/_aqua/timestamp_gatherer.ts index 9576328..7855fe3 100644 --- a/fuzz-client/src/_aqua/timestamp_gatherer.ts +++ b/fuzz-client/src/_aqua/timestamp_gatherer.ts @@ -3,7 +3,7 @@ * This file is auto-generated. Do not edit manually: changes may be erased. * Generated by Aqua compiler: https://github.com/fluencelabs/aqua/. * If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues - * Aqua version: 0.6.0-272 + * Aqua version: 0.7.1-293 * */ import { Fluence, FluencePeer } from '@fluencelabs/fluence'; @@ -11,68 +11,100 @@ import { CallParams, callFunction, registerService, -} from '@fluencelabs/fluence/dist/internal/compilerSupport/v2'; +} from '@fluencelabs/fluence/dist/internal/compilerSupport/v3'; // Services // Functions - -export function ts_getter( +export type Collect_timestamps_from_neighborhoodResult = [number[], string[]] +export function collect_timestamps_from_neighborhood( config?: {ttl?: number} -): Promise; +): Promise; -export function ts_getter( +export function collect_timestamps_from_neighborhood( peer: FluencePeer, config?: {ttl?: number} -): Promise; +): Promise; -export function ts_getter(...args: any) { +export function collect_timestamps_from_neighborhood(...args: any) { let script = ` (xor (seq (seq (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) - (new $res - (seq - (xor - (seq + (new $statuses + (new $timestamps + (seq + (new $dead_peers (seq - (seq - (call -relay- ("op" "string_to_b58") [-relay-] k) - (call -relay- ("kad" "neighborhood") [k [] []] nodes) - ) - (par - (fold nodes n - (par + (xor + (seq + (seq (seq - (xor - (call n ("peer" "timestamp_ms") [] $res) + (seq (seq - (call -relay- ("op" "noop") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) + (call -relay- ("op" "string_to_b58") [-relay-] k) + (call -relay- ("kad" "neighborhood") [k [] []] nodes) + ) + (par + (fold nodes n + (par + (new $status + (seq + (seq + (seq + (par + (xor + (seq + (call n ("peer" "timestamp_ms") [] $timestamps) + (ap "ok" $status) + ) + (seq + (call -relay- ("op" "noop") []) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) + ) + ) + (call -relay- ("peer" "timeout") [2000 "timed out"] $status) + ) + (call -relay- ("op" "identity") [$status.$.[0]!] push-to-stream-30) + ) + (ap push-to-stream-30 $statuses) + ) + (xor + (mismatch $status.$.[0]! "ok" + (ap n $dead_peers) + ) + (null) + ) + ) + ) + (next n) + ) + ) + (null) ) ) - (call -relay- ("op" "noop") []) + (call -relay- ("op" "array_length") [nodes] length) ) - (next n) + (call -relay- ("math" "sub") [length 1] sub) ) + (call -relay- ("op" "noop") [$statuses.$.[sub]!]) ) - (null) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) ) + (call %init_peer_id% ("op" "identity") [$dead_peers] dead_peers-fix) ) - (call -relay- ("op" "noop") [$res.$.[9]!]) ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + (call %init_peer_id% ("op" "identity") [$timestamps] timestamps-fix) ) - (call %init_peer_id% ("op" "identity") [$res] res-fix) ) ) ) (xor - (call %init_peer_id% ("callbackSrv" "response") [res-fix]) + (call %init_peer_id% ("callbackSrv" "response") [timestamps-fix dead_peers-fix]) (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) ) ) @@ -82,132 +114,35 @@ export function ts_getter(...args: any) { return callFunction( args, { - "functionName" : "ts_getter", - "returnType" : { - "tag" : "primitive" - }, - "argDefs" : [ - ], - "names" : { - "relay" : "-relay-", - "getDataSrv" : "getDataSrv", - "callbackSrv" : "callbackSrv", - "responseSrv" : "callbackSrv", - "responseFnName" : "response", - "errorHandlingSrv" : "errorHandlingSrv", - "errorFnName" : "error" - } -}, - script - ) -} - - -export type Ts_getter_with_timeoutResult = [number[], string[]] -export function ts_getter_with_timeout( - config?: {ttl?: number} -): Promise; - -export function ts_getter_with_timeout( - peer: FluencePeer, - config?: {ttl?: number} -): Promise; - -export function ts_getter_with_timeout(...args: any) { - - let script = ` - (xor - (seq - (seq - (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) - (new $res - (seq - (new $dead_peers - (seq - (xor - (seq - (seq - (seq - (call -relay- ("op" "string_to_b58") [-relay-] k) - (call -relay- ("kad" "neighborhood") [k [] []] nodes) - ) - (par - (fold nodes n - (par - (new $status - (seq - (seq - (par - (xor - (seq - (call n ("peer" "timestamp_ms") [] $res) - (ap "success" $status) - ) - (seq - (call -relay- ("op" "noop") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) - ) - ) - (call -relay- ("peer" "timeout") [1000 "timeout"] $status) - ) - (xor - (mismatch $status.$.[0]! "success" - (xor - (seq - (ap 0 $res) - (ap n $dead_peers) - ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) - ) - ) - (null) - ) - ) - (call -relay- ("op" "noop") []) - ) - ) - (next n) - ) - ) - (null) - ) - ) - (call -relay- ("op" "noop") [$res.$.[19]!]) - ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) - ) - (call %init_peer_id% ("op" "identity") [$dead_peers] dead_peers-fix) - ) - ) - (call %init_peer_id% ("op" "identity") [$res] res-fix) - ) - ) - ) - (xor - (call %init_peer_id% ("callbackSrv" "response") [res-fix dead_peers-fix]) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4]) - ) - ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 5]) - ) - ` - return callFunction( - args, - { - "functionName" : "ts_getter_with_timeout", - "returnType" : { - "tag" : "multiReturn", - "returnItems" : [ - { - "tag" : "primitive" - }, - { - "tag" : "primitive" + "functionName" : "collect_timestamps_from_neighborhood", + "arrow" : { + "tag" : "arrow", + "domain" : { + "tag" : "labeledProduct", + "fields" : { + } - ] + }, + "codomain" : { + "tag" : "unlabeledProduct", + "items" : [ + { + "tag" : "array", + "type" : { + "tag" : "scalar", + "name" : "u64" + } + }, + { + "tag" : "array", + "type" : { + "tag" : "scalar", + "name" : "string" + } + } + ] + } }, - "argDefs" : [ - ], "names" : { "relay" : "-relay-", "getDataSrv" : "getDataSrv", diff --git a/fuzz-client/src/index.ts b/fuzz-client/src/index.ts index e58d210..d8ebe4d 100644 --- a/fuzz-client/src/index.ts +++ b/fuzz-client/src/index.ts @@ -15,14 +15,18 @@ */ import { setLogLevel, Fluence } from "@fluencelabs/fluence"; -import { krasnodar, Node } from "@fluencelabs/fluence-network-environment"; -import { ts_getter, ts_getter_with_timeout } from "./_aqua/timestamp_gatherer"; +import { krasnodar } from "@fluencelabs/fluence-network-environment"; +import { collect_timestamps_from_neighborhood } from "./_aqua/timestamp_gatherer"; async function main() { + if (process.env.DEBUG) { + setLogLevel("DEBUG"); + } - // create the Fluence client for the Krasnodar testnet - // and we're using peer 6 to do so - await Fluence.start({ connectTo: krasnodar[5] }); + // Connect to the address specified by environment variable RELAY or use krasnodar[5] if not set + let relay = process.env.RELAY || krasnodar[5]; + + await Fluence.start({ connectTo: relay }); console.log( "Created a fluence client with peer id %s and relay id %s", Fluence.getStatus().peerId, @@ -30,13 +34,9 @@ async function main() { ); // call the simple getter - const ts_result = await ts_getter(); - console.log("simple result: ", ts_result); - - // call the bounded getter - const ts_result_tuple = await ts_getter_with_timeout(); - console.log("raw timestamps: %s\ndead peers: %s ", ts_result_tuple[0].filter(e => e !== 0), ts_result_tuple[1]); - + const [timestamps, dead_peers] = await collect_timestamps_from_neighborhood(); + console.log("timestamps: %s", timestamps); + console.log("dead peers: %s ", dead_peers); await Fluence.stop(); }