mirror of
https://github.com/logos-storage/logos-storage-nim.git
synced 2026-01-09 00:43:13 +00:00
- Move test manager values to config object - Increase codex port separation (between api and disc ports) in an attempt to prevent overlap across tests (ie Test1: api=8000(tcp), disc=9000(udp), and Test2: api=9000(tcp), disc=10000(udp)) - print stderr when exitcode == 1 if there's < 3 lines of stdout - Logging: - Always write test manager harness chronicles logs to file, ie testmanager.chronicles.log in the root of the `integration/logs/<run name>` dir - Always write individual test stdout to file, ie `<test file name>.stdout.log` in the root of the `integration/logs/<run name>/<test file name>` dir - On error, print stderr to screen and write stderr to file. Or on failure, if stdout is sufficiently short, write stderr to screen and file in `integration/logs/<run name>/<test file name>/<test file name>.stderr.log` - When debugging, ie DebugCodexNodes == true - Removes DebugTestHarness from controlling anything other than printing chronicles output from the testmanager to the terminal - Now, if DebugCodexNodes is set to true: - Codex node (chronicles) output for multinodesuite tests is logged to file, eg `integration/logs/<run name>/<test file name>/<test name>/<role>_<idx>.log` - Codex chronicles output is logged to stdout, which also written to file (see above)
61 lines
2.0 KiB
Nim
61 lines
2.0 KiB
Nim
from pkg/libp2p import Cid, init
|
|
import ../../examples
|
|
import ../marketplacesuite
|
|
import ../nodeconfigs
|
|
import ../hardhatconfig
|
|
|
|
marketplacesuite(
|
|
name = "Bug #821 - node crashes during erasure coding", stopOnRequestFail = true
|
|
):
|
|
test "should be able to create storage request and download dataset",
|
|
NodeConfigs(
|
|
clients: CodexConfigs
|
|
.init(nodes = 1)
|
|
# .debug() # uncomment to enable console log output.debug()
|
|
# .withLogFile()
|
|
# uncomment to output log file to tests/integration/logs/<start_datetime> <suite_name>/<test_name>/<node_role>_<node_idx>.log
|
|
# .withLogTopics("node", "erasure", "marketplace")
|
|
.some,
|
|
providers: CodexConfigs.init(nodes = 0).some,
|
|
):
|
|
let
|
|
pricePerBytePerSecond = 1.u256
|
|
duration = 20.periods
|
|
collateralPerByte = 1.u256
|
|
expiry = 10.periods
|
|
data = await RandomChunker.example(blocks = 8)
|
|
client = clients()[0]
|
|
clientApi = client.client
|
|
|
|
let cid = (await clientApi.upload(data)).get
|
|
|
|
var requestId = none RequestId
|
|
proc onStorageRequested(eventResult: ?!StorageRequested) =
|
|
assert not eventResult.isErr
|
|
requestId = some (!eventResult).requestId
|
|
|
|
let subscription = await marketplace.subscribe(StorageRequested, onStorageRequested)
|
|
|
|
# client requests storage but requires multiple slots to host the content
|
|
let id = await clientApi.requestStorage(
|
|
cid,
|
|
duration = duration,
|
|
pricePerBytePerSecond = pricePerBytePerSecond,
|
|
expiry = expiry,
|
|
collateralPerByte = collateralPerByte,
|
|
nodes = 3,
|
|
tolerance = 1,
|
|
)
|
|
|
|
check eventually(requestId.isSome, timeout = expiry.int * 1000)
|
|
|
|
let
|
|
request = await marketplace.getRequest(requestId.get)
|
|
cidFromRequest = request.content.cid
|
|
downloaded = await clientApi.downloadBytes(cidFromRequest, local = true)
|
|
|
|
check downloaded.isOk
|
|
check downloaded.get.toHex == data.toHex
|
|
|
|
await subscription.unsubscribe()
|