From 0b301fdeae501ced9039000e86c30a27f0b68782 Mon Sep 17 00:00:00 2001 From: Csaba Kiraly Date: Wed, 16 Feb 2022 10:59:36 +0100 Subject: [PATCH] moving test under dht folder --- tests/dht/test_helper.nim | 55 +++++++++++++++++++++++++++ tests/{p2p => dht}/test_providers.nim | 4 +- 2 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 tests/dht/test_helper.nim rename tests/{p2p => dht}/test_providers.nim (99%) diff --git a/tests/dht/test_helper.nim b/tests/dht/test_helper.nim new file mode 100644 index 0000000..421e32b --- /dev/null +++ b/tests/dht/test_helper.nim @@ -0,0 +1,55 @@ +import + stew/shims/net, bearssl, chronos, + eth/keys, + ../../eth/p2p/discoveryv5/[enr, node, routing_table], + ../../eth/p2p/discoveryv5/protocol as discv5_protocol + +export net + +proc localAddress*(port: int): Address = + Address(ip: ValidIpAddress.init("127.0.0.1"), port: Port(port)) + +proc initDiscoveryNode*( + rng: ref BrHmacDrbgContext, + privKey: PrivateKey, + address: Address, + bootstrapRecords: openArray[Record] = [], + localEnrFields: openArray[(string, seq[byte])] = [], + previousRecord = none[enr.Record]()): + discv5_protocol.Protocol = + # set bucketIpLimit to allow bucket split + let config = DiscoveryConfig.init(1000, 24, 5) + + let protocol = newProtocol( + privKey, + some(address.ip), + some(address.port), some(address.port), + bindPort = address.port, + bootstrapRecords = bootstrapRecords, + localEnrFields = localEnrFields, + previousRecord = previousRecord, + config = config, + rng = rng) + + protocol.open() + + protocol + +proc nodeIdInNodes*(id: NodeId, nodes: openArray[Node]): bool = + for n in nodes: + if id == n.id: return true + +proc generateNode*(privKey: PrivateKey, port: int = 20302, + ip: ValidIpAddress = ValidIpAddress.init("127.0.0.1"), + localEnrFields: openArray[FieldPair] = []): Node = + let port = Port(port) + let enr = enr.Record.init(1, privKey, some(ip), + some(port), some(port), localEnrFields).expect("Properly intialized private key") + result = newNode(enr).expect("Properly initialized node") + +proc generateNRandomNodes*(rng: ref BrHmacDrbgContext, n: int): seq[Node] = + var res = newSeq[Node]() + for i in 1..n: + let node = generateNode(PrivateKey.random(rng[])) + res.add(node) + res diff --git a/tests/p2p/test_providers.nim b/tests/dht/test_providers.nim similarity index 99% rename from tests/p2p/test_providers.nim rename to tests/dht/test_providers.nim index 93ca5cc..70c1af8 100644 --- a/tests/p2p/test_providers.nim +++ b/tests/dht/test_providers.nim @@ -13,10 +13,10 @@ import std/sequtils, chronos, stew/byteutils, nimcrypto, testutils/unittests, eth/keys, - ../../eth/p2p/providers, + ../../dht/providers, chronicles, ../../eth/p2p/discoveryv5/protocol as discv5_protocol, - ./discv5_test_helper, + test_helper, libp2p/routing_record, libp2p/multihash, libp2p/multicodec