From 38e100e923a864a055d87145f5a393235955e936 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20Cabeza=20Romero?= Date: Mon, 27 Nov 2023 18:33:27 +0100 Subject: [PATCH] chore(store-archive): Remove duplicated code (#2234) * Refactor utility functions for store and archive test. --- tests/common/test_sqlite_migrations.nim | 8 +- tests/node/test_wakunode_filter.nim | 2 - tests/waku_archive/archive_utils.nim | 56 +++++++++++ tests/waku_archive/test_driver_sqlite.nim | 13 +-- .../waku_archive/test_driver_sqlite_query.nim | 99 ++++++++----------- tests/waku_archive/test_retention_policy.nim | 15 +-- tests/waku_archive/test_waku_archive.nim | 82 ++++++--------- tests/waku_filter_v2/test_waku_client.nim | 2 +- tests/waku_relay/test_protocol.nim | 1 - tests/waku_store/store_utils.nim | 42 ++++++++ tests/waku_store/test_resume.nim | 28 +----- tests/waku_store/test_waku_store.nim | 32 +++--- tests/waku_store/test_wakunode_store.nim | 21 ++-- 13 files changed, 205 insertions(+), 196 deletions(-) create mode 100644 tests/waku_archive/archive_utils.nim create mode 100644 tests/waku_store/store_utils.nim diff --git a/tests/common/test_sqlite_migrations.nim b/tests/common/test_sqlite_migrations.nim index 5b165bf05a..9e673d14e8 100644 --- a/tests/common/test_sqlite_migrations.nim +++ b/tests/common/test_sqlite_migrations.nim @@ -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) diff --git a/tests/node/test_wakunode_filter.nim b/tests/node/test_wakunode_filter.nim index 8577a0fa75..2c32c98102 100644 --- a/tests/node/test_wakunode_filter.nim +++ b/tests/node/test_wakunode_filter.nim @@ -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 diff --git a/tests/waku_archive/archive_utils.nim b/tests/waku_archive/archive_utils.nim new file mode 100644 index 0000000000..a5baafdb60 --- /dev/null +++ b/tests/waku_archive/archive_utils.nim @@ -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 diff --git a/tests/waku_archive/test_driver_sqlite.nim b/tests/waku_archive/test_driver_sqlite.nim index 342f995653..3a4d78d64a 100644 --- a/tests/waku_archive/test_driver_sqlite.nim +++ b/tests/waku_archive/test_driver_sqlite.nim @@ -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) diff --git a/tests/waku_archive/test_driver_sqlite_query.nim b/tests/waku_archive/test_driver_sqlite_query.nim index d63ec7c75c..e201932768 100644 --- a/tests/waku_archive/test_driver_sqlite_query.nim +++ b/tests/waku_archive/test_driver_sqlite_query.nim @@ -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( diff --git a/tests/waku_archive/test_retention_policy.nim b/tests/waku_archive/test_retention_policy.nim index ff039adef9..5233d69240 100644 --- a/tests/waku_archive/test_retention_policy.nim +++ b/tests/waku_archive/test_retention_policy.nim @@ -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 = @[ diff --git a/tests/waku_archive/test_waku_archive.nim b/tests/waku_archive/test_waku_archive.nim index eb9c4e3410..72a0abf664 100644 --- a/tests/waku_archive/test_waku_archive.nim +++ b/tests/waku_archive/test_waku_archive.nim @@ -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")), diff --git a/tests/waku_filter_v2/test_waku_client.nim b/tests/waku_filter_v2/test_waku_client.nim index ed02b65c64..b619b473f3 100644 --- a/tests/waku_filter_v2/test_waku_client.nim +++ b/tests/waku_filter_v2/test_waku_client.nim @@ -10,7 +10,7 @@ import ], testutils/unittests, stew/[ - results, + results, byteutils ], chronos, diff --git a/tests/waku_relay/test_protocol.nim b/tests/waku_relay/test_protocol.nim index 0230930460..eee7cbe5ca 100644 --- a/tests/waku_relay/test_protocol.nim +++ b/tests/waku_relay/test_protocol.nim @@ -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() diff --git a/tests/waku_store/store_utils.nim b/tests/waku_store/store_utils.nim new file mode 100644 index 0000000000..7ed346fe31 --- /dev/null +++ b/tests/waku_store/store_utils.nim @@ -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) + ) diff --git a/tests/waku_store/test_resume.nim b/tests/waku_store/test_resume.nim index d858158a45..2ff7697b02 100644 --- a/tests/waku_store/test_resume.nim +++ b/tests/waku_store/test_resume.nim @@ -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() diff --git a/tests/waku_store/test_waku_store.nim b/tests/waku_store/test_waku_store.nim index f751dbfd19..b854416d16 100644 --- a/tests/waku_store/test_waku_store.nim +++ b/tests/waku_store/test_waku_store.nim @@ -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": diff --git a/tests/waku_store/test_wakunode_store.nim b/tests/waku_store/test_wakunode_store.nim index ae489fc6a4..5946fb7e78 100644 --- a/tests/waku_store/test_wakunode_store.nim +++ b/tests/waku_store/test_wakunode_store.nim @@ -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