@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,41 +0,0 @@
1
- /* eslint-disable no-console */
2
-
3
- import { wait } from '@streamr/utils'
4
- import { WebsocketServer } from '../../src/connection/websocket/WebsocketServer'
5
- import { WebsocketClientConnection } from '../../src/connection/websocket/NodeWebsocketClientConnection'
6
-
7
- // This 'test' is meant to be run manually using the following command:
8
- // node --inspect ../../../../node_modules/.bin/jest WebsocketServerMemoryLeak.test.ts
9
- // while wathing for memory leaks in Chrome DevTools
10
-
11
- describe('WebsocketServermemoryLeak', () => {
12
-
13
- it('Accepts and detroys connections', async () => {
14
- const server = new WebsocketServer({
15
- portRange: { min: 19792, max: 19792 },
16
- enableTls: false
17
- })
18
-
19
- server.on('connected', (connection) => {
20
- console.log('ServerWebsocket connected')
21
- connection.destroy()
22
- console.log('ServerWebsocket destroyed')
23
- })
24
-
25
- const port = await server.start()
26
- expect(port).toEqual(19792)
27
-
28
- for (let i = 0; i < 10000; i++) {
29
- const clientWebsocket: WebsocketClientConnection = new WebsocketClientConnection()
30
- clientWebsocket.on('connected', () => {
31
- console.log('clientWebsocket connected ' + i)
32
- })
33
-
34
- clientWebsocket.connect(`ws://127.0.0.1:${port}`, false)
35
- i++
36
- await wait(3000)
37
- }
38
-
39
- await server.stop()
40
- }, 120000000)
41
- })
@@ -1,71 +0,0 @@
1
- import { ConnectivityResponse, PeerDescriptor } from '../../../generated/packages/dht/protos/DhtRpc'
2
- import { createPeerDescriptor } from '../../../src/helpers/createPeerDescriptor'
3
- import { NatType } from '../../../src/connection/ConnectionManager'
4
- import { ipv4ToNumber, Logger } from '@streamr/utils'
5
- import { RingContactList } from '../../../src/dht/contact/RingContactList'
6
- import { getRingIdRawFromPeerDescriptor } from '../../../src/dht/contact/ringIdentifiers'
7
- import { getRandomRegion } from '../../../src/connection/simulator/pings'
8
-
9
- const logger = new Logger(module)
10
-
11
- function ipv4ToString(ip: number): string {
12
- return [
13
- (ip >>> 24) & 0xFF,
14
- (ip >>> 16) & 0xFF,
15
- (ip >>> 8) & 0xFF,
16
- ip & 0xFF
17
- ].join('.')
18
- }
19
-
20
- class MockNode {
21
- private readonly peerDescriptor: PeerDescriptor
22
-
23
- constructor(_region: number, ipAddress: string) {
24
-
25
- const connectivityResponse: ConnectivityResponse = {
26
- host: 'localhost',
27
- natType: NatType.UNKNOWN,
28
- ipAddress: ipv4ToNumber(ipAddress),
29
- version: '0.0.0'
30
-
31
- }
32
- this.peerDescriptor = createPeerDescriptor(connectivityResponse, getRandomRegion())
33
- logger.info(ipv4ToString(this.peerDescriptor.ipAddress!))
34
- }
35
-
36
- public getPeerDescriptor(): PeerDescriptor {
37
- return this.peerDescriptor
38
- }
39
- }
40
-
41
- // populate with mock ip addresses
42
- const mockData: Array< [number, string] > = [
43
- [0, '5.2.4.2'],
44
- [0, '6.23.2.4'],
45
- [0, '7.2.4.2'],
46
- [0, '8.23.2.4'],
47
- [0, '9.3.2.4'],
48
- [0, '10.3.2.4'],
49
- [0, '24.23.2.4'],
50
- [0, '31.23.2.4'],
51
- [0, '33.2.4.2'],
52
- [0, '35.3.2.4'],
53
- [0, '37.23.2.4'],
54
- [0, '39.2.4.2'],
55
- [0, '42.3.2.4'],
56
- [0, '46.2.4.2'],
57
- [0, '48.3.2.4'],
58
- [0, '50.23.2.4']
59
- ]
60
-
61
- const mockNodes: MockNode[] = mockData.map(([region, ipAddress]) => new MockNode(region, ipAddress))
62
- const referenceNode = mockNodes[5]
63
- const ringContactList: RingContactList<MockNode> = new RingContactList<MockNode>(
64
- getRingIdRawFromPeerDescriptor(referenceNode.getPeerDescriptor())
65
- )
66
-
67
- mockNodes.forEach((node) => ringContactList.addContact(node))
68
-
69
- ringContactList.getClosestContacts().left.forEach((node) => logger.info(ipv4ToString(node.getPeerDescriptor().ipAddress!)))
70
- logger.info('reference node: ' + ipv4ToString(referenceNode.getPeerDescriptor().ipAddress!))
71
- ringContactList.getClosestContacts().right.forEach((node) => logger.info(ipv4ToString(node.getPeerDescriptor().ipAddress!)))
@@ -1,55 +0,0 @@
1
- import { WebsocketServerConnection } from '../../src/connection/websocket/WebsocketServerConnection'
2
- import { DhtNode } from '../../src/dht/DhtNode'
3
- import fs from 'fs'
4
-
5
- const WEBSOCKET_PORT_RANGE = { min: 10012, max: 10015 }
6
-
7
- // '51.120.98.194' is the IP address of norway.no in OSL = 7900
8
- const testIp = '51.120.98.194'
9
- const testRegion = 7900
10
- const dbPath = '/tmp/geoipdatabasesl0'
11
-
12
- describe('Layer0', () => {
13
-
14
- let epDhtNode: DhtNode
15
- let node1: DhtNode
16
- let mock: jest.SpyInstance<string, [], any>
17
-
18
- beforeEach(async () => {
19
-
20
- epDhtNode = new DhtNode({
21
- websocketHost: '127.0.0.1', websocketPortRange: { min: 10011, max: 10011 }, websocketServerEnableTls: false,
22
- geoIpDatabaseFolder: dbPath
23
- })
24
- await epDhtNode.start()
25
- await epDhtNode.joinDht([epDhtNode.getLocalPeerDescriptor()])
26
-
27
- node1 = new DhtNode({
28
- websocketPortRange: WEBSOCKET_PORT_RANGE,
29
- websocketHost: '127.0.0.1',
30
- entryPoints: [epDhtNode.getLocalPeerDescriptor()],
31
- websocketServerEnableTls: false
32
- })
33
-
34
- mock = jest.spyOn(WebsocketServerConnection.prototype, 'getRemoteIpAddress').mockImplementation(() => testIp)
35
-
36
- }, 10000)
37
-
38
- afterEach(async () => {
39
- await Promise.all([
40
- epDhtNode.stop(),
41
- node1.stop()
42
- ])
43
- fs.unlinkSync(dbPath + '/GeoLite2-City.mmdb')
44
- fs.rmSync(dbPath, { recursive: true })
45
- mock.mockRestore()
46
- })
47
-
48
- it('Gets the correct region number by IP address', async () => {
49
- await node1.start()
50
- await node1.joinDht([epDhtNode.getLocalPeerDescriptor()])
51
-
52
- expect(node1.getLocalPeerDescriptor().region).toBe(testRegion)
53
-
54
- }, 10000)
55
- })
@@ -1,93 +0,0 @@
1
- import { DhtNode } from '../../src/dht/DhtNode'
2
- import { areEqualPeerDescriptors } from '../../src/identifiers'
3
- import { createMockPeerDescriptor } from '../utils/utils'
4
-
5
- const STREAM_ID1 = 'stream1'
6
- const STREAM_ID2 = 'stream2'
7
- const WEBSOCKET_PORT_RANGE = { min: 10017, max: 10018 }
8
-
9
- describe('Layer0-Layer1', () => {
10
-
11
- const epPeerDescriptor = createMockPeerDescriptor({
12
- websocket: { host: '127.0.0.1', port: 10016, tls: false }
13
- })
14
- let epDhtNode: DhtNode
15
- let node1: DhtNode
16
- let node2: DhtNode
17
- let stream1Node1: DhtNode
18
- let stream1Node2: DhtNode
19
- let stream2Node1: DhtNode
20
- let stream2Node2: DhtNode
21
-
22
- beforeEach(async () => {
23
-
24
- epDhtNode = new DhtNode({ peerDescriptor: epPeerDescriptor, websocketServerEnableTls: false })
25
- await epDhtNode.start()
26
- await epDhtNode.joinDht([epPeerDescriptor])
27
-
28
- node1 = new DhtNode({
29
- websocketPortRange: WEBSOCKET_PORT_RANGE,
30
- entryPoints: [epPeerDescriptor],
31
- websocketServerEnableTls: false
32
- })
33
- node2 = new DhtNode({
34
- websocketPortRange: WEBSOCKET_PORT_RANGE,
35
- entryPoints: [epPeerDescriptor],
36
- websocketServerEnableTls: false
37
- })
38
-
39
- await node1.start()
40
- await node2.start()
41
-
42
- stream1Node1 = new DhtNode({ transport: epDhtNode, connectionsView: epDhtNode.getConnectionsView(), serviceId: STREAM_ID1 })
43
- stream1Node2 = new DhtNode({ transport: node1, connectionsView: node1.getConnectionsView(), serviceId: STREAM_ID1 })
44
-
45
- stream2Node1 = new DhtNode({ transport: epDhtNode, connectionsView: epDhtNode.getConnectionsView(), serviceId: STREAM_ID2 })
46
- stream2Node2 = new DhtNode({ transport: node2, connectionsView: node2.getConnectionsView(), serviceId: STREAM_ID2 })
47
-
48
- await Promise.all([
49
- stream1Node1.start(),
50
- stream1Node2.start(),
51
- stream2Node1.start(),
52
- stream2Node2.start()
53
- ])
54
-
55
- })
56
-
57
- afterEach(async () => {
58
- await Promise.all([
59
- node1.stop(),
60
- node2.stop(),
61
- epDhtNode.stop(),
62
- stream1Node1.stop(),
63
- stream1Node2.stop(),
64
- stream2Node1.stop(),
65
- stream2Node2.stop()
66
- ])
67
- })
68
-
69
- it('Happy path', async () => {
70
- await Promise.all([
71
- node1.joinDht([epPeerDescriptor]),
72
- node2.joinDht([epPeerDescriptor])
73
- ])
74
- await Promise.all([
75
- stream1Node1.joinDht([epPeerDescriptor]),
76
- stream1Node2.joinDht([epPeerDescriptor])
77
- ])
78
-
79
- await Promise.all([
80
- stream2Node1.joinDht([epPeerDescriptor]),
81
- stream2Node2.joinDht([epPeerDescriptor])
82
- ])
83
- expect(stream1Node1.getClosestContacts()).toHaveLength(1)
84
- expect(stream1Node2.getClosestContacts()).toHaveLength(1)
85
- expect(stream2Node1.getClosestContacts()).toHaveLength(1)
86
- expect(stream2Node2.getClosestContacts()).toHaveLength(1)
87
-
88
- expect(areEqualPeerDescriptors(stream1Node1.getClosestContacts()[0], node1.getLocalPeerDescriptor())).toBe(true)
89
- expect(areEqualPeerDescriptors(stream1Node2.getClosestContacts()[0], epPeerDescriptor)).toBe(true)
90
- expect(areEqualPeerDescriptors(stream2Node1.getClosestContacts()[0], node2.getLocalPeerDescriptor())).toBe(true)
91
- expect(areEqualPeerDescriptors(stream2Node2.getClosestContacts()[0], epPeerDescriptor)).toBe(true)
92
- })
93
- })
@@ -1,76 +0,0 @@
1
- import { DhtNode } from '../../src/dht/DhtNode'
2
-
3
- const WEBSOCKET_PORT_RANGE = { min: 10012, max: 10015 }
4
-
5
- describe('Layer0', () => {
6
-
7
- let epDhtNode: DhtNode
8
- let node1: DhtNode
9
- let node2: DhtNode
10
- let node3: DhtNode
11
- let node4: DhtNode
12
-
13
- beforeEach(async () => {
14
-
15
- epDhtNode = new DhtNode({ websocketHost: '127.0.0.1', websocketPortRange: { min: 10011, max: 10011 }, websocketServerEnableTls: false })
16
- await epDhtNode.start()
17
- await epDhtNode.joinDht([epDhtNode.getLocalPeerDescriptor()])
18
-
19
- node1 = new DhtNode({
20
- websocketPortRange: WEBSOCKET_PORT_RANGE,
21
- websocketHost: '127.0.0.1',
22
- entryPoints: [epDhtNode.getLocalPeerDescriptor()],
23
- websocketServerEnableTls: false
24
- })
25
- node2 = new DhtNode({
26
- websocketPortRange: WEBSOCKET_PORT_RANGE,
27
- websocketHost: '127.0.0.1',
28
- entryPoints: [epDhtNode.getLocalPeerDescriptor()],
29
- websocketServerEnableTls: false
30
- })
31
- node3 = new DhtNode({
32
- websocketPortRange: WEBSOCKET_PORT_RANGE,
33
- websocketHost: '127.0.0.1',
34
- entryPoints: [epDhtNode.getLocalPeerDescriptor()],
35
- websocketServerEnableTls: false
36
- })
37
- node4 = new DhtNode({
38
- websocketPortRange: WEBSOCKET_PORT_RANGE,
39
- websocketHost: '127.0.0.1',
40
- entryPoints: [epDhtNode.getLocalPeerDescriptor()],
41
- websocketServerEnableTls: false
42
- })
43
-
44
- await Promise.all([
45
- node1.start(),
46
- node2.start(),
47
- node3.start(),
48
- node4.start()
49
- ])
50
-
51
- }, 10000)
52
-
53
- afterEach(async () => {
54
- await Promise.all([
55
- epDhtNode.stop(),
56
- node1.stop(),
57
- node2.stop(),
58
- node3.stop(),
59
- node4.stop()
60
- ])
61
- })
62
-
63
- it('Happy path', async () => {
64
- await Promise.all([
65
- node1.joinDht([epDhtNode.getLocalPeerDescriptor()]),
66
- node2.joinDht([epDhtNode.getLocalPeerDescriptor()]),
67
- node3.joinDht([epDhtNode.getLocalPeerDescriptor()]),
68
- node4.joinDht([epDhtNode.getLocalPeerDescriptor()])
69
- ])
70
-
71
- expect(node1.getNeighborCount()).toBeGreaterThanOrEqual(2)
72
- expect(node2.getNeighborCount()).toBeGreaterThanOrEqual(2)
73
- expect(node3.getNeighborCount()).toBeGreaterThanOrEqual(2)
74
- expect(node4.getNeighborCount()).toBeGreaterThanOrEqual(2)
75
- }, 10000)
76
- })
@@ -1,110 +0,0 @@
1
- import { DhtNode } from '../../src/dht/DhtNode'
2
- import { waitForEvent3 } from '@streamr/utils'
3
- import { ConnectionManager } from '../../src/connection/ConnectionManager'
4
- import { TransportEvents } from '../../src/transport/ITransport'
5
- import { createMockPeerDescriptor } from '../utils/utils'
6
-
7
- const WEBSOCKET_PORT_RANGE = { min: 11222, max: 11223 }
8
-
9
- describe('Layer0MixedConnectionTypes', () => {
10
-
11
- const epPeerDescriptor = createMockPeerDescriptor({
12
- websocket: { host: '127.0.0.1', port: 11221, tls: false }
13
- })
14
- let epDhtNode: DhtNode
15
- let node1: DhtNode
16
- let node2: DhtNode
17
- let node3: DhtNode
18
- let node4: DhtNode
19
- let node5: DhtNode
20
-
21
- beforeEach(async () => {
22
-
23
- epDhtNode = new DhtNode({
24
- peerDescriptor: epPeerDescriptor,
25
- numberOfNodesPerKBucket: 2,
26
- websocketServerEnableTls: false
27
- })
28
- await epDhtNode.start()
29
-
30
- await epDhtNode.joinDht([epPeerDescriptor])
31
- node1 = new DhtNode({
32
- websocketPortRange: WEBSOCKET_PORT_RANGE,
33
- entryPoints: [epPeerDescriptor],
34
- websocketServerEnableTls: false
35
- })
36
- node2 = new DhtNode({
37
- websocketPortRange: WEBSOCKET_PORT_RANGE,
38
- entryPoints: [epPeerDescriptor],
39
- websocketServerEnableTls: false
40
- })
41
- node3 = new DhtNode({
42
- entryPoints: [epPeerDescriptor]
43
- })
44
- node4 = new DhtNode({
45
- entryPoints: [epPeerDescriptor]
46
- })
47
- node5 = new DhtNode({
48
- entryPoints: [epPeerDescriptor]
49
- })
50
-
51
- await Promise.all([
52
- node1.start(),
53
- node2.start(),
54
- node3.start(),
55
- node4.start(),
56
- node5.start()
57
- ])
58
-
59
- await epDhtNode.joinDht([epPeerDescriptor])
60
- })
61
-
62
- afterEach(async () => {
63
- await Promise.all([
64
- epDhtNode.stop(),
65
- node1.stop(),
66
- node2.stop(),
67
- node3.stop(),
68
- node4.stop(),
69
- node5.stop()
70
- ])
71
- })
72
-
73
- it('2 non-server peers join first', async () => {
74
-
75
- await Promise.all([
76
- waitForEvent3<TransportEvents>((node3.getTransport() as ConnectionManager), 'connected'),
77
- waitForEvent3<TransportEvents>((node4.getTransport() as ConnectionManager), 'connected'),
78
- node3.joinDht([epPeerDescriptor]),
79
- node4.joinDht([epPeerDescriptor])
80
- ])
81
-
82
- await Promise.all([
83
- node1.joinDht([epPeerDescriptor]),
84
- node2.joinDht([epPeerDescriptor]),
85
- node5.joinDht([epPeerDescriptor])
86
- ])
87
-
88
- expect(node1.getNeighborCount()).toBeGreaterThanOrEqual(2)
89
- expect(node2.getNeighborCount()).toBeGreaterThanOrEqual(2)
90
- expect(node3.getNeighborCount()).toBeGreaterThanOrEqual(2)
91
- expect(node4.getNeighborCount()).toBeGreaterThanOrEqual(2)
92
- expect(node5.getNeighborCount()).toBeGreaterThanOrEqual(1)
93
-
94
- }, 20000)
95
-
96
- it('Simultaneous joins', async () => {
97
- await Promise.all([
98
- node1.joinDht([epPeerDescriptor]),
99
- node2.joinDht([epPeerDescriptor]),
100
- node3.joinDht([epPeerDescriptor]),
101
- node4.joinDht([epPeerDescriptor]),
102
- node5.joinDht([epPeerDescriptor])
103
- ])
104
- expect(node1.getNeighborCount()).toBeGreaterThanOrEqual(2)
105
- expect(node2.getNeighborCount()).toBeGreaterThanOrEqual(2)
106
- expect(node3.getNeighborCount()).toBeGreaterThanOrEqual(2)
107
- expect(node4.getNeighborCount()).toBeGreaterThanOrEqual(2)
108
- expect(node5.getNeighborCount()).toBeGreaterThanOrEqual(2)
109
- }, 40000)
110
- })
@@ -1,137 +0,0 @@
1
- import { DhtNode } from '../../src/dht/DhtNode'
2
- import { randomDhtAddress, toNodeId } from '../../src/identifiers'
3
- import { createMockPeerDescriptor } from '../utils/utils'
4
-
5
- describe('Layer 1 on Layer 0 with mocked connections', () => {
6
-
7
- const entrypointDescriptor = createMockPeerDescriptor({
8
- websocket: {
9
- host: '127.0.0.1',
10
- port: 23232,
11
- tls: false
12
- }
13
- })
14
- let layer0EntryPoint: DhtNode
15
- let layer1Node1: DhtNode
16
- let layer0Node1: DhtNode
17
- let layer1EntryPoint: DhtNode
18
- let layer0Node2: DhtNode
19
- let layer1Node2: DhtNode
20
- let layer0Node3: DhtNode
21
- let layer1Node3: DhtNode
22
- let layer0Node4: DhtNode
23
- let layer1Node4: DhtNode
24
-
25
- beforeEach(async () => {
26
-
27
- layer0EntryPoint = new DhtNode({ peerDescriptor: entrypointDescriptor, websocketServerEnableTls: false })
28
-
29
- const layer0Node1Id = randomDhtAddress()
30
- layer0Node1 = new DhtNode({
31
- nodeId: layer0Node1Id,
32
- entryPoints: [entrypointDescriptor]
33
- })
34
-
35
- const layer0Node2Id = randomDhtAddress()
36
- layer0Node2 = new DhtNode({
37
- nodeId: layer0Node2Id,
38
- entryPoints: [entrypointDescriptor]
39
- })
40
-
41
- const layer0Node3Id = randomDhtAddress()
42
- layer0Node3 = new DhtNode({
43
- nodeId: layer0Node3Id,
44
- entryPoints: [entrypointDescriptor]
45
- })
46
-
47
- const layer0Node4Id = randomDhtAddress()
48
- layer0Node4 = new DhtNode({
49
- nodeId: layer0Node4Id,
50
- entryPoints: [entrypointDescriptor]
51
- })
52
-
53
- await layer0EntryPoint.start()
54
- await layer0Node1.start()
55
- await layer0Node2.start()
56
- await layer0Node3.start()
57
- await layer0Node4.start()
58
-
59
- layer1EntryPoint = new DhtNode({
60
- nodeId: toNodeId(entrypointDescriptor),
61
- transport: layer0EntryPoint,
62
- connectionsView: layer0EntryPoint.getConnectionsView(),
63
- serviceId: 'layer1'
64
- })
65
-
66
- layer1Node1 = new DhtNode({
67
- nodeId: layer0Node1Id,
68
- transport: layer0Node1,
69
- connectionsView: layer0Node1.getConnectionsView(),
70
- serviceId: 'layer1'
71
- })
72
-
73
- layer1Node2 = new DhtNode({
74
- nodeId: layer0Node2Id,
75
- transport: layer0Node2,
76
- connectionsView: layer0Node2.getConnectionsView(),
77
- serviceId: 'layer1'
78
- })
79
-
80
- layer1Node3 = new DhtNode({
81
- nodeId: layer0Node3Id,
82
- transport: layer0Node3,
83
- connectionsView: layer0Node3.getConnectionsView(),
84
- serviceId: 'layer1'
85
- })
86
-
87
- layer1Node4 = new DhtNode({
88
- nodeId: layer0Node4Id,
89
- transport: layer0Node4,
90
- connectionsView: layer0Node4.getConnectionsView(),
91
- serviceId: 'layer1'
92
- })
93
-
94
- await layer1EntryPoint.start()
95
- await layer1Node1.start()
96
- await layer1Node2.start()
97
- await layer1Node3.start()
98
- await layer1Node4.start()
99
-
100
- await layer0EntryPoint.joinDht([entrypointDescriptor])
101
- await layer1EntryPoint.joinDht([entrypointDescriptor])
102
- })
103
-
104
- afterEach(async () => {
105
- await Promise.all([
106
- layer0EntryPoint.stop(),
107
- layer0Node1.stop(),
108
- layer0Node2.stop(),
109
- layer0Node3.stop(),
110
- layer0Node4.stop(),
111
- layer1EntryPoint.stop(),
112
- layer1Node1.stop(),
113
- layer1Node2.stop(),
114
- layer1Node3.stop(),
115
- layer1Node4.stop()
116
- ])
117
- })
118
-
119
- it('Happy Path', async () => {
120
- await Promise.all([
121
- layer0Node1.joinDht([entrypointDescriptor]),
122
- layer0Node2.joinDht([entrypointDescriptor]),
123
- layer0Node3.joinDht([entrypointDescriptor]),
124
- layer0Node4.joinDht([entrypointDescriptor])
125
- ])
126
-
127
- await layer1Node1.joinDht([entrypointDescriptor])
128
- await layer1Node2.joinDht([entrypointDescriptor])
129
- await layer1Node3.joinDht([entrypointDescriptor])
130
- await layer1Node4.joinDht([entrypointDescriptor])
131
-
132
- expect(layer1Node1.getNeighborCount()).toBeGreaterThanOrEqual(2)
133
- expect(layer1Node2.getNeighborCount()).toBeGreaterThanOrEqual(2)
134
- expect(layer1Node3.getNeighborCount()).toBeGreaterThanOrEqual(2)
135
- expect(layer1Node4.getNeighborCount()).toBeGreaterThanOrEqual(2)
136
- }, 60000)
137
- })
@@ -1,85 +0,0 @@
1
- import { areEqualBinaries, waitForEvent3 } from '@streamr/utils'
2
- import { ConnectionManager } from '../../src/connection/ConnectionManager'
3
- import { DhtNode } from '../../src/dht/DhtNode'
4
- import { PeerDescriptor } from '../../generated/packages/dht/protos/DhtRpc'
5
- import { createMockPeerDescriptor } from '../utils/utils'
6
- import { toNodeId } from '../../src/exports'
7
-
8
- describe('Layer0 with WebRTC connections', () => {
9
-
10
- const epPeerDescriptor = createMockPeerDescriptor({
11
- websocket: { host: '127.0.0.1', port: 10029, tls: false }
12
- })
13
- let epDhtNode: DhtNode
14
- let node1: DhtNode
15
- let node2: DhtNode
16
- let node3: DhtNode
17
- let node4: DhtNode
18
-
19
- beforeEach(async () => {
20
-
21
- epDhtNode = new DhtNode({
22
- peerDescriptor: epPeerDescriptor,
23
- numberOfNodesPerKBucket: 8,
24
- websocketServerEnableTls: false
25
- })
26
- await epDhtNode.start()
27
-
28
- await epDhtNode.joinDht([epPeerDescriptor])
29
-
30
- node1 = new DhtNode({ entryPoints: [epPeerDescriptor] })
31
- node2 = new DhtNode({ entryPoints: [epPeerDescriptor] })
32
- node3 = new DhtNode({ entryPoints: [epPeerDescriptor] })
33
- node4 = new DhtNode({ entryPoints: [epPeerDescriptor] })
34
-
35
- await Promise.all([
36
- node1.start(),
37
- node2.start(),
38
- node3.start(),
39
- node4.start()
40
- ])
41
- })
42
-
43
- afterEach(async () => {
44
- await Promise.all([
45
- node1.stop(),
46
- node2.stop(),
47
- node3.stop(),
48
- node4.stop()
49
- ])
50
- await epDhtNode.stop()
51
- })
52
-
53
- it('Happy path two peers', async () => {
54
-
55
- await Promise.all([
56
- waitForEvent3<any>(
57
- node2 as any,
58
- 'connected',
59
- 20000,
60
- (peerDescriptor: PeerDescriptor) => {
61
- return areEqualBinaries(peerDescriptor.nodeId, node1.getLocalPeerDescriptor().nodeId)
62
- }
63
- ),
64
- node2.joinDht([epPeerDescriptor]),
65
- node1.joinDht([epPeerDescriptor])
66
- ])
67
- const nodeId1 = toNodeId(node1.getLocalPeerDescriptor())
68
- const nodeId2 = toNodeId(node2.getLocalPeerDescriptor())
69
- expect((node1.getTransport() as ConnectionManager).hasConnection(nodeId2)).toEqual(true)
70
- expect((node2.getTransport() as ConnectionManager).hasConnection(nodeId1)).toEqual(true)
71
- }, 60000)
72
-
73
- it('Happy path simultaneous joins', async () => {
74
- await Promise.all([
75
- node1.joinDht([epPeerDescriptor]),
76
- node2.joinDht([epPeerDescriptor]),
77
- node3.joinDht([epPeerDescriptor]),
78
- node4.joinDht([epPeerDescriptor])
79
- ])
80
- const nodeId1 = toNodeId(node1.getLocalPeerDescriptor())
81
- const nodeId2 = toNodeId(node2.getLocalPeerDescriptor())
82
- expect((node1.getTransport() as ConnectionManager).hasConnection(nodeId2)).toEqual(true)
83
- expect((node2.getTransport() as ConnectionManager).hasConnection(nodeId1)).toEqual(true)
84
- })
85
- })