2025-02-06 13:24:56 +11:00
|
|
|
import ../examples
|
|
|
|
import ./multinodes
|
2023-03-08 16:04:54 +01:00
|
|
|
|
2025-02-06 13:24:56 +11:00
|
|
|
multinodesuite "Node block expiration tests":
|
|
|
|
var content = ""
|
2023-03-08 16:04:54 +01:00
|
|
|
|
|
|
|
setup:
|
2025-02-06 13:24:56 +11:00
|
|
|
content = await RandomChunker.example(blocks = 8)
|
2023-03-08 16:04:54 +01:00
|
|
|
|
2025-02-06 13:24:56 +11:00
|
|
|
test "node retains not-expired file",
|
|
|
|
NodeConfigs(
|
|
|
|
clients: CodexConfigs
|
|
|
|
.init(nodes = 1)
|
|
|
|
.withBlockTtl(0, 10)
|
|
|
|
.withBlockMaintenanceInterval(0, 1).some,
|
|
|
|
providers: CodexConfigs.none,
|
|
|
|
):
|
|
|
|
let client = clients()[0]
|
|
|
|
let clientApi = client.client
|
2023-11-20 18:14:06 -06:00
|
|
|
|
2025-02-06 13:24:56 +11:00
|
|
|
let contentId = clientApi.upload(content).get
|
2023-03-08 16:04:54 +01:00
|
|
|
|
2023-03-27 15:47:25 +02:00
|
|
|
await sleepAsync(2.seconds)
|
2023-03-08 16:04:54 +01:00
|
|
|
|
2025-02-06 13:24:56 +11:00
|
|
|
let download = clientApi.download(contentId, local = true)
|
2023-03-08 16:04:54 +01:00
|
|
|
|
2025-02-06 13:24:56 +11:00
|
|
|
check:
|
|
|
|
download.isOk
|
|
|
|
download.get == content
|
|
|
|
|
|
|
|
test "node deletes expired file",
|
|
|
|
NodeConfigs(
|
|
|
|
clients: CodexConfigs
|
|
|
|
.init(nodes = 1)
|
|
|
|
.withBlockTtl(0, 1)
|
|
|
|
.withBlockMaintenanceInterval(0, 1).some,
|
|
|
|
providers: CodexConfigs.none,
|
|
|
|
):
|
|
|
|
let client = clients()[0]
|
|
|
|
let clientApi = client.client
|
|
|
|
|
|
|
|
let contentId = clientApi.upload(content).get
|
2023-03-08 16:04:54 +01:00
|
|
|
|
2023-09-04 11:12:14 +02:00
|
|
|
await sleepAsync(3.seconds)
|
2023-03-08 16:04:54 +01:00
|
|
|
|
2025-02-06 13:24:56 +11:00
|
|
|
let download = clientApi.download(contentId, local = true)
|
2025-02-06 13:50:08 +11:00
|
|
|
|
2023-11-09 09:47:09 +01:00
|
|
|
check:
|
2025-02-06 13:24:56 +11:00
|
|
|
download.isFailure
|
|
|
|
download.error.msg == "404 Not Found"
|