@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,101 +0,0 @@
1
- /* eslint-disable max-len */
2
- import { WebsocketClientConnector } from '../../src/connection/websocket/WebsocketClientConnector'
3
- import { NodeType } from '../../generated/packages/dht/protos/DhtRpc'
4
- import { MockConnection } from '../utils/mock/MockConnection'
5
- import { MockRpcCommunicator } from '../utils/mock/MockRpcCommunicator'
6
- import { createMockPeerDescriptor } from '../utils/utils'
7
-
8
- describe('WebsocketClientConnector', () => {
9
-
10
- let connector: WebsocketClientConnector
11
-
12
- beforeEach(() => {
13
- connector = new WebsocketClientConnector({
14
- rpcCommunicator: new MockRpcCommunicator(),
15
- canConnect: () => {}
16
- } as any)
17
- })
18
-
19
- afterEach(() => {
20
- connector.destroy()
21
- })
22
-
23
- describe('isPossibleToFormConnection', () => {
24
-
25
- it('node without server', () => {
26
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS }))
27
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(true)
28
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(true)
29
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(false)
30
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(false)
31
- })
32
-
33
- it('node with TLS server', () => {
34
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: true } }))
35
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(true)
36
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(true)
37
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(false)
38
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(false)
39
- })
40
-
41
- it('node with non-TLS server', () => {
42
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: false } }))
43
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(true)
44
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(true)
45
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(false)
46
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(false)
47
- })
48
-
49
- it('node with non-TLS server in local network', () => {
50
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '192.168.11.11', port: 11, tls: false } }))
51
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(true)
52
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(true)
53
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(false)
54
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(false)
55
- })
56
-
57
- it('browser', () => {
58
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.BROWSER }))
59
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(false)
60
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(true)
61
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(false)
62
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(false)
63
- })
64
- })
65
-
66
- describe('Connect', () => {
67
-
68
- it('Returns existing connecting connection', () => {
69
- connector.setLocalPeerDescriptor(createMockPeerDescriptor())
70
- const remotePeerDescriptor = createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: false } })
71
- const firstConnection = connector.connect(remotePeerDescriptor)
72
- const secondConnection = connector.connect(remotePeerDescriptor)
73
- expect(firstConnection).toEqual(secondConnection)
74
- firstConnection.close(false)
75
- })
76
-
77
- it('Disconnected event removes connecting connection', () => {
78
- connector.setLocalPeerDescriptor(createMockPeerDescriptor())
79
- const remotePeerDescriptor = createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: false } })
80
- const firstConnection = connector.connect(remotePeerDescriptor)
81
- firstConnection.emit('disconnected', false)
82
- const secondConnection = connector.connect(remotePeerDescriptor)
83
- expect(firstConnection).not.toEqual(secondConnection)
84
- firstConnection.close(false)
85
- secondConnection.close(false)
86
- })
87
-
88
- it('Connected event removes connecting connection', () => {
89
- connector.setLocalPeerDescriptor(createMockPeerDescriptor())
90
- const remotePeerDescriptor = createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: false } })
91
- const firstConnection = connector.connect(remotePeerDescriptor)
92
- firstConnection.onHandshakeCompleted(new MockConnection())
93
- const secondConnection = connector.connect(remotePeerDescriptor)
94
- expect(firstConnection).not.toEqual(secondConnection)
95
- firstConnection.close(false)
96
- secondConnection.close(false)
97
- })
98
-
99
- })
100
-
101
- })
@@ -1,66 +0,0 @@
1
- import { WebsocketServer } from '../../src/connection/websocket/WebsocketServer'
2
-
3
- describe('WebsocketServer', () => {
4
-
5
- it('starts and stops', async () => {
6
- const server = new WebsocketServer({
7
- portRange: { min: 19792, max: 19792 },
8
- enableTls: false
9
- })
10
- const port = await server.start()
11
- expect(port).toEqual(19792)
12
- await server.stop()
13
- })
14
-
15
- it('throws if server is already in use', async () => {
16
- const server1 = new WebsocketServer({
17
- portRange: { min: 19792, max: 19792 },
18
- enableTls: false
19
- })
20
- const port = await server1.start()
21
- expect(port).toEqual(19792)
22
-
23
- const server2 = new WebsocketServer({
24
- portRange: { min: 19792, max: 19792 },
25
- enableTls: false
26
- })
27
- await expect(server2.start())
28
- .rejects
29
- .toThrow()
30
-
31
- await server1.stop()
32
- await server2.stop()
33
- })
34
-
35
- it('Starts server in next port if first one is already in use', async () => {
36
- const server1 = new WebsocketServer({
37
- portRange: { min: 19792, max: 19793 },
38
- enableTls: false
39
- })
40
- const port1 = await server1.start()
41
- expect(port1).toEqual(19792)
42
-
43
- const server2 = new WebsocketServer({
44
- portRange: { min: 19792, max: 19793 },
45
- enableTls: false
46
- })
47
- const port2 = await server2.start()
48
- expect(port2).toEqual(19793)
49
-
50
- await server1.stop()
51
- await server2.stop()
52
- })
53
-
54
- it('throws if too big a port number is given', async () => {
55
- const server = new WebsocketServer({
56
- portRange: { min: 197923233, max: 197923233 },
57
- enableTls: false
58
- })
59
-
60
- await expect(server.start())
61
- .rejects
62
- .toThrow()
63
-
64
- await server.stop()
65
- })
66
- })
@@ -1,102 +0,0 @@
1
- /* eslint-disable max-len */
2
- import { WebsocketServerConnector } from '../../src/connection/websocket/WebsocketServerConnector'
3
- import { NodeType } from '../../generated/packages/dht/protos/DhtRpc'
4
- import { MockConnection } from '../utils/mock/MockConnection'
5
- import { MockRpcCommunicator } from '../utils/mock/MockRpcCommunicator'
6
- import { createMockPeerDescriptor } from '../utils/utils'
7
-
8
- describe('WebsocketServerConnector', () => {
9
-
10
- let connector: WebsocketServerConnector
11
-
12
- beforeEach(() => {
13
- connector = new WebsocketServerConnector({
14
- rpcCommunicator: new MockRpcCommunicator(),
15
- canConnect: () => {}
16
- } as any)
17
- })
18
-
19
- afterEach(() => {
20
- connector.destroy()
21
- })
22
-
23
- describe('isPossibleToFormConnection', () => {
24
-
25
- it('node without server', () => {
26
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS }))
27
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(false)
28
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(false)
29
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(false)
30
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(false)
31
- })
32
-
33
- it('node with TLS server', () => {
34
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: true } }))
35
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(false)
36
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(false)
37
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(true)
38
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(true)
39
- })
40
-
41
- it('node with non-TLS server', () => {
42
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: false } }))
43
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(false)
44
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(false)
45
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(true)
46
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(false)
47
- })
48
-
49
- it('node with non-TLS server in local network', () => {
50
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '192.168.11.11', port: 11, tls: false } }))
51
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(false)
52
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(false)
53
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(true)
54
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(true)
55
- })
56
-
57
- it('browser', () => {
58
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.BROWSER }))
59
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: false } }))).toBe(false)
60
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '2.2.2.2', port: 22, tls: true } }))).toBe(false)
61
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.NODEJS }))).toBe(false)
62
- expect(connector.isPossibleToFormConnection(createMockPeerDescriptor({ type: NodeType.BROWSER }))).toBe(false)
63
- })
64
-
65
- })
66
-
67
- describe('Connect', () => {
68
-
69
- it('Returns existing connecting connection', () => {
70
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: false } }))
71
- const remotePeerDescriptor = createMockPeerDescriptor()
72
- const firstConnection = connector.connect(remotePeerDescriptor)
73
- const secondConnection = connector.connect(remotePeerDescriptor)
74
- expect(firstConnection).toEqual(secondConnection)
75
- firstConnection.close(false)
76
- })
77
-
78
- it('Disconnected event removes connecting connection', () => {
79
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: false } }))
80
- const remotePeerDescriptor = createMockPeerDescriptor()
81
- const firstConnection = connector.connect(remotePeerDescriptor)
82
- firstConnection.emit('disconnected', false)
83
- const secondConnection = connector.connect(remotePeerDescriptor)
84
- expect(firstConnection).not.toEqual(secondConnection)
85
- firstConnection.close(false)
86
- secondConnection.close(false)
87
- })
88
-
89
- it('Connected event removes connecting connection', () => {
90
- connector.setLocalPeerDescriptor(createMockPeerDescriptor({ type: NodeType.NODEJS, websocket: { host: '1.1.1.1', port: 11, tls: false } }))
91
- const remotePeerDescriptor = createMockPeerDescriptor()
92
- const firstConnection = connector.connect(remotePeerDescriptor)
93
- firstConnection.onHandshakeCompleted(new MockConnection())
94
- const secondConnection = connector.connect(remotePeerDescriptor)
95
- expect(firstConnection).not.toEqual(secondConnection)
96
- firstConnection.close(false)
97
- secondConnection.close(false)
98
- })
99
-
100
- })
101
-
102
- })
@@ -1,104 +0,0 @@
1
- import { ipv4ToNumber, until } from '@streamr/utils'
2
- import { EventEmitter } from 'eventemitter3'
3
- import { once } from 'events'
4
- import { Server as HttpServer, createServer as createHttpServer } from 'http'
5
- import { server as WsServer } from 'websocket'
6
- import { CONNECTIVITY_CHECKER_SERVICE_ID } from '../../src/connection/connectivityChecker'
7
- import { attachConnectivityRequestHandler } from '../../src/connection/connectivityRequestHandler'
8
- import { Message } from '../../generated/packages/dht/protos/DhtRpc'
9
- import { LOCAL_PROTOCOL_VERSION } from '../../src/helpers/version'
10
-
11
- const HOST = '127.0.0.1'
12
- const PORT = 15001
13
-
14
- describe('connectivityRequestHandler', () => {
15
-
16
- let httpServer: HttpServer
17
- let wsServer: WsServer
18
- let connection: any
19
-
20
- beforeEach(async () => {
21
- httpServer = createHttpServer()
22
- wsServer = new WsServer({
23
- httpServer,
24
- autoAcceptConnections: true
25
- })
26
- httpServer.listen(PORT)
27
- await once(httpServer, 'listening')
28
- connection = new EventEmitter()
29
- connection.send = jest.fn()
30
- connection.getRemoteIpAddress = () => HOST
31
- })
32
-
33
- afterEach(async () => {
34
- wsServer.shutDown()
35
- httpServer.close()
36
- await once(httpServer, 'close')
37
- })
38
-
39
- it('happy path', async () => {
40
- attachConnectivityRequestHandler(connection)
41
- const request: Message = {
42
- serviceId: CONNECTIVITY_CHECKER_SERVICE_ID,
43
- messageId: 'mock-message-id',
44
- body: {
45
- oneofKind: 'connectivityRequest',
46
- connectivityRequest: { port: PORT, host: HOST, tls: false, allowSelfSignedCertificate: false }
47
- }
48
- }
49
- connection.emit('data', Message.toBinary(request))
50
-
51
- await until(() => connection.send.mock.calls.length > 0)
52
-
53
- const receivedMessage = Message.fromBinary(connection.send.mock.calls[0][0])
54
- expect(receivedMessage).toEqual({
55
- body: {
56
- connectivityResponse: {
57
- host: HOST,
58
- natType: 'open_internet',
59
- websocket: {
60
- host: HOST,
61
- port: PORT,
62
- tls: false
63
- },
64
- ipAddress: ipv4ToNumber(HOST),
65
- protocolVersion: LOCAL_PROTOCOL_VERSION
66
- },
67
- oneofKind: 'connectivityResponse'
68
- },
69
- messageId: expect.any(String),
70
- serviceId: 'system/connectivity-checker'
71
- })
72
- })
73
-
74
- it('disabled connectivity probing', async () => {
75
- attachConnectivityRequestHandler(connection)
76
- const request: Message = {
77
- serviceId: CONNECTIVITY_CHECKER_SERVICE_ID,
78
- messageId: 'mock-message-id',
79
- body: {
80
- oneofKind: 'connectivityRequest',
81
- connectivityRequest: { port: 0, host: HOST, tls: false, allowSelfSignedCertificate: false }
82
- }
83
- }
84
- connection.emit('data', Message.toBinary(request))
85
-
86
- await until(() => connection.send.mock.calls.length > 0)
87
-
88
- const receivedMessage = Message.fromBinary(connection.send.mock.calls[0][0])
89
- expect(receivedMessage).toEqual({
90
- body: {
91
- connectivityResponse: {
92
- host: HOST,
93
- natType: 'unknown',
94
- ipAddress: ipv4ToNumber(HOST),
95
- protocolVersion: LOCAL_PROTOCOL_VERSION
96
- },
97
- oneofKind: 'connectivityResponse'
98
- },
99
- messageId: expect.any(String),
100
- serviceId: 'system/connectivity-checker'
101
- })
102
- })
103
-
104
- })
@@ -1,69 +0,0 @@
1
- import { ipv4ToNumber } from '@streamr/utils'
2
- import { createPeerDescriptor } from '../../src/helpers/createPeerDescriptor'
3
- import { isBrowserEnvironment } from '../../src/helpers/browser/isBrowserEnvironment'
4
- import { NodeType } from '../../generated/packages/dht/protos/DhtRpc'
5
- import { randomDhtAddress, toDhtAddressRaw } from '../../src/identifiers'
6
- import { getRandomRegion } from '../../dist/src/connection/simulator/pings'
7
-
8
- const IP_ADDRESS = '1.2.3.4'
9
-
10
- describe('createPeerDescriptor', () => {
11
-
12
- const region = getRandomRegion()
13
-
14
- it('without websocket', () => {
15
- const connectivityResponse = {
16
- ipAddress: ipv4ToNumber(IP_ADDRESS)
17
- } as any
18
- const peerDescriptor = createPeerDescriptor(connectivityResponse, region)
19
- expect(peerDescriptor).toEqual({
20
- nodeId: expect.any(Uint8Array),
21
- type: isBrowserEnvironment() ? NodeType.BROWSER : NodeType.NODEJS,
22
- ipAddress: ipv4ToNumber(IP_ADDRESS),
23
- publicKey: expect.any(Uint8Array),
24
- signature: expect.any(Uint8Array),
25
- region
26
- })
27
- })
28
-
29
- it('with websocket', () => {
30
- const connectivityResponse = {
31
- ipAddress: ipv4ToNumber(IP_ADDRESS),
32
- websocket: {
33
- host: 'bar.com',
34
- port: 123,
35
- tls: true
36
- }
37
- } as any
38
- const peerDescriptor = createPeerDescriptor(connectivityResponse, region)
39
- expect(peerDescriptor).toEqual({
40
- nodeId: expect.any(Uint8Array),
41
- type: isBrowserEnvironment() ? NodeType.BROWSER : NodeType.NODEJS,
42
- ipAddress: ipv4ToNumber(IP_ADDRESS),
43
- publicKey: expect.any(Uint8Array),
44
- signature: expect.any(Uint8Array),
45
- websocket: {
46
- host: 'bar.com',
47
- port: 123,
48
- tls: true
49
- },
50
- region
51
- })
52
- })
53
-
54
- it('explicit nodeId', () => {
55
- const nodeId = randomDhtAddress()
56
- const connectivityResponse = {
57
- ipAddress: ipv4ToNumber(IP_ADDRESS)
58
- } as any
59
- const peerDescriptor = createPeerDescriptor(connectivityResponse, region, nodeId)
60
- expect(peerDescriptor).toEqual({
61
- nodeId: toDhtAddressRaw(nodeId),
62
- type: isBrowserEnvironment() ? NodeType.BROWSER : NodeType.NODEJS,
63
- ipAddress: ipv4ToNumber(IP_ADDRESS),
64
- publicKey: expect.any(Uint8Array),
65
- signature: expect.any(Uint8Array),
66
- region
67
- })
68
- })
69
- })
@@ -1,34 +0,0 @@
1
- import { cloneDeep } from 'lodash'
2
- import { createMockPeerDescriptor } from '../utils/utils'
3
-
4
- describe('custom matchers', () => {
5
-
6
- it('happy path', () => {
7
- const peerDescriptor = createMockPeerDescriptor({
8
- websocket: { port: 1, host: 'x', tls: true }
9
- })
10
- expect(peerDescriptor).toEqualPeerDescriptor(cloneDeep(peerDescriptor))
11
- })
12
-
13
- it('no match', () => {
14
- expect(createMockPeerDescriptor()).not.toEqualPeerDescriptor(createMockPeerDescriptor())
15
- })
16
-
17
- describe('error message', () => {
18
-
19
- it('normal', () => {
20
- const actual = createMockPeerDescriptor()
21
- const expected = createMockPeerDescriptor()
22
- expect(() => {
23
- expect(actual).toEqualPeerDescriptor(expected)
24
- }).toThrow('PeerDescriptor nodeId values don\'t match')
25
- })
26
-
27
- it('inverse', () => {
28
- const peerDescriptor = createMockPeerDescriptor()
29
- expect(() => {
30
- expect(peerDescriptor).not.toEqualPeerDescriptor(peerDescriptor)
31
- }).toThrow('PeerDescriptors are equal')
32
- })
33
- })
34
- })
@@ -1,30 +0,0 @@
1
- import { range, sampleSize, sortBy } from 'lodash'
2
- import { getDistance } from '../../src/dht/PeerManager'
3
- import { getClosestNodes } from '../../src/dht/contact/getClosestNodes'
4
- import { DhtAddress, randomDhtAddress, toNodeId, toDhtAddressRaw } from '../../src/identifiers'
5
- import { createMockPeerDescriptor } from '../utils/utils'
6
- import { PeerDescriptor } from '../../src/exports'
7
-
8
- describe('getClosestNodes', () => {
9
-
10
- it('happy path', () => {
11
- const peerDescriptors = range(10).map(() => createMockPeerDescriptor())
12
- const referenceId = randomDhtAddress()
13
- const excluded = new Set<DhtAddress>(sampleSize(peerDescriptors.map((n) => toNodeId(n)), 2))
14
-
15
- const actual = getClosestNodes(
16
- referenceId,
17
- peerDescriptors,
18
- {
19
- maxCount: 5,
20
- excludedNodeIds: excluded
21
- }
22
- )
23
-
24
- const expected = sortBy(
25
- peerDescriptors.filter((n) => !excluded.has(toNodeId(n))),
26
- (peerDescriptor: PeerDescriptor) => getDistance(peerDescriptor.nodeId, toDhtAddressRaw(referenceId))
27
- ).slice(0, 5)
28
- expect(actual).toEqual(expected)
29
- })
30
- })
@@ -1,18 +0,0 @@
1
- import { isMaybeSupportedProtocolVersion } from '../../src/helpers/version'
2
-
3
- describe('version', () => {
4
-
5
- it('supported', () => {
6
- expect(isMaybeSupportedProtocolVersion('1.0')).toBe(true)
7
- expect(isMaybeSupportedProtocolVersion('1.1')).toBe(true)
8
- expect(isMaybeSupportedProtocolVersion('2.0')).toBe(true)
9
- expect(isMaybeSupportedProtocolVersion('3.5')).toBe(true)
10
- })
11
-
12
- it('not supported', () => {
13
- expect(isMaybeSupportedProtocolVersion('')).toBe(false)
14
- expect(isMaybeSupportedProtocolVersion('100.0.0-testnet-three.3')).toBe(false)
15
- expect(isMaybeSupportedProtocolVersion('0.0')).toBe(false)
16
- expect(isMaybeSupportedProtocolVersion('0.1')).toBe(false)
17
- })
18
- })
@@ -1,18 +0,0 @@
1
- import { replaceInternalIpWithExternalIp } from '../../src/connection/webrtc/WebrtcConnector'
2
-
3
- describe('replaceIpIfCandidateTypeIsHost', () => {
4
-
5
- const hostCandidate = 'candidate:1 1 UDP 2013266431 127.0.0.1 30000 typ host'
6
- const srflxCandidate = 'candidate:1 1 UDP 2013266431 127.0.0.1 30000 typ srflx'
7
-
8
- it('replaces ip if candidate type is host', () => {
9
- const replaced = replaceInternalIpWithExternalIp(hostCandidate, '0.0.0.0')
10
- expect(replaced).toEqual('candidate:1 1 UDP 2013266431 0.0.0.0 30000 typ host')
11
- })
12
-
13
- it('does not replace candidate if type is not host', () => {
14
- const replaced = replaceInternalIpWithExternalIp(srflxCandidate, '0.0.0.0')
15
- expect(replaced).toEqual(srflxCandidate)
16
- })
17
-
18
- })
@@ -1,41 +0,0 @@
1
- import { PendingConnection } from '../../src/connection/PendingConnection'
2
- import { DhtAddress } from '../../src/identifiers'
3
- import { PeerDescriptor } from '../../generated/packages/dht/protos/DhtRpc'
4
- import { ITransport } from '../../src/transport/ITransport'
5
-
6
- export class FakeConnectorFacade {
7
-
8
- private readonly localPeerDescriptor: PeerDescriptor
9
- private onNewConnection?: (connection: PendingConnection) => boolean
10
-
11
- constructor(localPeerDescriptor: PeerDescriptor) {
12
- this.localPeerDescriptor = localPeerDescriptor
13
- }
14
-
15
- // eslint-disable-next-line class-methods-use-this
16
- createConnection(peerDescriptor: PeerDescriptor): PendingConnection {
17
- return new PendingConnection(peerDescriptor)
18
- }
19
-
20
- getLocalPeerDescriptor(): PeerDescriptor | undefined {
21
- return this.localPeerDescriptor
22
- }
23
-
24
- callOnNewConnection(connection: PendingConnection): boolean {
25
- return this.onNewConnection!(connection)
26
- }
27
-
28
- async start(
29
- onNewConnection: (connection: PendingConnection) => boolean,
30
- _hasConnection: (nodeId: DhtAddress) => boolean,
31
- _autoCertifierTransport: ITransport
32
- ): Promise<void> {
33
- this.onNewConnection = onNewConnection
34
- }
35
-
36
- // eslint-disable-next-line class-methods-use-this
37
- async stop(): Promise<void> {
38
-
39
- }
40
- }
41
-
@@ -1,23 +0,0 @@
1
- export class FakeRpcCommunicator {
2
-
3
- private readonly listeners: Map<string, (...args: any[]) => Promise<unknown>> = new Map()
4
-
5
- // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
6
- registerRpcMethod(_requestClass: any, _returnClass: any, methodName: string, callback: (...args: any[]) => Promise<unknown>): void {
7
- this.listeners.set(methodName, callback)
8
- }
9
-
10
- async callRpcMethod(methodName: string, ...args: any[]): Promise<unknown> {
11
- const listener = this.listeners.get(methodName)
12
- if (listener !== undefined) {
13
- return listener(...args)
14
- } else {
15
- throw new Error(`no registered callbacks for ${methodName}`)
16
- }
17
- }
18
-
19
- // eslint-disable-next-line class-methods-use-this
20
- getRpcClientTransport(): any {
21
- return {}
22
- }
23
- }