Compare commits

..

No commits in common. "340cd467349457a01716a7eb1e6c3e513158ca63" and "4f8918f8e9768485a4b0d49f1feb4c565b745541" have entirely different histories.

2 changed files with 31 additions and 34 deletions

View File

@ -18,7 +18,6 @@
"hyperswarm": "^4.3.5", "hyperswarm": "^4.3.5",
"prettier": "^2.7.1", "prettier": "^2.7.1",
"protoc": "^1.1.3", "protoc": "^1.1.3",
"sleep-promise": "^9.1.0",
"sodium-universal": "^3.1.0", "sodium-universal": "^3.1.0",
"tape": "^5.6.1" "tape": "^5.6.1"
} }

64
test.js
View File

@ -1,5 +1,4 @@
const test = require("tape"); const test = require("tape");
const sleep = require("sleep-promise");
const Hyperswarm = require("hyperswarm"); const Hyperswarm = require("hyperswarm");
const sodium = require("sodium-universal"); const sodium = require("sodium-universal");
const b4a = require("b4a"); const b4a = require("b4a");
@ -9,45 +8,46 @@ const crypto = require("crypto");
const topicName = crypto.randomBytes(10); const topicName = crypto.randomBytes(10);
test("Broadcast through several peers", (t) => { test("Broadcast through several peers", (t) => {
const peer1 = createPeer();
const peer2 = createPeer();
const peer3 = createPeer();
t.plan(2); t.plan(2);
Promise.all([createPeer(100), createPeer(300), createPeer(500)]).then( Promise.all([peer1, peer2, peer3]).then((peers) => {
(peers) => { const peer1 = peers.shift();
const peer1 = peers.shift(); const peer2 = peers.shift();
const peer2 = peers.shift(); const peer3 = 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");
flood1.on("message", () => t.error("Got own message")); const flood1 = new DHTFlood({ swarm: peer1 });
const flood2 = new DHTFlood({ swarm: peer2 });
const flood3 = new DHTFlood({ swarm: peer3 });
const data = Buffer.from("Hello World");
flood2.on("message", (message) => { flood1.on("message", () => t.error("Got own message"));
t.deepEquals(message, data, "Data got broadcast");
});
flood3.on("message", (message) => {
t.deepEquals(message, data, "Data got broadcast");
});
function maybeFlood() { flood2.on("message", (message) => {
if (peer1.peers.size === 2) { t.deepEquals(message, data, "Data got broadcast");
flood1.broadcast(data); });
peer1.removeListener("connection", maybeFlood); 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);
} }
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(ms) { async function createPeer() {
await sleep(ms / 2);
const swarm = new Hyperswarm(); const swarm = new Hyperswarm();
await swarm.dht.ready(); await swarm.dht.ready();
await swarm.listen(); await swarm.listen();
@ -57,7 +57,5 @@ async function createPeer(ms) {
swarm.join(topic); swarm.join(topic);
await sleep(ms / 2);
return swarm; return swarm;
} }