@streamr/dht 0.0.1-tatum.6 → 0.0.1-tatum.7

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 (196) hide show
  1. package/dist/src/connection/ConnectionLockHandler.d.ts +1 -1
  2. package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
  3. package/dist/src/connection/ConnectionManager.d.ts +17 -40
  4. package/dist/src/connection/ConnectionManager.js +138 -204
  5. package/dist/src/connection/ConnectionManager.js.map +1 -1
  6. package/dist/src/connection/ConnectivityChecker.js +14 -11
  7. package/dist/src/connection/ConnectivityChecker.js.map +1 -1
  8. package/dist/src/connection/ConnectorFacade.d.ts +49 -0
  9. package/dist/src/connection/ConnectorFacade.js +86 -0
  10. package/dist/src/connection/ConnectorFacade.js.map +1 -0
  11. package/dist/src/connection/ManagedConnection.d.ts +1 -4
  12. package/dist/src/connection/ManagedConnection.js +23 -31
  13. package/dist/src/connection/ManagedConnection.js.map +1 -1
  14. package/dist/src/connection/RemoteConnectionLocker.js +4 -3
  15. package/dist/src/connection/RemoteConnectionLocker.js.map +1 -1
  16. package/dist/src/connection/Simulator/Simulator.d.ts +0 -2
  17. package/dist/src/connection/Simulator/Simulator.js +0 -5
  18. package/dist/src/connection/Simulator/Simulator.js.map +1 -1
  19. package/dist/src/connection/Simulator/SimulatorConnection.js +16 -13
  20. package/dist/src/connection/Simulator/SimulatorConnection.js.map +1 -1
  21. package/dist/src/connection/Simulator/SimulatorConnector.d.ts +2 -2
  22. package/dist/src/connection/Simulator/SimulatorConnector.js +10 -11
  23. package/dist/src/connection/Simulator/SimulatorConnector.js.map +1 -1
  24. package/dist/src/connection/Simulator/SimulatorTransport.js +6 -1
  25. package/dist/src/connection/Simulator/SimulatorTransport.js.map +1 -1
  26. package/dist/src/connection/WebRTC/NodeWebRtcConnection.d.ts +2 -0
  27. package/dist/src/connection/WebRTC/NodeWebRtcConnection.js +12 -12
  28. package/dist/src/connection/WebRTC/NodeWebRtcConnection.js.map +1 -1
  29. package/dist/src/connection/WebRTC/WebRtcConnector.d.ts +9 -9
  30. package/dist/src/connection/WebRTC/WebRtcConnector.js +22 -22
  31. package/dist/src/connection/WebRTC/WebRtcConnector.js.map +1 -1
  32. package/dist/src/connection/WebSocket/RemoteWebSocketConnector.js +2 -1
  33. package/dist/src/connection/WebSocket/RemoteWebSocketConnector.js.map +1 -1
  34. package/dist/src/connection/WebSocket/WebSocketConnector.d.ts +19 -8
  35. package/dist/src/connection/WebSocket/WebSocketConnector.js +67 -46
  36. package/dist/src/connection/WebSocket/WebSocketConnector.js.map +1 -1
  37. package/dist/src/connection/WebSocket/WebSocketServer.d.ts +11 -1
  38. package/dist/src/connection/WebSocket/WebSocketServer.js +15 -10
  39. package/dist/src/connection/WebSocket/WebSocketServer.js.map +1 -1
  40. package/dist/src/dht/DhtNode.d.ts +15 -51
  41. package/dist/src/dht/DhtNode.js +107 -129
  42. package/dist/src/dht/DhtNode.js.map +1 -1
  43. package/dist/src/dht/{DhtPeer.d.ts → RemoteDhtNode.d.ts} +2 -3
  44. package/dist/src/dht/{DhtPeer.js → RemoteDhtNode.js} +21 -19
  45. package/dist/src/dht/RemoteDhtNode.js.map +1 -0
  46. package/dist/src/dht/contact/ContactList.d.ts +0 -1
  47. package/dist/src/dht/contact/ContactList.js +0 -3
  48. package/dist/src/dht/contact/ContactList.js.map +1 -1
  49. package/dist/src/dht/contact/RandomContactList.d.ts +0 -1
  50. package/dist/src/dht/contact/RandomContactList.js +0 -3
  51. package/dist/src/dht/contact/RandomContactList.js.map +1 -1
  52. package/dist/src/dht/contact/SortedContactList.d.ts +0 -3
  53. package/dist/src/dht/contact/SortedContactList.js +0 -9
  54. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  55. package/dist/src/dht/discovery/DiscoverySession.d.ts +5 -7
  56. package/dist/src/dht/discovery/DiscoverySession.js +9 -10
  57. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  58. package/dist/src/dht/discovery/PeerDiscovery.d.ts +11 -10
  59. package/dist/src/dht/discovery/PeerDiscovery.js +32 -37
  60. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  61. package/dist/src/dht/find/RecursiveFindSession.d.ts +5 -6
  62. package/dist/src/dht/find/RecursiveFindSession.js +8 -8
  63. package/dist/src/dht/find/RecursiveFindSession.js.map +1 -1
  64. package/dist/src/dht/find/RecursiveFinder.d.ts +2 -4
  65. package/dist/src/dht/find/RecursiveFinder.js +11 -12
  66. package/dist/src/dht/find/RecursiveFinder.js.map +1 -1
  67. package/dist/src/dht/registerExternalApiRpcMethods.d.ts +1 -1
  68. package/dist/src/dht/routing/DuplicateDetector.d.ts +1 -2
  69. package/dist/src/dht/routing/DuplicateDetector.js +2 -7
  70. package/dist/src/dht/routing/DuplicateDetector.js.map +1 -1
  71. package/dist/src/dht/routing/RemoteRouter.js +1 -1
  72. package/dist/src/dht/routing/RemoteRouter.js.map +1 -1
  73. package/dist/src/dht/routing/Router.d.ts +10 -13
  74. package/dist/src/dht/routing/Router.js +28 -29
  75. package/dist/src/dht/routing/Router.js.map +1 -1
  76. package/dist/src/dht/routing/RoutingSession.d.ts +3 -4
  77. package/dist/src/dht/routing/RoutingSession.js +4 -3
  78. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  79. package/dist/src/dht/store/DataStore.d.ts +2 -2
  80. package/dist/src/dht/store/DataStore.js +7 -7
  81. package/dist/src/dht/store/DataStore.js.map +1 -1
  82. package/dist/src/exports.d.ts +1 -7
  83. package/dist/src/exports.js +2 -14
  84. package/dist/src/exports.js.map +1 -1
  85. package/dist/src/helpers/PeerID.d.ts +0 -1
  86. package/dist/src/helpers/PeerID.js +0 -6
  87. package/dist/src/helpers/PeerID.js.map +1 -1
  88. package/dist/src/helpers/browser/isBrowserEnvironment.d.ts +1 -0
  89. package/dist/src/helpers/browser/isBrowserEnvironment.js +6 -0
  90. package/dist/src/helpers/browser/isBrowserEnvironment.js.map +1 -0
  91. package/dist/src/helpers/browser/isBrowserEnvironment_override.d.ts +1 -0
  92. package/dist/src/helpers/browser/isBrowserEnvironment_override.js +7 -0
  93. package/dist/src/helpers/browser/isBrowserEnvironment_override.js.map +1 -0
  94. package/dist/src/helpers/kademliaId.d.ts +1 -0
  95. package/dist/src/helpers/kademliaId.js +14 -0
  96. package/dist/src/helpers/kademliaId.js.map +1 -0
  97. package/dist/src/helpers/peerIdFromPeerDescriptor.d.ts +1 -1
  98. package/dist/src/helpers/peerIdFromPeerDescriptor.js +3 -3
  99. package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
  100. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +0 -4
  101. package/dist/src/proto/packages/dht/protos/DhtRpc.js +1 -2
  102. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  103. package/package.json +10 -9
  104. package/protos/DhtRpc.proto +0 -1
  105. package/src/connection/ConnectionLockHandler.ts +1 -1
  106. package/src/connection/ConnectionManager.ts +157 -254
  107. package/src/connection/ConnectivityChecker.ts +14 -11
  108. package/src/connection/ConnectorFacade.ts +143 -0
  109. package/src/connection/ManagedConnection.ts +23 -34
  110. package/src/connection/RemoteConnectionLocker.ts +4 -3
  111. package/src/connection/Simulator/Simulator.ts +0 -7
  112. package/src/connection/Simulator/SimulatorConnection.ts +16 -13
  113. package/src/connection/Simulator/SimulatorConnector.ts +11 -12
  114. package/src/connection/Simulator/SimulatorTransport.ts +6 -1
  115. package/src/connection/WebRTC/NodeWebRtcConnection.ts +14 -13
  116. package/src/connection/WebRTC/WebRtcConnector.ts +31 -31
  117. package/src/connection/WebSocket/RemoteWebSocketConnector.ts +2 -1
  118. package/src/connection/WebSocket/WebSocketConnector.ts +85 -62
  119. package/src/connection/WebSocket/WebSocketServer.ts +26 -8
  120. package/src/dht/DhtNode.ts +155 -181
  121. package/src/dht/{DhtPeer.ts → RemoteDhtNode.ts} +11 -9
  122. package/src/dht/contact/ContactList.ts +0 -4
  123. package/src/dht/contact/RandomContactList.ts +0 -4
  124. package/src/dht/contact/SortedContactList.ts +0 -12
  125. package/src/dht/discovery/DiscoverySession.ts +20 -23
  126. package/src/dht/discovery/PeerDiscovery.ts +45 -44
  127. package/src/dht/find/RecursiveFindSession.ts +12 -13
  128. package/src/dht/find/RecursiveFinder.ts +16 -19
  129. package/src/dht/registerExternalApiRpcMethods.ts +1 -1
  130. package/src/dht/routing/DuplicateDetector.ts +3 -10
  131. package/src/dht/routing/RemoteRouter.ts +2 -2
  132. package/src/dht/routing/Router.ts +35 -39
  133. package/src/dht/routing/RoutingSession.ts +9 -9
  134. package/src/dht/store/DataStore.ts +11 -11
  135. package/src/exports.ts +1 -7
  136. package/src/helpers/PeerID.ts +0 -7
  137. package/src/helpers/browser/isBrowserEnvironment.ts +1 -0
  138. package/src/helpers/browser/isBrowserEnvironment_override.ts +3 -0
  139. package/src/helpers/kademliaId.ts +8 -0
  140. package/src/helpers/peerIdFromPeerDescriptor.ts +1 -1
  141. package/src/proto/packages/dht/protos/DhtRpc.ts +1 -6
  142. package/test/benchmark/KademliaCorrectness.test.ts +4 -2
  143. package/test/benchmark/RecursiveFind.test.ts +6 -6
  144. package/test/end-to-end/Layer0-Layer1.test.ts +9 -9
  145. package/test/end-to-end/Layer0WebRTC-Layer1.test.ts +5 -5
  146. package/test/end-to-end/Layer0WebRTC.test.ts +5 -6
  147. package/test/end-to-end/Layer1-Scale-WebRTC.test.ts +13 -8
  148. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +15 -10
  149. package/test/end-to-end/WebSocketConnectionRequest.test.ts +5 -5
  150. package/test/integration/ConnectionLocking.test.ts +32 -26
  151. package/test/integration/ConnectionManager.test.ts +90 -93
  152. package/test/integration/DhtJoinPeerDiscovery.test.ts +53 -0
  153. package/test/integration/DhtRpc.test.ts +4 -6
  154. package/test/integration/Layer1-scale.test.ts +8 -8
  155. package/test/integration/MigrateData.test.ts +9 -9
  156. package/test/integration/Mock-Layer1-Layer0.test.ts +1 -2
  157. package/test/integration/RecursiveFind.test.ts +5 -5
  158. package/test/integration/{DhtPeer.test.ts → RemoteDhtNode.test.ts} +11 -12
  159. package/test/integration/RemoteRouter.test.ts +5 -6
  160. package/test/integration/RemoteStore.test.ts +4 -5
  161. package/test/integration/RouteMessage.test.ts +7 -9
  162. package/test/integration/RpcErrors.test.ts +25 -10
  163. package/test/integration/ScaleDownDht.test.ts +8 -8
  164. package/test/integration/SimultaneousConnections.test.ts +35 -36
  165. package/test/integration/Store.test.ts +8 -9
  166. package/test/integration/StoreAndDelete.test.ts +11 -11
  167. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +7 -7
  168. package/test/integration/WebRtcConnectionManagement.test.ts +26 -19
  169. package/test/integration/WebRtcConnectorRpc.test.ts +6 -8
  170. package/test/integration/WebSocket.test.ts +4 -2
  171. package/test/integration/WebSocketConnectionManagement.test.ts +30 -17
  172. package/test/integration/WebSocketConnectorRpc.test.ts +2 -3
  173. package/test/unit/DuplicateDetector.test.ts +3 -4
  174. package/test/unit/LocalDataStore.test.ts +6 -8
  175. package/test/unit/RandomContactList.test.ts +1 -1
  176. package/test/unit/RecursiveFinder.test.ts +8 -12
  177. package/test/unit/Router.test.ts +18 -21
  178. package/test/unit/WebSocketConnector.test.ts +64 -0
  179. package/test/unit/WebSocketServer.test.ts +24 -12
  180. package/test/utils/mock/RecursiveFinder.ts +2 -2
  181. package/test/utils/mock/Router.ts +9 -11
  182. package/test/utils/mock/Transport.ts +2 -2
  183. package/test/utils/utils.ts +40 -49
  184. package/dist/src/dht/DhtPeer.js.map +0 -1
  185. package/dist/src/helpers/browser/isBrowser.d.ts +0 -1
  186. package/dist/src/helpers/browser/isBrowser.js +0 -6
  187. package/dist/src/helpers/browser/isBrowser.js.map +0 -1
  188. package/dist/src/helpers/browser/isNodeJS.d.ts +0 -1
  189. package/dist/src/helpers/browser/isNodeJS.js +0 -6
  190. package/dist/src/helpers/browser/isNodeJS.js.map +0 -1
  191. package/src/helpers/browser/isBrowser.ts +0 -1
  192. package/src/helpers/browser/isNodeJS.ts +0 -1
  193. package/test/integration/DhtWithMockConnectionLatencies.test.ts +0 -46
  194. package/test/integration/DhtWithMockConnections.test.ts +0 -46
  195. package/test/integration/DhtWithRealConnectionLatencies.test.ts +0 -47
  196. /package/test/unit/{webrtcReplaceInternalIpWithExternalIp.ts → webrtcReplaceInternalIpWithExternalIp.test.ts} +0 -0
@@ -3,19 +3,25 @@ import { WebSocketServer } from '../../src/connection/WebSocket/WebSocketServer'
3
3
  describe('WebSocketServer', () => {
4
4
 
5
5
  it('starts and stops', async () => {
6
- const server = new WebSocketServer()
7
- const port = await server.start({ min: 19792, max: 19792 })
6
+ const server = new WebSocketServer({
7
+ portRange: { min: 19792, max: 19792 }
8
+ })
9
+ const port = await server.start()
8
10
  expect(port).toEqual(19792)
9
11
  await server.stop()
10
12
  })
11
13
 
12
14
  it('throws if server is already in use', async () => {
13
- const server1 = new WebSocketServer()
14
- const port = await server1.start({ min: 19792, max: 19792 })
15
+ const server1 = new WebSocketServer({
16
+ portRange: { min: 19792, max: 19792 }
17
+ })
18
+ const port = await server1.start()
15
19
  expect(port).toEqual(19792)
16
20
 
17
- const server2 = new WebSocketServer()
18
- await expect(server2.start({ min: 19792, max: 19792 }))
21
+ const server2 = new WebSocketServer({
22
+ portRange: { min: 19792, max: 19792 }
23
+ })
24
+ await expect(server2.start())
19
25
  .rejects
20
26
  .toThrow()
21
27
 
@@ -24,12 +30,16 @@ describe('WebSocketServer', () => {
24
30
  })
25
31
 
26
32
  it('Starts server in next port if first one is already in use', async () => {
27
- const server1 = new WebSocketServer()
28
- const port1 = await server1.start({ min: 19792, max: 19793 })
33
+ const server1 = new WebSocketServer({
34
+ portRange: { min: 19792, max: 19793 }
35
+ })
36
+ const port1 = await server1.start()
29
37
  expect(port1).toEqual(19792)
30
38
 
31
- const server2 = new WebSocketServer()
32
- const port2 = await server2.start({ min: 19792, max: 19793 })
39
+ const server2 = new WebSocketServer({
40
+ portRange: { min: 19792, max: 19793 }
41
+ })
42
+ const port2 = await server2.start()
33
43
  expect(port2).toEqual(19793)
34
44
 
35
45
  await server1.stop()
@@ -37,9 +47,11 @@ describe('WebSocketServer', () => {
37
47
  })
38
48
 
39
49
  it('throws if too big a port number is given', async () => {
40
- const server = new WebSocketServer()
50
+ const server = new WebSocketServer({
51
+ portRange: { min: 197923233, max: 197923233 }
52
+ })
41
53
 
42
- await expect(server.start({ min: 197923233, max: 197923233 }))
54
+ await expect(server.start())
43
55
  .rejects
44
56
  .toThrow()
45
57
 
@@ -1,5 +1,5 @@
1
1
  import { RecursiveFindResult, IRecursiveFinder } from '../../../src/dht/find/RecursiveFinder'
2
- import { RouteMessageAck, RouteMessageWrapper } from '../../../src/proto/packages/dht/protos/DhtRpc'
2
+ import { RouteMessageAck } from '../../../src/proto/packages/dht/protos/DhtRpc'
3
3
 
4
4
  export class MockRecursiveFinder implements IRecursiveFinder {
5
5
 
@@ -12,7 +12,7 @@ export class MockRecursiveFinder implements IRecursiveFinder {
12
12
  }
13
13
 
14
14
  // eslint-disable-next-line class-methods-use-this
15
- async findRecursively(_routedMessage: RouteMessageWrapper): Promise<RouteMessageAck> {
15
+ async findRecursively(): Promise<RouteMessageAck> {
16
16
  return RouteMessageAck.create()
17
17
  }
18
18
 
@@ -1,37 +1,35 @@
1
1
  import { IRouter } from '../../../src/dht/routing/Router'
2
- import { RoutingSession, RoutingMode } from '../../../src/dht/routing/RoutingSession'
3
- import { PeerDescriptor, Message, RouteMessageAck, RouteMessageWrapper } from '../../../src/proto/packages/dht/protos/DhtRpc'
4
- import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
2
+ import { RouteMessageAck } from '../../../src/proto/packages/dht/protos/DhtRpc'
5
3
 
6
4
  export class MockRouter implements IRouter {
7
5
 
8
6
  // eslint-disable-next-line class-methods-use-this
9
- addRoutingSession(_session: RoutingSession): void {
7
+ addRoutingSession(): void {
10
8
  return
11
9
  }
12
10
 
13
11
  // eslint-disable-next-line class-methods-use-this
14
- removeRoutingSession(_sessionId: string): void {
12
+ removeRoutingSession(): void {
15
13
  return
16
14
  }
17
15
 
18
16
  // eslint-disable-next-line class-methods-use-this
19
- addToDuplicateDetector(_messageId: string, _senderId: string, _message?: Message): void {
17
+ addToDuplicateDetector(): void {
20
18
  return
21
19
  }
22
20
 
23
21
  // eslint-disable-next-line class-methods-use-this
24
- checkDuplicate(_messageId: string): boolean {
22
+ isMostLikelyDuplicate(): boolean {
25
23
  return false
26
24
  }
27
25
 
28
26
  // eslint-disable-next-line class-methods-use-this
29
- doRouteMessage(_routedMessage: RouteMessageWrapper, _mode: RoutingMode): RouteMessageAck {
27
+ doRouteMessage(): RouteMessageAck {
30
28
  return RouteMessageAck.create()
31
29
  }
32
30
 
33
31
  // eslint-disable-next-line class-methods-use-this
34
- send(_msg: Message, _reachableThrough: PeerDescriptor[]): Promise<void> {
32
+ send(): Promise<void> {
35
33
  throw Error('Not implemented')
36
34
  }
37
35
 
@@ -41,12 +39,12 @@ export class MockRouter implements IRouter {
41
39
  }
42
40
 
43
41
  // eslint-disable-next-line class-methods-use-this
44
- async routeMessage(_routedMessage: RouteMessageWrapper, _context: ServerCallContext): Promise<RouteMessageAck> {
42
+ async routeMessage(): Promise<RouteMessageAck> {
45
43
  return RouteMessageAck.create()
46
44
  }
47
45
 
48
46
  // eslint-disable-next-line class-methods-use-this
49
- async forwardMessage(_forwardMessage: RouteMessageWrapper, _context: ServerCallContext): Promise<RouteMessageAck> {
47
+ async forwardMessage(): Promise<RouteMessageAck> {
50
48
  return RouteMessageAck.create()
51
49
  }
52
50
 
@@ -1,11 +1,11 @@
1
1
  import { ITransport, TransportEvents } from '../../../src/transport/ITransport'
2
2
  import { EventEmitter } from 'eventemitter3'
3
- import { Message, PeerDescriptor } from '../../../src/proto/packages/dht/protos/DhtRpc'
3
+ import { PeerDescriptor } from '../../../src/proto/packages/dht/protos/DhtRpc'
4
4
 
5
5
  export class MockTransport extends EventEmitter<TransportEvents> implements ITransport {
6
6
 
7
7
  // eslint-disable-next-line class-methods-use-this
8
- async send(_msg: Message, _doNotConnect?: boolean): Promise<void> {
8
+ async send(): Promise<void> {
9
9
 
10
10
  }
11
11
 
@@ -2,8 +2,6 @@ import { DhtNode } from '../../src/dht/DhtNode'
2
2
  import {
3
3
  ClosestPeersRequest,
4
4
  ClosestPeersResponse,
5
- LeaveNotice,
6
- MigrateDataRequest,
7
5
  MigrateDataResponse,
8
6
  NodeType,
9
7
  PeerDescriptor,
@@ -17,7 +15,6 @@ import {
17
15
  WebSocketConnectionResponse,
18
16
  RecursiveFindRequest,
19
17
  FindMode,
20
- DeleteDataRequest,
21
18
  DeleteDataResponse
22
19
  } from '../../src/proto/packages/dht/protos/DhtRpc'
23
20
  import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
@@ -28,7 +25,6 @@ import {
28
25
  IStoreService,
29
26
  IWebSocketConnectorService
30
27
  } from '../../src/proto/packages/dht/protos/DhtRpc.server'
31
- import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
32
28
  import { Simulator } from '../../src/connection/Simulator/Simulator'
33
29
  import { ConnectionManager } from '../../src/connection/ConnectionManager'
34
30
  import { v4 } from 'uuid'
@@ -37,20 +33,20 @@ import { Empty } from '../../src/proto/google/protobuf/empty'
37
33
  import { Any } from '../../src/proto/google/protobuf/any'
38
34
  import { wait, waitForCondition } from '@streamr/utils'
39
35
  import { RoutingRpcCommunicator } from '../../src/transport/RoutingRpcCommunicator'
36
+ import { SimulatorTransport } from '../../src/connection/Simulator/SimulatorTransport'
40
37
 
41
38
  export const generateId = (stringId: string): Uint8Array => {
42
39
  return PeerID.fromString(stringId).value
43
40
  }
44
41
 
45
- export const createMockConnectionDhtNode = async (stringId: string,
42
+ export const createMockConnectionDhtNode = async (
43
+ stringId: string,
46
44
  simulator: Simulator,
47
45
  binaryId?: Uint8Array,
48
- K?: number,
49
- nodeName?: string,
46
+ numberOfNodesPerKBucket?: number,
50
47
  maxConnections = 80,
51
48
  dhtJoinTimeout = 45000
52
49
  ): Promise<DhtNode> => {
53
-
54
50
  let id: PeerID
55
51
  if (binaryId) {
56
52
  id = PeerID.fromValue(binaryId)
@@ -60,47 +56,42 @@ export const createMockConnectionDhtNode = async (stringId: string,
60
56
  const peerDescriptor: PeerDescriptor = {
61
57
  kademliaId: id.value,
62
58
  type: NodeType.NODEJS,
63
- region: getRandomRegion(),
64
- nodeName: nodeName ? nodeName : stringId
59
+ region: getRandomRegion()
65
60
  }
66
-
67
- const mockConnectionManager = new ConnectionManager({
68
- ownPeerDescriptor: peerDescriptor,
69
- simulator: simulator
70
- })
71
-
61
+ const mockConnectionManager = new SimulatorTransport(peerDescriptor, simulator)
62
+ await mockConnectionManager.start()
72
63
  const node = new DhtNode({
73
64
  peerDescriptor: peerDescriptor,
74
- transportLayer: mockConnectionManager,
75
- nodeName: nodeName,
76
- numberOfNodesPerKBucket: K ? K : 8,
65
+ transport: mockConnectionManager,
66
+ numberOfNodesPerKBucket,
77
67
  maxConnections: maxConnections,
78
68
  dhtJoinTimeout
79
69
  })
80
70
  await node.start()
81
-
82
71
  return node
83
72
  }
84
73
 
85
- export const createMockConnectionLayer1Node = async (stringId: string, layer0Node: DhtNode, serviceId?: string): Promise<DhtNode> => {
74
+ export const createMockConnectionLayer1Node = async (
75
+ stringId: string,
76
+ layer0Node: DhtNode,
77
+ serviceId?: string,
78
+ numberOfNodesPerKBucket = 8
79
+ ): Promise<DhtNode> => {
86
80
  const id = PeerID.fromString(stringId)
87
81
  const descriptor: PeerDescriptor = {
88
82
  kademliaId: id.value,
89
83
  type: NodeType.NODEJS,
90
- nodeName: stringId
91
84
  }
92
-
93
85
  const node = new DhtNode({
94
- peerDescriptor: descriptor, transportLayer: layer0Node,
95
- serviceId: serviceId ? serviceId : 'layer1', numberOfNodesPerKBucket: 8, nodeName: stringId
86
+ peerDescriptor: descriptor, transport: layer0Node,
87
+ serviceId: serviceId ? serviceId : 'layer1', numberOfNodesPerKBucket
96
88
  })
97
89
  await node.start()
98
90
  return node
99
91
  }
100
92
 
101
93
  export const createWrappedClosestPeersRequest = (
102
- sourceDescriptor: PeerDescriptor,
103
- _udestinationDescriptor: PeerDescriptor
94
+ sourceDescriptor: PeerDescriptor
104
95
  ): RpcMessage => {
105
96
 
106
97
  const routedMessage: ClosestPeersRequest = {
@@ -129,13 +120,13 @@ export const createRecursiveFindRequest = (
129
120
  }
130
121
 
131
122
  interface IDhtRpcWithError extends IDhtRpcService {
132
- throwPingError: (request: PingRequest, _context: ServerCallContext) => Promise<PingResponse>
133
- respondPingWithTimeout: (request: PingRequest, _context: ServerCallContext) => Promise<PingResponse>
134
- throwGetClosestPeersError: (request: ClosestPeersRequest, _context: ServerCallContext) => Promise<ClosestPeersResponse>
123
+ throwPingError: (request: PingRequest) => Promise<PingResponse>
124
+ respondPingWithTimeout: (request: PingRequest) => Promise<PingResponse>
125
+ throwGetClosestPeersError: (request: ClosestPeersRequest) => Promise<ClosestPeersResponse>
135
126
  }
136
127
 
137
128
  export const MockDhtRpc: IDhtRpcWithError = {
138
- async getClosestPeers(_request: ClosestPeersRequest, _context: ServerCallContext): Promise<ClosestPeersResponse> {
129
+ async getClosestPeers(): Promise<ClosestPeersResponse> {
139
130
  const neighbors = getMockPeers()
140
131
  const response: ClosestPeersResponse = {
141
132
  peers: neighbors,
@@ -143,36 +134,36 @@ export const MockDhtRpc: IDhtRpcWithError = {
143
134
  }
144
135
  return response
145
136
  },
146
- async ping(request: PingRequest, _context: ServerCallContext): Promise<PingResponse> {
137
+ async ping(request: PingRequest): Promise<PingResponse> {
147
138
  const response: PingResponse = {
148
139
  requestId: request.requestId
149
140
  }
150
141
  return response
151
142
  },
152
- async leaveNotice(_request: LeaveNotice, _context: ServerCallContext): Promise<Empty> {
143
+ async leaveNotice(): Promise<Empty> {
153
144
  return {}
154
145
  },
155
- async throwPingError(_urequest: PingRequest, _context: ServerCallContext): Promise<PingResponse> {
146
+ async throwPingError(): Promise<PingResponse> {
156
147
  throw new Error()
157
148
  },
158
- async respondPingWithTimeout(request: PingRequest, _context: ServerCallContext): Promise<PingResponse> {
149
+ async respondPingWithTimeout(request: PingRequest): Promise<PingResponse> {
159
150
  const response: PingResponse = {
160
151
  requestId: request.requestId
161
152
  }
162
153
  await wait(2000)
163
154
  return response
164
155
  },
165
- async throwGetClosestPeersError(_urequest: ClosestPeersRequest, _context: ServerCallContext): Promise<ClosestPeersResponse> {
156
+ async throwGetClosestPeersError(): Promise<ClosestPeersResponse> {
166
157
  throw new Error('Closest peers error')
167
158
  }
168
159
  }
169
160
 
170
161
  interface IRouterServiceWithError extends IRoutingService {
171
- throwRouteMessageError: (request: RouteMessageWrapper, _context: ServerCallContext) => Promise<RouteMessageAck>
162
+ throwRouteMessageError: (request: RouteMessageWrapper) => Promise<RouteMessageAck>
172
163
  }
173
164
 
174
165
  export const MockRoutingService: IRouterServiceWithError = {
175
- async routeMessage(routed: RouteMessageWrapper, _context: ServerCallContext): Promise<RouteMessageAck> {
166
+ async routeMessage(routed: RouteMessageWrapper): Promise<RouteMessageAck> {
176
167
  const response: RouteMessageAck = {
177
168
  requestId: routed.requestId,
178
169
  destinationPeer: routed.sourcePeer,
@@ -181,7 +172,7 @@ export const MockRoutingService: IRouterServiceWithError = {
181
172
  }
182
173
  return response
183
174
  },
184
- async findRecursively(routed: RouteMessageWrapper, _context: ServerCallContext): Promise<RouteMessageAck> {
175
+ async findRecursively(routed: RouteMessageWrapper): Promise<RouteMessageAck> {
185
176
  const response: RouteMessageAck = {
186
177
  requestId: routed.requestId,
187
178
  destinationPeer: routed.sourcePeer,
@@ -190,7 +181,7 @@ export const MockRoutingService: IRouterServiceWithError = {
190
181
  }
191
182
  return response
192
183
  },
193
- async forwardMessage(routed: RouteMessageWrapper, _context: ServerCallContext): Promise<RouteMessageAck> {
184
+ async forwardMessage(routed: RouteMessageWrapper): Promise<RouteMessageAck> {
194
185
  const response: RouteMessageAck = {
195
186
  requestId: routed.requestId,
196
187
  destinationPeer: routed.sourcePeer,
@@ -199,40 +190,40 @@ export const MockRoutingService: IRouterServiceWithError = {
199
190
  }
200
191
  return response
201
192
  },
202
- async throwRouteMessageError(_urequest: RouteMessageWrapper, _context: ServerCallContext): Promise<RouteMessageAck> {
193
+ async throwRouteMessageError(): Promise<RouteMessageAck> {
203
194
  throw new Error()
204
195
  }
205
196
  }
206
197
 
207
198
  interface IStoreServiceWithError extends IStoreService {
208
- throwStoreDataError: (request: StoreDataRequest, _context: ServerCallContext) => Promise<StoreDataResponse>
209
- storeDataErrorString: (request: StoreDataRequest, _context: ServerCallContext) => Promise<StoreDataResponse>
199
+ throwStoreDataError: (request: StoreDataRequest) => Promise<StoreDataResponse>
200
+ storeDataErrorString: (request: StoreDataRequest) => Promise<StoreDataResponse>
210
201
  }
211
202
 
212
203
  export const MockStoreService: IStoreServiceWithError = {
213
- async storeData(_request: StoreDataRequest, _context: ServerCallContext): Promise<StoreDataResponse> {
204
+ async storeData(): Promise<StoreDataResponse> {
214
205
  return {
215
206
  error: ''
216
207
  }
217
208
  },
218
- async throwStoreDataError(_request: StoreDataRequest, _context: ServerCallContext): Promise<StoreDataResponse> {
209
+ async throwStoreDataError(): Promise<StoreDataResponse> {
219
210
  throw new Error('Mock')
220
211
  },
221
- async storeDataErrorString(_request: StoreDataRequest, _context: ServerCallContext): Promise<StoreDataResponse> {
212
+ async storeDataErrorString(): Promise<StoreDataResponse> {
222
213
  return {
223
214
  error: 'Mock'
224
215
  }
225
216
  },
226
- async migrateData(_request: MigrateDataRequest, _context: ServerCallContext): Promise<MigrateDataResponse> {
217
+ async migrateData(): Promise<MigrateDataResponse> {
227
218
  return MigrateDataResponse.create()
228
219
  },
229
- async deleteData(_request: DeleteDataRequest, _context: ServerCallContext): Promise<DeleteDataResponse> {
220
+ async deleteData(): Promise<DeleteDataResponse> {
230
221
  return DeleteDataResponse.create()
231
222
  }
232
223
  }
233
224
 
234
225
  export const MockWebSocketConnectorRpc: IWebSocketConnectorService = {
235
- async requestConnection(request: WebSocketConnectionRequest, _context: ServerCallContext): Promise<WebSocketConnectionResponse> {
226
+ async requestConnection(request: WebSocketConnectionRequest): Promise<WebSocketConnectionResponse> {
236
227
  const responseConnection: WebSocketConnectionResponse = {
237
228
  target: request.target,
238
229
  requester: request.requester,
@@ -1 +0,0 @@
1
- {"version":3,"file":"DhtPeer.js","sourceRoot":"","sources":["../../../src/dht/DhtPeer.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare const isNodeJS: () => boolean;
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isNodeJS = void 0;
4
- const isNodeJS = () => false;
5
- exports.isNodeJS = isNodeJS;
6
- //# sourceMappingURL=isBrowser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isBrowser.js","sourceRoot":"","sources":["../../../../src/helpers/browser/isBrowser.ts"],"names":[],"mappings":";;;AAAO,MAAM,QAAQ,GAAG,GAAY,EAAE,CAAC,KAAK,CAAA;AAA/B,QAAA,QAAQ,YAAuB"}
@@ -1 +0,0 @@
1
- export declare const isNodeJS: () => boolean;
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isNodeJS = void 0;
4
- const isNodeJS = () => true;
5
- exports.isNodeJS = isNodeJS;
6
- //# sourceMappingURL=isNodeJS.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isNodeJS.js","sourceRoot":"","sources":["../../../../src/helpers/browser/isNodeJS.ts"],"names":[],"mappings":";;;AAAO,MAAM,QAAQ,GAAG,GAAY,EAAE,CAAC,IAAI,CAAA;AAA9B,QAAA,QAAQ,YAAsB"}
@@ -1 +0,0 @@
1
- export const isNodeJS = (): boolean => false
@@ -1 +0,0 @@
1
- export const isNodeJS = (): boolean => true
@@ -1,46 +0,0 @@
1
- import { DhtNode } from '../../src/dht/DhtNode'
2
- import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
3
- import { createMockConnectionDhtNode } from '../utils/utils'
4
- import { LatencyType, Simulator } from '../../src/connection/Simulator/Simulator'
5
-
6
- describe('Mock connection Dht joining with latencies', () => {
7
- let entryPoint: DhtNode
8
- let nodes: DhtNode[]
9
- let simulator: Simulator
10
- let entrypointDescriptor: PeerDescriptor
11
-
12
- beforeEach(async () => {
13
- nodes = []
14
- simulator = new Simulator(LatencyType.RANDOM)
15
- const entryPointId = '0'
16
- entryPoint = await createMockConnectionDhtNode(entryPointId, simulator)
17
- entrypointDescriptor = {
18
- kademliaId: entryPoint.getNodeId().value,
19
- type: NodeType.NODEJS,
20
- nodeName: '0'
21
- }
22
- for (let i = 1; i < 100; i++) {
23
- const nodeId = `${i}`
24
- const node = await createMockConnectionDhtNode(nodeId, simulator)
25
- nodes.push(node)
26
- }
27
- })
28
-
29
- afterEach(async () => {
30
- await Promise.all([
31
- entryPoint.stop(),
32
- ...nodes.map((node) => node.stop())
33
- ])
34
- simulator.stop()
35
- })
36
-
37
- it('Happy path', async () => {
38
- await entryPoint.joinDht([entrypointDescriptor])
39
- await Promise.all(nodes.map((node) => node.joinDht([entrypointDescriptor])))
40
- nodes.forEach((node) => {
41
- expect(node.getBucketSize()).toBeGreaterThanOrEqual(node.getK() - 2)
42
- expect(node.getClosestContacts().length).toBeGreaterThanOrEqual(node.getK() - 2)
43
- })
44
- expect(entryPoint.getBucketSize()).toBeGreaterThanOrEqual(entryPoint.getK() - 2)
45
- }, 60 * 1000)
46
- })
@@ -1,46 +0,0 @@
1
- import { Simulator } from '../../src/connection/Simulator/Simulator'
2
- import { DhtNode } from '../../src/dht/DhtNode'
3
- import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
4
- import { createMockConnectionDhtNode } from '../utils/utils'
5
-
6
- describe('Mock IConnection DHT Joining', () => {
7
- let entryPoint: DhtNode
8
- let nodes: DhtNode[]
9
- let entrypointDescriptor: PeerDescriptor
10
- let simulator: Simulator
11
-
12
- beforeEach(async () => {
13
- nodes = []
14
- simulator = new Simulator()
15
- const entryPointId = '0'
16
- entryPoint = await createMockConnectionDhtNode(entryPointId, simulator)
17
- entrypointDescriptor = {
18
- kademliaId: entryPoint.getNodeId().value,
19
- type: NodeType.NODEJS,
20
- nodeName: '0'
21
- }
22
- for (let i = 1; i < 100; i++) {
23
- const nodeId = `${i}`
24
- const node = await createMockConnectionDhtNode(nodeId, simulator)
25
- nodes.push(node)
26
- }
27
- })
28
-
29
- afterEach(async () => {
30
- await Promise.all([
31
- entryPoint.stop(),
32
- ...nodes.map(async (node) => node.stop())
33
- ])
34
- simulator.stop()
35
- })
36
-
37
- it('Happy path', async () => {
38
- await entryPoint.joinDht([entrypointDescriptor])
39
- await Promise.all(nodes.map((node) => node.joinDht([entrypointDescriptor])))
40
- nodes.forEach((node) => {
41
- expect(node.getBucketSize()).toBeGreaterThanOrEqual(node.getK() - 2)
42
- expect(node.getClosestContacts().length).toBeGreaterThanOrEqual(node.getK() - 2)
43
- })
44
- expect(entryPoint.getBucketSize()).toBeGreaterThanOrEqual(entryPoint.getK() - 2)
45
- }, 60000)
46
- })
@@ -1,47 +0,0 @@
1
- import { DhtNode } from '../../src/dht/DhtNode'
2
- import { createMockConnectionDhtNode } from '../utils/utils'
3
- import { LatencyType, Simulator } from '../../src/connection/Simulator/Simulator'
4
- import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
5
- import { getRandomRegion } from '../../src/connection/Simulator/pings'
6
-
7
- describe('Mock connection Dht joining with real latencies', () => {
8
- let entryPoint: DhtNode
9
- let nodes: DhtNode[]
10
- let simulator: Simulator
11
- let entrypointDescriptor: PeerDescriptor
12
-
13
- beforeEach(async () => {
14
- nodes = []
15
- simulator = new Simulator(LatencyType.REAL)
16
- const entryPointId = '0'
17
- entryPoint = await createMockConnectionDhtNode(entryPointId, simulator)
18
- entrypointDescriptor = {
19
- kademliaId: entryPoint.getNodeId().value,
20
- type: NodeType.NODEJS,
21
- region: getRandomRegion()
22
- }
23
- for (let i = 1; i < 100; i++) {
24
- const nodeId = `${i}`
25
- const node = await createMockConnectionDhtNode(nodeId, simulator)
26
- nodes.push(node)
27
- }
28
- })
29
-
30
- afterEach(async () => {
31
- await Promise.all([
32
- entryPoint.stop(),
33
- ...nodes.map((node) => node.stop())
34
- ])
35
- simulator.stop()
36
- })
37
-
38
- it('Happy path', async () => {
39
- await entryPoint.joinDht([entrypointDescriptor])
40
- await Promise.all(nodes.map((node) => node.joinDht([entrypointDescriptor])))
41
- nodes.forEach((node) => {
42
- expect(node.getBucketSize()).toBeGreaterThanOrEqual(node.getK() - 3)
43
- expect(node.getClosestContacts().length).toBeGreaterThanOrEqual(node.getK() - 3)
44
- })
45
- expect(entryPoint.getBucketSize()).toBeGreaterThanOrEqual(entryPoint.getK())
46
- }, 60 * 1000)
47
- })