Skip to content

Commit c429df4

Browse files
Announce test: adding peers to swarms
1 parent 078c1a7 commit c429df4

1 file changed

Lines changed: 121 additions & 0 deletions

File tree

test/announce.test.ts

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
/**
2+
* Copyright 2019 Novage LLC.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
import { FastTracker } from "../lib/fast-tracker";
18+
import { PeerContext } from "../lib/tracker";
19+
import { expect } from "chai";
20+
21+
describe("announce", () => {
22+
it("should add peers to swarms on announce", () => {
23+
24+
const tracker = new FastTracker();
25+
const peers: PeerContext[] = [];
26+
27+
peers.push({
28+
sendMessage: (json: any) => {},
29+
});
30+
31+
let announceMessage: any = {
32+
action: "announce",
33+
event: "started",
34+
info_hash: "swarm1",
35+
peer_id: "0",
36+
offers: new Array<any>(),
37+
numwant: 100,
38+
};
39+
40+
tracker.processMessage(announceMessage, peers[0]);
41+
expect(tracker.swarms).to.have.all.keys("swarm1");
42+
expect(tracker.swarms.get("swarm1")!.peers).to.have.all.keys("0");
43+
expect(tracker.swarms.get("swarm1")!.peers.get("0")).to.equal(peers[0]);
44+
45+
peers.push({
46+
sendMessage: (json: any) => {},
47+
});
48+
49+
announceMessage = {
50+
action: "announce",
51+
info_hash: "swarm1",
52+
peer_id: "1",
53+
offers: new Array<any>(),
54+
numwant: 100,
55+
};
56+
57+
tracker.processMessage(announceMessage, peers[1]);
58+
expect(tracker.swarms).to.have.all.keys("swarm1");
59+
expect(tracker.swarms.get("swarm1")!.peers).to.have.all.keys("0", "1");
60+
expect(tracker.swarms.get("swarm1")!.peers.get("0")).to.equal(peers[0]);
61+
expect(tracker.swarms.get("swarm1")!.peers.get("1")).to.equal(peers[1]);
62+
63+
announceMessage = {
64+
action: "announce",
65+
event: "started",
66+
info_hash: "swarm1",
67+
peer_id: "1",
68+
offers: new Array<any>(),
69+
numwant: 100,
70+
};
71+
72+
tracker.processMessage(announceMessage, peers[1]);
73+
expect(tracker.swarms).to.have.all.keys("swarm1");
74+
expect(tracker.swarms.get("swarm1")!.peers).to.have.all.keys("0", "1");
75+
expect(tracker.swarms.get("swarm1")!.peers.get("0")).to.equal(peers[0]);
76+
expect(tracker.swarms.get("swarm1")!.peers.get("1")).to.equal(peers[1]);
77+
78+
peers.push({
79+
sendMessage: (json: any) => {},
80+
});
81+
82+
announceMessage = {
83+
action: "announce",
84+
event: "completed",
85+
info_hash: "swarm2",
86+
peer_id: "2_0",
87+
offers: new Array<any>(),
88+
numwant: 100,
89+
};
90+
91+
tracker.processMessage(announceMessage, peers[2]);
92+
expect(tracker.swarms).to.have.all.keys("swarm1", "swarm2");
93+
expect(tracker.swarms.get("swarm1")!.peers).to.have.all.keys("0", "1");
94+
expect(tracker.swarms.get("swarm1")!.peers.get("0")).to.equal(peers[0]);
95+
expect(tracker.swarms.get("swarm1")!.peers.get("1")).to.equal(peers[1]);
96+
expect(tracker.swarms.get("swarm2")!.peers).to.have.all.keys("2_0");
97+
expect(tracker.swarms.get("swarm2")!.peers.get("2_0")).to.equal(peers[2]);
98+
99+
peers.push({
100+
sendMessage: (json: any) => {},
101+
});
102+
103+
announceMessage = {
104+
action: "announce",
105+
event: "completed",
106+
info_hash: "swarm2",
107+
peer_id: "2_1",
108+
offers: new Array<any>(),
109+
numwant: 100,
110+
};
111+
112+
tracker.processMessage(announceMessage, peers[3]);
113+
expect(tracker.swarms).to.have.all.keys("swarm1", "swarm2");
114+
expect(tracker.swarms.get("swarm1")!.peers).to.have.all.keys("0", "1");
115+
expect(tracker.swarms.get("swarm1")!.peers.get("0")).to.equal(peers[0]);
116+
expect(tracker.swarms.get("swarm1")!.peers.get("1")).to.equal(peers[1]);
117+
expect(tracker.swarms.get("swarm2")!.peers).to.have.all.keys("2_0", "2_1");
118+
expect(tracker.swarms.get("swarm2")!.peers.get("2_0")).to.equal(peers[2]);
119+
expect(tracker.swarms.get("swarm2")!.peers.get("2_1")).to.equal(peers[3]);
120+
});
121+
});

0 commit comments

Comments
 (0)