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