@streamr/dht 0.0.1-tatum.6 → 0.0.1-tatum.7

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 (196) hide show
  1. package/dist/src/connection/ConnectionLockHandler.d.ts +1 -1
  2. package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
  3. package/dist/src/connection/ConnectionManager.d.ts +17 -40
  4. package/dist/src/connection/ConnectionManager.js +138 -204
  5. package/dist/src/connection/ConnectionManager.js.map +1 -1
  6. package/dist/src/connection/ConnectivityChecker.js +14 -11
  7. package/dist/src/connection/ConnectivityChecker.js.map +1 -1
  8. package/dist/src/connection/ConnectorFacade.d.ts +49 -0
  9. package/dist/src/connection/ConnectorFacade.js +86 -0
  10. package/dist/src/connection/ConnectorFacade.js.map +1 -0
  11. package/dist/src/connection/ManagedConnection.d.ts +1 -4
  12. package/dist/src/connection/ManagedConnection.js +23 -31
  13. package/dist/src/connection/ManagedConnection.js.map +1 -1
  14. package/dist/src/connection/RemoteConnectionLocker.js +4 -3
  15. package/dist/src/connection/RemoteConnectionLocker.js.map +1 -1
  16. package/dist/src/connection/Simulator/Simulator.d.ts +0 -2
  17. package/dist/src/connection/Simulator/Simulator.js +0 -5
  18. package/dist/src/connection/Simulator/Simulator.js.map +1 -1
  19. package/dist/src/connection/Simulator/SimulatorConnection.js +16 -13
  20. package/dist/src/connection/Simulator/SimulatorConnection.js.map +1 -1
  21. package/dist/src/connection/Simulator/SimulatorConnector.d.ts +2 -2
  22. package/dist/src/connection/Simulator/SimulatorConnector.js +10 -11
  23. package/dist/src/connection/Simulator/SimulatorConnector.js.map +1 -1
  24. package/dist/src/connection/Simulator/SimulatorTransport.js +6 -1
  25. package/dist/src/connection/Simulator/SimulatorTransport.js.map +1 -1
  26. package/dist/src/connection/WebRTC/NodeWebRtcConnection.d.ts +2 -0
  27. package/dist/src/connection/WebRTC/NodeWebRtcConnection.js +12 -12
  28. package/dist/src/connection/WebRTC/NodeWebRtcConnection.js.map +1 -1
  29. package/dist/src/connection/WebRTC/WebRtcConnector.d.ts +9 -9
  30. package/dist/src/connection/WebRTC/WebRtcConnector.js +22 -22
  31. package/dist/src/connection/WebRTC/WebRtcConnector.js.map +1 -1
  32. package/dist/src/connection/WebSocket/RemoteWebSocketConnector.js +2 -1
  33. package/dist/src/connection/WebSocket/RemoteWebSocketConnector.js.map +1 -1
  34. package/dist/src/connection/WebSocket/WebSocketConnector.d.ts +19 -8
  35. package/dist/src/connection/WebSocket/WebSocketConnector.js +67 -46
  36. package/dist/src/connection/WebSocket/WebSocketConnector.js.map +1 -1
  37. package/dist/src/connection/WebSocket/WebSocketServer.d.ts +11 -1
  38. package/dist/src/connection/WebSocket/WebSocketServer.js +15 -10
  39. package/dist/src/connection/WebSocket/WebSocketServer.js.map +1 -1
  40. package/dist/src/dht/DhtNode.d.ts +15 -51
  41. package/dist/src/dht/DhtNode.js +107 -129
  42. package/dist/src/dht/DhtNode.js.map +1 -1
  43. package/dist/src/dht/{DhtPeer.d.ts → RemoteDhtNode.d.ts} +2 -3
  44. package/dist/src/dht/{DhtPeer.js → RemoteDhtNode.js} +21 -19
  45. package/dist/src/dht/RemoteDhtNode.js.map +1 -0
  46. package/dist/src/dht/contact/ContactList.d.ts +0 -1
  47. package/dist/src/dht/contact/ContactList.js +0 -3
  48. package/dist/src/dht/contact/ContactList.js.map +1 -1
  49. package/dist/src/dht/contact/RandomContactList.d.ts +0 -1
  50. package/dist/src/dht/contact/RandomContactList.js +0 -3
  51. package/dist/src/dht/contact/RandomContactList.js.map +1 -1
  52. package/dist/src/dht/contact/SortedContactList.d.ts +0 -3
  53. package/dist/src/dht/contact/SortedContactList.js +0 -9
  54. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  55. package/dist/src/dht/discovery/DiscoverySession.d.ts +5 -7
  56. package/dist/src/dht/discovery/DiscoverySession.js +9 -10
  57. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  58. package/dist/src/dht/discovery/PeerDiscovery.d.ts +11 -10
  59. package/dist/src/dht/discovery/PeerDiscovery.js +32 -37
  60. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  61. package/dist/src/dht/find/RecursiveFindSession.d.ts +5 -6
  62. package/dist/src/dht/find/RecursiveFindSession.js +8 -8
  63. package/dist/src/dht/find/RecursiveFindSession.js.map +1 -1
  64. package/dist/src/dht/find/RecursiveFinder.d.ts +2 -4
  65. package/dist/src/dht/find/RecursiveFinder.js +11 -12
  66. package/dist/src/dht/find/RecursiveFinder.js.map +1 -1
  67. package/dist/src/dht/registerExternalApiRpcMethods.d.ts +1 -1
  68. package/dist/src/dht/routing/DuplicateDetector.d.ts +1 -2
  69. package/dist/src/dht/routing/DuplicateDetector.js +2 -7
  70. package/dist/src/dht/routing/DuplicateDetector.js.map +1 -1
  71. package/dist/src/dht/routing/RemoteRouter.js +1 -1
  72. package/dist/src/dht/routing/RemoteRouter.js.map +1 -1
  73. package/dist/src/dht/routing/Router.d.ts +10 -13
  74. package/dist/src/dht/routing/Router.js +28 -29
  75. package/dist/src/dht/routing/Router.js.map +1 -1
  76. package/dist/src/dht/routing/RoutingSession.d.ts +3 -4
  77. package/dist/src/dht/routing/RoutingSession.js +4 -3
  78. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  79. package/dist/src/dht/store/DataStore.d.ts +2 -2
  80. package/dist/src/dht/store/DataStore.js +7 -7
  81. package/dist/src/dht/store/DataStore.js.map +1 -1
  82. package/dist/src/exports.d.ts +1 -7
  83. package/dist/src/exports.js +2 -14
  84. package/dist/src/exports.js.map +1 -1
  85. package/dist/src/helpers/PeerID.d.ts +0 -1
  86. package/dist/src/helpers/PeerID.js +0 -6
  87. package/dist/src/helpers/PeerID.js.map +1 -1
  88. package/dist/src/helpers/browser/isBrowserEnvironment.d.ts +1 -0
  89. package/dist/src/helpers/browser/isBrowserEnvironment.js +6 -0
  90. package/dist/src/helpers/browser/isBrowserEnvironment.js.map +1 -0
  91. package/dist/src/helpers/browser/isBrowserEnvironment_override.d.ts +1 -0
  92. package/dist/src/helpers/browser/isBrowserEnvironment_override.js +7 -0
  93. package/dist/src/helpers/browser/isBrowserEnvironment_override.js.map +1 -0
  94. package/dist/src/helpers/kademliaId.d.ts +1 -0
  95. package/dist/src/helpers/kademliaId.js +14 -0
  96. package/dist/src/helpers/kademliaId.js.map +1 -0
  97. package/dist/src/helpers/peerIdFromPeerDescriptor.d.ts +1 -1
  98. package/dist/src/helpers/peerIdFromPeerDescriptor.js +3 -3
  99. package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
  100. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +0 -4
  101. package/dist/src/proto/packages/dht/protos/DhtRpc.js +1 -2
  102. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  103. package/package.json +10 -9
  104. package/protos/DhtRpc.proto +0 -1
  105. package/src/connection/ConnectionLockHandler.ts +1 -1
  106. package/src/connection/ConnectionManager.ts +157 -254
  107. package/src/connection/ConnectivityChecker.ts +14 -11
  108. package/src/connection/ConnectorFacade.ts +143 -0
  109. package/src/connection/ManagedConnection.ts +23 -34
  110. package/src/connection/RemoteConnectionLocker.ts +4 -3
  111. package/src/connection/Simulator/Simulator.ts +0 -7
  112. package/src/connection/Simulator/SimulatorConnection.ts +16 -13
  113. package/src/connection/Simulator/SimulatorConnector.ts +11 -12
  114. package/src/connection/Simulator/SimulatorTransport.ts +6 -1
  115. package/src/connection/WebRTC/NodeWebRtcConnection.ts +14 -13
  116. package/src/connection/WebRTC/WebRtcConnector.ts +31 -31
  117. package/src/connection/WebSocket/RemoteWebSocketConnector.ts +2 -1
  118. package/src/connection/WebSocket/WebSocketConnector.ts +85 -62
  119. package/src/connection/WebSocket/WebSocketServer.ts +26 -8
  120. package/src/dht/DhtNode.ts +155 -181
  121. package/src/dht/{DhtPeer.ts → RemoteDhtNode.ts} +11 -9
  122. package/src/dht/contact/ContactList.ts +0 -4
  123. package/src/dht/contact/RandomContactList.ts +0 -4
  124. package/src/dht/contact/SortedContactList.ts +0 -12
  125. package/src/dht/discovery/DiscoverySession.ts +20 -23
  126. package/src/dht/discovery/PeerDiscovery.ts +45 -44
  127. package/src/dht/find/RecursiveFindSession.ts +12 -13
  128. package/src/dht/find/RecursiveFinder.ts +16 -19
  129. package/src/dht/registerExternalApiRpcMethods.ts +1 -1
  130. package/src/dht/routing/DuplicateDetector.ts +3 -10
  131. package/src/dht/routing/RemoteRouter.ts +2 -2
  132. package/src/dht/routing/Router.ts +35 -39
  133. package/src/dht/routing/RoutingSession.ts +9 -9
  134. package/src/dht/store/DataStore.ts +11 -11
  135. package/src/exports.ts +1 -7
  136. package/src/helpers/PeerID.ts +0 -7
  137. package/src/helpers/browser/isBrowserEnvironment.ts +1 -0
  138. package/src/helpers/browser/isBrowserEnvironment_override.ts +3 -0
  139. package/src/helpers/kademliaId.ts +8 -0
  140. package/src/helpers/peerIdFromPeerDescriptor.ts +1 -1
  141. package/src/proto/packages/dht/protos/DhtRpc.ts +1 -6
  142. package/test/benchmark/KademliaCorrectness.test.ts +4 -2
  143. package/test/benchmark/RecursiveFind.test.ts +6 -6
  144. package/test/end-to-end/Layer0-Layer1.test.ts +9 -9
  145. package/test/end-to-end/Layer0WebRTC-Layer1.test.ts +5 -5
  146. package/test/end-to-end/Layer0WebRTC.test.ts +5 -6
  147. package/test/end-to-end/Layer1-Scale-WebRTC.test.ts +13 -8
  148. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +15 -10
  149. package/test/end-to-end/WebSocketConnectionRequest.test.ts +5 -5
  150. package/test/integration/ConnectionLocking.test.ts +32 -26
  151. package/test/integration/ConnectionManager.test.ts +90 -93
  152. package/test/integration/DhtJoinPeerDiscovery.test.ts +53 -0
  153. package/test/integration/DhtRpc.test.ts +4 -6
  154. package/test/integration/Layer1-scale.test.ts +8 -8
  155. package/test/integration/MigrateData.test.ts +9 -9
  156. package/test/integration/Mock-Layer1-Layer0.test.ts +1 -2
  157. package/test/integration/RecursiveFind.test.ts +5 -5
  158. package/test/integration/{DhtPeer.test.ts → RemoteDhtNode.test.ts} +11 -12
  159. package/test/integration/RemoteRouter.test.ts +5 -6
  160. package/test/integration/RemoteStore.test.ts +4 -5
  161. package/test/integration/RouteMessage.test.ts +7 -9
  162. package/test/integration/RpcErrors.test.ts +25 -10
  163. package/test/integration/ScaleDownDht.test.ts +8 -8
  164. package/test/integration/SimultaneousConnections.test.ts +35 -36
  165. package/test/integration/Store.test.ts +8 -9
  166. package/test/integration/StoreAndDelete.test.ts +11 -11
  167. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +7 -7
  168. package/test/integration/WebRtcConnectionManagement.test.ts +26 -19
  169. package/test/integration/WebRtcConnectorRpc.test.ts +6 -8
  170. package/test/integration/WebSocket.test.ts +4 -2
  171. package/test/integration/WebSocketConnectionManagement.test.ts +30 -17
  172. package/test/integration/WebSocketConnectorRpc.test.ts +2 -3
  173. package/test/unit/DuplicateDetector.test.ts +3 -4
  174. package/test/unit/LocalDataStore.test.ts +6 -8
  175. package/test/unit/RandomContactList.test.ts +1 -1
  176. package/test/unit/RecursiveFinder.test.ts +8 -12
  177. package/test/unit/Router.test.ts +18 -21
  178. package/test/unit/WebSocketConnector.test.ts +64 -0
  179. package/test/unit/WebSocketServer.test.ts +24 -12
  180. package/test/utils/mock/RecursiveFinder.ts +2 -2
  181. package/test/utils/mock/Router.ts +9 -11
  182. package/test/utils/mock/Transport.ts +2 -2
  183. package/test/utils/utils.ts +40 -49
  184. package/dist/src/dht/DhtPeer.js.map +0 -1
  185. package/dist/src/helpers/browser/isBrowser.d.ts +0 -1
  186. package/dist/src/helpers/browser/isBrowser.js +0 -6
  187. package/dist/src/helpers/browser/isBrowser.js.map +0 -1
  188. package/dist/src/helpers/browser/isNodeJS.d.ts +0 -1
  189. package/dist/src/helpers/browser/isNodeJS.js +0 -6
  190. package/dist/src/helpers/browser/isNodeJS.js.map +0 -1
  191. package/src/helpers/browser/isBrowser.ts +0 -1
  192. package/src/helpers/browser/isNodeJS.ts +0 -1
  193. package/test/integration/DhtWithMockConnectionLatencies.test.ts +0 -46
  194. package/test/integration/DhtWithMockConnections.test.ts +0 -46
  195. package/test/integration/DhtWithRealConnectionLatencies.test.ts +0 -47
  196. /package/test/unit/{webrtcReplaceInternalIpWithExternalIp.ts → webrtcReplaceInternalIpWithExternalIp.test.ts} +0 -0
@@ -8,7 +8,6 @@ import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/Dh
8
8
  describe('Layer0 with WebRTC connections', () => {
9
9
  const epPeerDescriptor: PeerDescriptor = {
10
10
  kademliaId: PeerID.fromString('entrypoint').value,
11
- nodeName: 'entrypoint',
12
11
  type: NodeType.NODEJS,
13
12
  websocket: { host: '127.0.0.1', port: 10029, tls: false }
14
13
  }
@@ -20,15 +19,15 @@ describe('Layer0 with WebRTC connections', () => {
20
19
 
21
20
  beforeEach(async () => {
22
21
 
23
- epDhtNode = new DhtNode({ peerDescriptor: epPeerDescriptor, nodeName: 'entrypoint', numberOfNodesPerKBucket: 8 })
22
+ epDhtNode = new DhtNode({ peerDescriptor: epPeerDescriptor, numberOfNodesPerKBucket: 8 })
24
23
  await epDhtNode.start()
25
24
 
26
25
  await epDhtNode.joinDht([epPeerDescriptor])
27
26
 
28
- node1 = new DhtNode({ nodeName: 'Peer0', entryPoints: [epPeerDescriptor] })
29
- node2 = new DhtNode({ nodeName: 'Peer1', entryPoints: [epPeerDescriptor] })
30
- node3 = new DhtNode({ nodeName: 'Peer2', entryPoints: [epPeerDescriptor] })
31
- node4 = new DhtNode({ nodeName: 'Peer3', entryPoints: [epPeerDescriptor] })
27
+ node1 = new DhtNode({ entryPoints: [epPeerDescriptor] })
28
+ node2 = new DhtNode({ entryPoints: [epPeerDescriptor] })
29
+ node3 = new DhtNode({ entryPoints: [epPeerDescriptor] })
30
+ node4 = new DhtNode({ entryPoints: [epPeerDescriptor] })
32
31
 
33
32
  await Promise.all([
34
33
  node1.start(),
@@ -2,12 +2,13 @@ import { DhtNode } from '../../src/dht/DhtNode'
2
2
  import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
3
3
  import { PeerID } from '../../src/helpers/PeerID'
4
4
 
5
+ const NUM_OF_NODES_PER_KBUCKET = 8
6
+
5
7
  describe('Layer1 Scale', () => {
6
8
  const epPeerDescriptor: PeerDescriptor = {
7
9
  kademliaId: PeerID.fromString('0').value,
8
10
  type: NodeType.NODEJS,
9
- websocket: { host: '127.0.0.1', port: 43228, tls: false },
10
- nodeName: 'entrypoint'
11
+ websocket: { host: '127.0.0.1', port: 43228, tls: false }
11
12
  }
12
13
 
13
14
  const STREAM_ID = 'stream'
@@ -26,7 +27,7 @@ describe('Layer1 Scale', () => {
26
27
  await epLayer0Node.start()
27
28
  await epLayer0Node.joinDht([epPeerDescriptor])
28
29
 
29
- epLayer1Node = new DhtNode({ transportLayer: epLayer0Node, peerDescriptor: epPeerDescriptor, serviceId: STREAM_ID })
30
+ epLayer1Node = new DhtNode({ transport: epLayer0Node, peerDescriptor: epPeerDescriptor, serviceId: STREAM_ID })
30
31
  await epLayer1Node.start()
31
32
  await epLayer1Node.joinDht([epPeerDescriptor])
32
33
 
@@ -34,15 +35,19 @@ describe('Layer1 Scale', () => {
34
35
  layer1Nodes = []
35
36
 
36
37
  for (let i = 1; i < NUM_OF_NODES; i++) {
37
- const node = new DhtNode({ nodeName: `${i}`, entryPoints: [epPeerDescriptor] })
38
+ const node = new DhtNode({
39
+ entryPoints: [epPeerDescriptor],
40
+ numberOfNodesPerKBucket: NUM_OF_NODES_PER_KBUCKET
41
+ })
38
42
  await node.start()
39
43
  layer0Nodes.push(node)
40
44
  const layer1 = new DhtNode({
41
- transportLayer: node,
45
+ transport: node,
42
46
  entryPoints: [epPeerDescriptor],
43
47
  peerDescriptor: node.getPeerDescriptor(),
44
48
  serviceId: STREAM_ID,
45
- rpcRequestTimeout: 5000
49
+ rpcRequestTimeout: 5000,
50
+ numberOfNodesPerKBucket: NUM_OF_NODES_PER_KBUCKET
46
51
  })
47
52
  await layer1.start()
48
53
  layer1Nodes.push(layer1)
@@ -60,10 +65,10 @@ describe('Layer1 Scale', () => {
60
65
 
61
66
  it('bucket sizes', async () => {
62
67
  layer0Nodes.forEach((node) => {
63
- expect(node.getBucketSize()).toBeGreaterThanOrEqual(node.getK() - 1)
68
+ expect(node.getBucketSize()).toBeGreaterThanOrEqual(NUM_OF_NODES_PER_KBUCKET - 1)
64
69
  })
65
70
  layer1Nodes.forEach((node) => {
66
- expect(node.getBucketSize()).toBeGreaterThanOrEqual(node.getK() / 2)
71
+ expect(node.getBucketSize()).toBeGreaterThanOrEqual(NUM_OF_NODES_PER_KBUCKET / 2)
67
72
  })
68
73
  })
69
74
  })
@@ -2,12 +2,13 @@ import { DhtNode } from '../../src/dht/DhtNode'
2
2
  import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
3
3
  import { PeerID } from '../../src/helpers/PeerID'
4
4
 
5
+ const NUM_OF_NODES_PER_KBUCKET = 8
6
+
5
7
  describe('Layer1 Scale', () => {
6
8
  const epPeerDescriptor: PeerDescriptor = {
7
9
  kademliaId: PeerID.fromString('entrypoint').value,
8
10
  type: NodeType.NODEJS,
9
- websocket: { host: '127.0.0.1', port: 43225, tls: false },
10
- nodeName: 'entrypoint'
11
+ websocket: { host: '127.0.0.1', port: 43225, tls: false }
11
12
  }
12
13
 
13
14
  const STREAM_ID = 'stream'
@@ -24,11 +25,11 @@ describe('Layer1 Scale', () => {
24
25
  const websocketPortRange = { min: 62200, max: 62200 + NUM_OF_NODES }
25
26
 
26
27
  beforeEach(async () => {
27
- epLayer0Node = new DhtNode({ peerDescriptor: epPeerDescriptor, nodeName: 'entrypoint' })
28
+ epLayer0Node = new DhtNode({ peerDescriptor: epPeerDescriptor })
28
29
  await epLayer0Node.start()
29
30
  await epLayer0Node.joinDht([epPeerDescriptor])
30
31
 
31
- epLayer1Node = new DhtNode({ transportLayer: epLayer0Node, peerDescriptor: epPeerDescriptor, serviceId: STREAM_ID, nodeName: 'entrypoint' })
32
+ epLayer1Node = new DhtNode({ transport: epLayer0Node, peerDescriptor: epPeerDescriptor, serviceId: STREAM_ID })
32
33
  await epLayer1Node.start()
33
34
  await epLayer1Node.joinDht([epPeerDescriptor])
34
35
 
@@ -36,15 +37,19 @@ describe('Layer1 Scale', () => {
36
37
  layer1Nodes = []
37
38
 
38
39
  for (let i = 0; i < NUM_OF_NODES; i++) {
39
- const node = new DhtNode({ nodeName: `${i}`, websocketPortRange, entryPoints: [epPeerDescriptor] })
40
+ const node = new DhtNode({
41
+ websocketPortRange,
42
+ entryPoints: [epPeerDescriptor],
43
+ numberOfNodesPerKBucket: NUM_OF_NODES_PER_KBUCKET
44
+ })
40
45
  await node.start()
41
46
  layer0Nodes.push(node)
42
47
  const layer1 = new DhtNode({
43
- nodeName: `${i}`,
44
- transportLayer: node,
48
+ transport: node,
45
49
  entryPoints: [epPeerDescriptor],
46
50
  peerDescriptor: node.getPeerDescriptor(),
47
- serviceId: STREAM_ID
51
+ serviceId: STREAM_ID,
52
+ numberOfNodesPerKBucket: NUM_OF_NODES_PER_KBUCKET
48
53
  })
49
54
  await layer1.start()
50
55
  layer1Nodes.push(layer1)
@@ -66,10 +71,10 @@ describe('Layer1 Scale', () => {
66
71
  // TODO: fix flaky test in NET-1021
67
72
  it('bucket sizes', async () => {
68
73
  layer0Nodes.forEach((node) => {
69
- expect(node.getBucketSize()).toBeGreaterThanOrEqual(node.getK() - 1)
74
+ expect(node.getBucketSize()).toBeGreaterThanOrEqual(NUM_OF_NODES_PER_KBUCKET - 1)
70
75
  })
71
76
  layer1Nodes.forEach((node ) => {
72
- expect(node.getBucketSize()).toBeGreaterThanOrEqual(node.getK() / 2)
77
+ expect(node.getBucketSize()).toBeGreaterThanOrEqual(NUM_OF_NODES_PER_KBUCKET / 2)
73
78
  })
74
79
  })
75
80
  })
@@ -3,7 +3,7 @@ import { DhtNode } from '../../src/dht/DhtNode'
3
3
  import { ConnectionManager } from '../../src/connection/ConnectionManager'
4
4
  import { PeerID } from '../../src/helpers/PeerID'
5
5
  import { waitForCondition } from '@streamr/utils'
6
- import { isSamePeerDescriptor } from '../../src/helpers/peerIdFromPeerDescriptor'
6
+ import { areEqualPeerDescriptors } from '../../src/helpers/peerIdFromPeerDescriptor'
7
7
 
8
8
  describe('WebSocket IConnection Requests', () => {
9
9
  const epPeerDescriptor: PeerDescriptor = {
@@ -22,8 +22,8 @@ describe('WebSocket IConnection Requests', () => {
22
22
 
23
23
  await epDhtNode.joinDht([epPeerDescriptor])
24
24
 
25
- node1 = new DhtNode({ nodeName: 'node1', websocketPortRange: { min: 10022, max: 10022 }, entryPoints: [epPeerDescriptor] })
26
- node2 = new DhtNode({ nodeName: 'node2', entryPoints: [epPeerDescriptor] })
25
+ node1 = new DhtNode({ websocketPortRange: { min: 10022, max: 10022 }, entryPoints: [epPeerDescriptor] })
26
+ node2 = new DhtNode({ entryPoints: [epPeerDescriptor] })
27
27
  await node1.start()
28
28
  await node2.start()
29
29
  })
@@ -40,12 +40,12 @@ describe('WebSocket IConnection Requests', () => {
40
40
  let connected2 = false
41
41
 
42
42
  node1.on('connected', (peerDescriptor: PeerDescriptor) => {
43
- if (isSamePeerDescriptor(peerDescriptor, node2.getPeerDescriptor())) {
43
+ if (areEqualPeerDescriptors(peerDescriptor, node2.getPeerDescriptor())) {
44
44
  connected1 = true
45
45
  }
46
46
  })
47
47
  node2.on('connected', (peerDescriptor: PeerDescriptor) => {
48
- if (isSamePeerDescriptor(peerDescriptor, node1.getPeerDescriptor())) {
48
+ if (areEqualPeerDescriptors(peerDescriptor, node1.getPeerDescriptor())) {
49
49
  connected2 = true
50
50
  }
51
51
  })
@@ -1,20 +1,30 @@
1
- import { Simulator } from '../../src/connection/Simulator/Simulator'
1
+ import { MetricsContext, waitForCondition } from '@streamr/utils'
2
2
  import { ConnectionManager } from '../../src/connection/ConnectionManager'
3
- import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
4
- import { waitForCondition } from '@streamr/utils'
3
+ import { DefaultConnectorFacade } from '../../src/connection/ConnectorFacade'
4
+ import { Simulator } from '../../src/connection/Simulator/Simulator'
5
+ import { SimulatorTransport } from '../../src/connection/Simulator/SimulatorTransport'
6
+ import { ITransport } from '../../src/exports'
5
7
  import { PeerID } from '../../src/helpers/PeerID'
6
- import { SimulatorTransport } from '../../src/exports'
8
+ import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
9
+
10
+ const createConnectionManager = (ownPeerDescriptor: PeerDescriptor, transport: ITransport) => {
11
+ return new ConnectionManager({
12
+ createConnectorFacade: () => new DefaultConnectorFacade({
13
+ transport,
14
+ createOwnPeerDescriptor: () => ownPeerDescriptor
15
+ }),
16
+ metricsContext: new MetricsContext()
17
+ })
18
+ }
7
19
 
8
20
  describe('Connection Locking', () => {
9
21
 
10
22
  const mockPeerDescriptor1: PeerDescriptor = {
11
23
  kademliaId: PeerID.fromString('mock1').value,
12
- nodeName: 'mock1',
13
24
  type: NodeType.NODEJS
14
25
  }
15
26
  const mockPeerDescriptor2: PeerDescriptor = {
16
27
  kademliaId: PeerID.fromString('mock2').value,
17
- nodeName: 'mock2',
18
28
  type: NodeType.NODEJS
19
29
  }
20
30
 
@@ -29,17 +39,13 @@ describe('Connection Locking', () => {
29
39
  beforeEach(async () => {
30
40
  simulator = new Simulator()
31
41
  mockConnectorTransport1 = new SimulatorTransport(mockPeerDescriptor1, simulator)
42
+ await mockConnectorTransport1.start()
32
43
  mockConnectorTransport2 = new SimulatorTransport(mockPeerDescriptor2, simulator)
33
-
34
- connectionManager1 = new ConnectionManager({
35
- transportLayer: mockConnectorTransport1
36
- })
37
-
38
- connectionManager2 = new ConnectionManager({
39
- transportLayer: mockConnectorTransport2
40
- })
41
- await connectionManager1.start(() => mockPeerDescriptor1)
42
- await connectionManager2.start(() => mockPeerDescriptor2)
44
+ await mockConnectorTransport2.start()
45
+ connectionManager1 = createConnectionManager(mockPeerDescriptor1, mockConnectorTransport1)
46
+ connectionManager2 = createConnectionManager(mockPeerDescriptor2, mockConnectorTransport2)
47
+ await connectionManager1.start()
48
+ await connectionManager2.start()
43
49
  })
44
50
 
45
51
  afterEach(async () => {
@@ -68,7 +74,7 @@ describe('Connection Locking', () => {
68
74
  connectionManager1.lockConnection(mockPeerDescriptor2, 'testLock1')
69
75
  ])
70
76
  await Promise.all([
71
- waitForCondition(() => connectionManager2.hasRemoteLockedConnection(mockPeerDescriptor1, 'testLock2')),
77
+ waitForCondition(() => connectionManager2.hasRemoteLockedConnection(mockPeerDescriptor1)),
72
78
  connectionManager1.lockConnection(mockPeerDescriptor2, 'testLock2')
73
79
  ])
74
80
  expect(connectionManager1.hasConnection(mockPeerDescriptor2)).toEqual(true)
@@ -97,7 +103,7 @@ describe('Connection Locking', () => {
97
103
  connectionManager1.lockConnection(mockPeerDescriptor2, 'testLock1')
98
104
  ])
99
105
  await Promise.all([
100
- waitForCondition(() => connectionManager2.hasRemoteLockedConnection(mockPeerDescriptor1, 'testLock2')),
106
+ waitForCondition(() => connectionManager2.hasRemoteLockedConnection(mockPeerDescriptor1)),
101
107
  connectionManager1.lockConnection(mockPeerDescriptor2, 'testLock2')
102
108
  ])
103
109
 
@@ -125,10 +131,10 @@ describe('Connection Locking', () => {
125
131
 
126
132
  connectionManager1.unlockConnection(mockPeerDescriptor2, 'testLock1')
127
133
  await waitForCondition(() =>
128
- connectionManager1.hasRemoteLockedConnection(mockPeerDescriptor2, 'testLock1')
129
- && !connectionManager1.hasLocalLockedConnection(mockPeerDescriptor2, 'testLock1')
130
- && !connectionManager2.hasRemoteLockedConnection(mockPeerDescriptor1, 'testLock1')
131
- && connectionManager2.hasLocalLockedConnection(mockPeerDescriptor1, 'testLock1')
134
+ connectionManager1.hasRemoteLockedConnection(mockPeerDescriptor2)
135
+ && !connectionManager1.hasLocalLockedConnection(mockPeerDescriptor2)
136
+ && !connectionManager2.hasRemoteLockedConnection(mockPeerDescriptor1)
137
+ && connectionManager2.hasLocalLockedConnection(mockPeerDescriptor1)
132
138
  )
133
139
 
134
140
  expect(connectionManager2.hasConnection(mockPeerDescriptor1)).toEqual(true)
@@ -150,12 +156,12 @@ describe('Connection Locking', () => {
150
156
  await connectionManager1.gracefullyDisconnectAsync(mockPeerDescriptor2)
151
157
 
152
158
  await waitForCondition(() =>
153
- !connectionManager1.hasRemoteLockedConnection(mockPeerDescriptor2, 'testLock1')
154
- && !connectionManager1.hasLocalLockedConnection(mockPeerDescriptor2, 'testLock1')
159
+ !connectionManager1.hasRemoteLockedConnection(mockPeerDescriptor2)
160
+ && !connectionManager1.hasLocalLockedConnection(mockPeerDescriptor2)
155
161
  )
156
162
  await waitForCondition(() =>
157
- !connectionManager2.hasRemoteLockedConnection(mockPeerDescriptor1, 'testLock1')
158
- && !connectionManager2.hasLocalLockedConnection(mockPeerDescriptor1, 'testLock1')
163
+ !connectionManager2.hasRemoteLockedConnection(mockPeerDescriptor1)
164
+ && !connectionManager2.hasLocalLockedConnection(mockPeerDescriptor1)
159
165
  )
160
166
  await waitForCondition(() => !connectionManager2.hasConnection(mockPeerDescriptor1))
161
167
  await waitForCondition(() => !connectionManager1.hasConnection(mockPeerDescriptor2))