101 lines
2.9 KiB
Nim

import std/json
import std/monotimes
import std/os
import std/strutils
import pkg/chronos
import pkg/results
import ../asynctest
import ../checktest
import ../../library/storage_thread_requests/requests/node_lifecycle_request
import ../../library/storage_thread_requests/requests/node_info_request
import ../../library/storage_thread_requests/requests/node_storage_request
import ../../library/storage_thread_requests/requests/node_debug_request
from ../../storage/storage import StorageServer
asyncchecksuite "Libstorage - request on a node that is not created":
var uncreated: StorageServer
test "rejects a start":
let res =
await NodeLifecycleRequest.createShared(START_NODE).process(addr uncreated)
check res.isErr and "not created" in res.error
test "rejects a stop":
let res = await NodeLifecycleRequest.createShared(STOP_NODE).process(addr uncreated)
check res.isErr and "not created" in res.error
test "rejects a close":
let res =
await NodeLifecycleRequest.createShared(CLOSE_NODE).process(addr uncreated)
check res.isErr and "not created" in res.error
test "rejects an info request":
let res =
await NodeInfoRequest.createShared(NodeInfoMsgType.SPR).process(addr uncreated)
check res.isErr and "not created" in res.error
test "rejects a storage list request":
let res = await NodeStorageRequest.createShared(NodeStorageMsgType.LIST).process(
addr uncreated
)
check res.isErr and "not created" in res.error
test "accepts a metrics request, it reads the process registry":
let res = await NodeInfoRequest.createShared(NodeInfoMsgType.METRICS).process(
addr uncreated
)
check res.isOk
test "accepts a node creation":
let dataDir = getTempDir() / "libstorage-requests" / $getMonoTime()
defer:
removeDir(dataDir)
var created: StorageServer
let config = $ %*{"data-dir": dataDir}
let res = await NodeLifecycleRequest
.createShared(CREATE_NODE, config.cstring)
.process(addr created)
check res.isOk
let closed =
await NodeLifecycleRequest.createShared(CLOSE_NODE).process(addr created)
check closed.isOk
test "rejects a second close, the node is dropped by the first one":
let dataDir = getTempDir() / "libstorage-requests" / $getMonoTime()
defer:
removeDir(dataDir)
var created: StorageServer
let config = $ %*{"data-dir": dataDir}
check (
await NodeLifecycleRequest.createShared(CREATE_NODE, config.cstring).process(
addr created
)
).isOk
check (await NodeLifecycleRequest.createShared(CLOSE_NODE).process(addr created)).isOk
let res = await NodeLifecycleRequest.createShared(CLOSE_NODE).process(addr created)
check res.isErr and "not created" in res.error
test "accepts a log level change":
let res = await NodeDebugRequest
.createShared(NodeDebugMsgType.LOG_LEVEL, logLevel = "WARN")
.process(addr uncreated)
check res.isOk