import std/os import std/macros import std/json import std/httpclient import ../ethertest import ./codexclient import ./nodes export ethertest export codexclient export nodes template twonodessuite*(name: string, debug1, debug2: bool | string, body) = twonodessuite(name, $debug1, $debug2, body) template twonodessuite*(name: string, debug1, debug2: string, body) = ethersuite name: var node1 {.inject, used.}: NodeProcess var node2 {.inject, used.}: NodeProcess var client1 {.inject, used.}: CodexClient var client2 {.inject, used.}: CodexClient var account1 {.inject, used.}: Address var account2 {.inject, used.}: Address let dataDir1 = getTempDir() / "Codex1" let dataDir2 = getTempDir() / "Codex2" setup: client1 = CodexClient.new("http://localhost:8080/api/codex/v1") client2 = CodexClient.new("http://localhost:8081/api/codex/v1") account1 = accounts[0] account2 = accounts[1] var node1Args = @[ "--api-port=8080", "--data-dir=" & dataDir1, "--nat=127.0.0.1", "--disc-ip=127.0.0.1", "--disc-port=8090", "--listen-addrs=/ip4/127.0.0.1/tcp/0", "--persistence", "--eth-account=" & $account1 ] if debug1 != "true" and debug1 != "false": node1Args.add("--log-level=" & debug1) node1 = startNode(node1Args, debug = debug1) node1.waitUntilStarted() let bootstrap = client1.info()["spr"].getStr() var node2Args = @[ "--api-port=8081", "--data-dir=" & dataDir2, "--nat=127.0.0.1", "--disc-ip=127.0.0.1", "--disc-port=8091", "--listen-addrs=/ip4/127.0.0.1/tcp/0", "--bootstrap-node=" & bootstrap, "--persistence", "--eth-account=" & $account2 ] if debug2 != "true" and debug2 != "false": node2Args.add("--log-level=" & debug2) node2 = startNode(node2Args, debug = debug2) node2.waitUntilStarted() teardown: client1.close() client2.close() node1.stop() node2.stop() removeDir(dataDir1) removeDir(dataDir2) body