From a83c66c63006d3afa3e12e5689c15463cf2dca44 Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Sun, 27 Nov 2022 16:32:34 -0500 Subject: [PATCH] *refactor test to add delays on creating the peers --- test.js | 64 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/test.js b/test.js index f9ab4e2..45a1b95 100644 --- a/test.js +++ b/test.js @@ -1,4 +1,5 @@ const test = require("tape"); +const sleep = require("sleep-promise"); const Hyperswarm = require("hyperswarm"); const sodium = require("sodium-universal"); const b4a = require("b4a"); @@ -8,46 +9,45 @@ const crypto = require("crypto"); const topicName = crypto.randomBytes(10); test("Broadcast through several peers", (t) => { - const peer1 = createPeer(); - const peer2 = createPeer(); - const peer3 = createPeer(); t.plan(2); - Promise.all([peer1, peer2, peer3]).then((peers) => { - const peer1 = peers.shift(); - const peer2 = peers.shift(); - const peer3 = peers.shift(); + Promise.all([createPeer(100), createPeer(300), createPeer(500)]).then( + (peers) => { + const peer1 = peers.shift(); + const peer2 = peers.shift(); + const peer3 = peers.shift(); + const flood1 = new DHTFlood({ swarm: peer1 }); + const flood2 = new DHTFlood({ swarm: peer2 }); + const flood3 = new DHTFlood({ swarm: peer3 }); + const data = Buffer.from("Hello World"); - const flood1 = new DHTFlood({ swarm: peer1 }); - const flood2 = new DHTFlood({ swarm: peer2 }); - const flood3 = new DHTFlood({ swarm: peer3 }); - const data = Buffer.from("Hello World"); + flood1.on("message", () => t.error("Got own message")); - flood1.on("message", () => t.error("Got own message")); + flood2.on("message", (message) => { + t.deepEquals(message, data, "Data got broadcast"); + }); + flood3.on("message", (message) => { + t.deepEquals(message, data, "Data got broadcast"); + }); - flood2.on("message", (message) => { - t.deepEquals(message, data, "Data got broadcast"); - }); - flood3.on("message", (message) => { - t.deepEquals(message, data, "Data got broadcast"); - }); - - function maybeFlood() { - if (peer1.peers.size === 2) { - flood1.broadcast(data); - peer1.removeListener("connection", maybeFlood); + function maybeFlood() { + if (peer1.peers.size === 2) { + flood1.broadcast(data); + peer1.removeListener("connection", maybeFlood); + } } + + peer1.on("connection", maybeFlood); + + t.teardown(() => { + [peer1, peer2, peer3].forEach((item) => item.destroy()); + }); } - - peer1.on("connection", maybeFlood); - - t.teardown(() => { - [peer1, peer2, peer3].forEach((item) => item.destroy()); - }); - }); + ); }); -async function createPeer() { +async function createPeer(ms) { + await sleep(ms / 2); const swarm = new Hyperswarm(); await swarm.dht.ready(); await swarm.listen(); @@ -57,5 +57,7 @@ async function createPeer() { swarm.join(topic); + await sleep(ms / 2); + return swarm; }