@streamr/dht 102.0.0-beta.1 → 102.0.0-beta.3

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 (211) hide show
  1. package/dist/generated/google/protobuf/any.d.ts +180 -0
  2. package/dist/generated/google/protobuf/any.js +155 -0
  3. package/dist/generated/google/protobuf/any.js.map +1 -0
  4. package/dist/generated/google/protobuf/empty.d.ts +31 -0
  5. package/dist/generated/google/protobuf/empty.js +32 -0
  6. package/dist/generated/google/protobuf/empty.js.map +1 -0
  7. package/dist/generated/google/protobuf/timestamp.d.ts +155 -0
  8. package/dist/generated/google/protobuf/timestamp.js +136 -0
  9. package/dist/generated/google/protobuf/timestamp.js.map +1 -0
  10. package/dist/generated/packages/dht/protos/DhtRpc.client.d.ts +361 -0
  11. package/dist/generated/packages/dht/protos/DhtRpc.client.js +285 -0
  12. package/dist/generated/packages/dht/protos/DhtRpc.client.js.map +1 -0
  13. package/dist/generated/packages/dht/protos/DhtRpc.d.ts +999 -0
  14. package/dist/generated/packages/dht/protos/DhtRpc.js +677 -0
  15. package/dist/generated/packages/dht/protos/DhtRpc.js.map +1 -0
  16. package/dist/generated/packages/dht/protos/DhtRpc.server.d.ts +162 -0
  17. package/dist/generated/packages/dht/protos/DhtRpc.server.js +3 -0
  18. package/dist/generated/packages/dht/protos/DhtRpc.server.js.map +1 -0
  19. package/dist/generated/packages/proto-rpc/protos/ProtoRpc.d.ts +87 -0
  20. package/dist/generated/packages/proto-rpc/protos/ProtoRpc.js +66 -0
  21. package/dist/generated/packages/proto-rpc/protos/ProtoRpc.js.map +1 -0
  22. package/dist/package.json +7 -7
  23. package/package.json +7 -7
  24. package/eslint.config.mjs +0 -12
  25. package/src/connection/Connection.ts +0 -28
  26. package/src/connection/ConnectionLockRpcLocal.ts +0 -78
  27. package/src/connection/ConnectionLockRpcRemote.ts +0 -64
  28. package/src/connection/ConnectionLockStates.ts +0 -131
  29. package/src/connection/ConnectionManager.ts +0 -661
  30. package/src/connection/ConnectionsView.ts +0 -8
  31. package/src/connection/ConnectorFacade.ts +0 -217
  32. package/src/connection/Handshaker.ts +0 -209
  33. package/src/connection/IConnection.ts +0 -40
  34. package/src/connection/ManagedConnection.ts +0 -113
  35. package/src/connection/OutputBuffer.ts +0 -28
  36. package/src/connection/PendingConnection.ts +0 -68
  37. package/src/connection/connectivityChecker.ts +0 -108
  38. package/src/connection/connectivityRequestHandler.ts +0 -116
  39. package/src/connection/simulator/Simulator.ts +0 -369
  40. package/src/connection/simulator/SimulatorConnection.ts +0 -137
  41. package/src/connection/simulator/SimulatorConnector.ts +0 -98
  42. package/src/connection/simulator/SimulatorTransport.ts +0 -15
  43. package/src/connection/simulator/pings.ts +0 -42
  44. package/src/connection/webrtc/BrowserWebrtcConnection.ts +0 -242
  45. package/src/connection/webrtc/IWebrtcConnection.ts +0 -24
  46. package/src/connection/webrtc/NodeWebrtcConnection.ts +0 -245
  47. package/src/connection/webrtc/WebrtcConnector.ts +0 -234
  48. package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +0 -108
  49. package/src/connection/webrtc/WebrtcConnectorRpcRemote.ts +0 -60
  50. package/src/connection/webrtc/iceServerAsString.ts +0 -15
  51. package/src/connection/websocket/AbstractWebsocketClientConnection.ts +0 -122
  52. package/src/connection/websocket/AutoCertifierClientFacade.ts +0 -89
  53. package/src/connection/websocket/BrowserWebsocketClientConnection.ts +0 -44
  54. package/src/connection/websocket/NodeWebsocketClientConnection.ts +0 -39
  55. package/src/connection/websocket/WebsocketClientConnector.ts +0 -119
  56. package/src/connection/websocket/WebsocketClientConnectorRpcLocal.ts +0 -38
  57. package/src/connection/websocket/WebsocketClientConnectorRpcRemote.ts +0 -19
  58. package/src/connection/websocket/WebsocketServer.ts +0 -164
  59. package/src/connection/websocket/WebsocketServerConnection.ts +0 -109
  60. package/src/connection/websocket/WebsocketServerConnector.ts +0 -290
  61. package/src/dht/DhtNode.ts +0 -683
  62. package/src/dht/DhtNodeRpcLocal.ts +0 -84
  63. package/src/dht/DhtNodeRpcRemote.ts +0 -107
  64. package/src/dht/ExternalApiRpcLocal.ts +0 -58
  65. package/src/dht/ExternalApiRpcRemote.ts +0 -41
  66. package/src/dht/PeerManager.ts +0 -305
  67. package/src/dht/contact/Contact.ts +0 -19
  68. package/src/dht/contact/ContactList.ts +0 -43
  69. package/src/dht/contact/RandomContactList.ts +0 -56
  70. package/src/dht/contact/RingContactList.ts +0 -143
  71. package/src/dht/contact/RpcRemote.ts +0 -72
  72. package/src/dht/contact/SortedContactList.ts +0 -173
  73. package/src/dht/contact/getClosestNodes.ts +0 -24
  74. package/src/dht/contact/ringIdentifiers.ts +0 -62
  75. package/src/dht/discovery/DiscoverySession.ts +0 -129
  76. package/src/dht/discovery/PeerDiscovery.ts +0 -244
  77. package/src/dht/discovery/RingDiscoverySession.ts +0 -148
  78. package/src/dht/recursive-operation/RecursiveOperationManager.ts +0 -251
  79. package/src/dht/recursive-operation/RecursiveOperationRpcLocal.ts +0 -34
  80. package/src/dht/recursive-operation/RecursiveOperationRpcRemote.ts +0 -43
  81. package/src/dht/recursive-operation/RecursiveOperationSession.ts +0 -231
  82. package/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.ts +0 -35
  83. package/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.ts +0 -30
  84. package/src/dht/routing/DuplicateDetector.ts +0 -34
  85. package/src/dht/routing/Router.ts +0 -246
  86. package/src/dht/routing/RouterRpcLocal.ts +0 -78
  87. package/src/dht/routing/RouterRpcRemote.ts +0 -80
  88. package/src/dht/routing/RoutingSession.ts +0 -243
  89. package/src/dht/routing/RoutingTablesCache.ts +0 -60
  90. package/src/dht/routing/getPreviousPeer.ts +0 -6
  91. package/src/dht/store/LocalDataStore.ts +0 -84
  92. package/src/dht/store/StoreManager.ts +0 -170
  93. package/src/dht/store/StoreRpcLocal.ts +0 -89
  94. package/src/dht/store/StoreRpcRemote.ts +0 -32
  95. package/src/exports.ts +0 -33
  96. package/src/helpers/AddressTools.ts +0 -28
  97. package/src/helpers/Connectivity.ts +0 -19
  98. package/src/helpers/browser/isBrowserEnvironment.ts +0 -1
  99. package/src/helpers/browser/isBrowserEnvironment_override.ts +0 -3
  100. package/src/helpers/createPeerDescriptor.ts +0 -57
  101. package/src/helpers/createPeerDescriptorSignaturePayload.ts +0 -28
  102. package/src/helpers/debugHelpers.ts +0 -9
  103. package/src/helpers/errors.ts +0 -49
  104. package/src/helpers/offering.ts +0 -15
  105. package/src/helpers/protoClasses.ts +0 -57
  106. package/src/helpers/protoToString.ts +0 -21
  107. package/src/helpers/version.ts +0 -32
  108. package/src/identifiers.ts +0 -29
  109. package/src/rpc-protocol/DhtCallContext.ts +0 -14
  110. package/src/rpc-protocol/DhtRpcOptions.ts +0 -10
  111. package/src/transport/ITransport.ts +0 -37
  112. package/src/transport/ListeningRpcCommunicator.ts +0 -32
  113. package/src/transport/RoutingRpcCommunicator.ts +0 -66
  114. package/src/types/ServiceID.ts +0 -1
  115. package/src/types/textencoding.d.ts +0 -6
  116. package/test/benchmark/Find.test.ts +0 -72
  117. package/test/benchmark/KademliaCorrectness.test.ts +0 -114
  118. package/test/benchmark/RingCorrectness.test.ts +0 -157
  119. package/test/benchmark/SortedContactListBenchmark.test.ts +0 -108
  120. package/test/benchmark/WebsocketServerMemoryLeak.test.ts +0 -41
  121. package/test/benchmark/hybrid-network-simulation/RingContactList.test.ts +0 -71
  122. package/test/end-to-end/GeoIpLayer0.test.ts +0 -55
  123. package/test/end-to-end/Layer0-Layer1.test.ts +0 -93
  124. package/test/end-to-end/Layer0.test.ts +0 -76
  125. package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +0 -110
  126. package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +0 -137
  127. package/test/end-to-end/Layer0Webrtc.test.ts +0 -85
  128. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +0 -82
  129. package/test/end-to-end/Layer1-Scale-Webrtc.test.ts +0 -76
  130. package/test/end-to-end/RecoveryFromFailedAutoCertification.test.ts +0 -52
  131. package/test/end-to-end/WebsocketConnectionRequest.test.ts +0 -69
  132. package/test/end-to-end/memory-leak.test.ts +0 -80
  133. package/test/integration/ConnectionLocking.test.ts +0 -192
  134. package/test/integration/ConnectionManager.test.ts +0 -528
  135. package/test/integration/ConnectivityChecking.test.ts +0 -53
  136. package/test/integration/DhtJoinPeerDiscovery.test.ts +0 -49
  137. package/test/integration/DhtNode.test.ts +0 -66
  138. package/test/integration/DhtNodeExternalAPI.test.ts +0 -48
  139. package/test/integration/DhtNodeRpcRemote.test.ts +0 -66
  140. package/test/integration/DhtRpc.test.ts +0 -121
  141. package/test/integration/Find.test.ts +0 -45
  142. package/test/integration/GeoIpConnectivityChecking.test.ts +0 -72
  143. package/test/integration/Layer1-scale.test.ts +0 -189
  144. package/test/integration/Mock-Layer1-Layer0.test.ts +0 -85
  145. package/test/integration/MultipleEntryPointJoining.test.ts +0 -105
  146. package/test/integration/ReplicateData.test.ts +0 -104
  147. package/test/integration/RouteMessage.test.ts +0 -230
  148. package/test/integration/RouterRpcRemote.test.ts +0 -77
  149. package/test/integration/SimultaneousConnections.test.ts +0 -316
  150. package/test/integration/Store.test.ts +0 -85
  151. package/test/integration/StoreAndDelete.test.ts +0 -77
  152. package/test/integration/StoreOnDhtWithThreeNodes.test.ts +0 -59
  153. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +0 -51
  154. package/test/integration/StoreRpcRemote.test.ts +0 -54
  155. package/test/integration/WebrtcConnectionManagement.test.ts +0 -191
  156. package/test/integration/WebrtcConnectorRpc.test.ts +0 -125
  157. package/test/integration/Websocket.test.ts +0 -65
  158. package/test/integration/WebsocketClientConnectorRpc.test.ts +0 -69
  159. package/test/integration/WebsocketConnectionManagement.test.ts +0 -191
  160. package/test/integration/rpc-connections-over-webrtc.test.ts +0 -123
  161. package/test/kademlia-simulation/data/nodeids.json +0 -13002
  162. package/test/kademlia-simulation/data/orderedneighbors.json +0 -1001
  163. package/test/types/global.d.ts +0 -1
  164. package/test/unit/AddressTools.test.ts +0 -44
  165. package/test/unit/AutoCertifierClientFacade.test.ts +0 -58
  166. package/test/unit/ConnectionManager.test.ts +0 -65
  167. package/test/unit/ConnectivityHelpers.test.ts +0 -61
  168. package/test/unit/DiscoverySession.test.ts +0 -87
  169. package/test/unit/DuplicateDetector.test.ts +0 -31
  170. package/test/unit/Handshaker.test.ts +0 -169
  171. package/test/unit/ListeningRpcCommunicator.test.ts +0 -52
  172. package/test/unit/LocalDataStore.test.ts +0 -108
  173. package/test/unit/ManagedConnection.test.ts +0 -58
  174. package/test/unit/PeerManager.test.ts +0 -93
  175. package/test/unit/PendingConnection.test.ts +0 -57
  176. package/test/unit/ProtobufMessage.test.ts +0 -21
  177. package/test/unit/RandomContactList.test.ts +0 -58
  178. package/test/unit/RecursiveOperationManager.test.ts +0 -161
  179. package/test/unit/RecursiveOperationSession.test.ts +0 -68
  180. package/test/unit/Router.test.ts +0 -137
  181. package/test/unit/RoutingSession.test.ts +0 -86
  182. package/test/unit/SortedContactList.test.ts +0 -115
  183. package/test/unit/StoreManager.test.ts +0 -146
  184. package/test/unit/StoreRpcLocal.test.ts +0 -167
  185. package/test/unit/WebrtcConnection.test.ts +0 -29
  186. package/test/unit/WebrtcConnector.test.ts +0 -56
  187. package/test/unit/WebsocketClientConnector.test.ts +0 -101
  188. package/test/unit/WebsocketServer.test.ts +0 -66
  189. package/test/unit/WebsocketServerConnector.test.ts +0 -102
  190. package/test/unit/connectivityRequestHandler.test.ts +0 -104
  191. package/test/unit/createPeerDescriptor.test.ts +0 -69
  192. package/test/unit/customMatchers.test.ts +0 -34
  193. package/test/unit/getClosestNodes.test.ts +0 -30
  194. package/test/unit/version.test.ts +0 -18
  195. package/test/unit/webrtcReplaceInternalIpWithExternalIp.test.ts +0 -18
  196. package/test/utils/FakeConnectorFacade.ts +0 -41
  197. package/test/utils/FakeRpcCommunicator.ts +0 -23
  198. package/test/utils/FakeTransport.ts +0 -79
  199. package/test/utils/customMatchers.ts +0 -71
  200. package/test/utils/mock/MockConnection.ts +0 -26
  201. package/test/utils/mock/MockConnectionsView.ts +0 -18
  202. package/test/utils/mock/MockRouter.ts +0 -62
  203. package/test/utils/mock/MockRpcCommunicator.ts +0 -7
  204. package/test/utils/mock/MockTransport.ts +0 -26
  205. package/test/utils/mock/mockDataEntry.ts +0 -38
  206. package/test/utils/topology.ts +0 -79
  207. package/test/utils/utils.ts +0 -268
  208. package/tsconfig.browser.json +0 -17
  209. package/tsconfig.jest.json +0 -25
  210. package/tsconfig.json +0 -3
  211. 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
- protocolVersion: '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: [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
- })