mirror of
https://github.com/logos-storage/logos-storage-nim.git
synced 2026-06-28 05:19:28 +00:00
42 lines
1.2 KiB
Nim
42 lines
1.2 KiB
Nim
import std/[net, options, sequtils]
|
|
import pkg/libp2p/[multiaddress, routing_record]
|
|
|
|
import ../asynctest
|
|
import ./helpers
|
|
import ../../storage/discovery
|
|
import ../../storage/rng
|
|
|
|
suite "Discovery - SPR record logic":
|
|
var key: PrivateKey
|
|
var disc: Discovery
|
|
|
|
let
|
|
directAddr = MultiAddress.init("/ip4/1.2.3.4/tcp/4001").expect("valid")
|
|
relayAddr = MultiAddress
|
|
.init(
|
|
"/ip4/5.6.7.8/tcp/4002/p2p/16Uiu2HAmQu456Ae52JqPuqog6wCex47LLvNY8oHMBC4GRRtaStHs/p2p-circuit"
|
|
)
|
|
.expect("valid")
|
|
udpPort = Port(8090)
|
|
|
|
setup:
|
|
key = PrivateKey.random(Rng.instance[]).get()
|
|
disc = Discovery.new(key, announceAddrs = @[])
|
|
|
|
test "updateRecordsAndSpr sets the SPR with both TCP and UDP addresses":
|
|
disc.updateRecordsAndSpr(@[directAddr], udpPort)
|
|
|
|
let spr = disc.getSpr()
|
|
check spr.isSome
|
|
let addrs = spr.get.data.addresses.mapIt($it.address)
|
|
check addrs.anyIt(it.contains("/tcp/"))
|
|
check addrs.anyIt(it.contains("/udp/"))
|
|
|
|
test "updateAnnounceRecord does not update the SPR":
|
|
disc.updateRecordsAndSpr(@[directAddr], udpPort)
|
|
let sprBefore = disc.getSpr()
|
|
|
|
disc.updateAnnounceRecord(@[relayAddr])
|
|
|
|
check disc.getSpr() == sprBefore
|