mirror of
https://github.com/waku-org/nwaku.git
synced 2025-02-28 23:10:54 +00:00
chore(store-archive): Remove duplicated code (#2234)
* Refactor utility functions for store and archive test.
This commit is contained in:
parent
c301e880c8
commit
38e100e923
@ -5,12 +5,10 @@ import
|
||||
stew/results,
|
||||
testutils/unittests
|
||||
import
|
||||
../../waku/common/databases/db_sqlite {.all.}
|
||||
../../waku/common/databases/db_sqlite {.all.},
|
||||
../waku_archive/archive_utils
|
||||
|
||||
|
||||
proc newTestDatabase(): SqliteDatabase =
|
||||
SqliteDatabase.new(":memory:").tryGet()
|
||||
|
||||
template sourceDir: string = currentSourcePath.rsplit(DirSep, 1)[0]
|
||||
|
||||
|
||||
@ -18,7 +16,7 @@ suite "SQLite - migrations":
|
||||
|
||||
test "set and get user version":
|
||||
## Given
|
||||
let database = newTestDatabase()
|
||||
let database = newSqliteDatabase()
|
||||
|
||||
## When
|
||||
let setRes = database.setUserVersion(5)
|
||||
|
@ -34,8 +34,6 @@ import
|
||||
testutils
|
||||
]
|
||||
|
||||
let FUTURE_TIMEOUT = 1.seconds
|
||||
|
||||
suite "Waku Filter - End to End":
|
||||
var client {.threadvar.}: WakuNode
|
||||
var clientPeerId {.threadvar.}: PeerId
|
||||
|
56
tests/waku_archive/archive_utils.nim
Normal file
56
tests/waku_archive/archive_utils.nim
Normal file
@ -0,0 +1,56 @@
|
||||
{.used.}
|
||||
|
||||
import
|
||||
std/options,
|
||||
chronos,
|
||||
chronicles,
|
||||
libp2p/crypto/crypto
|
||||
|
||||
import
|
||||
../../../waku/[
|
||||
node/peer_manager,
|
||||
waku_core,
|
||||
waku_archive,
|
||||
waku_archive/common,
|
||||
waku_archive/driver/sqlite_driver,
|
||||
common/databases/db_sqlite,
|
||||
waku_store
|
||||
],
|
||||
../testlib/[
|
||||
common,
|
||||
wakucore
|
||||
]
|
||||
|
||||
|
||||
proc newSqliteDatabase*(): SqliteDatabase =
|
||||
SqliteDatabase.new(":memory:").tryGet()
|
||||
|
||||
|
||||
proc newSqliteArchiveDriver*(): ArchiveDriver =
|
||||
let database = newSqliteDatabase()
|
||||
SqliteDriver.new(database).tryGet()
|
||||
|
||||
|
||||
proc newWakuArchive*(driver: ArchiveDriver): WakuArchive =
|
||||
WakuArchive.new(driver).get()
|
||||
|
||||
|
||||
proc computeArchiveCursor*(pubsubTopic: PubsubTopic, message: WakuMessage): ArchiveCursor =
|
||||
ArchiveCursor(
|
||||
pubsubTopic: pubsubTopic,
|
||||
senderTime: message.timestamp,
|
||||
storeTime: message.timestamp,
|
||||
digest: waku_archive.computeDigest(message)
|
||||
)
|
||||
|
||||
|
||||
proc newArchiveDriverWithMessages*(pubsubTopic: PubSubTopic, msgList: seq[WakuMessage]): ArchiveDriver =
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
for msg in msgList:
|
||||
let
|
||||
msgDigest = waku_archive.computeDigest(msg)
|
||||
msgHash = computeMessageHash(pubsubTopic, msg)
|
||||
discard waitFor driver.put(pubsubTopic, msg, msgDigest, msgHash, msg.timestamp)
|
||||
|
||||
return driver
|
@ -9,23 +9,16 @@ import
|
||||
../../../waku/waku_archive,
|
||||
../../../waku/waku_archive/driver/sqlite_driver,
|
||||
../../../waku/waku_core,
|
||||
../waku_archive/archive_utils,
|
||||
../testlib/common,
|
||||
../testlib/wakucore
|
||||
|
||||
|
||||
proc newTestDatabase(): SqliteDatabase =
|
||||
SqliteDatabase.new(":memory:").tryGet()
|
||||
|
||||
proc newTestSqliteDriver(): ArchiveDriver =
|
||||
let db = newTestDatabase()
|
||||
SqliteDriver.new(db).tryGet()
|
||||
|
||||
|
||||
suite "SQLite driver":
|
||||
|
||||
test "init driver and database":
|
||||
## Given
|
||||
let database = newTestDatabase()
|
||||
let database = newSqliteDatabase()
|
||||
|
||||
## When
|
||||
let driverRes = SqliteDriver.new(database)
|
||||
@ -45,7 +38,7 @@ suite "SQLite driver":
|
||||
## Given
|
||||
const contentTopic = "test-content-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let msg = fakeWakuMessage(contentTopic=contentTopic)
|
||||
|
||||
|
@ -5,6 +5,7 @@ import
|
||||
testutils/unittests,
|
||||
chronos,
|
||||
chronicles
|
||||
|
||||
import
|
||||
../../../waku/common/databases/db_sqlite,
|
||||
../../../waku/waku_archive,
|
||||
@ -12,7 +13,9 @@ import
|
||||
../../../waku/waku_core,
|
||||
../../../waku/waku_core/message/digest,
|
||||
../testlib/common,
|
||||
../testlib/wakucore
|
||||
../testlib/wakucore,
|
||||
../waku_archive/archive_utils
|
||||
|
||||
|
||||
logScope:
|
||||
topics = "test archive _driver"
|
||||
@ -22,29 +25,13 @@ logScope:
|
||||
common.randomize()
|
||||
|
||||
|
||||
proc newTestDatabase(): SqliteDatabase =
|
||||
SqliteDatabase.new(":memory:").tryGet()
|
||||
|
||||
proc newTestSqliteDriver(): ArchiveDriver =
|
||||
let db = newTestDatabase()
|
||||
SqliteDriver.new(db).tryGet()
|
||||
|
||||
proc computeTestCursor(pubsubTopic: PubsubTopic, message: WakuMessage): ArchiveCursor =
|
||||
ArchiveCursor(
|
||||
pubsubTopic: pubsubTopic,
|
||||
senderTime: message.timestamp,
|
||||
storeTime: message.timestamp,
|
||||
digest: computeDigest(message)
|
||||
)
|
||||
|
||||
|
||||
suite "SQLite driver - query by content topic":
|
||||
|
||||
asyncTest "no content topic":
|
||||
## Given
|
||||
const contentTopic = "test-content-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let expected = @[
|
||||
fakeWakuMessage(@[byte 0], contentTopic=DefaultContentTopic, ts=ts(00)),
|
||||
@ -86,7 +73,7 @@ suite "SQLite driver - query by content topic":
|
||||
## Given
|
||||
const contentTopic = "test-content-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let expected = @[
|
||||
fakeWakuMessage(@[byte 0], ts=ts(00)),
|
||||
@ -130,7 +117,7 @@ suite "SQLite driver - query by content topic":
|
||||
## Given
|
||||
const contentTopic = "test-content-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let expected = @[
|
||||
fakeWakuMessage(@[byte 0], ts=ts(00)),
|
||||
@ -176,7 +163,7 @@ suite "SQLite driver - query by content topic":
|
||||
const contentTopic2 = "test-content-topic-2"
|
||||
const contentTopic3 = "test-content-topic-3"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let expected = @[
|
||||
fakeWakuMessage(@[byte 0], ts=ts(00)),
|
||||
@ -220,7 +207,7 @@ suite "SQLite driver - query by content topic":
|
||||
## Given
|
||||
const contentTopic = "test-content-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let expected = @[
|
||||
fakeWakuMessage(@[byte 0], contentTopic=DefaultContentTopic, ts=ts(00)),
|
||||
@ -259,7 +246,7 @@ suite "SQLite driver - query by content topic":
|
||||
## Given
|
||||
const pageSize: uint = 50
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
for t in 0..<40:
|
||||
let msg = fakeWakuMessage(@[byte t], DefaultContentTopic, ts=ts(t))
|
||||
@ -291,7 +278,7 @@ suite "SQLite driver - query by pubsub topic":
|
||||
const contentTopic = "test-content-topic"
|
||||
const pubsubTopic = "test-pubsub-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let expected = @[
|
||||
(DefaultPubsubTopic, fakeWakuMessage(@[byte 0], ts=ts(00))),
|
||||
@ -337,7 +324,7 @@ suite "SQLite driver - query by pubsub topic":
|
||||
const contentTopic = "test-content-topic"
|
||||
const pubsubTopic = "test-pubsub-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let expected = @[
|
||||
(DefaultPubsubTopic, fakeWakuMessage(@[byte 0], ts=ts(00))),
|
||||
@ -382,7 +369,7 @@ suite "SQLite driver - query by pubsub topic":
|
||||
const contentTopic = "test-content-topic"
|
||||
const pubsubTopic = "test-pubsub-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let expected = @[
|
||||
(DefaultPubsubTopic, fakeWakuMessage(@[byte 0], ts=ts(00))),
|
||||
@ -432,7 +419,7 @@ suite "SQLite driver - query by cursor":
|
||||
## Given
|
||||
const contentTopic = "test-content-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let expected = @[
|
||||
fakeWakuMessage(@[byte 0], ts=ts(00)),
|
||||
@ -454,7 +441,7 @@ suite "SQLite driver - query by cursor":
|
||||
for msg in messages:
|
||||
require (await driver.put(DefaultPubsubTopic, msg, computeDigest(msg), computeMessageHash(DefaultPubsubTopic, msg), msg.timestamp)).isOk()
|
||||
|
||||
let cursor = computeTestCursor(DefaultPubsubTopic, expected[4])
|
||||
let cursor = computeArchiveCursor(DefaultPubsubTopic, expected[4])
|
||||
|
||||
## When
|
||||
let res = await driver.getMessages(
|
||||
@ -478,7 +465,7 @@ suite "SQLite driver - query by cursor":
|
||||
## Given
|
||||
const contentTopic = "test-content-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let expected = @[
|
||||
fakeWakuMessage(@[byte 0], ts=ts(00)),
|
||||
@ -500,7 +487,7 @@ suite "SQLite driver - query by cursor":
|
||||
for msg in messages:
|
||||
require (await driver.put(DefaultPubsubTopic, msg, computeDigest(msg), computeMessageHash(DefaultPubsubTopic, msg), msg.timestamp)).isOk()
|
||||
|
||||
let cursor = computeTestCursor(DefaultPubsubTopic, expected[4])
|
||||
let cursor = computeArchiveCursor(DefaultPubsubTopic, expected[4])
|
||||
|
||||
## When
|
||||
let res = await driver.getMessages(
|
||||
@ -524,7 +511,7 @@ suite "SQLite driver - query by cursor":
|
||||
## Given
|
||||
const contentTopic = "test-content-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let expected = @[
|
||||
fakeWakuMessage(@[byte 0], ts=ts(00)),
|
||||
@ -544,7 +531,7 @@ suite "SQLite driver - query by cursor":
|
||||
for msg in messages:
|
||||
require (await driver.put(DefaultPubsubTopic, msg, computeDigest(msg), computeMessageHash(DefaultPubsubTopic, msg), msg.timestamp)).isOk()
|
||||
|
||||
let cursor = computeTestCursor(DefaultPubsubTopic, expected[4])
|
||||
let cursor = computeArchiveCursor(DefaultPubsubTopic, expected[4])
|
||||
|
||||
## When
|
||||
let res = await driver.getMessages(
|
||||
@ -569,7 +556,7 @@ suite "SQLite driver - query by cursor":
|
||||
## Given
|
||||
const contentTopic = "test-content-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let expected = @[
|
||||
fakeWakuMessage(@[byte 0], ts=ts(00)),
|
||||
@ -589,7 +576,7 @@ suite "SQLite driver - query by cursor":
|
||||
for msg in messages:
|
||||
require (await driver.put(DefaultPubsubTopic, msg, computeDigest(msg), computeMessageHash(DefaultPubsubTopic, msg), msg.timestamp)).isOk()
|
||||
|
||||
let cursor = computeTestCursor(DefaultPubsubTopic, expected[6])
|
||||
let cursor = computeArchiveCursor(DefaultPubsubTopic, expected[6])
|
||||
|
||||
## When
|
||||
let res = await driver.getMessages(
|
||||
@ -615,7 +602,7 @@ suite "SQLite driver - query by cursor":
|
||||
const contentTopic = "test-content-topic"
|
||||
const pubsubTopic = "test-pubsub-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let timeOrigin = now()
|
||||
let expected = @[
|
||||
@ -641,7 +628,7 @@ suite "SQLite driver - query by cursor":
|
||||
let (topic, msg) = row
|
||||
require (await driver.put(topic, msg, computeDigest(msg), computeMessageHash(topic, msg), msg.timestamp)).isOk()
|
||||
|
||||
let cursor = computeTestCursor(expected[5][0], expected[5][1])
|
||||
let cursor = computeArchiveCursor(expected[5][0], expected[5][1])
|
||||
|
||||
## When
|
||||
let res = await driver.getMessages(
|
||||
@ -668,7 +655,7 @@ suite "SQLite driver - query by cursor":
|
||||
const contentTopic = "test-content-topic"
|
||||
const pubsubTopic = "test-pubsub-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let timeOrigin = now()
|
||||
let expected = @[
|
||||
@ -694,7 +681,7 @@ suite "SQLite driver - query by cursor":
|
||||
let (topic, msg) = row
|
||||
require (await driver.put(topic, msg, computeDigest(msg), computeMessageHash(topic, msg), msg.timestamp)).isOk()
|
||||
|
||||
let cursor = computeTestCursor(expected[6][0], expected[6][1])
|
||||
let cursor = computeArchiveCursor(expected[6][0], expected[6][1])
|
||||
|
||||
## When
|
||||
let res = await driver.getMessages(
|
||||
@ -723,7 +710,7 @@ suite "SQLite driver - query by time range":
|
||||
## Given
|
||||
const contentTopic = "test-content-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let timeOrigin = now()
|
||||
let expected = @[
|
||||
@ -766,7 +753,7 @@ suite "SQLite driver - query by time range":
|
||||
## Given
|
||||
const contentTopic = "test-content-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let timeOrigin = now()
|
||||
let expected = @[
|
||||
@ -810,7 +797,7 @@ suite "SQLite driver - query by time range":
|
||||
const contentTopic = "test-content-topic"
|
||||
const pubsubTopic = "test-pubsub-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let timeOrigin = now()
|
||||
let expected = @[
|
||||
@ -860,7 +847,7 @@ suite "SQLite driver - query by time range":
|
||||
## Given
|
||||
const contentTopic = "test-content-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let timeOrigin = now()
|
||||
let expected = @[
|
||||
@ -905,7 +892,7 @@ suite "SQLite driver - query by time range":
|
||||
## Given
|
||||
const contentTopic = "test-content-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let timeOrigin = now()
|
||||
let expected = @[
|
||||
@ -948,7 +935,7 @@ suite "SQLite driver - query by time range":
|
||||
## Given
|
||||
const contentTopic = "test-content-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let timeOrigin = now()
|
||||
let expected = @[
|
||||
@ -994,7 +981,7 @@ suite "SQLite driver - query by time range":
|
||||
## Given
|
||||
const contentTopic = "test-content-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let timeOrigin = now()
|
||||
let expected = @[
|
||||
@ -1018,7 +1005,7 @@ suite "SQLite driver - query by time range":
|
||||
for msg in messages:
|
||||
require (await driver.put(DefaultPubsubTopic, msg, computeDigest(msg), computeMessageHash(DefaultPubsubTopic, msg), msg.timestamp)).isOk()
|
||||
|
||||
let cursor = computeTestCursor(DefaultPubsubTopic, expected[3])
|
||||
let cursor = computeArchiveCursor(DefaultPubsubTopic, expected[3])
|
||||
|
||||
## When
|
||||
let res = await driver.getMessages(
|
||||
@ -1043,7 +1030,7 @@ suite "SQLite driver - query by time range":
|
||||
## Given
|
||||
const contentTopic = "test-content-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let timeOrigin = now()
|
||||
let expected = @[
|
||||
@ -1067,7 +1054,7 @@ suite "SQLite driver - query by time range":
|
||||
for msg in messages:
|
||||
require (await driver.put(DefaultPubsubTopic, msg, computeDigest(msg), computeMessageHash(DefaultPubsubTopic, msg), msg.timestamp)).isOk()
|
||||
|
||||
let cursor = computeTestCursor(DefaultPubsubTopic, expected[6])
|
||||
let cursor = computeArchiveCursor(DefaultPubsubTopic, expected[6])
|
||||
|
||||
## When
|
||||
let res = await driver.getMessages(
|
||||
@ -1093,7 +1080,7 @@ suite "SQLite driver - query by time range":
|
||||
const contentTopic = "test-content-topic"
|
||||
const pubsubTopic = "test-pubsub-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let timeOrigin = now()
|
||||
let expected = @[
|
||||
@ -1119,7 +1106,7 @@ suite "SQLite driver - query by time range":
|
||||
let (topic, msg) = row
|
||||
require (await driver.put(topic, msg, computeDigest(msg), computeMessageHash(topic, msg), msg.timestamp)).isOk()
|
||||
|
||||
let cursor = computeTestCursor(DefaultPubsubTopic, expected[1][1])
|
||||
let cursor = computeArchiveCursor(DefaultPubsubTopic, expected[1][1])
|
||||
|
||||
## When
|
||||
let res = await driver.getMessages(
|
||||
@ -1148,7 +1135,7 @@ suite "SQLite driver - query by time range":
|
||||
const contentTopic = "test-content-topic"
|
||||
const pubsubTopic = "test-pubsub-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let timeOrigin = now()
|
||||
let expected = @[
|
||||
@ -1174,7 +1161,7 @@ suite "SQLite driver - query by time range":
|
||||
let (topic, msg) = row
|
||||
require (await driver.put(topic, msg, computeDigest(msg), computeMessageHash(topic, msg), msg.timestamp)).isOk()
|
||||
|
||||
let cursor = computeTestCursor(expected[7][0], expected[7][1])
|
||||
let cursor = computeArchiveCursor(expected[7][0], expected[7][1])
|
||||
|
||||
## When
|
||||
let res = await driver.getMessages(
|
||||
@ -1203,7 +1190,7 @@ suite "SQLite driver - query by time range":
|
||||
const contentTopic = "test-content-topic"
|
||||
const pubsubTopic = "test-pubsub-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let timeOrigin = now()
|
||||
let expected = @[
|
||||
@ -1229,7 +1216,7 @@ suite "SQLite driver - query by time range":
|
||||
let (topic, msg) = row
|
||||
require (await driver.put(topic, msg, computeDigest(msg), computeMessageHash(topic, msg), msg.timestamp)).isOk()
|
||||
|
||||
let cursor = computeTestCursor(expected[1][0], expected[1][1])
|
||||
let cursor = computeArchiveCursor(expected[1][0], expected[1][1])
|
||||
|
||||
## When
|
||||
let res = await driver.getMessages(
|
||||
@ -1259,7 +1246,7 @@ suite "SQLite driver - query by time range":
|
||||
const contentTopic = "test-content-topic"
|
||||
const pubsubTopic = "test-pubsub-topic"
|
||||
|
||||
let driver = newTestSqliteDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let timeOrigin = now()
|
||||
let expected = @[
|
||||
@ -1285,7 +1272,7 @@ suite "SQLite driver - query by time range":
|
||||
let (topic, msg) = row
|
||||
require (await driver.put(topic, msg, computeDigest(msg), computeMessageHash(topic, msg), msg.timestamp)).isOk()
|
||||
|
||||
let cursor = computeTestCursor(expected[1][0], expected[1][1])
|
||||
let cursor = computeArchiveCursor(expected[1][0], expected[1][1])
|
||||
|
||||
## When
|
||||
let res = await driver.getMessages(
|
||||
|
@ -14,18 +14,11 @@ import
|
||||
../../../waku/waku_archive/retention_policy,
|
||||
../../../waku/waku_archive/retention_policy/retention_policy_capacity,
|
||||
../../../waku/waku_archive/retention_policy/retention_policy_size,
|
||||
../waku_archive/archive_utils,
|
||||
../testlib/common,
|
||||
../testlib/wakucore
|
||||
|
||||
|
||||
proc newTestDatabase(): SqliteDatabase =
|
||||
SqliteDatabase.new(":memory:").tryGet()
|
||||
|
||||
proc newTestArchiveDriver(): ArchiveDriver =
|
||||
let db = newTestDatabase()
|
||||
SqliteDriver.new(db).tryGet()
|
||||
|
||||
|
||||
suite "Waku Archive - Retention policy":
|
||||
|
||||
test "capacity retention policy - windowed message deletion":
|
||||
@ -34,7 +27,7 @@ suite "Waku Archive - Retention policy":
|
||||
capacity = 100
|
||||
excess = 60
|
||||
|
||||
let driver = newTestArchiveDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let retentionPolicy: RetentionPolicy = CapacityRetentionPolicy.init(capacity=capacity)
|
||||
var putFutures = newSeq[Future[ArchiveDriverResult[void]]]()
|
||||
@ -66,7 +59,7 @@ suite "Waku Archive - Retention policy":
|
||||
sizeLimit:int64 = 52428
|
||||
excess = 325
|
||||
|
||||
let driver = newTestArchiveDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let retentionPolicy: RetentionPolicy = SizeRetentionPolicy.init(size=sizeLimit)
|
||||
var putFutures = newSeq[Future[ArchiveDriverResult[void]]]()
|
||||
@ -121,7 +114,7 @@ suite "Waku Archive - Retention policy":
|
||||
const contentTopic = "test-content-topic"
|
||||
|
||||
let
|
||||
driver = newTestArchiveDriver()
|
||||
driver = newSqliteArchiveDriver()
|
||||
retentionPolicy: RetentionPolicy = CapacityRetentionPolicy.init(capacity=capacity)
|
||||
|
||||
let messages = @[
|
||||
|
@ -6,42 +6,24 @@ import
|
||||
chronicles,
|
||||
chronos,
|
||||
libp2p/crypto/crypto
|
||||
|
||||
import
|
||||
../../../waku/common/databases/db_sqlite,
|
||||
../../../waku/waku_core,
|
||||
../../../waku/waku_core/message/digest,
|
||||
../../../waku/waku_archive/driver/sqlite_driver,
|
||||
../../../waku/waku_archive,
|
||||
../waku_archive/archive_utils,
|
||||
../testlib/common,
|
||||
../testlib/wakucore
|
||||
|
||||
|
||||
proc newTestDatabase(): SqliteDatabase =
|
||||
SqliteDatabase.new(":memory:").tryGet()
|
||||
|
||||
proc newTestArchiveDriver(): ArchiveDriver =
|
||||
let db = newTestDatabase()
|
||||
SqliteDriver.new(db).tryGet()
|
||||
|
||||
proc newTestWakuArchive(driver: ArchiveDriver): WakuArchive =
|
||||
WakuArchive.new(driver).get()
|
||||
|
||||
proc computeTestCursor(pubsubTopic: PubsubTopic, message: WakuMessage): ArchiveCursor =
|
||||
ArchiveCursor(
|
||||
pubsubTopic: pubsubTopic,
|
||||
senderTime: message.timestamp,
|
||||
storeTime: message.timestamp,
|
||||
digest: computeDigest(message)
|
||||
)
|
||||
|
||||
|
||||
|
||||
suite "Waku Archive - message handling":
|
||||
|
||||
test "it should driver a valid and non-ephemeral message":
|
||||
## Setup
|
||||
let driver = newTestArchiveDriver()
|
||||
let archive = newTestWakuArchive(driver)
|
||||
let driver = newSqliteArchiveDriver()
|
||||
let archive = newWakuArchive(driver)
|
||||
|
||||
## Given
|
||||
let validSenderTime = now()
|
||||
@ -56,8 +38,8 @@ suite "Waku Archive - message handling":
|
||||
|
||||
test "it should not driver an ephemeral message":
|
||||
## Setup
|
||||
let driver = newTestArchiveDriver()
|
||||
let archive = newTestWakuArchive(driver)
|
||||
let driver = newSqliteArchiveDriver()
|
||||
let archive = newWakuArchive(driver)
|
||||
|
||||
## Given
|
||||
let msgList = @[
|
||||
@ -78,8 +60,8 @@ suite "Waku Archive - message handling":
|
||||
|
||||
test "it should driver a message with no sender timestamp":
|
||||
## Setup
|
||||
let driver = newTestArchiveDriver()
|
||||
let archive = newTestWakuArchive(driver)
|
||||
let driver = newSqliteArchiveDriver()
|
||||
let archive = newWakuArchive(driver)
|
||||
|
||||
## Given
|
||||
let invalidSenderTime = 0
|
||||
@ -94,8 +76,8 @@ suite "Waku Archive - message handling":
|
||||
|
||||
test "it should not driver a message with a sender time variance greater than max time variance (future)":
|
||||
## Setup
|
||||
let driver = newTestArchiveDriver()
|
||||
let archive = newTestWakuArchive(driver)
|
||||
let driver = newSqliteArchiveDriver()
|
||||
let archive = newWakuArchive(driver)
|
||||
|
||||
## Given
|
||||
let
|
||||
@ -113,8 +95,8 @@ suite "Waku Archive - message handling":
|
||||
|
||||
test "it should not driver a message with a sender time variance greater than max time variance (past)":
|
||||
## Setup
|
||||
let driver = newTestArchiveDriver()
|
||||
let archive = newTestWakuArchive(driver)
|
||||
let driver = newSqliteArchiveDriver()
|
||||
let archive = newWakuArchive(driver)
|
||||
|
||||
## Given
|
||||
let
|
||||
@ -149,8 +131,8 @@ procSuite "Waku Archive - find messages":
|
||||
|
||||
let archiveA = block:
|
||||
let
|
||||
driver = newTestArchiveDriver()
|
||||
archive = newTestWakuArchive(driver)
|
||||
driver = newSqliteArchiveDriver()
|
||||
archive = newWakuArchive(driver)
|
||||
|
||||
for msg in msgListA:
|
||||
require (waitFor driver.put(DefaultPubsubTopic, msg, computeDigest(msg), computeMessageHash(DefaultPubsubTopic, msg), msg.timestamp)).isOk()
|
||||
@ -160,8 +142,8 @@ procSuite "Waku Archive - find messages":
|
||||
test "handle query":
|
||||
## Setup
|
||||
let
|
||||
driver = newTestArchiveDriver()
|
||||
archive = newTestWakuArchive(driver)
|
||||
driver = newSqliteArchiveDriver()
|
||||
archive = newWakuArchive(driver)
|
||||
|
||||
let topic = ContentTopic("1")
|
||||
let
|
||||
@ -189,8 +171,8 @@ procSuite "Waku Archive - find messages":
|
||||
test "handle query with multiple content filters":
|
||||
## Setup
|
||||
let
|
||||
driver = newTestArchiveDriver()
|
||||
archive = newTestWakuArchive(driver)
|
||||
driver = newSqliteArchiveDriver()
|
||||
archive = newWakuArchive(driver)
|
||||
|
||||
let
|
||||
topic1 = ContentTopic("1")
|
||||
@ -225,8 +207,8 @@ procSuite "Waku Archive - find messages":
|
||||
test "handle query with more than 10 content filters":
|
||||
## Setup
|
||||
let
|
||||
driver = newTestArchiveDriver()
|
||||
archive = newTestWakuArchive(driver)
|
||||
driver = newSqliteArchiveDriver()
|
||||
archive = newWakuArchive(driver)
|
||||
|
||||
let queryTopics = toSeq(1..15).mapIt(ContentTopic($it))
|
||||
|
||||
@ -248,8 +230,8 @@ procSuite "Waku Archive - find messages":
|
||||
test "handle query with pubsub topic filter":
|
||||
## Setup
|
||||
let
|
||||
driver = newTestArchiveDriver()
|
||||
archive = newTestWakuArchive(driver)
|
||||
driver = newSqliteArchiveDriver()
|
||||
archive = newWakuArchive(driver)
|
||||
|
||||
let
|
||||
pubsubTopic1 = "queried-topic"
|
||||
@ -291,8 +273,8 @@ procSuite "Waku Archive - find messages":
|
||||
test "handle query with pubsub topic filter - no match":
|
||||
## Setup
|
||||
let
|
||||
driver = newTestArchiveDriver()
|
||||
archive = newTestWakuArchive(driver)
|
||||
driver = newSqliteArchiveDriver()
|
||||
archive = newWakuArchive(driver)
|
||||
|
||||
let
|
||||
pubsubtopic1 = "queried-topic"
|
||||
@ -324,8 +306,8 @@ procSuite "Waku Archive - find messages":
|
||||
test "handle query with pubsub topic filter - match the entire stored messages":
|
||||
## Setup
|
||||
let
|
||||
driver = newTestArchiveDriver()
|
||||
archive = newTestWakuArchive(driver)
|
||||
driver = newSqliteArchiveDriver()
|
||||
archive = newWakuArchive(driver)
|
||||
|
||||
let pubsubTopic = "queried-topic"
|
||||
|
||||
@ -382,8 +364,8 @@ procSuite "Waku Archive - find messages":
|
||||
|
||||
## Then
|
||||
check:
|
||||
cursors[0] == some(computeTestCursor(DefaultPubsubTopic, msgListA[3]))
|
||||
cursors[1] == some(computeTestCursor(DefaultPubsubTopic, msgListA[7]))
|
||||
cursors[0] == some(computeArchiveCursor(DefaultPubsubTopic, msgListA[3]))
|
||||
cursors[1] == some(computeArchiveCursor(DefaultPubsubTopic, msgListA[7]))
|
||||
cursors[2] == none(ArchiveCursor)
|
||||
|
||||
check:
|
||||
@ -418,8 +400,8 @@ procSuite "Waku Archive - find messages":
|
||||
|
||||
## Then
|
||||
check:
|
||||
cursors[0] == some(computeTestCursor(DefaultPubsubTopic, msgListA[6]))
|
||||
cursors[1] == some(computeTestCursor(DefaultPubsubTopic, msgListA[2]))
|
||||
cursors[0] == some(computeArchiveCursor(DefaultPubsubTopic, msgListA[6]))
|
||||
cursors[1] == some(computeArchiveCursor(DefaultPubsubTopic, msgListA[2]))
|
||||
cursors[2] == none(ArchiveCursor)
|
||||
|
||||
check:
|
||||
@ -430,8 +412,8 @@ procSuite "Waku Archive - find messages":
|
||||
test "handle query with no paging info - auto-pagination":
|
||||
## Setup
|
||||
let
|
||||
driver = newTestArchiveDriver()
|
||||
archive = newTestWakuArchive(driver)
|
||||
driver = newSqliteArchiveDriver()
|
||||
archive = newWakuArchive(driver)
|
||||
|
||||
let msgList = @[
|
||||
fakeWakuMessage(@[byte 0], contentTopic=ContentTopic("2")),
|
||||
|
@ -10,7 +10,7 @@ import
|
||||
],
|
||||
testutils/unittests,
|
||||
stew/[
|
||||
results,
|
||||
results,
|
||||
byteutils
|
||||
],
|
||||
chronos,
|
||||
|
@ -1011,7 +1011,6 @@ suite "Waku Relay":
|
||||
msg5 = fakeWakuMessage(contentTopic=contentTopic, payload=getByteSequence(1023*1024 + 934)) # 1MiB - 90B -> Max Size (Exclusive Limit)
|
||||
msg6 = fakeWakuMessage(contentTopic=contentTopic, payload=getByteSequence(1024*1024)) # 1MiB -> Out of Max Size
|
||||
|
||||
|
||||
# When sending the 1KiB message
|
||||
handlerFuture = newPushHandlerFuture()
|
||||
otherHandlerFuture = newPushHandlerFuture()
|
||||
|
42
tests/waku_store/store_utils.nim
Normal file
42
tests/waku_store/store_utils.nim
Normal file
@ -0,0 +1,42 @@
|
||||
{.used.}
|
||||
|
||||
import
|
||||
std/options,
|
||||
chronos,
|
||||
chronicles,
|
||||
libp2p/crypto/crypto
|
||||
|
||||
import
|
||||
../../../waku/[
|
||||
node/peer_manager,
|
||||
waku_core,
|
||||
waku_store,
|
||||
waku_store/client,
|
||||
],
|
||||
../testlib/[
|
||||
common,
|
||||
wakucore
|
||||
]
|
||||
|
||||
proc newTestWakuStore*(switch: Switch, handler: HistoryQueryHandler): Future[WakuStore] {.async.} =
|
||||
let
|
||||
peerManager = PeerManager.new(switch)
|
||||
proto = WakuStore.new(peerManager, rng, handler)
|
||||
|
||||
await proto.start()
|
||||
switch.mount(proto)
|
||||
|
||||
return proto
|
||||
|
||||
proc newTestWakuStoreClient*(switch: Switch): WakuStoreClient =
|
||||
let peerManager = PeerManager.new(switch)
|
||||
WakuStoreClient.new(peerManager, rng)
|
||||
|
||||
|
||||
proc computeHistoryCursor*(pubsubTopic: PubsubTopic, message: WakuMessage): HistoryCursor =
|
||||
HistoryCursor(
|
||||
pubsubTopic: pubsubTopic,
|
||||
senderTime: message.timestamp,
|
||||
storeTime: message.timestamp,
|
||||
digest: waku_store.computeDigest(message)
|
||||
)
|
@ -14,34 +14,12 @@ import
|
||||
../../waku/waku_core,
|
||||
../../waku/waku_core/message/digest,
|
||||
../../waku/waku_store,
|
||||
../waku_store/store_utils,
|
||||
../waku_archive/archive_utils,
|
||||
./testlib/common,
|
||||
./testlib/switch
|
||||
|
||||
|
||||
proc newTestDatabase(): SqliteDatabase =
|
||||
SqliteDatabase.new("memory:").tryGet()
|
||||
|
||||
proc newTestArchiveDriver(): ArchiveDriverResult =
|
||||
let database = SqliteDatabase.new(":memory:").tryGet()
|
||||
SqliteDriver.init(database).tryGet()
|
||||
|
||||
|
||||
proc newTestWakuStore(switch: Switch, store: MessageStore = nil): Future[WakuStore] {.async.} =
|
||||
let
|
||||
peerManager = PeerManager.new(switch)
|
||||
proto = WakuStore.init(peerManager, rng, store)
|
||||
|
||||
await proto.start()
|
||||
switch.mount(proto)
|
||||
|
||||
return proto
|
||||
|
||||
proc newTestWakuStoreClient(switch: Switch, store: MessageStore = nil): WakuStoreClient =
|
||||
let
|
||||
peerManager = PeerManager.new(switch)
|
||||
WakuStoreClient.new(peerManager, rng, store)
|
||||
|
||||
|
||||
procSuite "Waku Store - resume store":
|
||||
## Fixtures
|
||||
let storeA = block:
|
||||
@ -222,7 +200,7 @@ suite "WakuNode - waku store":
|
||||
|
||||
await allFutures(client.start(), server.start())
|
||||
|
||||
let driver = newTestArchiveDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
server.mountArchive(some(driver), none(MessageValidator), none(RetentionPolicy))
|
||||
await server.mountStore()
|
||||
|
||||
|
@ -6,27 +6,19 @@ import
|
||||
chronos,
|
||||
chronicles,
|
||||
libp2p/crypto/crypto
|
||||
|
||||
import
|
||||
../../../waku/node/peer_manager,
|
||||
../../../waku/waku_core,
|
||||
../../../waku/waku_store,
|
||||
../../../waku/waku_store/client,
|
||||
../testlib/common,
|
||||
../testlib/wakucore
|
||||
|
||||
proc newTestWakuStore(switch: Switch, handler: HistoryQueryHandler): Future[WakuStore] {.async.} =
|
||||
let
|
||||
peerManager = PeerManager.new(switch)
|
||||
proto = WakuStore.new(peerManager, rng, handler)
|
||||
|
||||
await proto.start()
|
||||
switch.mount(proto)
|
||||
|
||||
return proto
|
||||
|
||||
proc newTestWakuStoreClient(switch: Switch): WakuStoreClient =
|
||||
let peerManager = PeerManager.new(switch)
|
||||
WakuStoreClient.new(peerManager, rng)
|
||||
../../../waku/[
|
||||
node/peer_manager,
|
||||
waku_core,
|
||||
waku_store,
|
||||
waku_store/client,
|
||||
],
|
||||
../testlib/[
|
||||
common,
|
||||
wakucore
|
||||
],
|
||||
./store_utils
|
||||
|
||||
|
||||
suite "Waku Store - query handler":
|
||||
|
@ -22,21 +22,12 @@ import
|
||||
../../../waku/waku_store,
|
||||
../../../waku/waku_filter,
|
||||
../../../waku/waku_node,
|
||||
../waku_store/store_utils,
|
||||
../waku_archive/archive_utils,
|
||||
../testlib/common,
|
||||
../testlib/wakucore,
|
||||
../testlib/wakunode
|
||||
|
||||
proc newTestArchiveDriver(): ArchiveDriver =
|
||||
let database = SqliteDatabase.new(":memory:").tryGet()
|
||||
SqliteDriver.new(database).tryGet()
|
||||
|
||||
proc computeTestCursor(pubsubTopic: PubsubTopic, message: WakuMessage): HistoryCursor =
|
||||
HistoryCursor(
|
||||
pubsubTopic: pubsubTopic,
|
||||
senderTime: message.timestamp,
|
||||
storeTime: message.timestamp,
|
||||
digest: waku_archive.computeDigest(message)
|
||||
)
|
||||
|
||||
procSuite "WakuNode - Store":
|
||||
## Fixtures
|
||||
@ -55,7 +46,7 @@ procSuite "WakuNode - Store":
|
||||
]
|
||||
|
||||
let archiveA = block:
|
||||
let driver = newTestArchiveDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
for msg in msgListA:
|
||||
let msg_digest = waku_archive.computeDigest(msg)
|
||||
@ -139,7 +130,7 @@ procSuite "WakuNode - Store":
|
||||
|
||||
## Then
|
||||
check:
|
||||
cursors[0] == some(computeTestCursor(DefaultPubsubTopic, msgListA[6]))
|
||||
cursors[0] == some(computeHistoryCursor(DefaultPubsubTopic, msgListA[6]))
|
||||
cursors[1] == none(HistoryCursor)
|
||||
|
||||
check:
|
||||
@ -190,7 +181,7 @@ procSuite "WakuNode - Store":
|
||||
|
||||
## Then
|
||||
check:
|
||||
cursors[0] == some(computeTestCursor(DefaultPubsubTopic, msgListA[3]))
|
||||
cursors[0] == some(computeHistoryCursor(DefaultPubsubTopic, msgListA[3]))
|
||||
cursors[1] == none(HistoryCursor)
|
||||
|
||||
check:
|
||||
@ -214,7 +205,7 @@ procSuite "WakuNode - Store":
|
||||
waitFor allFutures(client.start(), server.start(), filterSource.start())
|
||||
|
||||
waitFor filterSource.mountFilter()
|
||||
let driver = newTestArchiveDriver()
|
||||
let driver = newSqliteArchiveDriver()
|
||||
|
||||
let mountArchiveRes = server.mountArchive(driver)
|
||||
assert mountArchiveRes.isOk(), mountArchiveRes.error
|
||||
|
Loading…
x
Reference in New Issue
Block a user