Skip to content

Commit

Permalink
Fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
SionoiS committed Jul 25, 2023
1 parent a440603 commit 2f52195
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 29 deletions.
6 changes: 3 additions & 3 deletions apps/chat2/chat2.nim
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,7 @@ proc writeAndPrint(c: Chat) {.async.} =
if not c.node.wakuFilter.isNil():
echo "unsubscribing from content filters..."

await c.node.unsubscribe(pubsubTopic=DefaultPubsubTopic, contentTopics=c.contentTopic)
await c.node.unsubscribe(pubsubTopic=some(DefaultPubsubTopic), contentTopics=c.contentTopic)

echo "quitting..."

Expand Down Expand Up @@ -539,7 +539,7 @@ proc processInput(rfd: AsyncFD, rng: ref HmacDrbgContext) {.async.} =
let peerInfo = parsePeerInfo(conf.lightpushnode)
if peerInfo.isOk():
await mountLightPush(node)
node.mountLightPushClient()
node.mountLightPushClient()
node.peerManager.addServicePeer(peerInfo.value, WakuLightpushCodec)
else:
error "LightPush not mounted. Couldn't parse conf.lightpushnode",
Expand All @@ -556,7 +556,7 @@ proc processInput(rfd: AsyncFD, rng: ref HmacDrbgContext) {.async.} =
trace "Hit filter handler", contentTopic=msg.contentTopic
chat.printReceivedMessage(msg)

await node.subscribe(pubsubTopic=DefaultPubsubTopic, contentTopics=chat.contentTopic, filterHandler)
await node.subscribe(pubsubTopic=some(DefaultPubsubTopic), contentTopics=chat.contentTopic, filterHandler)

else:
error "Filter not mounted. Couldn't parse conf.filternode",
Expand Down
5 changes: 3 additions & 2 deletions examples/v2/filter_subscriber.nim
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
## subscribe to messages without relay

import
options,
chronicles,
chronos,
stew/byteutils,
Expand All @@ -22,7 +23,7 @@ proc unsubscribe(wfc: WakuFilterClient,
filterPubsubTopic: PubsubTopic,
filterContentTopic: ContentTopic) {.async.} =
notice "unsubscribing from filter"
let unsubscribeRes = await wfc.unsubscribe(filterPeer, filterPubsubTopic, @[filterContentTopic])
let unsubscribeRes = await wfc.unsubscribe(filterPeer, some(filterPubsubTopic), @[filterContentTopic])
if unsubscribeRes.isErr:
notice "unsubscribe request failed", err=unsubscribeRes.error
else:
Expand All @@ -47,7 +48,7 @@ proc maintainSubscription(wfc: WakuFilterClient,
# No subscription found. Let's subscribe.
notice "no subscription found. Sending subscribe request"

let subscribeRes = await wfc.subscribe(filterPeer, filterPubsubTopic, @[filterContentTopic])
let subscribeRes = await wfc.subscribe(filterPeer, some(filterPubsubTopic), @[filterContentTopic])

if subscribeRes.isErr():
notice "subscribe request failed. Quitting.", err=subscribeRes.error
Expand Down
10 changes: 5 additions & 5 deletions tests/v2/test_waku_filter.nim
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ suite "Waku Filter":
msg = fakeWakuMessage(contentTopic=contentTopic)

## When
require (await client.subscribe(pubsubTopic, contentTopic, pushHandler, peer=serverAddr)).isOk()
require (await client.subscribe(some(pubsubTopic), contentTopic, pushHandler, peer=serverAddr)).isOk()

# WARN: Sleep necessary to avoid a race condition between the subscription and the handle message proc
await sleepAsync(500.milliseconds)
Expand Down Expand Up @@ -106,7 +106,7 @@ suite "Waku Filter":
msg = fakeWakuMessage(contentTopic=contentTopic)

## When
require (await client.subscribe(pubsubTopic, contentTopic, pushHandler, peer=serverAddr)).isOk()
require (await client.subscribe(some(pubsubTopic), contentTopic, pushHandler, peer=serverAddr)).isOk()

# WARN: Sleep necessary to avoid a race condition between the subscription and the handle message proc
await sleepAsync(500.milliseconds)
Expand All @@ -118,7 +118,7 @@ suite "Waku Filter":
# Reset to test unsubscribe
pushHandlerFuture = newFuture[void]()

require (await client.unsubscribe(pubsubTopic, contentTopic, peer=serverAddr)).isOk()
require (await client.unsubscribe(some(pubsubTopic), contentTopic, peer=serverAddr)).isOk()

# WARN: Sleep necessary to avoid a race condition between the unsubscription and the handle message proc
await sleepAsync(500.milliseconds)
Expand Down Expand Up @@ -158,7 +158,7 @@ suite "Waku Filter":
msg = fakeWakuMessage(contentTopic=contentTopic)

## When
require (await client.subscribe(pubsubTopic, contentTopic, pushHandler, peer=serverAddr)).isOk()
require (await client.subscribe(some(pubsubTopic), contentTopic, pushHandler, peer=serverAddr)).isOk()

# WARN: Sleep necessary to avoid a race condition between the unsubscription and the handle message proc
await sleepAsync(500.milliseconds)
Expand Down Expand Up @@ -223,7 +223,7 @@ suite "Waku Filter":
msg = fakeWakuMessage(contentTopic=contentTopic)

## When
require (await client.subscribe(pubsubTopic, contentTopic, pushHandler, peer=serverAddr)).isOk()
require (await client.subscribe(some(pubsubTopic), contentTopic, pushHandler, peer=serverAddr)).isOk()

# WARN: Sleep necessary to avoid a race condition between the unsubscription and the handle message proc
await sleepAsync(500.milliseconds)
Expand Down
3 changes: 2 additions & 1 deletion tests/v2/test_wakunode_filter.nim
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{.used.}

import
options,
stew/shims/net as stewNet,
testutils/unittests,
chronicles,
Expand Down Expand Up @@ -43,7 +44,7 @@ suite "WakuNode - Filter":
filterPushHandlerFut.complete((pubsubTopic, msg))

## When
await client.filterSubscribe(pubsubTopic, contentTopic, filterPushHandler, peer=serverPeerInfo)
await client.filterSubscribe(some(pubsubTopic), contentTopic, filterPushHandler, peer=serverPeerInfo)

# Wait for subscription to take effect
waitFor sleepAsync(100.millis)
Expand Down
34 changes: 17 additions & 17 deletions tests/v2/waku_core/test_message_digest.nim
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@ suite "Waku Message - Deterministic hashing":
##
## pubsub_topic = 0x2f77616b752f322f64656661756c742d77616b752f70726f746f
## waku_message.payload = 0x010203045445535405060708
## waku_message.content_topic = 0x2f77616b752f322f64656661756c742d636f6e74656e742f70726f746f
## waku_message.content_topic = 2f302f6e6f6e652f77616b752f322f64656661756c742d636f6e74656e742f70726f746f
## waku_message.meta = <empty>
##
## message_hash = 0x87619d05e563521d9126749b45bd4cc2430df0607e77e23572d874ed9c1aaa62
## message_hash = 40e03700414295013b3ff029a648432d841e47616e6a42bbac41353bf8a76832

## Given
let pubsubTopic = DefaultPubsubTopic # /waku/2/default-waku/proto
let message = fakeWakuMessage(
contentTopic = DefaultContentTopic, # /waku/2/default-content/proto
contentTopic = DefaultContentTopic, # /0/none/waku/2/default-content/proto
payload = "\x01\x02\x03\x04TEST\x05\x06\x07\x08".toBytes(),
meta = newSeq[byte]()
)
Expand All @@ -34,25 +34,25 @@ suite "Waku Message - Deterministic hashing":
## Then
check:
byteutils.toHex(pubsubTopic.toBytes()) == "2f77616b752f322f64656661756c742d77616b752f70726f746f"
byteutils.toHex(message.contentTopic.toBytes()) == "2f77616b752f322f64656661756c742d636f6e74656e742f70726f746f"
byteutils.toHex(message.contentTopic.toBytes()) == "2f302f6e6f6e652f77616b752f322f64656661756c742d636f6e74656e742f70726f746f"
byteutils.toHex(message.payload) == "010203045445535405060708"
byteutils.toHex(message.meta) == ""
messageHash.toHex() == "87619d05e563521d9126749b45bd4cc2430df0607e77e23572d874ed9c1aaa62"
messageHash.toHex() == "40e03700414295013b3ff029a648432d841e47616e6a42bbac41353bf8a76832"

test "digest computation - meta field (12 bytes)":
## Test vector:
##
## pubsub_topic = 0x2f77616b752f322f64656661756c742d77616b752f70726f746f
## waku_message.payload = 0x010203045445535405060708
## waku_message.content_topic = 0x2f77616b752f322f64656661756c742d636f6e74656e742f70726f746f
## waku_message.content_topic = 2f302f6e6f6e652f77616b752f322f64656661756c742d636f6e74656e742f70726f746f
## waku_message.meta = 0x73757065722d736563726574
##
## message_hash = 0x4fdde1099c9f77f6dae8147b6b3179aba1fc8e14a7bf35203fc253ee479f135f
## message_hash = 6e37238f20f88e311865059e7d110f3f3c6fd396603fa29e048ee3401caf5c2a

## Given
let pubsubTopic = DefaultPubsubTopic # /waku/2/default-waku/proto
let message = fakeWakuMessage(
contentTopic = DefaultContentTopic, # /waku/2/default-content/proto
contentTopic = DefaultContentTopic, # /0/none/waku/2/default-content/proto
payload = "\x01\x02\x03\x04TEST\x05\x06\x07\x08".toBytes(),
meta = "\x73\x75\x70\x65\x72\x2d\x73\x65\x63\x72\x65\x74".toBytes()
)
Expand All @@ -63,25 +63,25 @@ suite "Waku Message - Deterministic hashing":
## Then
check:
byteutils.toHex(pubsubTopic.toBytes()) == "2f77616b752f322f64656661756c742d77616b752f70726f746f"
byteutils.toHex(message.contentTopic.toBytes()) == "2f77616b752f322f64656661756c742d636f6e74656e742f70726f746f"
byteutils.toHex(message.contentTopic.toBytes()) == "2f302f6e6f6e652f77616b752f322f64656661756c742d636f6e74656e742f70726f746f"
byteutils.toHex(message.payload) == "010203045445535405060708"
byteutils.toHex(message.meta) == "73757065722d736563726574"
messageHash.toHex() == "4fdde1099c9f77f6dae8147b6b3179aba1fc8e14a7bf35203fc253ee479f135f"
messageHash.toHex() == "6e37238f20f88e311865059e7d110f3f3c6fd396603fa29e048ee3401caf5c2a"

test "digest computation - meta field (64 bytes)":
## Test vector:
##
## pubsub_topic = 0x2f77616b752f322f64656661756c742d77616b752f70726f746f
## waku_message.payload = 0x010203045445535405060708
## waku_message.content_topic = 0x2f77616b752f322f64656661756c742d636f6e74656e742f70726f746f
## waku_message.content_topic = 2f302f6e6f6e652f77616b752f322f64656661756c742d636f6e74656e742f70726f746f
## waku_message.meta = 0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f
##
## message_hash = 0xc32ed3b51f0c432be1c7f50880110e1a1a60f6067cd8193ca946909efe1b26ad

## Given
let pubsubTopic = DefaultPubsubTopic # /waku/2/default-waku/proto
let message = fakeWakuMessage(
contentTopic = DefaultContentTopic, # /waku/2/default-content/proto
contentTopic = DefaultContentTopic, # /0/none/waku/2/default-content/proto
payload = "\x01\x02\x03\x04TEST\x05\x06\x07\x08".toBytes(),
meta = toSeq(0.byte..63.byte)
)
Expand All @@ -92,25 +92,25 @@ suite "Waku Message - Deterministic hashing":
## Then
check:
byteutils.toHex(pubsubTopic.toBytes()) == "2f77616b752f322f64656661756c742d77616b752f70726f746f"
byteutils.toHex(message.contentTopic.toBytes()) == "2f77616b752f322f64656661756c742d636f6e74656e742f70726f746f"
byteutils.toHex(message.contentTopic.toBytes()) == "2f302f6e6f6e652f77616b752f322f64656661756c742d636f6e74656e742f70726f746f"
byteutils.toHex(message.payload) == "010203045445535405060708"
byteutils.toHex(message.meta) == "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f"
messageHash.toHex() == "c32ed3b51f0c432be1c7f50880110e1a1a60f6067cd8193ca946909efe1b26ad"
messageHash.toHex() == "a67857ca6c646847fc5e9a886a3ccb31bf17ee92e1c5c269fe5e7a04150bf021"

test "digest computation - zero length payload":
## Test vector:
##
## pubsub_topic = 0x2f77616b752f322f64656661756c742d77616b752f70726f746f
## waku_message.payload = []
## waku_message.content_topic = 0x2f77616b752f322f64656661756c742d636f6e74656e742f70726f746f
## waku_message.content_topic = 2f302f6e6f6e652f77616b752f322f64656661756c742d636f6e74656e742f70726f746f
## waku_message.meta = 0x73757065722d736563726574
##
## message_hash = 0xe1a9596237dbe2cc8aaf4b838c46a7052df6bc0d42ba214b998a8bfdbe8487d6

## Given
let pubsubTopic = DefaultPubsubTopic # /waku/2/default-waku/proto
let message = fakeWakuMessage(
contentTopic = DefaultContentTopic, # /waku/2/default-content/proto
contentTopic = DefaultContentTopic, # /0/none/waku/2/default-content/proto
payload = newSeq[byte](),
meta = "\x73\x75\x70\x65\x72\x2d\x73\x65\x63\x72\x65\x74".toBytes()
)
Expand All @@ -120,7 +120,7 @@ suite "Waku Message - Deterministic hashing":

## Then
check:
messageHash.toHex() == "e1a9596237dbe2cc8aaf4b838c46a7052df6bc0d42ba214b998a8bfdbe8487d6"
messageHash.toHex() == "35e208a1b94a3a44535829b40c3df4ac4818db3e3bce2a3f7b1a8d9a09766153"

test "waku message - check meta size is enforced":
# create message with meta size > 64 bytes (invalid)
Expand Down
2 changes: 1 addition & 1 deletion waku/v2/waku_core/topics/content_topic.nim
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export parsing

type ContentTopic* = string

const DefaultContentTopic* = ContentTopic("0/none/waku/2/default-content/proto")
const DefaultContentTopic* = ContentTopic("/0/none/waku/2/default-content/proto")


## Namespaced content topic
Expand Down

0 comments on commit 2f52195

Please sign in to comment.