@streamr/dht 102.0.0-beta.0 → 102.0.0-beta.2

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 (264) hide show
  1. package/dist/generated/packages/dht/protos/DhtRpc.d.ts +16 -8
  2. package/dist/generated/packages/dht/protos/DhtRpc.js +7 -5
  3. package/dist/generated/packages/dht/protos/DhtRpc.js.map +1 -1
  4. package/dist/package.json +15 -16
  5. package/dist/src/connection/ConnectionManager.js +18 -8
  6. package/dist/src/connection/ConnectionManager.js.map +1 -1
  7. package/dist/src/connection/Handshaker.d.ts +1 -1
  8. package/dist/src/connection/Handshaker.js +9 -5
  9. package/dist/src/connection/Handshaker.js.map +1 -1
  10. package/dist/src/connection/ManagedConnection.js +17 -7
  11. package/dist/src/connection/ManagedConnection.js.map +1 -1
  12. package/dist/src/connection/connectivityChecker.js +20 -10
  13. package/dist/src/connection/connectivityChecker.js.map +1 -1
  14. package/dist/src/connection/connectivityRequestHandler.js +3 -3
  15. package/dist/src/connection/connectivityRequestHandler.js.map +1 -1
  16. package/dist/src/connection/simulator/Simulator.js +3 -2
  17. package/dist/src/connection/simulator/Simulator.js.map +1 -1
  18. package/dist/src/connection/simulator/pings.d.ts +1 -1
  19. package/dist/src/connection/simulator/pings.js +3 -3
  20. package/dist/src/connection/simulator/pings.js.map +1 -1
  21. package/dist/src/connection/webrtc/NodeWebrtcConnection.js +0 -2
  22. package/dist/src/connection/webrtc/NodeWebrtcConnection.js.map +1 -1
  23. package/dist/src/connection/webrtc/WebrtcConnector.js +19 -9
  24. package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -1
  25. package/dist/src/connection/webrtc/iceServerAsString.js +1 -2
  26. package/dist/src/connection/webrtc/iceServerAsString.js.map +1 -1
  27. package/dist/src/connection/websocket/AbstractWebsocketClientConnection.d.ts +0 -2
  28. package/dist/src/connection/websocket/WebsocketClientConnectorRpcLocal.d.ts +0 -1
  29. package/dist/src/connection/websocket/WebsocketServerConnection.d.ts +0 -1
  30. package/dist/src/connection/websocket/WebsocketServerConnector.js +28 -18
  31. package/dist/src/connection/websocket/WebsocketServerConnector.js.map +1 -1
  32. package/dist/src/dht/DhtNode.d.ts +1 -0
  33. package/dist/src/dht/DhtNode.js +3 -2
  34. package/dist/src/dht/DhtNode.js.map +1 -1
  35. package/dist/src/dht/DhtNodeRpcLocal.d.ts +1 -1
  36. package/dist/src/dht/PeerManager.d.ts +2 -1
  37. package/dist/src/dht/PeerManager.js +2 -1
  38. package/dist/src/dht/PeerManager.js.map +1 -1
  39. package/dist/src/dht/contact/SortedContactList.js +1 -1
  40. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  41. package/dist/src/dht/discovery/DiscoverySession.d.ts +0 -1
  42. package/dist/src/dht/discovery/PeerDiscovery.d.ts +0 -1
  43. package/dist/src/dht/discovery/RingDiscoverySession.d.ts +0 -1
  44. package/dist/src/dht/recursive-operation/RecursiveOperationManager.d.ts +2 -2
  45. package/dist/src/dht/routing/DuplicateDetector.js.map +1 -1
  46. package/dist/src/dht/routing/RoutingSession.js +2 -2
  47. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  48. package/dist/src/dht/routing/RoutingTablesCache.d.ts +1 -1
  49. package/dist/src/dht/store/LocalDataStore.js +1 -1
  50. package/dist/src/dht/store/LocalDataStore.js.map +1 -1
  51. package/dist/src/dht/store/StoreManager.d.ts +1 -1
  52. package/dist/src/dht/store/StoreRpcLocal.d.ts +1 -1
  53. package/dist/src/helpers/AddressTools.js +2 -3
  54. package/dist/src/helpers/AddressTools.js.map +1 -1
  55. package/dist/src/helpers/debugHelpers.js +2 -2
  56. package/dist/src/helpers/debugHelpers.js.map +1 -1
  57. package/dist/src/helpers/protoClasses.d.ts +1 -1
  58. package/dist/src/helpers/protoClasses.js.map +1 -1
  59. package/dist/src/helpers/protoToString.js +1 -2
  60. package/dist/src/helpers/protoToString.js.map +1 -1
  61. package/dist/src/helpers/version.d.ts +1 -1
  62. package/dist/src/helpers/version.js +4 -4
  63. package/dist/src/helpers/version.js.map +1 -1
  64. package/eslint.config.mjs +12 -0
  65. package/jest.config.ts +12 -0
  66. package/package.json +15 -16
  67. package/protos/DhtRpc.proto +6 -4
  68. package/.eslintignore +0 -5
  69. package/.eslintrc +0 -3
  70. package/generated/google/protobuf/any.ts +0 -326
  71. package/generated/google/protobuf/empty.ts +0 -81
  72. package/generated/google/protobuf/timestamp.ts +0 -287
  73. package/generated/packages/dht/protos/DhtRpc.client.ts +0 -419
  74. package/generated/packages/dht/protos/DhtRpc.server.ts +0 -165
  75. package/generated/packages/dht/protos/DhtRpc.ts +0 -1266
  76. package/generated/packages/proto-rpc/protos/ProtoRpc.ts +0 -108
  77. package/jest.config.js +0 -5
  78. package/src/connection/Connection.ts +0 -28
  79. package/src/connection/ConnectionLockRpcLocal.ts +0 -78
  80. package/src/connection/ConnectionLockRpcRemote.ts +0 -64
  81. package/src/connection/ConnectionLockStates.ts +0 -131
  82. package/src/connection/ConnectionManager.ts +0 -661
  83. package/src/connection/ConnectionsView.ts +0 -8
  84. package/src/connection/ConnectorFacade.ts +0 -217
  85. package/src/connection/Handshaker.ts +0 -205
  86. package/src/connection/IConnection.ts +0 -40
  87. package/src/connection/ManagedConnection.ts +0 -113
  88. package/src/connection/OutputBuffer.ts +0 -28
  89. package/src/connection/PendingConnection.ts +0 -68
  90. package/src/connection/connectivityChecker.ts +0 -108
  91. package/src/connection/connectivityRequestHandler.ts +0 -116
  92. package/src/connection/simulator/Simulator.ts +0 -368
  93. package/src/connection/simulator/SimulatorConnection.ts +0 -137
  94. package/src/connection/simulator/SimulatorConnector.ts +0 -98
  95. package/src/connection/simulator/SimulatorTransport.ts +0 -15
  96. package/src/connection/simulator/pings.ts +0 -42
  97. package/src/connection/webrtc/BrowserWebrtcConnection.ts +0 -242
  98. package/src/connection/webrtc/IWebrtcConnection.ts +0 -24
  99. package/src/connection/webrtc/NodeWebrtcConnection.ts +0 -247
  100. package/src/connection/webrtc/WebrtcConnector.ts +0 -234
  101. package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +0 -108
  102. package/src/connection/webrtc/WebrtcConnectorRpcRemote.ts +0 -60
  103. package/src/connection/webrtc/iceServerAsString.ts +0 -15
  104. package/src/connection/websocket/AbstractWebsocketClientConnection.ts +0 -122
  105. package/src/connection/websocket/AutoCertifierClientFacade.ts +0 -89
  106. package/src/connection/websocket/BrowserWebsocketClientConnection.ts +0 -44
  107. package/src/connection/websocket/NodeWebsocketClientConnection.ts +0 -39
  108. package/src/connection/websocket/WebsocketClientConnector.ts +0 -119
  109. package/src/connection/websocket/WebsocketClientConnectorRpcLocal.ts +0 -38
  110. package/src/connection/websocket/WebsocketClientConnectorRpcRemote.ts +0 -19
  111. package/src/connection/websocket/WebsocketServer.ts +0 -164
  112. package/src/connection/websocket/WebsocketServerConnection.ts +0 -109
  113. package/src/connection/websocket/WebsocketServerConnector.ts +0 -286
  114. package/src/dht/DhtNode.ts +0 -678
  115. package/src/dht/DhtNodeRpcLocal.ts +0 -84
  116. package/src/dht/DhtNodeRpcRemote.ts +0 -107
  117. package/src/dht/ExternalApiRpcLocal.ts +0 -58
  118. package/src/dht/ExternalApiRpcRemote.ts +0 -41
  119. package/src/dht/PeerManager.ts +0 -303
  120. package/src/dht/contact/Contact.ts +0 -19
  121. package/src/dht/contact/ContactList.ts +0 -43
  122. package/src/dht/contact/RandomContactList.ts +0 -56
  123. package/src/dht/contact/RingContactList.ts +0 -143
  124. package/src/dht/contact/RpcRemote.ts +0 -72
  125. package/src/dht/contact/SortedContactList.ts +0 -173
  126. package/src/dht/contact/getClosestNodes.ts +0 -24
  127. package/src/dht/contact/ringIdentifiers.ts +0 -62
  128. package/src/dht/discovery/DiscoverySession.ts +0 -129
  129. package/src/dht/discovery/PeerDiscovery.ts +0 -244
  130. package/src/dht/discovery/RingDiscoverySession.ts +0 -148
  131. package/src/dht/recursive-operation/RecursiveOperationManager.ts +0 -251
  132. package/src/dht/recursive-operation/RecursiveOperationRpcLocal.ts +0 -34
  133. package/src/dht/recursive-operation/RecursiveOperationRpcRemote.ts +0 -43
  134. package/src/dht/recursive-operation/RecursiveOperationSession.ts +0 -231
  135. package/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.ts +0 -35
  136. package/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.ts +0 -30
  137. package/src/dht/routing/DuplicateDetector.ts +0 -34
  138. package/src/dht/routing/Router.ts +0 -246
  139. package/src/dht/routing/RouterRpcLocal.ts +0 -78
  140. package/src/dht/routing/RouterRpcRemote.ts +0 -80
  141. package/src/dht/routing/RoutingSession.ts +0 -243
  142. package/src/dht/routing/RoutingTablesCache.ts +0 -60
  143. package/src/dht/routing/getPreviousPeer.ts +0 -6
  144. package/src/dht/store/LocalDataStore.ts +0 -84
  145. package/src/dht/store/StoreManager.ts +0 -170
  146. package/src/dht/store/StoreRpcLocal.ts +0 -89
  147. package/src/dht/store/StoreRpcRemote.ts +0 -32
  148. package/src/exports.ts +0 -33
  149. package/src/helpers/AddressTools.ts +0 -28
  150. package/src/helpers/Connectivity.ts +0 -19
  151. package/src/helpers/browser/isBrowserEnvironment.ts +0 -1
  152. package/src/helpers/browser/isBrowserEnvironment_override.ts +0 -3
  153. package/src/helpers/createPeerDescriptor.ts +0 -57
  154. package/src/helpers/createPeerDescriptorSignaturePayload.ts +0 -28
  155. package/src/helpers/debugHelpers.ts +0 -9
  156. package/src/helpers/errors.ts +0 -49
  157. package/src/helpers/offering.ts +0 -15
  158. package/src/helpers/protoClasses.ts +0 -57
  159. package/src/helpers/protoToString.ts +0 -21
  160. package/src/helpers/version.ts +0 -32
  161. package/src/identifiers.ts +0 -29
  162. package/src/rpc-protocol/DhtCallContext.ts +0 -14
  163. package/src/rpc-protocol/DhtRpcOptions.ts +0 -10
  164. package/src/transport/ITransport.ts +0 -37
  165. package/src/transport/ListeningRpcCommunicator.ts +0 -32
  166. package/src/transport/RoutingRpcCommunicator.ts +0 -66
  167. package/src/types/ServiceID.ts +0 -1
  168. package/src/types/textencoding.d.ts +0 -6
  169. package/test/benchmark/Find.test.ts +0 -72
  170. package/test/benchmark/KademliaCorrectness.test.ts +0 -114
  171. package/test/benchmark/RingCorrectness.test.ts +0 -157
  172. package/test/benchmark/SortedContactListBenchmark.test.ts +0 -108
  173. package/test/benchmark/WebsocketServerMemoryLeak.test.ts +0 -41
  174. package/test/benchmark/hybrid-network-simulation/RingContactList.test.ts +0 -71
  175. package/test/end-to-end/GeoIpLayer0.test.ts +0 -55
  176. package/test/end-to-end/Layer0-Layer1.test.ts +0 -93
  177. package/test/end-to-end/Layer0.test.ts +0 -76
  178. package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +0 -110
  179. package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +0 -137
  180. package/test/end-to-end/Layer0Webrtc.test.ts +0 -85
  181. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +0 -82
  182. package/test/end-to-end/Layer1-Scale-Webrtc.test.ts +0 -76
  183. package/test/end-to-end/RecoveryFromFailedAutoCertification.test.ts +0 -52
  184. package/test/end-to-end/WebsocketConnectionRequest.test.ts +0 -69
  185. package/test/end-to-end/memory-leak.test.ts +0 -80
  186. package/test/integration/ConnectionLocking.test.ts +0 -182
  187. package/test/integration/ConnectionManager.test.ts +0 -528
  188. package/test/integration/ConnectivityChecking.test.ts +0 -53
  189. package/test/integration/DhtJoinPeerDiscovery.test.ts +0 -49
  190. package/test/integration/DhtNode.test.ts +0 -66
  191. package/test/integration/DhtNodeExternalAPI.test.ts +0 -48
  192. package/test/integration/DhtNodeRpcRemote.test.ts +0 -66
  193. package/test/integration/DhtRpc.test.ts +0 -121
  194. package/test/integration/Find.test.ts +0 -45
  195. package/test/integration/GeoIpConnectivityChecking.test.ts +0 -72
  196. package/test/integration/Layer1-scale.test.ts +0 -189
  197. package/test/integration/Mock-Layer1-Layer0.test.ts +0 -85
  198. package/test/integration/MultipleEntryPointJoining.test.ts +0 -105
  199. package/test/integration/ReplicateData.test.ts +0 -104
  200. package/test/integration/RouteMessage.test.ts +0 -230
  201. package/test/integration/RouterRpcRemote.test.ts +0 -77
  202. package/test/integration/SimultaneousConnections.test.ts +0 -316
  203. package/test/integration/Store.test.ts +0 -85
  204. package/test/integration/StoreAndDelete.test.ts +0 -77
  205. package/test/integration/StoreOnDhtWithThreeNodes.test.ts +0 -59
  206. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +0 -51
  207. package/test/integration/StoreRpcRemote.test.ts +0 -54
  208. package/test/integration/WebrtcConnectionManagement.test.ts +0 -219
  209. package/test/integration/WebrtcConnectorRpc.test.ts +0 -125
  210. package/test/integration/Websocket.test.ts +0 -65
  211. package/test/integration/WebsocketClientConnectorRpc.test.ts +0 -69
  212. package/test/integration/WebsocketConnectionManagement.test.ts +0 -191
  213. package/test/integration/rpc-connections-over-webrtc.test.ts +0 -158
  214. package/test/kademlia-simulation/data/nodeids.json +0 -13002
  215. package/test/kademlia-simulation/data/orderedneighbors.json +0 -1001
  216. package/test/types/global.d.ts +0 -1
  217. package/test/unit/AddressTools.test.ts +0 -44
  218. package/test/unit/AutoCertifierClientFacade.test.ts +0 -58
  219. package/test/unit/ConnectionManager.test.ts +0 -65
  220. package/test/unit/ConnectivityHelpers.test.ts +0 -61
  221. package/test/unit/DiscoverySession.test.ts +0 -87
  222. package/test/unit/DuplicateDetector.test.ts +0 -31
  223. package/test/unit/Handshaker.test.ts +0 -169
  224. package/test/unit/ListeningRpcCommunicator.test.ts +0 -52
  225. package/test/unit/LocalDataStore.test.ts +0 -108
  226. package/test/unit/ManagedConnection.test.ts +0 -58
  227. package/test/unit/PeerManager.test.ts +0 -93
  228. package/test/unit/PendingConnection.test.ts +0 -57
  229. package/test/unit/ProtobufMessage.test.ts +0 -21
  230. package/test/unit/RandomContactList.test.ts +0 -58
  231. package/test/unit/RecursiveOperationManager.test.ts +0 -161
  232. package/test/unit/RecursiveOperationSession.test.ts +0 -68
  233. package/test/unit/Router.test.ts +0 -137
  234. package/test/unit/RoutingSession.test.ts +0 -79
  235. package/test/unit/SortedContactList.test.ts +0 -115
  236. package/test/unit/StoreManager.test.ts +0 -146
  237. package/test/unit/StoreRpcLocal.test.ts +0 -167
  238. package/test/unit/WebrtcConnection.test.ts +0 -29
  239. package/test/unit/WebrtcConnector.test.ts +0 -56
  240. package/test/unit/WebsocketClientConnector.test.ts +0 -101
  241. package/test/unit/WebsocketServer.test.ts +0 -66
  242. package/test/unit/WebsocketServerConnector.test.ts +0 -102
  243. package/test/unit/connectivityRequestHandler.test.ts +0 -104
  244. package/test/unit/createPeerDescriptor.test.ts +0 -69
  245. package/test/unit/customMatchers.test.ts +0 -16
  246. package/test/unit/getClosestNodes.test.ts +0 -30
  247. package/test/unit/version.test.ts +0 -18
  248. package/test/unit/webrtcReplaceInternalIpWithExternalIp.test.ts +0 -18
  249. package/test/utils/FakeConnectorFacade.ts +0 -41
  250. package/test/utils/FakeRpcCommunicator.ts +0 -23
  251. package/test/utils/FakeTransport.ts +0 -79
  252. package/test/utils/customMatchers.ts +0 -71
  253. package/test/utils/mock/MockConnection.ts +0 -26
  254. package/test/utils/mock/MockConnectionsView.ts +0 -18
  255. package/test/utils/mock/MockRouter.ts +0 -62
  256. package/test/utils/mock/MockRpcCommunicator.ts +0 -7
  257. package/test/utils/mock/MockTransport.ts +0 -26
  258. package/test/utils/mock/mockDataEntry.ts +0 -38
  259. package/test/utils/topology.ts +0 -80
  260. package/test/utils/utils.ts +0 -268
  261. package/tsconfig.browser.json +0 -17
  262. package/tsconfig.jest.json +0 -25
  263. package/tsconfig.json +0 -3
  264. package/tsconfig.node.json +0 -24
@@ -1,82 +0,0 @@
1
- import { DhtNode } from '../../src/dht/DhtNode'
2
- import { createMockPeerDescriptor } from '../utils/utils'
3
-
4
- const STREAM_ID = 'stream'
5
- const NUM_OF_NODES = 16
6
- const NUM_OF_NODES_PER_KBUCKET = 8
7
- const WEBSOCKET_PORT_RANGE = { min: 62200, max: 62200 + NUM_OF_NODES }
8
-
9
- describe('Layer1 Scale', () => {
10
-
11
- const epPeerDescriptor = createMockPeerDescriptor({
12
- websocket: { host: '127.0.0.1', port: 43225, tls: false }
13
- })
14
- let layer0Nodes: DhtNode[]
15
- let layer1Nodes: DhtNode[]
16
- let epLayer0Node: DhtNode
17
- let epLayer1Node: DhtNode
18
-
19
- beforeEach(async () => {
20
- epLayer0Node = new DhtNode({
21
- peerDescriptor: epPeerDescriptor,
22
- websocketServerEnableTls: false
23
- })
24
- await epLayer0Node.start()
25
- await epLayer0Node.joinDht([epPeerDescriptor])
26
-
27
- epLayer1Node = new DhtNode({
28
- transport: epLayer0Node,
29
- connectionsView: epLayer0Node.getConnectionsView(),
30
- peerDescriptor: epPeerDescriptor,
31
- serviceId: STREAM_ID
32
- })
33
- await epLayer1Node.start()
34
- await epLayer1Node.joinDht([epPeerDescriptor])
35
-
36
- layer0Nodes = []
37
- layer1Nodes = []
38
-
39
- for (let i = 0; i < NUM_OF_NODES; i++) {
40
- const node = new DhtNode({
41
- websocketPortRange: WEBSOCKET_PORT_RANGE,
42
- entryPoints: [epPeerDescriptor],
43
- websocketServerEnableTls: false,
44
- numberOfNodesPerKBucket: NUM_OF_NODES_PER_KBUCKET
45
- })
46
- await node.start()
47
- layer0Nodes.push(node)
48
- const layer1 = new DhtNode({
49
- transport: node,
50
- connectionsView: node.getConnectionsView(),
51
- entryPoints: [epPeerDescriptor],
52
- peerDescriptor: node.getLocalPeerDescriptor(),
53
- serviceId: STREAM_ID,
54
- numberOfNodesPerKBucket: NUM_OF_NODES_PER_KBUCKET
55
- })
56
- await layer1.start()
57
- layer1Nodes.push(layer1)
58
- }
59
-
60
- await Promise.all(layer0Nodes.map((node) => node.joinDht([epPeerDescriptor])))
61
-
62
- await Promise.all(layer1Nodes.map((node) => node.joinDht([epPeerDescriptor])))
63
-
64
- }, 120000)
65
-
66
- afterEach(async () => {
67
- await Promise.all(layer1Nodes.map((node) => node.stop()))
68
- await Promise.all(layer0Nodes.map((node) => node.stop()))
69
- await epLayer0Node.stop()
70
- await epLayer1Node.stop()
71
- }, 15000)
72
-
73
- // TODO: fix flaky test in NET-1021
74
- it('bucket sizes', async () => {
75
- layer0Nodes.forEach((node) => {
76
- expect(node.getNeighborCount()).toBeGreaterThanOrEqual(NUM_OF_NODES_PER_KBUCKET - 1)
77
- })
78
- layer1Nodes.forEach((node ) => {
79
- expect(node.getNeighborCount()).toBeGreaterThanOrEqual(NUM_OF_NODES_PER_KBUCKET / 2)
80
- })
81
- })
82
- })
@@ -1,76 +0,0 @@
1
- import { DhtNode } from '../../src/dht/DhtNode'
2
- import { createMockPeerDescriptor } from '../utils/utils'
3
-
4
- const STREAM_ID = 'stream'
5
- const NUM_OF_NODES = 16
6
- const NUM_OF_NODES_PER_KBUCKET = 8
7
-
8
- describe('Layer1 Scale', () => {
9
-
10
- const epPeerDescriptor = createMockPeerDescriptor({
11
- websocket: { host: '127.0.0.1', port: 43228, tls: false }
12
- })
13
- let layer0Nodes: DhtNode[]
14
- let layer1Nodes: DhtNode[]
15
- let epLayer0Node: DhtNode
16
- let epLayer1Node: DhtNode
17
-
18
- beforeEach(async () => {
19
- epLayer0Node = new DhtNode({
20
- peerDescriptor: epPeerDescriptor,
21
- websocketServerEnableTls: false
22
- })
23
- await epLayer0Node.start()
24
- await epLayer0Node.joinDht([epPeerDescriptor])
25
-
26
- epLayer1Node = new DhtNode({
27
- transport: epLayer0Node,
28
- connectionsView: epLayer0Node.getConnectionsView(),
29
- peerDescriptor: epPeerDescriptor,
30
- serviceId: STREAM_ID
31
- })
32
- await epLayer1Node.start()
33
- await epLayer1Node.joinDht([epPeerDescriptor])
34
-
35
- layer0Nodes = []
36
- layer1Nodes = []
37
-
38
- for (let i = 1; i < NUM_OF_NODES; i++) {
39
- const node = new DhtNode({
40
- entryPoints: [epPeerDescriptor],
41
- numberOfNodesPerKBucket: NUM_OF_NODES_PER_KBUCKET
42
- })
43
- await node.start()
44
- layer0Nodes.push(node)
45
- const layer1 = new DhtNode({
46
- transport: node,
47
- connectionsView: node.getConnectionsView(),
48
- entryPoints: [epPeerDescriptor],
49
- peerDescriptor: node.getLocalPeerDescriptor(),
50
- serviceId: STREAM_ID,
51
- rpcRequestTimeout: 5000,
52
- numberOfNodesPerKBucket: NUM_OF_NODES_PER_KBUCKET
53
- })
54
- await layer1.start()
55
- layer1Nodes.push(layer1)
56
- }
57
- await Promise.all(layer0Nodes.map((node) => node.joinDht([epPeerDescriptor])))
58
- await Promise.all(layer1Nodes.map((node) => node.joinDht([epPeerDescriptor])))
59
- }, 120000)
60
-
61
- afterEach(async () => {
62
- await Promise.all(layer1Nodes.map((node) => node.stop()))
63
- await Promise.all(layer0Nodes.map((node) => node.stop()))
64
- await epLayer0Node.stop()
65
- await epLayer1Node.stop()
66
- }, 15000)
67
-
68
- it('bucket sizes', async () => {
69
- layer0Nodes.forEach((node) => {
70
- expect(node.getNeighborCount()).toBeGreaterThanOrEqual(NUM_OF_NODES_PER_KBUCKET - 1)
71
- })
72
- layer1Nodes.forEach((node) => {
73
- expect(node.getNeighborCount()).toBeGreaterThanOrEqual(NUM_OF_NODES_PER_KBUCKET / 2)
74
- })
75
- })
76
- })
@@ -1,52 +0,0 @@
1
- import { DhtNode } from '../../src/dht/DhtNode'
2
- import { PeerDescriptor } from '../../generated/packages/dht/protos/DhtRpc'
3
- import os from 'os'
4
-
5
- describe('Failed autocertification', () => {
6
-
7
- let entryPoint: DhtNode
8
- let failedAutocertificationNode: DhtNode
9
- let node: DhtNode
10
- let entryPointPeerDescriptor: PeerDescriptor
11
-
12
- beforeEach(async () => {
13
- entryPoint = new DhtNode({ websocketHost: '127.0.0.1', websocketPortRange: { min: 11112, max: 11112 }, websocketServerEnableTls: false })
14
- await entryPoint.start()
15
- entryPointPeerDescriptor = entryPoint.getLocalPeerDescriptor()
16
- await entryPoint.joinDht([entryPointPeerDescriptor])
17
-
18
- failedAutocertificationNode = new DhtNode({
19
- websocketPortRange: { min: 11113, max: 11113 },
20
- websocketHost: '127.0.0.1',
21
- entryPoints: [entryPointPeerDescriptor],
22
- websocketServerEnableTls: true,
23
- autoCertifierConfigFile: os.tmpdir() + '/failedAutoCertificationConfigFile.json',
24
- autoCertifierUrl: 'http://127.0.0.1:44444'
25
- })
26
-
27
- node = new DhtNode({
28
- websocketPortRange: { min: 11114, max: 11114 },
29
- websocketHost: '127.0.0.1',
30
- entryPoints: [entryPointPeerDescriptor],
31
- websocketServerEnableTls: false
32
- })
33
-
34
- await node.start()
35
- await node.joinDht([entryPointPeerDescriptor])
36
- })
37
-
38
- afterEach(async () => {
39
- await failedAutocertificationNode.stop()
40
- await entryPoint.stop()
41
- await node.stop()
42
- })
43
-
44
- it('failed auto certification should default to no tls', async () => {
45
- await failedAutocertificationNode.start()
46
- const failedAutocertificationPeerDescriptor = failedAutocertificationNode.getLocalPeerDescriptor()
47
- expect(failedAutocertificationPeerDescriptor.websocket!.tls).toBe(false)
48
- await failedAutocertificationNode.joinDht([entryPointPeerDescriptor])
49
- expect(failedAutocertificationNode.getNeighborCount()).toEqual(2)
50
- })
51
-
52
- })
@@ -1,69 +0,0 @@
1
- import { PeerDescriptor } from '../../generated/packages/dht/protos/DhtRpc'
2
- import { DhtNode } from '../../src/dht/DhtNode'
3
- import { ConnectionManager } from '../../src/connection/ConnectionManager'
4
- import { waitForCondition } from '@streamr/utils'
5
- import { createMockPeerDescriptor } from '../utils/utils'
6
- import { areEqualPeerDescriptors } from '../../src/identifiers'
7
-
8
- describe('Websocket IConnection Requests', () => {
9
-
10
- const epPeerDescriptor = createMockPeerDescriptor({
11
- websocket: { host: '127.0.0.1', port: 10021, tls: false }
12
- })
13
- let epDhtNode: DhtNode
14
- let node1: DhtNode
15
- let node2: DhtNode
16
-
17
- beforeEach(async () => {
18
-
19
- epDhtNode = new DhtNode({ peerDescriptor: epPeerDescriptor, websocketServerEnableTls: false })
20
- await epDhtNode.start()
21
-
22
- await epDhtNode.joinDht([epPeerDescriptor])
23
-
24
- node1 = new DhtNode({
25
- websocketPortRange: { min: 10022, max: 10022 },
26
- entryPoints: [epPeerDescriptor],
27
- websocketServerEnableTls: false
28
- })
29
- node2 = new DhtNode({
30
- entryPoints: [epPeerDescriptor],
31
- websocketServerEnableTls: false
32
- })
33
-
34
- await node1.start()
35
- await node2.start()
36
- })
37
-
38
- afterEach(async () => {
39
- await epDhtNode.stop()
40
- await node1.stop()
41
- await node2.stop()
42
- })
43
-
44
- it('Happy Path', async () => {
45
-
46
- let connected1 = false
47
- let connected2 = false
48
-
49
- node1.on('connected', (peerDescriptor: PeerDescriptor) => {
50
- if (areEqualPeerDescriptors(peerDescriptor, node2.getLocalPeerDescriptor())) {
51
- connected1 = true
52
- }
53
- })
54
- node2.on('connected', (peerDescriptor: PeerDescriptor) => {
55
- if (areEqualPeerDescriptors(peerDescriptor, node1.getLocalPeerDescriptor())) {
56
- connected2 = true
57
- }
58
- })
59
-
60
- await node2.joinDht([epPeerDescriptor])
61
- await node1.joinDht([epPeerDescriptor])
62
-
63
- await waitForCondition(() => { return (connected1 && connected2) })
64
-
65
- expect((node1.getTransport() as ConnectionManager).hasConnection(node2.getNodeId())).toEqual(true)
66
- expect((node2.getTransport() as ConnectionManager).hasConnection(node1.getNodeId())).toEqual(true)
67
-
68
- }, 10000)
69
- })
@@ -1,80 +0,0 @@
1
- import LeakDetector from 'jest-leak-detector'
2
- import { waitForCondition } from '@streamr/utils'
3
- import { DhtNode } from '../../src/dht/DhtNode'
4
- import { Message } from '../../generated/packages/dht/protos/DhtRpc'
5
- import { RpcMessage } from '../../generated/packages/proto-rpc/protos/ProtoRpc'
6
- import { createMockPeerDescriptor } from '../utils/utils'
7
- import { toNodeId } from '../../src/identifiers'
8
-
9
- const MESSAGE_ID = 'mock-message-id'
10
-
11
- describe('memory leak', () => {
12
-
13
- it('send message', async () => {
14
- const entryPointDescriptor = createMockPeerDescriptor({
15
- websocket: {
16
- host: '127.0.0.1',
17
- port: 11224,
18
- tls: false
19
- }
20
- })
21
- let entryPoint: DhtNode | undefined = new DhtNode({
22
- nodeId: toNodeId(entryPointDescriptor),
23
- websocketHost: entryPointDescriptor.websocket!.host,
24
- websocketPortRange: {
25
- min: entryPointDescriptor.websocket!.port,
26
- max: entryPointDescriptor.websocket!.port
27
- },
28
- entryPoints: [entryPointDescriptor],
29
- websocketServerEnableTls: false
30
- })
31
- await entryPoint.start()
32
- await entryPoint.joinDht([entryPointDescriptor])
33
- let sender: DhtNode | undefined = new DhtNode({ entryPoints: [entryPointDescriptor] })
34
- let receiver: DhtNode | undefined = new DhtNode({ entryPoints: [entryPointDescriptor] })
35
- await Promise.all([
36
- (async () => {
37
- await sender.start()
38
- await sender.joinDht([entryPointDescriptor])
39
- })(),
40
- (async () => {
41
- await receiver.start()
42
- await receiver.joinDht([entryPointDescriptor])
43
- })()
44
- ])
45
-
46
- let receivedMessage: Message | undefined = undefined
47
- receiver.on('message', (msg: Message) => receivedMessage = msg)
48
- const msg: Message = {
49
- serviceId: 'mock-service-id',
50
- targetDescriptor: receiver.getLocalPeerDescriptor(),
51
- messageId: 'mock-message-id',
52
- body: {
53
- oneofKind: 'rpcMessage',
54
- rpcMessage: RpcMessage.create()
55
- }
56
- }
57
- await sender.send(msg)
58
- await waitForCondition(() => receivedMessage !== undefined)
59
- expect(receivedMessage!.messageId).toEqual(MESSAGE_ID)
60
-
61
- await Promise.all([
62
- entryPoint.stop(),
63
- sender.stop(),
64
- receiver.stop()
65
- ])
66
-
67
- const detector1 = new LeakDetector(entryPoint)
68
- entryPoint = undefined
69
- await detector1.isLeaking()
70
- expect(await detector1.isLeaking()).toBe(false)
71
-
72
- const detector2 = new LeakDetector(sender)
73
- sender = undefined
74
- expect(await detector2.isLeaking()).toBe(false)
75
-
76
- const detector3 = new LeakDetector(receiver)
77
- receiver = undefined
78
- expect(await detector3.isLeaking()).toBe(false)
79
- }, 10000)
80
- })
@@ -1,182 +0,0 @@
1
- import { MetricsContext, waitForCondition } from '@streamr/utils'
2
- import { ConnectionManager } from '../../src/connection/ConnectionManager'
3
- import { DefaultConnectorFacade } from '../../src/connection/ConnectorFacade'
4
- import { LatencyType, Simulator } from '../../src/connection/simulator/Simulator'
5
- import { SimulatorTransport } from '../../src/connection/simulator/SimulatorTransport'
6
- import { ITransport } from '../../src/transport/ITransport'
7
- import { PeerDescriptor } from '../../generated/packages/dht/protos/DhtRpc'
8
- import { getRandomRegion } from '../../dist/src/connection/simulator/pings'
9
- import { createMockPeerDescriptor } from '../utils/utils'
10
- import { toNodeId } from '../../src/identifiers'
11
-
12
- const createConnectionManager = (localPeerDescriptor: PeerDescriptor, transport: ITransport) => {
13
- return new ConnectionManager({
14
- createConnectorFacade: () => new DefaultConnectorFacade({
15
- transport,
16
- createLocalPeerDescriptor: async () => localPeerDescriptor
17
- }),
18
- metricsContext: new MetricsContext(),
19
- allowIncomingPrivateConnections: true
20
- })
21
- }
22
-
23
- describe('Connection Locking', () => {
24
-
25
- const mockPeerDescriptor1 = createMockPeerDescriptor({
26
- region: getRandomRegion()
27
- })
28
- const mockPeerDescriptor2 = createMockPeerDescriptor({
29
- region: getRandomRegion()
30
- })
31
- let mockConnectorTransport1: ConnectionManager
32
- let mockConnectorTransport2: ConnectionManager
33
- let connectionManager1: ConnectionManager
34
- let connectionManager2: ConnectionManager
35
- let simulator: Simulator
36
-
37
- beforeEach(async () => {
38
- simulator = new Simulator(LatencyType.REAL)
39
- mockConnectorTransport1 = new SimulatorTransport(mockPeerDescriptor1, simulator)
40
- await mockConnectorTransport1.start()
41
- mockConnectorTransport2 = new SimulatorTransport(mockPeerDescriptor2, simulator)
42
- await mockConnectorTransport2.start()
43
- connectionManager1 = createConnectionManager(mockPeerDescriptor1, mockConnectorTransport1)
44
- connectionManager2 = createConnectionManager(mockPeerDescriptor2, mockConnectorTransport2)
45
- await connectionManager1.start()
46
- await connectionManager2.start()
47
- })
48
-
49
- afterEach(async () => {
50
- await Promise.all([
51
- mockConnectorTransport1.stop(),
52
- mockConnectorTransport2.stop(),
53
- connectionManager1.stop(),
54
- connectionManager2.stop()
55
- ])
56
- simulator.stop()
57
- })
58
-
59
- it('can lock connections', async () => {
60
- const nodeId1 = toNodeId(mockPeerDescriptor1)
61
- const nodeId2 = toNodeId(mockPeerDescriptor2)
62
- await Promise.all([
63
- waitForCondition(() => connectionManager2.hasRemoteLockedConnection(nodeId1)),
64
- connectionManager1.lockConnection(mockPeerDescriptor2, 'testLock')
65
- ])
66
- expect(connectionManager1.hasConnection(nodeId2)).toEqual(true)
67
- expect(connectionManager1.hasLocalLockedConnection(nodeId2)).toEqual(true)
68
- expect(connectionManager2.hasRemoteLockedConnection(nodeId1)).toEqual(true)
69
- })
70
-
71
- it('Multiple services on the same peer', async () => {
72
- const nodeId1 = toNodeId(mockPeerDescriptor1)
73
- const nodeId2 = toNodeId(mockPeerDescriptor2)
74
- await Promise.all([
75
- waitForCondition(() => connectionManager2.hasRemoteLockedConnection(nodeId1)),
76
- connectionManager1.lockConnection(mockPeerDescriptor2, 'testLock1')
77
- ])
78
- await Promise.all([
79
- waitForCondition(() => connectionManager2.hasRemoteLockedConnection(nodeId1)),
80
- connectionManager1.lockConnection(mockPeerDescriptor2, 'testLock2')
81
- ])
82
- expect(connectionManager1.hasConnection(nodeId2)).toEqual(true)
83
- expect(connectionManager1.hasLocalLockedConnection(nodeId2)).toEqual(true)
84
- expect(connectionManager2.hasRemoteLockedConnection(nodeId1)).toEqual(true)
85
- })
86
-
87
- it('can unlock connections', async () => {
88
- const nodeId1 = toNodeId(mockPeerDescriptor1)
89
- const nodeId2 = toNodeId(mockPeerDescriptor2)
90
- await Promise.all([
91
- waitForCondition(() => connectionManager2.hasRemoteLockedConnection(nodeId1)),
92
- connectionManager1.lockConnection(mockPeerDescriptor2, 'testLock')
93
- ])
94
- expect(connectionManager1.hasConnection(nodeId2))
95
- expect(connectionManager2.hasLocalLockedConnection(nodeId2)).toEqual(false)
96
- expect(connectionManager2.hasRemoteLockedConnection(nodeId1)).toEqual(true)
97
-
98
- connectionManager1.unlockConnection(mockPeerDescriptor2, 'testLock')
99
- expect(connectionManager1.hasLocalLockedConnection(nodeId2)).toEqual(false)
100
- await waitForCondition(() => connectionManager2.hasRemoteLockedConnection(nodeId1) === false)
101
- expect(connectionManager1.hasConnection(nodeId1)).toEqual(false)
102
- })
103
-
104
- it('unlocking multiple services', async () => {
105
- const nodeId1 = toNodeId(mockPeerDescriptor1)
106
- const nodeId2 = toNodeId(mockPeerDescriptor2)
107
- await Promise.all([
108
- waitForCondition(() => connectionManager2.hasRemoteLockedConnection(nodeId1)),
109
- connectionManager1.lockConnection(mockPeerDescriptor2, 'testLock1')
110
- ])
111
- await Promise.all([
112
- waitForCondition(() => connectionManager2.hasRemoteLockedConnection(nodeId1)),
113
- connectionManager1.lockConnection(mockPeerDescriptor2, 'testLock2')
114
- ])
115
-
116
- expect(connectionManager1.hasConnection(nodeId2))
117
- expect(connectionManager2.hasLocalLockedConnection(nodeId1)).toEqual(false)
118
-
119
- connectionManager1.unlockConnection(mockPeerDescriptor2, 'testLock1')
120
- expect(connectionManager1.hasLocalLockedConnection(nodeId2)).toEqual(true)
121
-
122
- connectionManager1.unlockConnection(mockPeerDescriptor2, 'testLock2')
123
- expect(connectionManager1.hasLocalLockedConnection(nodeId2)).toEqual(false)
124
- expect(connectionManager1.hasConnection(nodeId1)).toEqual(false)
125
- })
126
-
127
- it('maintains connection if both sides initially lock and then one end unlocks', async () => {
128
- const nodeId1 = toNodeId(mockPeerDescriptor1)
129
- const nodeId2 = toNodeId(mockPeerDescriptor2)
130
- await Promise.all([
131
- waitForCondition(() => connectionManager2.hasRemoteLockedConnection(nodeId1)),
132
- waitForCondition(() => connectionManager1.hasRemoteLockedConnection(nodeId2)),
133
- connectionManager1.lockConnection(mockPeerDescriptor2, 'testLock1'),
134
- connectionManager2.lockConnection(mockPeerDescriptor1, 'testLock1')
135
- ])
136
-
137
- expect(connectionManager1.hasLocalLockedConnection(nodeId2))
138
- expect(connectionManager2.hasLocalLockedConnection(nodeId1))
139
-
140
- connectionManager1.unlockConnection(mockPeerDescriptor2, 'testLock1')
141
- await waitForCondition(() =>
142
- connectionManager1.hasRemoteLockedConnection(nodeId2)
143
- && !connectionManager1.hasLocalLockedConnection(nodeId2)
144
- && !connectionManager2.hasRemoteLockedConnection(nodeId1)
145
- && connectionManager2.hasLocalLockedConnection(nodeId1)
146
- )
147
-
148
- expect(connectionManager2.hasConnection(nodeId1)).toEqual(true)
149
- expect(connectionManager1.hasConnection(nodeId2)).toEqual(true)
150
- })
151
-
152
- it('unlocks after graceful disconnect', async () => {
153
- const nodeId1 = toNodeId(mockPeerDescriptor1)
154
- const nodeId2 = toNodeId(mockPeerDescriptor2)
155
- await Promise.all([
156
- waitForCondition(() => connectionManager2.hasRemoteLockedConnection(nodeId1)),
157
- waitForCondition(() => connectionManager1.hasRemoteLockedConnection(nodeId2)),
158
- connectionManager1.lockConnection(mockPeerDescriptor2, 'testLock1'),
159
- connectionManager2.lockConnection(mockPeerDescriptor1, 'testLock1')
160
- ])
161
- expect(connectionManager1.hasConnection(nodeId2))
162
- expect(connectionManager2.hasLocalLockedConnection(nodeId1)).toEqual(true)
163
- expect(connectionManager2.hasRemoteLockedConnection(nodeId1)).toEqual(true)
164
-
165
- //@ts-expect-error private field
166
- await connectionManager1.gracefullyDisconnectAsync(mockPeerDescriptor2)
167
-
168
- await waitForCondition(() =>
169
- !connectionManager1.hasRemoteLockedConnection(nodeId2)
170
- && !connectionManager1.hasLocalLockedConnection(nodeId2)
171
- )
172
- await waitForCondition(() =>
173
- !connectionManager2.hasRemoteLockedConnection(nodeId1)
174
- && !connectionManager2.hasLocalLockedConnection(nodeId1)
175
- )
176
- await waitForCondition(() => !connectionManager2.hasConnection(nodeId1))
177
- await waitForCondition(() => !connectionManager1.hasConnection(nodeId2))
178
-
179
- expect(connectionManager1.hasConnection(nodeId2)).toEqual(false)
180
- expect(connectionManager2.hasConnection(nodeId1)).toEqual(false)
181
- }, 10000)
182
- })