mirror of
https://github.com/status-im/nim-codex.git
synced 2025-02-22 23:48:51 +00:00
* rework cli to accept circuit params * check circom files extension * adding new required cli changes * don't use ufcs * persistence is a command now * use `nimOldCaseObjects` switch for nim confutils compat * misc * Update cli integration tests * Fix: simulateProofFailures option is not for validator * moving circom params under `prover` command * update tests * Use circuit assets from codex-contract-eth in tests * Add "prover" cli command to tests * use correct stores * make `verifier` a cmd option * update circuit artifacts path * fix cli tests * Update integration tests to use cli commands Integration tests have been updated to use the new cli commands. The api for usage in the integration tests has also changed a bit. Proofs tests have been updated to use 5 nodes and 8 blocks of data. The remaining integration tests also need to be updated. * remove parsedCli from CodexConfig Instead, parse the cli args on the fly when needed * remove unneeded gcsafes * graceful shutdowns Where possible, do not raise assert, as other nodes in the test may already be running. Instead, raise exceptions, catch them in multinodes.nim, and attempt to do a teardown before failing the test. `abortOnError` is set to true so that `fail()` will quit immediately, after teardown has been run. * update testmarketplace to new api, with valid EC params --------- Co-authored-by: Dmitriy Ryajov <dryajov@gmail.com> Co-authored-by: Eric <5089238+emizzle@users.noreply.github.com>
90 lines
2.7 KiB
Nim
90 lines
2.7 KiB
Nim
import std/os
|
|
import std/macros
|
|
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",
|
|
"prover",
|
|
"--circom-r1cs=vendor/codex-contracts-eth/verifier/networks/hardhat/proof_main.r1cs",
|
|
"--circom-wasm=vendor/codex-contracts-eth/verifier/networks/hardhat/proof_main.wasm",
|
|
"--circom-zkey=vendor/codex-contracts-eth/verifier/networks/hardhat/proof_main.zkey",
|
|
"--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",
|
|
"prover",
|
|
"--circom-r1cs=vendor/codex-contracts-eth/verifier/networks/hardhat/proof_main.r1cs",
|
|
"--circom-wasm=vendor/codex-contracts-eth/verifier/networks/hardhat/proof_main.wasm",
|
|
"--circom-zkey=vendor/codex-contracts-eth/verifier/networks/hardhat/proof_main.zkey",
|
|
"--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
|