mirror of
https://github.com/codex-storage/nim-codex.git
synced 2025-01-09 20:45:38 +00:00
293c676f22
* 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>
76 lines
2.0 KiB
Nim
76 lines
2.0 KiB
Nim
import pkg/questionable
|
|
import pkg/questionable/results
|
|
import pkg/confutils
|
|
import pkg/chronicles
|
|
import pkg/ethers
|
|
import pkg/libp2p
|
|
import std/os
|
|
import std/strutils
|
|
import codex/conf
|
|
import ./codexclient
|
|
import ./nodeprocess
|
|
|
|
export codexclient
|
|
export chronicles
|
|
export nodeprocess
|
|
|
|
logScope:
|
|
topics = "integration testing codex process"
|
|
|
|
type
|
|
CodexProcess* = ref object of NodeProcess
|
|
client: ?CodexClient
|
|
|
|
method workingDir(node: CodexProcess): string =
|
|
return currentSourcePath() / ".." / ".." / ".."
|
|
|
|
method executable(node: CodexProcess): string =
|
|
return "build" / "codex"
|
|
|
|
method startedOutput(node: CodexProcess): string =
|
|
return "REST service started"
|
|
|
|
method processOptions(node: CodexProcess): set[AsyncProcessOption] =
|
|
return {AsyncProcessOption.StdErrToStdOut}
|
|
|
|
method outputLineEndings(node: CodexProcess): string =
|
|
return "\n"
|
|
|
|
method onOutputLineCaptured(node: CodexProcess, line: string) =
|
|
discard
|
|
|
|
proc dataDir(node: CodexProcess): string =
|
|
let config = CodexConf.load(cmdLine = node.arguments, quitOnFailure = false)
|
|
return config.dataDir.string
|
|
|
|
proc ethAccount*(node: CodexProcess): Address =
|
|
let config = CodexConf.load(cmdLine = node.arguments, quitOnFailure = false)
|
|
without ethAccount =? config.ethAccount:
|
|
raiseAssert "eth account not set"
|
|
return Address(ethAccount)
|
|
|
|
proc apiUrl*(node: CodexProcess): string =
|
|
let config = CodexConf.load(cmdLine = node.arguments, quitOnFailure = false)
|
|
return "http://" & config.apiBindAddress & ":" & $config.apiPort & "/api/codex/v1"
|
|
|
|
proc client*(node: CodexProcess): CodexClient =
|
|
if client =? node.client:
|
|
return client
|
|
let client = CodexClient.new(node.apiUrl)
|
|
node.client = some client
|
|
return client
|
|
|
|
method stop*(node: CodexProcess) {.async.} =
|
|
logScope:
|
|
nodeName = node.name
|
|
|
|
await procCall NodeProcess(node).stop()
|
|
|
|
trace "stopping codex client"
|
|
if client =? node.client:
|
|
client.close()
|
|
node.client = none CodexClient
|
|
|
|
method removeDataDir*(node: CodexProcess) =
|
|
removeDir(node.dataDir)
|