@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.
Files changed (107) hide show
  1. package/dist/src/connection/ConnectionLockRpcRemote.js +1 -25
  2. package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -1
  3. package/dist/src/connection/ConnectionManager.d.ts +0 -1
  4. package/dist/src/connection/ConnectionManager.js +7 -6
  5. package/dist/src/connection/ConnectionManager.js.map +1 -1
  6. package/dist/src/connection/ConnectorFacade.d.ts +2 -2
  7. package/dist/src/connection/ConnectorFacade.js +1 -2
  8. package/dist/src/connection/ConnectorFacade.js.map +1 -1
  9. package/dist/src/connection/connectivityChecker.js +3 -2
  10. package/dist/src/connection/connectivityChecker.js.map +1 -1
  11. package/dist/src/connection/websocket/ClientWebsocket.d.ts +1 -0
  12. package/dist/src/connection/websocket/ClientWebsocket.js +6 -3
  13. package/dist/src/connection/websocket/ClientWebsocket.js.map +1 -1
  14. package/dist/src/connection/websocket/ServerWebsocket.d.ts +4 -0
  15. package/dist/src/connection/websocket/ServerWebsocket.js +32 -21
  16. package/dist/src/connection/websocket/ServerWebsocket.js.map +1 -1
  17. package/dist/src/connection/websocket/WebsocketConnector.d.ts +0 -1
  18. package/dist/src/connection/websocket/WebsocketConnector.js +21 -10
  19. package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -1
  20. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.d.ts +1 -1
  21. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js +8 -11
  22. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js.map +1 -1
  23. package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.d.ts +2 -2
  24. package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js +3 -37
  25. package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js.map +1 -1
  26. package/dist/src/connection/websocket/WebsocketServer.js +21 -4
  27. package/dist/src/connection/websocket/WebsocketServer.js.map +1 -1
  28. package/dist/src/dht/DhtNode.d.ts +4 -4
  29. package/dist/src/dht/DhtNode.js +30 -19
  30. package/dist/src/dht/DhtNode.js.map +1 -1
  31. package/dist/src/dht/DhtNodeRpcLocal.d.ts +1 -4
  32. package/dist/src/dht/DhtNodeRpcLocal.js +1 -5
  33. package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -1
  34. package/dist/src/dht/PeerManager.d.ts +10 -6
  35. package/dist/src/dht/PeerManager.js +95 -30
  36. package/dist/src/dht/PeerManager.js.map +1 -1
  37. package/dist/src/dht/contact/SortedContactList.d.ts +20 -6
  38. package/dist/src/dht/contact/SortedContactList.js +55 -24
  39. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  40. package/dist/src/dht/discovery/DiscoverySession.d.ts +2 -5
  41. package/dist/src/dht/discovery/DiscoverySession.js +12 -9
  42. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  43. package/dist/src/dht/discovery/PeerDiscovery.d.ts +1 -1
  44. package/dist/src/dht/discovery/PeerDiscovery.js +4 -10
  45. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  46. package/dist/src/dht/find/FindSession.js +6 -1
  47. package/dist/src/dht/find/FindSession.js.map +1 -1
  48. package/dist/src/dht/find/Finder.js +6 -1
  49. package/dist/src/dht/find/Finder.js.map +1 -1
  50. package/dist/src/dht/routing/Router.d.ts +1 -1
  51. package/dist/src/dht/routing/Router.js +8 -4
  52. package/dist/src/dht/routing/Router.js.map +1 -1
  53. package/dist/src/dht/routing/RoutingSession.js +8 -1
  54. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  55. package/dist/src/dht/store/StoreRpcLocal.js +19 -5
  56. package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
  57. package/dist/src/helpers/PeerID.d.ts +1 -0
  58. package/dist/src/helpers/PeerID.js +7 -2
  59. package/dist/src/helpers/PeerID.js.map +1 -1
  60. package/dist/src/helpers/peerIdFromPeerDescriptor.js +2 -2
  61. package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
  62. package/package.json +5 -5
  63. package/src/connection/ConnectionLockRpcRemote.ts +1 -2
  64. package/src/connection/ConnectionManager.ts +16 -17
  65. package/src/connection/ConnectorFacade.ts +0 -3
  66. package/src/connection/connectivityChecker.ts +3 -2
  67. package/src/connection/websocket/ClientWebsocket.ts +5 -2
  68. package/src/connection/websocket/ServerWebsocket.ts +40 -25
  69. package/src/connection/websocket/WebsocketConnector.ts +23 -12
  70. package/src/connection/websocket/WebsocketConnectorRpcLocal.ts +9 -11
  71. package/src/connection/websocket/WebsocketConnectorRpcRemote.ts +5 -14
  72. package/src/connection/websocket/WebsocketServer.ts +20 -5
  73. package/src/dht/DhtNode.ts +31 -21
  74. package/src/dht/DhtNodeRpcLocal.ts +2 -9
  75. package/src/dht/PeerManager.ts +110 -36
  76. package/src/dht/contact/SortedContactList.ts +87 -44
  77. package/src/dht/discovery/DiscoverySession.ts +14 -14
  78. package/src/dht/discovery/PeerDiscovery.ts +9 -16
  79. package/src/dht/find/FindSession.ts +6 -1
  80. package/src/dht/find/Finder.ts +6 -7
  81. package/src/dht/routing/Router.ts +8 -4
  82. package/src/dht/routing/RoutingSession.ts +8 -8
  83. package/src/dht/store/StoreRpcLocal.ts +19 -7
  84. package/src/helpers/PeerID.ts +6 -2
  85. package/src/helpers/peerIdFromPeerDescriptor.ts +4 -4
  86. package/test/benchmark/Find.test.ts +1 -1
  87. package/test/benchmark/KademliaCorrectness.test.ts +1 -1
  88. package/test/benchmark/SortedContactListBenchmark.test.ts +150 -0
  89. package/test/benchmark/WebsocketServerMemoryLeak.test.ts +41 -0
  90. package/test/benchmark/kademlia-simulation/SimulationNode.ts +6 -1
  91. package/test/end-to-end/Layer0.test.ts +4 -4
  92. package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +10 -10
  93. package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +4 -4
  94. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +2 -2
  95. package/test/end-to-end/Layer1-Scale-Webrtc.test.ts +2 -2
  96. package/test/end-to-end/RecoveryFromFailedAutoCertification.test.ts +1 -1
  97. package/test/end-to-end/memory-leak.test.ts +1 -0
  98. package/test/integration/DhtJoinPeerDiscovery.test.ts +2 -2
  99. package/test/integration/Layer1-scale.test.ts +1 -1
  100. package/test/integration/Mock-Layer1-Layer0.test.ts +15 -15
  101. package/test/integration/MultipleEntryPointJoining.test.ts +7 -7
  102. package/test/integration/ReplicateData.test.ts +6 -1
  103. package/test/integration/SimultaneousConnections.test.ts +81 -49
  104. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +1 -1
  105. package/test/integration/WebsocketConnectionManagement.test.ts +41 -3
  106. package/test/integration/WebsocketConnectorRpc.test.ts +3 -5
  107. 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 simulatorTransport1: SimulatorTransport
24
- let simulatorTransport2: SimulatorTransport
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
- simulatorTransport1 = new SimulatorTransport(peerDescriptor1, simulator)
49
- await simulatorTransport1.start()
50
- simulatorTransport2 = new SimulatorTransport(peerDescriptor2, simulator)
51
- await simulatorTransport2.start()
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 simulatorTransport1.stop()
56
- await simulatorTransport2.stop()
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
- simulatorTransport1.on('message', async (message: Message) => {
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
- simulatorTransport2.on('message', async (message: Message) => {
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
- simulatorTransport1.send(msg1),
85
- simulatorTransport2.send(msg2)
84
+ simTransport1.send(msg1),
85
+ simTransport2.send(msg2)
86
86
  ])
87
- await waitForCondition(() => simulatorTransport2.hasConnection(peerDescriptor1))
88
- await waitForCondition(() => simulatorTransport1.hasConnection(peerDescriptor2))
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 wsPeer1: PeerDescriptor = {
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 wsPeer2: PeerDescriptor = {
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(wsPeer1, {
119
- transport: simulatorTransport1,
129
+ connectionManager1 = createConnectionManager(wsPeerDescriptor1, {
130
+ transport: simTransport1,
120
131
  websocketPortRange,
121
- entryPoints: [wsPeer1],
132
+ entryPoints: [wsPeerDescriptor1],
122
133
  websocketServerEnableTls: false
123
134
  })
124
- connectionManager2 = createConnectionManager(wsPeer2, {
125
- transport: simulatorTransport2,
135
+ connectionManager2 = createConnectionManager(wsPeerDescriptor2, {
136
+ transport: simTransport2,
126
137
  websocketPortRange,
127
- entryPoints: [wsPeer1],
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: wsPeer2
155
+ targetDescriptor: wsPeerDescriptor2
143
156
  }
144
157
  const msg2: Message = {
145
158
  ...baseMsg,
146
- targetDescriptor: wsPeer1
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(wsPeer2))
170
- await waitForCondition(() => connectionManager2.hasConnection(wsPeer1))
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 wsPeer1: PeerDescriptor = {
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 wsPeer2: PeerDescriptor = {
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
- connectionManager1 = createConnectionManager(wsPeer1, {
196
- transport: simulatorTransport1,
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: [wsPeer1],
219
+ entryPoints: [wsPeerDescriptor1],
199
220
  websocketServerEnableTls: false
200
221
  })
201
- connectionManager2 = createConnectionManager(wsPeer2, {
202
- transport: simulatorTransport2
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: wsPeer2
239
+ targetDescriptor: wsPeerDescriptor2
217
240
  }
218
241
  const msg2: Message = {
219
242
  ...baseMsg,
220
- targetDescriptor: wsPeer1
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(wsPeer2))
244
- await waitForCondition(() => connectionManager2.hasConnection(wsPeer1))
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 wrtcPeer1: PeerDescriptor = {
278
+ const wrtcPeerDescriptor1: PeerDescriptor = {
254
279
  nodeId: PeerID.fromString('mock1').value,
255
280
  type: NodeType.NODEJS
256
281
  }
257
282
 
258
- const wrtcPeer2: PeerDescriptor = {
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
- connectionManager1 = createConnectionManager(wrtcPeer1, {
265
- transport: simulatorTransport1,
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(wrtcPeer2, {
268
- transport: simulatorTransport2,
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: wrtcPeer2
314
+ targetDescriptor: wrtcPeerDescriptor2
283
315
  }
284
316
  const msg2: Message = {
285
317
  ...baseMsg,
286
- targetDescriptor: wrtcPeer1
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(wrtcPeer2))
310
- await waitForCondition(() => connectionManager2.hasConnection(wrtcPeer1))
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.getBucketSize() === 0)
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('peerWithServer').value,
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('peerWithoutServer').value,
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
- const res1 = await response1
71
- expect(res1.accepted).toEqual(true)
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
- const res2 = await response2
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 closes contacts', () => {
83
- const list = new SortedContactList(item0.getPeerId(), 8)
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)