@streamr/dht 100.0.0-testnet-one.0 → 100.0.0-testnet-one.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/connection/ConnectionLockRpcRemote.js +1 -25
- package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -1
- package/dist/src/connection/ConnectionManager.d.ts +0 -1
- package/dist/src/connection/ConnectionManager.js +7 -6
- package/dist/src/connection/ConnectionManager.js.map +1 -1
- package/dist/src/connection/ConnectorFacade.d.ts +2 -2
- package/dist/src/connection/ConnectorFacade.js +1 -2
- package/dist/src/connection/ConnectorFacade.js.map +1 -1
- package/dist/src/connection/connectivityChecker.js +3 -2
- package/dist/src/connection/connectivityChecker.js.map +1 -1
- package/dist/src/connection/websocket/ClientWebsocket.d.ts +1 -0
- package/dist/src/connection/websocket/ClientWebsocket.js +6 -3
- package/dist/src/connection/websocket/ClientWebsocket.js.map +1 -1
- package/dist/src/connection/websocket/ServerWebsocket.d.ts +4 -0
- package/dist/src/connection/websocket/ServerWebsocket.js +32 -21
- package/dist/src/connection/websocket/ServerWebsocket.js.map +1 -1
- package/dist/src/connection/websocket/WebsocketConnector.d.ts +0 -1
- package/dist/src/connection/websocket/WebsocketConnector.js +21 -10
- package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -1
- package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.d.ts +1 -1
- package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js +8 -11
- package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js.map +1 -1
- package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.d.ts +2 -2
- package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js +3 -37
- package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js.map +1 -1
- package/dist/src/connection/websocket/WebsocketServer.js +21 -4
- package/dist/src/connection/websocket/WebsocketServer.js.map +1 -1
- package/dist/src/dht/DhtNode.d.ts +4 -4
- package/dist/src/dht/DhtNode.js +30 -19
- package/dist/src/dht/DhtNode.js.map +1 -1
- package/dist/src/dht/DhtNodeRpcLocal.d.ts +1 -4
- package/dist/src/dht/DhtNodeRpcLocal.js +1 -5
- package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -1
- package/dist/src/dht/PeerManager.d.ts +10 -6
- package/dist/src/dht/PeerManager.js +95 -30
- package/dist/src/dht/PeerManager.js.map +1 -1
- package/dist/src/dht/contact/SortedContactList.d.ts +20 -6
- package/dist/src/dht/contact/SortedContactList.js +55 -24
- package/dist/src/dht/contact/SortedContactList.js.map +1 -1
- package/dist/src/dht/discovery/DiscoverySession.d.ts +2 -5
- package/dist/src/dht/discovery/DiscoverySession.js +12 -9
- package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
- package/dist/src/dht/discovery/PeerDiscovery.d.ts +1 -1
- package/dist/src/dht/discovery/PeerDiscovery.js +4 -10
- package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
- package/dist/src/dht/find/FindSession.js +6 -1
- package/dist/src/dht/find/FindSession.js.map +1 -1
- package/dist/src/dht/find/Finder.js +6 -1
- package/dist/src/dht/find/Finder.js.map +1 -1
- package/dist/src/dht/routing/Router.d.ts +1 -1
- package/dist/src/dht/routing/Router.js +8 -4
- package/dist/src/dht/routing/Router.js.map +1 -1
- package/dist/src/dht/routing/RoutingSession.js +8 -1
- package/dist/src/dht/routing/RoutingSession.js.map +1 -1
- package/dist/src/dht/store/StoreRpcLocal.js +19 -5
- package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
- package/dist/src/helpers/PeerID.d.ts +1 -0
- package/dist/src/helpers/PeerID.js +7 -2
- package/dist/src/helpers/PeerID.js.map +1 -1
- package/dist/src/helpers/peerIdFromPeerDescriptor.js +2 -2
- package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
- package/package.json +5 -5
- package/src/connection/ConnectionLockRpcRemote.ts +1 -2
- package/src/connection/ConnectionManager.ts +16 -17
- package/src/connection/ConnectorFacade.ts +0 -3
- package/src/connection/connectivityChecker.ts +3 -2
- package/src/connection/websocket/ClientWebsocket.ts +5 -2
- package/src/connection/websocket/ServerWebsocket.ts +40 -25
- package/src/connection/websocket/WebsocketConnector.ts +23 -12
- package/src/connection/websocket/WebsocketConnectorRpcLocal.ts +9 -11
- package/src/connection/websocket/WebsocketConnectorRpcRemote.ts +5 -14
- package/src/connection/websocket/WebsocketServer.ts +20 -5
- package/src/dht/DhtNode.ts +31 -21
- package/src/dht/DhtNodeRpcLocal.ts +2 -9
- package/src/dht/PeerManager.ts +110 -36
- package/src/dht/contact/SortedContactList.ts +87 -44
- package/src/dht/discovery/DiscoverySession.ts +14 -14
- package/src/dht/discovery/PeerDiscovery.ts +9 -16
- package/src/dht/find/FindSession.ts +6 -1
- package/src/dht/find/Finder.ts +6 -7
- package/src/dht/routing/Router.ts +8 -4
- package/src/dht/routing/RoutingSession.ts +8 -8
- package/src/dht/store/StoreRpcLocal.ts +19 -7
- package/src/helpers/PeerID.ts +6 -2
- package/src/helpers/peerIdFromPeerDescriptor.ts +4 -4
- package/test/benchmark/Find.test.ts +1 -1
- package/test/benchmark/KademliaCorrectness.test.ts +1 -1
- package/test/benchmark/SortedContactListBenchmark.test.ts +150 -0
- package/test/benchmark/WebsocketServerMemoryLeak.test.ts +41 -0
- package/test/benchmark/kademlia-simulation/SimulationNode.ts +6 -1
- package/test/end-to-end/Layer0.test.ts +4 -4
- package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +10 -10
- package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +4 -4
- package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +2 -2
- package/test/end-to-end/Layer1-Scale-Webrtc.test.ts +2 -2
- package/test/end-to-end/RecoveryFromFailedAutoCertification.test.ts +1 -1
- package/test/end-to-end/memory-leak.test.ts +1 -0
- package/test/integration/DhtJoinPeerDiscovery.test.ts +2 -2
- package/test/integration/Layer1-scale.test.ts +1 -1
- package/test/integration/Mock-Layer1-Layer0.test.ts +15 -15
- package/test/integration/MultipleEntryPointJoining.test.ts +7 -7
- package/test/integration/ReplicateData.test.ts +6 -1
- package/test/integration/SimultaneousConnections.test.ts +81 -49
- package/test/integration/StoreOnDhtWithTwoNodes.test.ts +1 -1
- package/test/integration/WebsocketConnectionManagement.test.ts +41 -3
- package/test/integration/WebsocketConnectorRpc.test.ts +3 -5
- package/test/unit/SortedContactList.test.ts +15 -10
|
@@ -20,8 +20,8 @@ const createConnectionManager = (localPeerDescriptor: PeerDescriptor, opts: Omit
|
|
|
20
20
|
describe('SimultaneousConnections', () => {
|
|
21
21
|
|
|
22
22
|
let simulator: Simulator
|
|
23
|
-
let
|
|
24
|
-
let
|
|
23
|
+
let simTransport1: SimulatorTransport
|
|
24
|
+
let simTransport2: SimulatorTransport
|
|
25
25
|
|
|
26
26
|
const peerDescriptor1 = {
|
|
27
27
|
nodeId: PeerID.fromString('mock1').value,
|
|
@@ -45,15 +45,15 @@ describe('SimultaneousConnections', () => {
|
|
|
45
45
|
|
|
46
46
|
beforeEach(async () => {
|
|
47
47
|
simulator = new Simulator()
|
|
48
|
-
|
|
49
|
-
await
|
|
50
|
-
|
|
51
|
-
await
|
|
48
|
+
simTransport1 = new SimulatorTransport(peerDescriptor1, simulator)
|
|
49
|
+
await simTransport1.start()
|
|
50
|
+
simTransport2 = new SimulatorTransport(peerDescriptor2, simulator)
|
|
51
|
+
await simTransport2.start()
|
|
52
52
|
})
|
|
53
53
|
|
|
54
54
|
afterEach(async () => {
|
|
55
|
-
await
|
|
56
|
-
await
|
|
55
|
+
await simTransport1.stop()
|
|
56
|
+
await simTransport2.stop()
|
|
57
57
|
})
|
|
58
58
|
|
|
59
59
|
it('simultanous simulated connection', async () => {
|
|
@@ -67,13 +67,13 @@ describe('SimultaneousConnections', () => {
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
const promise1 = new Promise<void>((resolve, _reject) => {
|
|
70
|
-
|
|
70
|
+
simTransport1.on('message', async (message: Message) => {
|
|
71
71
|
expect(message.messageType).toBe(MessageType.RPC)
|
|
72
72
|
resolve()
|
|
73
73
|
})
|
|
74
74
|
})
|
|
75
75
|
const promise2 = new Promise<void>((resolve, _reject) => {
|
|
76
|
-
|
|
76
|
+
simTransport2.on('message', async (message: Message) => {
|
|
77
77
|
expect(message.messageType).toBe(MessageType.RPC)
|
|
78
78
|
resolve()
|
|
79
79
|
})
|
|
@@ -81,19 +81,21 @@ describe('SimultaneousConnections', () => {
|
|
|
81
81
|
await Promise.all([
|
|
82
82
|
promise1,
|
|
83
83
|
promise2,
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
simTransport1.send(msg1),
|
|
85
|
+
simTransport2.send(msg2)
|
|
86
86
|
])
|
|
87
|
-
await waitForCondition(() =>
|
|
88
|
-
await waitForCondition(() =>
|
|
87
|
+
await waitForCondition(() => simTransport2.hasConnection(peerDescriptor1))
|
|
88
|
+
await waitForCondition(() => simTransport1.hasConnection(peerDescriptor2))
|
|
89
89
|
})
|
|
90
90
|
|
|
91
91
|
describe('Websocket 2 servers', () => {
|
|
92
92
|
|
|
93
|
+
let simTransport1: SimulatorTransport
|
|
94
|
+
let simTransport2: SimulatorTransport
|
|
93
95
|
let connectionManager1: ConnectionManager
|
|
94
96
|
let connectionManager2: ConnectionManager
|
|
95
|
-
|
|
96
|
-
const
|
|
97
|
+
|
|
98
|
+
const wsPeerDescriptor1: PeerDescriptor = {
|
|
97
99
|
nodeId: PeerID.fromString('mock1').value,
|
|
98
100
|
type: NodeType.NODEJS,
|
|
99
101
|
websocket: {
|
|
@@ -103,7 +105,7 @@ describe('SimultaneousConnections', () => {
|
|
|
103
105
|
}
|
|
104
106
|
}
|
|
105
107
|
|
|
106
|
-
const
|
|
108
|
+
const wsPeerDescriptor2: PeerDescriptor = {
|
|
107
109
|
nodeId: PeerID.fromString('mock2').value,
|
|
108
110
|
type: NodeType.NODEJS,
|
|
109
111
|
websocket: {
|
|
@@ -114,17 +116,26 @@ describe('SimultaneousConnections', () => {
|
|
|
114
116
|
}
|
|
115
117
|
|
|
116
118
|
beforeEach(async () => {
|
|
119
|
+
|
|
120
|
+
// SimulatorTransport needs to have exatly same peerDescriptor as ConnectionManager
|
|
121
|
+
// that is why we need to create new SimulatorTransports here
|
|
122
|
+
simulator = new Simulator()
|
|
123
|
+
simTransport1 = new SimulatorTransport(wsPeerDescriptor1, simulator)
|
|
124
|
+
await simTransport1.start()
|
|
125
|
+
simTransport2 = new SimulatorTransport(wsPeerDescriptor2, simulator)
|
|
126
|
+
await simTransport2.start()
|
|
127
|
+
|
|
117
128
|
const websocketPortRange = { min: 43432, max: 43433 }
|
|
118
|
-
connectionManager1 = createConnectionManager(
|
|
119
|
-
transport:
|
|
129
|
+
connectionManager1 = createConnectionManager(wsPeerDescriptor1, {
|
|
130
|
+
transport: simTransport1,
|
|
120
131
|
websocketPortRange,
|
|
121
|
-
entryPoints: [
|
|
132
|
+
entryPoints: [wsPeerDescriptor1],
|
|
122
133
|
websocketServerEnableTls: false
|
|
123
134
|
})
|
|
124
|
-
connectionManager2 = createConnectionManager(
|
|
125
|
-
transport:
|
|
135
|
+
connectionManager2 = createConnectionManager(wsPeerDescriptor2, {
|
|
136
|
+
transport: simTransport2,
|
|
126
137
|
websocketPortRange,
|
|
127
|
-
entryPoints: [
|
|
138
|
+
entryPoints: [wsPeerDescriptor1],
|
|
128
139
|
websocketServerEnableTls: false
|
|
129
140
|
})
|
|
130
141
|
await connectionManager1.start()
|
|
@@ -134,16 +145,18 @@ describe('SimultaneousConnections', () => {
|
|
|
134
145
|
afterEach(async () => {
|
|
135
146
|
await connectionManager1.stop()
|
|
136
147
|
await connectionManager2.stop()
|
|
148
|
+
await simTransport1.stop()
|
|
149
|
+
await simTransport2.stop()
|
|
137
150
|
})
|
|
138
151
|
|
|
139
152
|
it('Simultaneous Connections', async () => {
|
|
140
153
|
const msg1: Message = {
|
|
141
154
|
...baseMsg,
|
|
142
|
-
targetDescriptor:
|
|
155
|
+
targetDescriptor: wsPeerDescriptor2
|
|
143
156
|
}
|
|
144
157
|
const msg2: Message = {
|
|
145
158
|
...baseMsg,
|
|
146
|
-
targetDescriptor:
|
|
159
|
+
targetDescriptor: wsPeerDescriptor1
|
|
147
160
|
}
|
|
148
161
|
|
|
149
162
|
const promise1 = new Promise<void>((resolve, _reject) => {
|
|
@@ -166,17 +179,19 @@ describe('SimultaneousConnections', () => {
|
|
|
166
179
|
connectionManager2.send(msg2)
|
|
167
180
|
])
|
|
168
181
|
|
|
169
|
-
await waitForCondition(() => connectionManager1.hasConnection(
|
|
170
|
-
await waitForCondition(() => connectionManager2.hasConnection(
|
|
182
|
+
await waitForCondition(() => connectionManager1.hasConnection(wsPeerDescriptor2))
|
|
183
|
+
await waitForCondition(() => connectionManager2.hasConnection(wsPeerDescriptor1))
|
|
171
184
|
})
|
|
172
185
|
})
|
|
173
186
|
|
|
174
187
|
describe('Websocket 1 server (ConnectionRequests)', () => {
|
|
175
|
-
|
|
188
|
+
|
|
189
|
+
let simTransport1: SimulatorTransport
|
|
190
|
+
let simTransport2: SimulatorTransport
|
|
176
191
|
let connectionManager1: ConnectionManager
|
|
177
192
|
let connectionManager2: ConnectionManager
|
|
178
193
|
|
|
179
|
-
const
|
|
194
|
+
const wsPeerDescriptor1: PeerDescriptor = {
|
|
180
195
|
nodeId: PeerID.fromString('mock1').value,
|
|
181
196
|
type: NodeType.NODEJS,
|
|
182
197
|
websocket: {
|
|
@@ -186,20 +201,26 @@ describe('SimultaneousConnections', () => {
|
|
|
186
201
|
}
|
|
187
202
|
}
|
|
188
203
|
|
|
189
|
-
const
|
|
204
|
+
const wsPeerDescriptor2: PeerDescriptor = {
|
|
190
205
|
nodeId: PeerID.fromString('mock2').value,
|
|
191
206
|
type: NodeType.NODEJS
|
|
192
207
|
}
|
|
193
208
|
|
|
194
209
|
beforeEach(async () => {
|
|
195
|
-
|
|
196
|
-
|
|
210
|
+
simulator = new Simulator()
|
|
211
|
+
simTransport1 = new SimulatorTransport(wsPeerDescriptor1, simulator)
|
|
212
|
+
await simTransport1.start()
|
|
213
|
+
simTransport2 = new SimulatorTransport(wsPeerDescriptor2, simulator)
|
|
214
|
+
await simTransport2.start()
|
|
215
|
+
|
|
216
|
+
connectionManager1 = createConnectionManager(wsPeerDescriptor1, {
|
|
217
|
+
transport: simTransport1,
|
|
197
218
|
websocketPortRange: { min: 43432, max: 43432 },
|
|
198
|
-
entryPoints: [
|
|
219
|
+
entryPoints: [wsPeerDescriptor1],
|
|
199
220
|
websocketServerEnableTls: false
|
|
200
221
|
})
|
|
201
|
-
connectionManager2 = createConnectionManager(
|
|
202
|
-
transport:
|
|
222
|
+
connectionManager2 = createConnectionManager(wsPeerDescriptor2, {
|
|
223
|
+
transport: simTransport2
|
|
203
224
|
})
|
|
204
225
|
await connectionManager1.start()
|
|
205
226
|
await connectionManager2.start()
|
|
@@ -208,16 +229,18 @@ describe('SimultaneousConnections', () => {
|
|
|
208
229
|
afterEach(async () => {
|
|
209
230
|
await connectionManager1.stop()
|
|
210
231
|
await connectionManager2.stop()
|
|
232
|
+
await simTransport1.stop()
|
|
233
|
+
await simTransport2.stop()
|
|
211
234
|
})
|
|
212
235
|
|
|
213
236
|
it('Simultaneous Connections', async () => {
|
|
214
237
|
const msg1: Message = {
|
|
215
238
|
...baseMsg,
|
|
216
|
-
targetDescriptor:
|
|
239
|
+
targetDescriptor: wsPeerDescriptor2
|
|
217
240
|
}
|
|
218
241
|
const msg2: Message = {
|
|
219
242
|
...baseMsg,
|
|
220
|
-
targetDescriptor:
|
|
243
|
+
targetDescriptor: wsPeerDescriptor1
|
|
221
244
|
}
|
|
222
245
|
|
|
223
246
|
const promise1 = new Promise<void>((resolve, _reject) => {
|
|
@@ -240,32 +263,39 @@ describe('SimultaneousConnections', () => {
|
|
|
240
263
|
connectionManager2.send(msg2)
|
|
241
264
|
])
|
|
242
265
|
|
|
243
|
-
await waitForCondition(() => connectionManager1.hasConnection(
|
|
244
|
-
await waitForCondition(() => connectionManager2.hasConnection(
|
|
266
|
+
await waitForCondition(() => connectionManager1.hasConnection(wsPeerDescriptor2))
|
|
267
|
+
await waitForCondition(() => connectionManager2.hasConnection(wsPeerDescriptor1))
|
|
245
268
|
})
|
|
246
269
|
})
|
|
247
270
|
|
|
248
271
|
describe('WebRTC', () => {
|
|
249
272
|
|
|
273
|
+
let simTransport1: SimulatorTransport
|
|
274
|
+
let simTransport2: SimulatorTransport
|
|
250
275
|
let connectionManager1: ConnectionManager
|
|
251
276
|
let connectionManager2: ConnectionManager
|
|
252
277
|
|
|
253
|
-
const
|
|
278
|
+
const wrtcPeerDescriptor1: PeerDescriptor = {
|
|
254
279
|
nodeId: PeerID.fromString('mock1').value,
|
|
255
280
|
type: NodeType.NODEJS
|
|
256
281
|
}
|
|
257
282
|
|
|
258
|
-
const
|
|
283
|
+
const wrtcPeerDescriptor2: PeerDescriptor = {
|
|
259
284
|
nodeId: PeerID.fromString('mock2').value,
|
|
260
285
|
type: NodeType.NODEJS
|
|
261
286
|
}
|
|
262
287
|
|
|
263
288
|
beforeEach(async () => {
|
|
264
|
-
|
|
265
|
-
|
|
289
|
+
simulator = new Simulator()
|
|
290
|
+
simTransport1 = new SimulatorTransport(wrtcPeerDescriptor1, simulator)
|
|
291
|
+
await simTransport1.start()
|
|
292
|
+
simTransport2 = new SimulatorTransport(wrtcPeerDescriptor2, simulator)
|
|
293
|
+
await simTransport2.start()
|
|
294
|
+
connectionManager1 = createConnectionManager(wrtcPeerDescriptor1, {
|
|
295
|
+
transport: simTransport1,
|
|
266
296
|
})
|
|
267
|
-
connectionManager2 = createConnectionManager(
|
|
268
|
-
transport:
|
|
297
|
+
connectionManager2 = createConnectionManager(wrtcPeerDescriptor2, {
|
|
298
|
+
transport: simTransport2,
|
|
269
299
|
})
|
|
270
300
|
await connectionManager1.start()
|
|
271
301
|
await connectionManager2.start()
|
|
@@ -274,16 +304,18 @@ describe('SimultaneousConnections', () => {
|
|
|
274
304
|
afterEach(async () => {
|
|
275
305
|
await connectionManager1.stop()
|
|
276
306
|
await connectionManager2.stop()
|
|
307
|
+
await simTransport1.stop()
|
|
308
|
+
await simTransport2.stop()
|
|
277
309
|
})
|
|
278
310
|
|
|
279
311
|
it('Simultaneous Connections', async () => {
|
|
280
312
|
const msg1: Message = {
|
|
281
313
|
...baseMsg,
|
|
282
|
-
targetDescriptor:
|
|
314
|
+
targetDescriptor: wrtcPeerDescriptor2
|
|
283
315
|
}
|
|
284
316
|
const msg2: Message = {
|
|
285
317
|
...baseMsg,
|
|
286
|
-
targetDescriptor:
|
|
318
|
+
targetDescriptor: wrtcPeerDescriptor1
|
|
287
319
|
}
|
|
288
320
|
|
|
289
321
|
const promise1 = new Promise<void>((resolve, _reject) => {
|
|
@@ -306,8 +338,8 @@ describe('SimultaneousConnections', () => {
|
|
|
306
338
|
connectionManager2.send(msg2)
|
|
307
339
|
])
|
|
308
340
|
|
|
309
|
-
await waitForCondition(() => connectionManager1.hasConnection(
|
|
310
|
-
await waitForCondition(() => connectionManager2.hasConnection(
|
|
341
|
+
await waitForCondition(() => connectionManager1.hasConnection(wrtcPeerDescriptor2))
|
|
342
|
+
await waitForCondition(() => connectionManager2.hasConnection(wrtcPeerDescriptor1))
|
|
311
343
|
})
|
|
312
344
|
})
|
|
313
345
|
|
|
@@ -59,7 +59,7 @@ describe('Storing data in DHT with two peers', () => {
|
|
|
59
59
|
|
|
60
60
|
it('Can store on one peer DHT', async () => {
|
|
61
61
|
await otherNode.stop()
|
|
62
|
-
await waitForCondition(() => entryPoint.
|
|
62
|
+
await waitForCondition(() => entryPoint.getNumberOfNeighbors() === 0)
|
|
63
63
|
const dataKey = createRandomNodeId()
|
|
64
64
|
const storedData = createMockPeerDescriptor()
|
|
65
65
|
const data = Any.pack(storedData, PeerDescriptor)
|
|
@@ -26,11 +26,12 @@ describe('Websocket Connection Management', () => {
|
|
|
26
26
|
const serviceId = 'test'
|
|
27
27
|
let wsServerManager: ConnectionManager
|
|
28
28
|
let noWsServerManager: ConnectionManager
|
|
29
|
+
let biggerNoWsServerManager: ConnectionManager
|
|
29
30
|
|
|
30
31
|
const simulator = new Simulator()
|
|
31
32
|
|
|
32
33
|
const wsServerConnectorPeerDescriptor: PeerDescriptor = {
|
|
33
|
-
nodeId: PeerID.fromString('
|
|
34
|
+
nodeId: PeerID.fromString('2').value,
|
|
34
35
|
type: NodeType.NODEJS,
|
|
35
36
|
websocket: {
|
|
36
37
|
host: '127.0.0.1',
|
|
@@ -40,12 +41,18 @@ describe('Websocket Connection Management', () => {
|
|
|
40
41
|
}
|
|
41
42
|
|
|
42
43
|
const noWsServerConnectorPeerDescriptor: PeerDescriptor = {
|
|
43
|
-
nodeId: PeerID.fromString('
|
|
44
|
+
nodeId: PeerID.fromString('1').value,
|
|
45
|
+
type: NodeType.NODEJS,
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const biggerNoWsServerConnectorPeerDescriptor: PeerDescriptor = {
|
|
49
|
+
nodeId: PeerID.fromString('3').value,
|
|
44
50
|
type: NodeType.NODEJS,
|
|
45
51
|
}
|
|
46
52
|
|
|
47
53
|
let connectorTransport1: SimulatorTransport
|
|
48
54
|
let connectorTransport2: SimulatorTransport
|
|
55
|
+
let connectorTransport3: SimulatorTransport
|
|
49
56
|
|
|
50
57
|
beforeEach(async () => {
|
|
51
58
|
|
|
@@ -53,6 +60,8 @@ describe('Websocket Connection Management', () => {
|
|
|
53
60
|
await connectorTransport1.start()
|
|
54
61
|
connectorTransport2 = new SimulatorTransport(noWsServerConnectorPeerDescriptor, simulator)
|
|
55
62
|
await connectorTransport2.start()
|
|
63
|
+
connectorTransport3 = new SimulatorTransport(biggerNoWsServerConnectorPeerDescriptor, simulator)
|
|
64
|
+
await connectorTransport3.start()
|
|
56
65
|
|
|
57
66
|
const config1 = createConfig(wsServerConnectorPeerDescriptor, {
|
|
58
67
|
transport: connectorTransport1,
|
|
@@ -62,22 +71,29 @@ describe('Websocket Connection Management', () => {
|
|
|
62
71
|
const config2 = createConfig(noWsServerConnectorPeerDescriptor, {
|
|
63
72
|
transport: connectorTransport2
|
|
64
73
|
})
|
|
74
|
+
const config3 = createConfig(biggerNoWsServerConnectorPeerDescriptor, {
|
|
75
|
+
transport: connectorTransport3
|
|
76
|
+
})
|
|
65
77
|
|
|
66
78
|
wsServerManager = new ConnectionManager(config1)
|
|
67
79
|
noWsServerManager = new ConnectionManager(config2)
|
|
80
|
+
biggerNoWsServerManager = new ConnectionManager(config3)
|
|
68
81
|
|
|
69
82
|
await wsServerManager.start()
|
|
70
83
|
await noWsServerManager.start()
|
|
84
|
+
await biggerNoWsServerManager.start()
|
|
71
85
|
})
|
|
72
86
|
|
|
73
87
|
afterEach(async () => {
|
|
74
88
|
await wsServerManager.stop()
|
|
75
89
|
await noWsServerManager.stop()
|
|
90
|
+
await biggerNoWsServerManager.stop()
|
|
76
91
|
await connectorTransport1.stop()
|
|
77
92
|
await connectorTransport2.stop()
|
|
93
|
+
await connectorTransport3.stop()
|
|
78
94
|
})
|
|
79
95
|
|
|
80
|
-
it('Can open connections to serverless peer', (done) => {
|
|
96
|
+
it('Can open connections to serverless peer with smaller peerId', (done) => {
|
|
81
97
|
const dummyMessage: Message = {
|
|
82
98
|
serviceId,
|
|
83
99
|
body: {
|
|
@@ -99,6 +115,28 @@ describe('Websocket Connection Management', () => {
|
|
|
99
115
|
wsServerManager.send(dummyMessage)
|
|
100
116
|
})
|
|
101
117
|
|
|
118
|
+
it('Can open connections to serverless peer with bigger peerId', (done) => {
|
|
119
|
+
const dummyMessage: Message = {
|
|
120
|
+
serviceId,
|
|
121
|
+
body: {
|
|
122
|
+
oneofKind: 'rpcMessage',
|
|
123
|
+
rpcMessage: RpcMessage.create()
|
|
124
|
+
},
|
|
125
|
+
messageType: MessageType.RPC,
|
|
126
|
+
messageId: 'mockerer',
|
|
127
|
+
targetDescriptor: biggerNoWsServerConnectorPeerDescriptor
|
|
128
|
+
}
|
|
129
|
+
biggerNoWsServerManager.on('message', (message: Message) => {
|
|
130
|
+
expect(message.messageId).toEqual('mockerer')
|
|
131
|
+
expect(wsServerManager.getConnection(biggerNoWsServerConnectorPeerDescriptor)!.connectionType).toEqual(ConnectionType.WEBSOCKET_SERVER)
|
|
132
|
+
expect(biggerNoWsServerManager.getConnection(wsServerConnectorPeerDescriptor)!.connectionType).toEqual(ConnectionType.WEBSOCKET_CLIENT)
|
|
133
|
+
|
|
134
|
+
done()
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
wsServerManager.send(dummyMessage)
|
|
138
|
+
})
|
|
139
|
+
|
|
102
140
|
it('Can open connections to peer with server', async () => {
|
|
103
141
|
const dummyMessage: Message = {
|
|
104
142
|
serviceId,
|
|
@@ -67,16 +67,14 @@ describe('WebsocketConnectorRpc', () => {
|
|
|
67
67
|
},
|
|
68
68
|
{ targetDescriptor: peerDescriptor2 },
|
|
69
69
|
)
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
await response1
|
|
71
|
+
|
|
73
72
|
const response2 = client2.requestConnection({
|
|
74
73
|
ip: '127.0.0.1',
|
|
75
74
|
port: 9111
|
|
76
75
|
},
|
|
77
76
|
{ targetDescriptor: peerDescriptor1 },
|
|
78
77
|
)
|
|
79
|
-
|
|
80
|
-
expect(res2.accepted).toEqual(true)
|
|
78
|
+
await response2
|
|
81
79
|
})
|
|
82
80
|
})
|
|
@@ -13,7 +13,7 @@ describe('SortedContactList', () => {
|
|
|
13
13
|
const item4 = createItem(new Uint8Array([0, 0, 0, 4]))
|
|
14
14
|
|
|
15
15
|
it('compares Ids correctly', async () => {
|
|
16
|
-
const list = new SortedContactList(item0.getPeerId(), 10)
|
|
16
|
+
const list = new SortedContactList({ referenceId: item0.getPeerId(), maxSize: 10, allowToContainReferenceId: true, emitEvents: false })
|
|
17
17
|
expect(list.compareIds(item0.getPeerId(), item0.getPeerId())).toBe(0)
|
|
18
18
|
expect(list.compareIds(item1.getPeerId(), item1.getPeerId())).toBe(0)
|
|
19
19
|
expect(list.compareIds(item0.getPeerId(), item1.getPeerId())).toBe(-1)
|
|
@@ -23,9 +23,9 @@ describe('SortedContactList', () => {
|
|
|
23
23
|
expect(list.compareIds(item2.getPeerId(), item3.getPeerId())).toBe(-1)
|
|
24
24
|
expect(list.compareIds(item1.getPeerId(), item4.getPeerId())).toBe(-3)
|
|
25
25
|
})
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
it('orders itself correctly', async () => {
|
|
28
|
-
const list = new SortedContactList(item0.getPeerId(), 10)
|
|
28
|
+
const list = new SortedContactList({ referenceId: item0.getPeerId(), maxSize: 10, allowToContainReferenceId: true, emitEvents: false })
|
|
29
29
|
list.addContact(item3)
|
|
30
30
|
list.addContact(item2)
|
|
31
31
|
list.addContact(item1)
|
|
@@ -35,9 +35,9 @@ describe('SortedContactList', () => {
|
|
|
35
35
|
expect(contacts[1]).toEqual(item2)
|
|
36
36
|
expect(contacts[2]).toEqual(item3)
|
|
37
37
|
})
|
|
38
|
-
|
|
38
|
+
|
|
39
39
|
it('handles contacted nodes correctly', async () => {
|
|
40
|
-
const list = new SortedContactList(item0.getPeerId(), 10)
|
|
40
|
+
const list = new SortedContactList({ referenceId: item0.getPeerId(), maxSize: 10, allowToContainReferenceId: false, emitEvents: false })
|
|
41
41
|
list.addContact(item3)
|
|
42
42
|
list.addContact(item2)
|
|
43
43
|
list.addContact(item1)
|
|
@@ -49,7 +49,7 @@ describe('SortedContactList', () => {
|
|
|
49
49
|
})
|
|
50
50
|
|
|
51
51
|
it('cannot exceed maxSize', async () => {
|
|
52
|
-
const list = new SortedContactList(item0.getPeerId(), 3)
|
|
52
|
+
const list = new SortedContactList({ referenceId: item0.getPeerId(), maxSize: 3, allowToContainReferenceId: false, emitEvents: true })
|
|
53
53
|
const onContactRemoved = jest.fn()
|
|
54
54
|
list.on('contactRemoved', onContactRemoved)
|
|
55
55
|
list.addContact(item1)
|
|
@@ -62,7 +62,7 @@ describe('SortedContactList', () => {
|
|
|
62
62
|
})
|
|
63
63
|
|
|
64
64
|
it('removing contacts', async () => {
|
|
65
|
-
const list = new SortedContactList(item0.getPeerId(), 8)
|
|
65
|
+
const list = new SortedContactList({ referenceId: item0.getPeerId(), maxSize: 8, allowToContainReferenceId: false, emitEvents: true })
|
|
66
66
|
const onContactRemoved = jest.fn()
|
|
67
67
|
list.on('contactRemoved', onContactRemoved)
|
|
68
68
|
list.addContact(item4)
|
|
@@ -79,8 +79,13 @@ describe('SortedContactList', () => {
|
|
|
79
79
|
expect(ret).toEqual(false)
|
|
80
80
|
})
|
|
81
81
|
|
|
82
|
-
it('get
|
|
83
|
-
const list = new SortedContactList(
|
|
82
|
+
it('get closest contacts', () => {
|
|
83
|
+
const list = new SortedContactList({
|
|
84
|
+
referenceId: item0.getPeerId(),
|
|
85
|
+
maxSize: 8,
|
|
86
|
+
allowToContainReferenceId: false,
|
|
87
|
+
emitEvents: false
|
|
88
|
+
})
|
|
84
89
|
list.addContact(item1)
|
|
85
90
|
list.addContact(item3)
|
|
86
91
|
list.addContact(item4)
|
|
@@ -90,7 +95,7 @@ describe('SortedContactList', () => {
|
|
|
90
95
|
})
|
|
91
96
|
|
|
92
97
|
it('get active contacts', () => {
|
|
93
|
-
const list = new SortedContactList(item0.getPeerId(), 8)
|
|
98
|
+
const list = new SortedContactList({ referenceId: item0.getPeerId(), maxSize: 8, allowToContainReferenceId: false, emitEvents: false })
|
|
94
99
|
list.addContact(item1)
|
|
95
100
|
list.addContact(item3)
|
|
96
101
|
list.addContact(item4)
|