@streamr/dht 100.0.0-pretestnet.2 → 100.0.0-pretestnet.4

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 (325) hide show
  1. package/dist/src/connection/ConnectionLockHandler.d.ts +7 -8
  2. package/dist/src/connection/ConnectionLockHandler.js +16 -14
  3. package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
  4. package/dist/src/connection/ConnectionLockRpcLocal.d.ts +20 -0
  5. package/dist/src/connection/ConnectionLockRpcLocal.js +47 -0
  6. package/dist/src/connection/ConnectionLockRpcLocal.js.map +1 -0
  7. package/dist/src/connection/ConnectionLockRpcRemote.d.ts +4 -3
  8. package/dist/src/connection/ConnectionLockRpcRemote.js +9 -9
  9. package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -1
  10. package/dist/src/connection/ConnectionManager.d.ts +9 -16
  11. package/dist/src/connection/ConnectionManager.js +101 -132
  12. package/dist/src/connection/ConnectionManager.js.map +1 -1
  13. package/dist/src/connection/ConnectivityChecker.d.ts +7 -10
  14. package/dist/src/connection/ConnectivityChecker.js +30 -32
  15. package/dist/src/connection/ConnectivityChecker.js.map +1 -1
  16. package/dist/src/connection/ConnectorFacade.d.ts +19 -13
  17. package/dist/src/connection/ConnectorFacade.js +74 -29
  18. package/dist/src/connection/ConnectorFacade.js.map +1 -1
  19. package/dist/src/connection/Handshaker.d.ts +8 -8
  20. package/dist/src/connection/Handshaker.js +30 -33
  21. package/dist/src/connection/Handshaker.js.map +1 -1
  22. package/dist/src/connection/IConnection.d.ts +5 -6
  23. package/dist/src/connection/IConnection.js.map +1 -1
  24. package/dist/src/connection/ManagedConnection.d.ts +9 -13
  25. package/dist/src/connection/ManagedConnection.js +63 -99
  26. package/dist/src/connection/ManagedConnection.js.map +1 -1
  27. package/dist/src/connection/ManagedWebrtcConnection.d.ts +7 -0
  28. package/dist/src/connection/ManagedWebrtcConnection.js +20 -0
  29. package/dist/src/connection/ManagedWebrtcConnection.js.map +1 -0
  30. package/dist/src/connection/{Simulator → simulator}/Simulator.js +3 -3
  31. package/dist/src/connection/{Simulator → simulator}/Simulator.js.map +1 -1
  32. package/dist/src/connection/{Simulator → simulator}/SimulatorConnection.d.ts +3 -4
  33. package/dist/src/connection/{Simulator → simulator}/SimulatorConnection.js +25 -24
  34. package/dist/src/connection/simulator/SimulatorConnection.js.map +1 -0
  35. package/dist/src/connection/{Simulator → simulator}/SimulatorConnector.d.ts +3 -3
  36. package/dist/src/connection/{Simulator → simulator}/SimulatorConnector.js +17 -18
  37. package/dist/src/connection/simulator/SimulatorConnector.js.map +1 -0
  38. package/dist/src/connection/{Simulator → simulator}/SimulatorTransport.d.ts +1 -1
  39. package/dist/src/connection/{Simulator → simulator}/SimulatorTransport.js +2 -2
  40. package/dist/src/connection/simulator/SimulatorTransport.js.map +1 -0
  41. package/dist/src/connection/{Simulator → simulator}/pings.js.map +1 -1
  42. package/dist/src/connection/{WebRTC/IWebRtcConnection.d.ts → webrtc/IWebrtcConnection.d.ts} +2 -2
  43. package/dist/src/connection/{WebRTC/IWebRtcConnection.js → webrtc/IWebrtcConnection.js} +1 -1
  44. package/dist/src/connection/webrtc/IWebrtcConnection.js.map +1 -0
  45. package/dist/src/connection/{WebRTC/NodeWebRtcConnection.d.ts → webrtc/NodeWebrtcConnection.d.ts} +6 -7
  46. package/dist/src/connection/{WebRTC/NodeWebRtcConnection.js → webrtc/NodeWebrtcConnection.js} +41 -42
  47. package/dist/src/connection/webrtc/NodeWebrtcConnection.js.map +1 -0
  48. package/dist/src/connection/webrtc/WebrtcConnector.d.ts +38 -0
  49. package/dist/src/connection/webrtc/WebrtcConnector.js +178 -0
  50. package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -0
  51. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.d.ts +26 -0
  52. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +99 -0
  53. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +1 -0
  54. package/dist/src/connection/{WebRTC/WebRtcConnectorRpcRemote.d.ts → webrtc/WebrtcConnectorRpcRemote.d.ts} +4 -4
  55. package/dist/src/connection/{WebRTC/WebRtcConnectorRpcRemote.js → webrtc/WebrtcConnectorRpcRemote.js} +6 -8
  56. package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.js.map +1 -0
  57. package/dist/src/connection/{WebRTC → webrtc}/iceServerAsString.d.ts +1 -1
  58. package/dist/src/connection/{WebRTC → webrtc}/iceServerAsString.js.map +1 -1
  59. package/dist/src/connection/websocket/AutoCertifierClientFacade.d.ts +26 -0
  60. package/dist/src/connection/websocket/AutoCertifierClientFacade.js +37 -0
  61. package/dist/src/connection/websocket/AutoCertifierClientFacade.js.map +1 -0
  62. package/dist/src/connection/{WebSocket/ClientWebSocket.d.ts → websocket/ClientWebsocket.d.ts} +5 -4
  63. package/dist/src/connection/{WebSocket/ClientWebSocket.js → websocket/ClientWebsocket.js} +23 -16
  64. package/dist/src/connection/websocket/ClientWebsocket.js.map +1 -0
  65. package/dist/src/connection/{WebSocket/ServerWebSocket.d.ts → websocket/ServerWebsocket.d.ts} +2 -2
  66. package/dist/src/connection/{WebSocket/ServerWebSocket.js → websocket/ServerWebsocket.js} +25 -27
  67. package/dist/src/connection/websocket/ServerWebsocket.js.map +1 -0
  68. package/dist/src/connection/websocket/WebsocketConnector.d.ts +53 -0
  69. package/dist/src/connection/websocket/WebsocketConnector.js +242 -0
  70. package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -0
  71. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.d.ts +17 -0
  72. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js +26 -0
  73. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js.map +1 -0
  74. package/dist/src/connection/{WebSocket/WebSocketConnectorRpcRemote.d.ts → websocket/WebsocketConnectorRpcRemote.d.ts} +3 -3
  75. package/dist/src/connection/{WebSocket/WebSocketConnectorRpcRemote.js → websocket/WebsocketConnectorRpcRemote.js} +6 -11
  76. package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js.map +1 -0
  77. package/dist/src/connection/{WebSocket/WebSocketServer.d.ts → websocket/WebsocketServer.d.ts} +6 -3
  78. package/dist/src/connection/{WebSocket/WebSocketServer.js → websocket/WebsocketServer.js} +39 -19
  79. package/dist/src/connection/websocket/WebsocketServer.js.map +1 -0
  80. package/dist/src/dht/DhtNode.d.ts +11 -19
  81. package/dist/src/dht/DhtNode.js +135 -163
  82. package/dist/src/dht/DhtNode.js.map +1 -1
  83. package/dist/src/dht/DhtNodeRpcLocal.d.ts +22 -0
  84. package/dist/src/dht/DhtNodeRpcLocal.js +42 -0
  85. package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -0
  86. package/dist/src/dht/{RemoteDhtNode.d.ts → DhtNodeRpcRemote.d.ts} +5 -3
  87. package/dist/src/dht/{RemoteDhtNode.js → DhtNodeRpcRemote.js} +20 -24
  88. package/dist/src/dht/DhtNodeRpcRemote.js.map +1 -0
  89. package/dist/src/dht/ExternalApiRpcLocal.d.ts +16 -0
  90. package/dist/src/dht/ExternalApiRpcLocal.js +30 -0
  91. package/dist/src/dht/ExternalApiRpcLocal.js.map +1 -0
  92. package/dist/src/dht/ExternalApiRpcRemote.d.ts +1 -1
  93. package/dist/src/dht/ExternalApiRpcRemote.js +2 -2
  94. package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -1
  95. package/dist/src/dht/contact/Remote.d.ts +4 -1
  96. package/dist/src/dht/contact/Remote.js +28 -2
  97. package/dist/src/dht/contact/Remote.js.map +1 -1
  98. package/dist/src/dht/contact/SortedContactList.d.ts +2 -2
  99. package/dist/src/dht/contact/SortedContactList.js +3 -3
  100. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  101. package/dist/src/dht/discovery/DiscoverySession.d.ts +9 -7
  102. package/dist/src/dht/discovery/DiscoverySession.js +9 -9
  103. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  104. package/dist/src/dht/discovery/PeerDiscovery.d.ts +7 -10
  105. package/dist/src/dht/discovery/PeerDiscovery.js +6 -6
  106. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  107. package/dist/src/dht/find/FindRpcLocal.d.ts +14 -0
  108. package/dist/src/dht/find/FindRpcLocal.js +25 -0
  109. package/dist/src/dht/find/FindRpcLocal.js.map +1 -0
  110. package/dist/src/dht/find/{RecursiveFindSession.d.ts → FindSession.d.ts} +12 -13
  111. package/dist/src/dht/find/{RecursiveFindSession.js → FindSession.js} +17 -15
  112. package/dist/src/dht/find/FindSession.js.map +1 -0
  113. package/dist/src/dht/find/FindSessionRpcLocal.d.ts +12 -0
  114. package/dist/src/dht/find/FindSessionRpcLocal.js +17 -0
  115. package/dist/src/dht/find/FindSessionRpcLocal.js.map +1 -0
  116. package/dist/src/dht/find/{RemoteRecursiveFindSession.d.ts → FindSessionRpcRemote.d.ts} +2 -2
  117. package/dist/src/dht/find/{RemoteRecursiveFindSession.js → FindSessionRpcRemote.js} +5 -5
  118. package/dist/src/dht/find/FindSessionRpcRemote.js.map +1 -0
  119. package/dist/src/dht/find/{RecursiveFinder.d.ts → Finder.d.ts} +16 -19
  120. package/dist/src/dht/find/{RecursiveFinder.js → Finder.js} +50 -46
  121. package/dist/src/dht/find/Finder.js.map +1 -0
  122. package/dist/src/dht/routing/FindRpcRemote.d.ts +6 -0
  123. package/dist/src/dht/routing/FindRpcRemote.js +41 -0
  124. package/dist/src/dht/routing/FindRpcRemote.js.map +1 -0
  125. package/dist/src/dht/routing/Router.d.ts +10 -17
  126. package/dist/src/dht/routing/Router.js +50 -93
  127. package/dist/src/dht/routing/Router.js.map +1 -1
  128. package/dist/src/dht/routing/RouterRpcLocal.d.ts +22 -0
  129. package/dist/src/dht/routing/RouterRpcLocal.js +66 -0
  130. package/dist/src/dht/routing/RouterRpcLocal.js.map +1 -0
  131. package/dist/src/dht/routing/RouterRpcRemote.d.ts +0 -1
  132. package/dist/src/dht/routing/RouterRpcRemote.js +17 -45
  133. package/dist/src/dht/routing/RouterRpcRemote.js.map +1 -1
  134. package/dist/src/dht/routing/RoutingSession.d.ts +17 -8
  135. package/dist/src/dht/routing/RoutingSession.js +124 -131
  136. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  137. package/dist/src/dht/routing/getPreviousPeer.d.ts +2 -0
  138. package/dist/src/dht/routing/getPreviousPeer.js +9 -0
  139. package/dist/src/dht/routing/getPreviousPeer.js.map +1 -0
  140. package/dist/src/dht/store/StoreRpcLocal.d.ts +11 -8
  141. package/dist/src/dht/store/StoreRpcLocal.js +26 -25
  142. package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
  143. package/dist/src/dht/store/StoreRpcRemote.js +6 -10
  144. package/dist/src/dht/store/StoreRpcRemote.js.map +1 -1
  145. package/dist/src/exports.d.ts +11 -5
  146. package/dist/src/exports.js +17 -4
  147. package/dist/src/exports.js.map +1 -1
  148. package/dist/src/helpers/Connectivity.d.ts +4 -0
  149. package/dist/src/helpers/Connectivity.js +24 -0
  150. package/dist/src/helpers/Connectivity.js.map +1 -0
  151. package/dist/src/helpers/errors.d.ts +3 -3
  152. package/dist/src/helpers/errors.js +7 -7
  153. package/dist/src/helpers/peerIdFromPeerDescriptor.d.ts +1 -0
  154. package/dist/src/helpers/peerIdFromPeerDescriptor.js +7 -1
  155. package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
  156. package/dist/src/helpers/protoClasses.js +3 -3
  157. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +56 -39
  158. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +49 -36
  159. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
  160. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +85 -96
  161. package/dist/src/proto/packages/dht/protos/DhtRpc.js +82 -71
  162. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  163. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +26 -21
  164. package/dist/src/rpc-protocol/DhtCallContext.d.ts +0 -1
  165. package/dist/src/rpc-protocol/DhtCallContext.js.map +1 -1
  166. package/dist/src/transport/ITransport.d.ts +5 -6
  167. package/dist/src/transport/ListeningRpcCommunicator.d.ts +2 -1
  168. package/dist/src/transport/ListeningRpcCommunicator.js.map +1 -1
  169. package/dist/src/transport/RoutingRpcCommunicator.d.ts +2 -1
  170. package/dist/src/transport/RoutingRpcCommunicator.js +0 -1
  171. package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
  172. package/dist/src/types/ServiceID.d.ts +1 -0
  173. package/dist/src/types/ServiceID.js +3 -0
  174. package/dist/src/types/ServiceID.js.map +1 -0
  175. package/karma.config.js +4 -4
  176. package/package.json +10 -8
  177. package/protos/DhtRpc.proto +41 -40
  178. package/src/connection/ConnectionLockHandler.ts +19 -17
  179. package/src/connection/ConnectionLockRpcLocal.ts +74 -0
  180. package/src/connection/ConnectionLockRpcRemote.ts +11 -11
  181. package/src/connection/ConnectionManager.ts +88 -130
  182. package/src/connection/ConnectivityChecker.ts +36 -34
  183. package/src/connection/ConnectorFacade.ts +91 -40
  184. package/src/connection/Handshaker.ts +20 -23
  185. package/src/connection/IConnection.ts +5 -6
  186. package/src/connection/ManagedConnection.ts +76 -101
  187. package/src/connection/{ManagedWebRtcConnection.ts → ManagedWebrtcConnection.ts} +12 -10
  188. package/src/connection/{Simulator → simulator}/Simulator.ts +4 -4
  189. package/src/connection/{Simulator → simulator}/SimulatorConnection.ts +27 -27
  190. package/src/connection/{Simulator → simulator}/SimulatorConnector.ts +22 -23
  191. package/src/connection/{Simulator → simulator}/SimulatorTransport.ts +2 -2
  192. package/src/connection/{WebRTC/BrowserWebRtcConnection.ts → webrtc/BrowserWebrtcConnection.ts} +13 -14
  193. package/src/connection/{WebRTC/IWebRtcConnection.ts → webrtc/IWebrtcConnection.ts} +2 -2
  194. package/src/connection/{WebRTC/NodeWebRtcConnection.ts → webrtc/NodeWebrtcConnection.ts} +38 -40
  195. package/src/connection/webrtc/WebrtcConnector.ts +226 -0
  196. package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +132 -0
  197. package/src/connection/{WebRTC/WebRtcConnectorRpcRemote.ts → webrtc/WebrtcConnectorRpcRemote.ts} +6 -7
  198. package/src/connection/{WebRTC → webrtc}/iceServerAsString.ts +1 -1
  199. package/src/connection/websocket/AutoCertifierClientFacade.ts +91 -0
  200. package/src/connection/{WebSocket/ClientWebSocket.ts → websocket/ClientWebsocket.ts} +22 -17
  201. package/src/connection/{WebSocket/ServerWebSocket.ts → websocket/ServerWebsocket.ts} +23 -27
  202. package/src/connection/websocket/WebsocketConnector.ts +328 -0
  203. package/src/connection/websocket/WebsocketConnectorRpcLocal.ts +41 -0
  204. package/src/connection/{WebSocket/WebSocketConnectorRpcRemote.ts → websocket/WebsocketConnectorRpcRemote.ts} +8 -14
  205. package/src/connection/{WebSocket/WebSocketServer.ts → websocket/WebsocketServer.ts} +40 -22
  206. package/src/dht/DhtNode.ts +166 -193
  207. package/src/dht/DhtNodeRpcLocal.ts +68 -0
  208. package/src/dht/{RemoteDhtNode.ts → DhtNodeRpcRemote.ts} +17 -18
  209. package/src/dht/ExternalApiRpcLocal.ts +46 -0
  210. package/src/dht/ExternalApiRpcRemote.ts +4 -4
  211. package/src/dht/contact/Remote.ts +32 -4
  212. package/src/dht/contact/SortedContactList.ts +4 -4
  213. package/src/dht/discovery/DiscoverySession.ts +25 -22
  214. package/src/dht/discovery/PeerDiscovery.ts +16 -19
  215. package/src/dht/find/FindRpcLocal.ts +35 -0
  216. package/src/dht/find/{RecursiveFindSession.ts → FindSession.ts} +25 -25
  217. package/src/dht/find/FindSessionRpcLocal.ts +25 -0
  218. package/src/dht/find/{RemoteRecursiveFindSession.ts → FindSessionRpcRemote.ts} +9 -5
  219. package/src/dht/find/{RecursiveFinder.ts → Finder.ts} +77 -71
  220. package/src/dht/routing/FindRpcRemote.ts +40 -0
  221. package/src/dht/routing/Router.ts +78 -109
  222. package/src/dht/routing/RouterRpcLocal.ts +81 -0
  223. package/src/dht/routing/RouterRpcRemote.ts +18 -49
  224. package/src/dht/routing/RoutingSession.ts +58 -63
  225. package/src/dht/routing/getPreviousPeer.ts +6 -0
  226. package/src/dht/store/StoreRpcLocal.ts +46 -39
  227. package/src/dht/store/StoreRpcRemote.ts +8 -12
  228. package/src/exports.ts +11 -5
  229. package/src/helpers/Connectivity.ts +19 -0
  230. package/src/helpers/errors.ts +3 -3
  231. package/src/helpers/peerIdFromPeerDescriptor.ts +6 -0
  232. package/src/helpers/protoClasses.ts +6 -6
  233. package/src/proto/packages/dht/protos/DhtRpc.client.ts +75 -59
  234. package/src/proto/packages/dht/protos/DhtRpc.server.ts +26 -21
  235. package/src/proto/packages/dht/protos/DhtRpc.ts +112 -131
  236. package/src/rpc-protocol/DhtCallContext.ts +0 -1
  237. package/src/transport/ITransport.ts +5 -8
  238. package/src/transport/ListeningRpcCommunicator.ts +2 -1
  239. package/src/transport/RoutingRpcCommunicator.ts +3 -4
  240. package/src/types/ServiceID.ts +1 -0
  241. package/test/benchmark/{RecursiveFind.test.ts → Find.test.ts} +7 -7
  242. package/test/benchmark/KademliaCorrectness.test.ts +3 -3
  243. package/test/benchmark/kademlia-simulation/SimulationNode.ts +3 -3
  244. package/test/end-to-end/Layer0-Layer1.test.ts +13 -5
  245. package/test/end-to-end/Layer0.test.ts +35 -17
  246. package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +28 -9
  247. package/test/end-to-end/{Layer0WebRTC-Layer1.test.ts → Layer0Webrtc-Layer1.test.ts} +1 -1
  248. package/test/end-to-end/{Layer0WebRTC.test.ts → Layer0Webrtc.test.ts} +14 -10
  249. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +8 -4
  250. package/test/end-to-end/{Layer1-Scale-WebRTC.test.ts → Layer1-Scale-Webrtc.test.ts} +2 -2
  251. package/test/end-to-end/RecoveryFromFailedAutoCertification.test.ts +52 -0
  252. package/test/end-to-end/{WebSocketConnectionRequest.test.ts → WebsocketConnectionRequest.test.ts} +16 -8
  253. package/test/end-to-end/memory-leak.test.ts +85 -0
  254. package/test/integration/ConnectionLocking.test.ts +10 -7
  255. package/test/integration/ConnectionManager.test.ts +107 -30
  256. package/test/integration/DhtJoinPeerDiscovery.test.ts +2 -2
  257. package/test/integration/DhtNodeExternalAPI.test.ts +10 -10
  258. package/test/integration/{RemoteDhtNode.test.ts → DhtNodeRpcRemote.test.ts} +10 -10
  259. package/test/integration/DhtRpc.test.ts +5 -5
  260. package/test/integration/{RecursiveFind.test.ts → Find.test.ts} +6 -9
  261. package/test/integration/Layer1-scale.test.ts +1 -1
  262. package/test/integration/MigrateData.test.ts +8 -7
  263. package/test/integration/Mock-Layer1-Layer0.test.ts +1 -1
  264. package/test/integration/MultipleEntryPointJoining.test.ts +8 -8
  265. package/test/integration/RouteMessage.test.ts +26 -26
  266. package/test/integration/RpcErrors.test.ts +10 -10
  267. package/test/integration/ScaleDownDht.test.ts +6 -6
  268. package/test/integration/SimultaneousConnections.test.ts +10 -7
  269. package/test/integration/Store.test.ts +4 -7
  270. package/test/integration/StoreAndDelete.test.ts +4 -7
  271. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +12 -12
  272. package/test/integration/{WebRtcConnectionManagement.test.ts → WebrtcConnectionManagement.test.ts} +5 -5
  273. package/test/integration/{WebRtcConnectorRpc.test.ts → WebrtcConnectorRpc.test.ts} +7 -8
  274. package/test/integration/{WebSocket.test.ts → Websocket.test.ts} +14 -13
  275. package/test/integration/{WebSocketConnectionManagement.test.ts → WebsocketConnectionManagement.test.ts} +4 -4
  276. package/test/integration/{WebSocketConnectorRpc.test.ts → WebsocketConnectorRpc.test.ts} +15 -15
  277. package/test/unit/AutoCertifierClientFacade.test.ts +58 -0
  278. package/test/unit/ConnectivityHelpers.test.ts +69 -0
  279. package/test/unit/{RecursiveFinder.test.ts → Finder.test.ts} +19 -17
  280. package/test/unit/Router.test.ts +26 -26
  281. package/test/unit/UUID.test.ts +1 -1
  282. package/test/unit/{WebSocketConnectorRpcLocal.test.ts → WebsocketConnector.test.ts} +8 -8
  283. package/test/unit/{WebSocketServer.test.ts → WebsocketServer.test.ts} +20 -14
  284. package/test/unit/webrtcReplaceInternalIpWithExternalIp.test.ts +1 -1
  285. package/test/utils/FakeRpcCommunicator.ts +23 -0
  286. package/test/utils/mock/Transport.ts +1 -1
  287. package/test/utils/utils.ts +22 -26
  288. package/tsconfig.browser.json +1 -1
  289. package/tsconfig.jest.json +3 -2
  290. package/tsconfig.node.json +3 -2
  291. package/dist/src/connection/ManagedWebRtcConnection.d.ts +0 -7
  292. package/dist/src/connection/ManagedWebRtcConnection.js +0 -20
  293. package/dist/src/connection/ManagedWebRtcConnection.js.map +0 -1
  294. package/dist/src/connection/Simulator/SimulatorConnection.js.map +0 -1
  295. package/dist/src/connection/Simulator/SimulatorConnector.js.map +0 -1
  296. package/dist/src/connection/Simulator/SimulatorTransport.js.map +0 -1
  297. package/dist/src/connection/WebRTC/IWebRtcConnection.js.map +0 -1
  298. package/dist/src/connection/WebRTC/NodeWebRtcConnection.js.map +0 -1
  299. package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.d.ts +0 -51
  300. package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.js +0 -249
  301. package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.js.map +0 -1
  302. package/dist/src/connection/WebRTC/WebRtcConnectorRpcRemote.js.map +0 -1
  303. package/dist/src/connection/WebSocket/ClientWebSocket.js.map +0 -1
  304. package/dist/src/connection/WebSocket/ServerWebSocket.js.map +0 -1
  305. package/dist/src/connection/WebSocket/WebSocketConnectorRpcLocal.d.ts +0 -45
  306. package/dist/src/connection/WebSocket/WebSocketConnectorRpcLocal.js +0 -234
  307. package/dist/src/connection/WebSocket/WebSocketConnectorRpcLocal.js.map +0 -1
  308. package/dist/src/connection/WebSocket/WebSocketConnectorRpcRemote.js.map +0 -1
  309. package/dist/src/connection/WebSocket/WebSocketServer.js.map +0 -1
  310. package/dist/src/dht/RemoteDhtNode.js.map +0 -1
  311. package/dist/src/dht/find/RecursiveFindSession.js.map +0 -1
  312. package/dist/src/dht/find/RecursiveFinder.js.map +0 -1
  313. package/dist/src/dht/find/RemoteRecursiveFindSession.js.map +0 -1
  314. package/dist/src/dht/registerExternalApiRpcMethods.d.ts +0 -2
  315. package/dist/src/dht/registerExternalApiRpcMethods.js +0 -32
  316. package/dist/src/dht/registerExternalApiRpcMethods.js.map +0 -1
  317. package/src/connection/WebRTC/WebRtcConnectorRpcLocal.ts +0 -335
  318. package/src/connection/WebSocket/WebSocketConnectorRpcLocal.ts +0 -295
  319. package/src/dht/registerExternalApiRpcMethods.ts +0 -44
  320. package/test/utils/mock/RecursiveFinder.ts +0 -19
  321. /package/dist/src/connection/{Simulator → simulator}/Simulator.d.ts +0 -0
  322. /package/dist/src/connection/{Simulator → simulator}/pings.d.ts +0 -0
  323. /package/dist/src/connection/{Simulator → simulator}/pings.js +0 -0
  324. /package/dist/src/connection/{WebRTC → webrtc}/iceServerAsString.js +0 -0
  325. /package/src/connection/{Simulator → simulator}/pings.ts +0 -0
@@ -1,8 +1,8 @@
1
1
  /* eslint-disable no-console */
2
- import { Simulator } from '../../src/connection/Simulator/Simulator'
2
+ import { Simulator } from '../../src/connection/simulator/Simulator'
3
3
  import { DhtNode } from '../../src/dht/DhtNode'
4
4
  import { PeerID } from '../../src/helpers/PeerID'
5
- import { keyFromPeerDescriptor } from '../../src/helpers/peerIdFromPeerDescriptor'
5
+ import { getNodeIdFromPeerDescriptor } from '../../src/helpers/peerIdFromPeerDescriptor'
6
6
  import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
7
7
  import { createMockConnectionDhtNode } from '../utils/utils'
8
8
  import { execSync } from 'child_process'
@@ -88,7 +88,7 @@ describe('Kademlia correctness', () => {
88
88
  correctNeighbors++
89
89
  }
90
90
  } catch (e) {
91
- console.error('Node ' + keyFromPeerDescriptor(nodes[i].getPeerDescriptor()) + ' had only '
91
+ console.error('Node ' + getNodeIdFromPeerDescriptor(nodes[i].getLocalPeerDescriptor()) + ' had only '
92
92
  + kademliaNeighbors.length + ' kademlia neighbors')
93
93
  }
94
94
  if (correctNeighbors === 0) {
@@ -94,7 +94,7 @@ export class SimulationNode {
94
94
  while (true) {
95
95
  let oldClosestContactId = this.neighborList.getClosestContactId()
96
96
  let uncontacted = this.neighborList.getUncontactedContacts(this.ALPHA)
97
- if (uncontacted.length < 1) {
97
+ if (uncontacted.length === 0) {
98
98
  return
99
99
  }
100
100
 
@@ -102,7 +102,7 @@ export class SimulationNode {
102
102
 
103
103
  if (oldClosestContactId.equals(this.neighborList.getClosestContactId())) {
104
104
  uncontacted = this.neighborList.getUncontactedContacts(this.K)
105
- if (uncontacted.length < 1) {
105
+ if (uncontacted.length === 0) {
106
106
  return
107
107
  }
108
108
 
@@ -115,7 +115,7 @@ export class SimulationNode {
115
115
  return
116
116
  }
117
117
  uncontacted = this.neighborList.getUncontactedContacts(this.ALPHA)
118
- if (uncontacted.length < 1) {
118
+ if (uncontacted.length === 0) {
119
119
  return
120
120
  }
121
121
  }
@@ -25,12 +25,20 @@ describe('Layer0-Layer1', () => {
25
25
 
26
26
  beforeEach(async () => {
27
27
 
28
- epDhtNode = new DhtNode({ peerDescriptor: epPeerDescriptor })
28
+ epDhtNode = new DhtNode({ peerDescriptor: epPeerDescriptor, websocketServerEnableTls: false })
29
29
  await epDhtNode.start()
30
30
  await epDhtNode.joinDht([epPeerDescriptor])
31
31
 
32
- node1 = new DhtNode({ websocketPortRange, entryPoints: [epPeerDescriptor] })
33
- node2 = new DhtNode({ websocketPortRange, entryPoints: [epPeerDescriptor] })
32
+ node1 = new DhtNode({
33
+ websocketPortRange,
34
+ entryPoints: [epPeerDescriptor],
35
+ websocketServerEnableTls: false
36
+ })
37
+ node2 = new DhtNode({
38
+ websocketPortRange,
39
+ entryPoints: [epPeerDescriptor],
40
+ websocketServerEnableTls: false
41
+ })
34
42
 
35
43
  await node1.start()
36
44
  await node2.start()
@@ -81,9 +89,9 @@ describe('Layer0-Layer1', () => {
81
89
  expect(stream2Node1.getClosestContacts()).toHaveLength(1)
82
90
  expect(stream2Node2.getClosestContacts()).toHaveLength(1)
83
91
 
84
- expect(areEqualPeerDescriptors(stream1Node1.getClosestContacts()[0], node1.getPeerDescriptor())).toBe(true)
92
+ expect(areEqualPeerDescriptors(stream1Node1.getClosestContacts()[0], node1.getLocalPeerDescriptor())).toBe(true)
85
93
  expect(areEqualPeerDescriptors(stream1Node2.getClosestContacts()[0], epPeerDescriptor)).toBe(true)
86
- expect(areEqualPeerDescriptors(stream2Node1.getClosestContacts()[0], node2.getPeerDescriptor())).toBe(true)
94
+ expect(areEqualPeerDescriptors(stream2Node1.getClosestContacts()[0], node2.getLocalPeerDescriptor())).toBe(true)
87
95
  expect(areEqualPeerDescriptors(stream2Node2.getClosestContacts()[0], epPeerDescriptor)).toBe(true)
88
96
  })
89
97
  })
@@ -1,13 +1,9 @@
1
- import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
1
+ import { PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
2
2
  import { DhtNode } from '../../src/dht/DhtNode'
3
3
 
4
4
  describe('Layer0', () => {
5
5
 
6
- const epPeerDescriptor: PeerDescriptor = {
7
- kademliaId: Uint8Array.from([1, 2, 3]),
8
- type: NodeType.NODEJS,
9
- websocket: { host: '127.0.0.1', port: 10011, tls: false }
10
- }
6
+ let epPeerDescriptor: PeerDescriptor
11
7
 
12
8
  let epDhtNode: DhtNode
13
9
  let node1: DhtNode
@@ -18,22 +14,44 @@ describe('Layer0', () => {
18
14
  const websocketPortRange = { min: 10012, max: 10015 }
19
15
  beforeEach(async () => {
20
16
 
21
- epDhtNode = new DhtNode({ peerDescriptor: epPeerDescriptor })
17
+ epDhtNode = new DhtNode({ websocketHost: '127.0.0.1', websocketPortRange: { min: 10011, max: 10011 }, websocketServerEnableTls: false })
22
18
  await epDhtNode.start()
23
-
19
+ epPeerDescriptor = epDhtNode.getLocalPeerDescriptor()
24
20
  await epDhtNode.joinDht([epPeerDescriptor])
25
21
 
26
- node1 = new DhtNode({ websocketPortRange, entryPoints: [epPeerDescriptor] })
27
- node2 = new DhtNode({ websocketPortRange, entryPoints: [epPeerDescriptor] })
28
- node3 = new DhtNode({ websocketPortRange, entryPoints: [epPeerDescriptor] })
29
- node4 = new DhtNode({ websocketPortRange, entryPoints: [epPeerDescriptor] })
22
+ node1 = new DhtNode({
23
+ websocketPortRange,
24
+ websocketHost: '127.0.0.1',
25
+ entryPoints: [epPeerDescriptor],
26
+ websocketServerEnableTls: false
27
+ })
28
+ node2 = new DhtNode({
29
+ websocketPortRange,
30
+ websocketHost: '127.0.0.1',
31
+ entryPoints: [epPeerDescriptor],
32
+ websocketServerEnableTls: false
33
+ })
34
+ node3 = new DhtNode({
35
+ websocketPortRange,
36
+ websocketHost: '127.0.0.1',
37
+ entryPoints: [epPeerDescriptor],
38
+ websocketServerEnableTls: false
39
+ })
40
+ node4 = new DhtNode({
41
+ websocketPortRange,
42
+ websocketHost: '127.0.0.1',
43
+ entryPoints: [epPeerDescriptor],
44
+ websocketServerEnableTls: false
45
+ })
30
46
 
31
- await node1.start()
32
- await node2.start()
33
- await node3.start()
34
- await node4.start()
47
+ await Promise.all([
48
+ node1.start(),
49
+ node2.start(),
50
+ node3.start(),
51
+ node4.start()
52
+ ])
35
53
 
36
- })
54
+ }, 10000)
37
55
 
38
56
  afterEach(async () => {
39
57
  await Promise.all([
@@ -1,7 +1,8 @@
1
1
  import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
2
2
  import { DhtNode } from '../../src/dht/DhtNode'
3
3
  import { waitForEvent3 } from '@streamr/utils'
4
- import { ConnectionManager, Events as ConnectionManagerEvents } from '../../src/connection/ConnectionManager'
4
+ import { ConnectionManager } from '../../src/connection/ConnectionManager'
5
+ import { TransportEvents } from '../../src/transport/ITransport'
5
6
 
6
7
  describe('Layer0MixedConnectionTypes', () => {
7
8
 
@@ -21,15 +22,33 @@ describe('Layer0MixedConnectionTypes', () => {
21
22
  const websocketPortRange = { min: 11222, max: 11223 }
22
23
  beforeEach(async () => {
23
24
 
24
- epDhtNode = new DhtNode({ peerDescriptor: epPeerDescriptor, numberOfNodesPerKBucket: 2 })
25
+ epDhtNode = new DhtNode({
26
+ peerDescriptor: epPeerDescriptor,
27
+ numberOfNodesPerKBucket: 2,
28
+ websocketServerEnableTls: false
29
+ })
25
30
  await epDhtNode.start()
26
31
 
27
32
  await epDhtNode.joinDht([epPeerDescriptor])
28
- node1 = new DhtNode({ websocketPortRange, entryPoints: [epPeerDescriptor] })
29
- node2 = new DhtNode({ websocketPortRange, entryPoints: [epPeerDescriptor] })
30
- node3 = new DhtNode({ entryPoints: [epPeerDescriptor] })
31
- node4 = new DhtNode({ entryPoints: [epPeerDescriptor] })
32
- node5 = new DhtNode({ entryPoints: [epPeerDescriptor] })
33
+ node1 = new DhtNode({
34
+ websocketPortRange,
35
+ entryPoints: [epPeerDescriptor],
36
+ websocketServerEnableTls: false
37
+ })
38
+ node2 = new DhtNode({
39
+ websocketPortRange,
40
+ entryPoints: [epPeerDescriptor],
41
+ websocketServerEnableTls: false
42
+ })
43
+ node3 = new DhtNode({
44
+ entryPoints: [epPeerDescriptor]
45
+ })
46
+ node4 = new DhtNode({
47
+ entryPoints: [epPeerDescriptor]
48
+ })
49
+ node5 = new DhtNode({
50
+ entryPoints: [epPeerDescriptor]
51
+ })
33
52
 
34
53
  await Promise.all([
35
54
  node1.start(),
@@ -56,8 +75,8 @@ describe('Layer0MixedConnectionTypes', () => {
56
75
  it('2 non-server peers join first', async () => {
57
76
 
58
77
  const promise = Promise.all([
59
- waitForEvent3<ConnectionManagerEvents>((node3.getTransport() as ConnectionManager), 'newConnection'),
60
- waitForEvent3<ConnectionManagerEvents>((node4.getTransport() as ConnectionManager), 'newConnection'),
78
+ waitForEvent3<TransportEvents>((node3.getTransport() as ConnectionManager), 'connected'),
79
+ waitForEvent3<TransportEvents>((node4.getTransport() as ConnectionManager), 'connected'),
61
80
  ])
62
81
 
63
82
  node3.joinDht([epPeerDescriptor])
@@ -30,7 +30,7 @@ describe('Layer 1 on Layer 0 with mocked connections', () => {
30
30
 
31
31
  beforeEach(async () => {
32
32
 
33
- layer0EntryPoint = new DhtNode({ peerDescriptor: entrypointDescriptor })
33
+ layer0EntryPoint = new DhtNode({ peerDescriptor: entrypointDescriptor, websocketServerEnableTls: false })
34
34
 
35
35
  const layer0Node1Id = '11'
36
36
  layer0Node1 = new DhtNode({
@@ -19,7 +19,11 @@ describe('Layer0 with WebRTC connections', () => {
19
19
 
20
20
  beforeEach(async () => {
21
21
 
22
- epDhtNode = new DhtNode({ peerDescriptor: epPeerDescriptor, numberOfNodesPerKBucket: 8 })
22
+ epDhtNode = new DhtNode({
23
+ peerDescriptor: epPeerDescriptor,
24
+ numberOfNodesPerKBucket: 8,
25
+ websocketServerEnableTls: false
26
+ })
23
27
  await epDhtNode.start()
24
28
 
25
29
  await epDhtNode.joinDht([epPeerDescriptor])
@@ -57,18 +61,18 @@ describe('Layer0 with WebRTC connections', () => {
57
61
  'connected',
58
62
  20000,
59
63
  (peerDescriptor: PeerDescriptor) => {
60
- return areEqualBinaries(peerDescriptor.kademliaId, node1.getPeerDescriptor().kademliaId)
64
+ return areEqualBinaries(peerDescriptor.kademliaId, node1.getLocalPeerDescriptor().kademliaId)
61
65
  }
62
66
  ),
63
67
  node2.joinDht([epPeerDescriptor]),
64
68
  node1.joinDht([epPeerDescriptor])
65
69
  ])
66
70
 
67
- expect((node1.getTransport() as ConnectionManager).hasConnection(node2.getPeerDescriptor())).toEqual(true)
68
- expect((node2.getTransport() as ConnectionManager).hasConnection(node1.getPeerDescriptor())).toEqual(true)
69
- expect((node1.getTransport() as ConnectionManager).getConnection(node2.getPeerDescriptor())!.connectionType)
71
+ expect((node1.getTransport() as ConnectionManager).hasConnection(node2.getLocalPeerDescriptor())).toEqual(true)
72
+ expect((node2.getTransport() as ConnectionManager).hasConnection(node1.getLocalPeerDescriptor())).toEqual(true)
73
+ expect((node1.getTransport() as ConnectionManager).getConnection(node2.getLocalPeerDescriptor())!.connectionType)
70
74
  .toEqual(ConnectionType.WEBRTC)
71
- expect((node2.getTransport() as ConnectionManager).getConnection(node1.getPeerDescriptor())!.connectionType)
75
+ expect((node2.getTransport() as ConnectionManager).getConnection(node1.getLocalPeerDescriptor())!.connectionType)
72
76
  .toEqual(ConnectionType.WEBRTC)
73
77
 
74
78
  }, 60000)
@@ -81,11 +85,11 @@ describe('Layer0 with WebRTC connections', () => {
81
85
  node4.joinDht([epPeerDescriptor])
82
86
  ])
83
87
 
84
- expect((node1.getTransport() as ConnectionManager).hasConnection(node2.getPeerDescriptor())).toEqual(true)
85
- expect((node2.getTransport() as ConnectionManager).hasConnection(node1.getPeerDescriptor())).toEqual(true)
86
- expect((node1.getTransport() as ConnectionManager).getConnection(node2.getPeerDescriptor())!.connectionType)
88
+ expect((node1.getTransport() as ConnectionManager).hasConnection(node2.getLocalPeerDescriptor())).toEqual(true)
89
+ expect((node2.getTransport() as ConnectionManager).hasConnection(node1.getLocalPeerDescriptor())).toEqual(true)
90
+ expect((node1.getTransport() as ConnectionManager).getConnection(node2.getLocalPeerDescriptor())!.connectionType)
87
91
  .toEqual(ConnectionType.WEBRTC)
88
- expect((node2.getTransport() as ConnectionManager).getConnection(node1.getPeerDescriptor())!.connectionType)
92
+ expect((node2.getTransport() as ConnectionManager).getConnection(node1.getLocalPeerDescriptor())!.connectionType)
89
93
  .toEqual(ConnectionType.WEBRTC)
90
94
  })
91
95
  })
@@ -25,7 +25,10 @@ describe('Layer1 Scale', () => {
25
25
  const websocketPortRange = { min: 62200, max: 62200 + NUM_OF_NODES }
26
26
 
27
27
  beforeEach(async () => {
28
- epLayer0Node = new DhtNode({ peerDescriptor: epPeerDescriptor })
28
+ epLayer0Node = new DhtNode({
29
+ peerDescriptor: epPeerDescriptor,
30
+ websocketServerEnableTls: false
31
+ })
29
32
  await epLayer0Node.start()
30
33
  await epLayer0Node.joinDht([epPeerDescriptor])
31
34
 
@@ -38,8 +41,9 @@ describe('Layer1 Scale', () => {
38
41
 
39
42
  for (let i = 0; i < NUM_OF_NODES; i++) {
40
43
  const node = new DhtNode({
41
- websocketPortRange,
44
+ websocketPortRange,
42
45
  entryPoints: [epPeerDescriptor],
46
+ websocketServerEnableTls: false,
43
47
  numberOfNodesPerKBucket: NUM_OF_NODES_PER_KBUCKET
44
48
  })
45
49
  await node.start()
@@ -47,7 +51,7 @@ describe('Layer1 Scale', () => {
47
51
  const layer1 = new DhtNode({
48
52
  transport: node,
49
53
  entryPoints: [epPeerDescriptor],
50
- peerDescriptor: node.getPeerDescriptor(),
54
+ peerDescriptor: node.getLocalPeerDescriptor(),
51
55
  serviceId: STREAM_ID,
52
56
  numberOfNodesPerKBucket: NUM_OF_NODES_PER_KBUCKET
53
57
  })
@@ -59,7 +63,7 @@ describe('Layer1 Scale', () => {
59
63
 
60
64
  await Promise.all(layer1Nodes.map((node) => node.joinDht([epPeerDescriptor])))
61
65
 
62
- }, 60000)
66
+ }, 120000)
63
67
 
64
68
  afterEach(async () => {
65
69
  await Promise.all(layer1Nodes.map((node) => node.stop()))
@@ -23,7 +23,7 @@ describe('Layer1 Scale', () => {
23
23
  let epLayer1Node: DhtNode
24
24
 
25
25
  beforeEach(async () => {
26
- epLayer0Node = new DhtNode({ peerDescriptor: epPeerDescriptor })
26
+ epLayer0Node = new DhtNode({ peerDescriptor: epPeerDescriptor, websocketServerEnableTls: false })
27
27
  await epLayer0Node.start()
28
28
  await epLayer0Node.joinDht([epPeerDescriptor])
29
29
 
@@ -44,7 +44,7 @@ describe('Layer1 Scale', () => {
44
44
  const layer1 = new DhtNode({
45
45
  transport: node,
46
46
  entryPoints: [epPeerDescriptor],
47
- peerDescriptor: node.getPeerDescriptor(),
47
+ peerDescriptor: node.getLocalPeerDescriptor(),
48
48
  serviceId: STREAM_ID,
49
49
  rpcRequestTimeout: 5000,
50
50
  numberOfNodesPerKBucket: NUM_OF_NODES_PER_KBUCKET
@@ -0,0 +1,52 @@
1
+ import { DhtNode } from '../../src/dht/DhtNode'
2
+ import { PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
3
+ import os from 'os'
4
+
5
+ describe('Failed autocertification', () => {
6
+
7
+ let entryPoint: DhtNode
8
+ let failedAutocertificationNode: DhtNode
9
+ let node: DhtNode
10
+ let entryPointPeerDescriptor: PeerDescriptor
11
+
12
+ beforeEach(async () => {
13
+ entryPoint = new DhtNode({ websocketHost: '127.0.0.1', websocketPortRange: { min: 11112, max: 11112 }, websocketServerEnableTls: false })
14
+ await entryPoint.start()
15
+ entryPointPeerDescriptor = entryPoint.getLocalPeerDescriptor()
16
+ await entryPoint.joinDht([entryPointPeerDescriptor])
17
+
18
+ failedAutocertificationNode = new DhtNode({
19
+ websocketPortRange: { min: 11113, max: 11113 },
20
+ websocketHost: '127.0.0.1',
21
+ entryPoints: [entryPointPeerDescriptor],
22
+ websocketServerEnableTls: true,
23
+ autoCertifierConfigFile: os.tmpdir() + '/failedAutoCertificationConfigFile.json',
24
+ autoCertifierUrl: 'http://localhost:44444'
25
+ })
26
+
27
+ node = new DhtNode({
28
+ websocketPortRange: { min: 11114, max: 11114 },
29
+ websocketHost: '127.0.0.1',
30
+ entryPoints: [entryPointPeerDescriptor],
31
+ websocketServerEnableTls: false
32
+ })
33
+
34
+ await node.start()
35
+ await node.joinDht([entryPointPeerDescriptor])
36
+ })
37
+
38
+ afterEach(async () => {
39
+ await failedAutocertificationNode.stop()
40
+ await entryPoint.stop()
41
+ await node.stop()
42
+ })
43
+
44
+ it('failed auto certification should default to no tls', async () => {
45
+ await failedAutocertificationNode.start()
46
+ const failedAutocertificationPeerDescriptor = failedAutocertificationNode.getLocalPeerDescriptor()
47
+ expect(failedAutocertificationPeerDescriptor.websocket!.tls).toBe(false)
48
+ await failedAutocertificationNode.joinDht([entryPointPeerDescriptor])
49
+ expect(failedAutocertificationNode.getBucketSize()).toEqual(2)
50
+ })
51
+
52
+ })
@@ -5,7 +5,7 @@ import { PeerID } from '../../src/helpers/PeerID'
5
5
  import { waitForCondition } from '@streamr/utils'
6
6
  import { areEqualPeerDescriptors } from '../../src/helpers/peerIdFromPeerDescriptor'
7
7
 
8
- describe('WebSocket IConnection Requests', () => {
8
+ describe('Websocket IConnection Requests', () => {
9
9
  const epPeerDescriptor: PeerDescriptor = {
10
10
  kademliaId: PeerID.fromString('3').value,
11
11
  type: NodeType.NODEJS,
@@ -17,13 +17,21 @@ describe('WebSocket IConnection Requests', () => {
17
17
 
18
18
  beforeEach(async () => {
19
19
 
20
- epDhtNode = new DhtNode({ peerDescriptor: epPeerDescriptor })
20
+ epDhtNode = new DhtNode({ peerDescriptor: epPeerDescriptor, websocketServerEnableTls: false })
21
21
  await epDhtNode.start()
22
22
 
23
23
  await epDhtNode.joinDht([epPeerDescriptor])
24
24
 
25
- node1 = new DhtNode({ websocketPortRange: { min: 10022, max: 10022 }, entryPoints: [epPeerDescriptor] })
26
- node2 = new DhtNode({ entryPoints: [epPeerDescriptor] })
25
+ node1 = new DhtNode({
26
+ websocketPortRange: { min: 10022, max: 10022 },
27
+ entryPoints: [epPeerDescriptor],
28
+ websocketServerEnableTls: false
29
+ })
30
+ node2 = new DhtNode({
31
+ entryPoints: [epPeerDescriptor],
32
+ websocketServerEnableTls: false
33
+ })
34
+
27
35
  await node1.start()
28
36
  await node2.start()
29
37
  })
@@ -40,12 +48,12 @@ describe('WebSocket IConnection Requests', () => {
40
48
  let connected2 = false
41
49
 
42
50
  node1.on('connected', (peerDescriptor: PeerDescriptor) => {
43
- if (areEqualPeerDescriptors(peerDescriptor, node2.getPeerDescriptor())) {
51
+ if (areEqualPeerDescriptors(peerDescriptor, node2.getLocalPeerDescriptor())) {
44
52
  connected1 = true
45
53
  }
46
54
  })
47
55
  node2.on('connected', (peerDescriptor: PeerDescriptor) => {
48
- if (areEqualPeerDescriptors(peerDescriptor, node1.getPeerDescriptor())) {
56
+ if (areEqualPeerDescriptors(peerDescriptor, node1.getLocalPeerDescriptor())) {
49
57
  connected2 = true
50
58
  }
51
59
  })
@@ -55,8 +63,8 @@ describe('WebSocket IConnection Requests', () => {
55
63
 
56
64
  await waitForCondition(() => { return (connected1 && connected2) })
57
65
 
58
- expect((node1.getTransport() as ConnectionManager).hasConnection(node2.getPeerDescriptor())).toEqual(true)
59
- expect((node2.getTransport() as ConnectionManager).hasConnection(node1.getPeerDescriptor())).toEqual(true)
66
+ expect((node1.getTransport() as ConnectionManager).hasConnection(node2.getLocalPeerDescriptor())).toEqual(true)
67
+ expect((node2.getTransport() as ConnectionManager).hasConnection(node1.getLocalPeerDescriptor())).toEqual(true)
60
68
 
61
69
  }, 10000)
62
70
  })
@@ -0,0 +1,85 @@
1
+ import LeakDetector from 'jest-leak-detector'
2
+ import { binaryToHex, waitForCondition } from '@streamr/utils'
3
+ import { randomBytes } from 'crypto'
4
+ import { DhtNode } from '../../src/dht/DhtNode'
5
+ import { Message, MessageType, NodeType } from '../../src/proto/packages/dht/protos/DhtRpc'
6
+ import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
7
+
8
+ const MESSAGE_ID = 'mock-message-id'
9
+
10
+ describe('memory leak', () => {
11
+
12
+ it('send message', async () => {
13
+ const entryPointDescriptor = {
14
+ kademliaId: randomBytes(10),
15
+ type: NodeType.NODEJS,
16
+ websocket: {
17
+ host: '127.0.0.1',
18
+ port: 11224,
19
+ tls: false
20
+ }
21
+ }
22
+ let entryPoint: DhtNode | undefined = new DhtNode({
23
+ peerId: binaryToHex(entryPointDescriptor.kademliaId),
24
+ websocketHost: entryPointDescriptor.websocket!.host,
25
+ websocketPortRange: {
26
+ min: entryPointDescriptor.websocket.port,
27
+ max: entryPointDescriptor.websocket.port
28
+ },
29
+ entryPoints: [entryPointDescriptor],
30
+ websocketServerEnableTls: false
31
+ })
32
+ await entryPoint.start()
33
+ await entryPoint.joinDht([entryPointDescriptor])
34
+ let sender: DhtNode | undefined = new DhtNode({})
35
+ let receiver: DhtNode | undefined = new DhtNode({})
36
+ /*TODO should this work? await Promise.all([
37
+ async () => {
38
+ await sender.start()
39
+ await sender.joinDht([entryPointDescriptor])
40
+ },
41
+ async () => {
42
+ await receiver.start()
43
+ await receiver.joinDht([entryPointDescriptor])
44
+ }
45
+ ])*/
46
+ await sender.start()
47
+ await sender.joinDht([entryPointDescriptor])
48
+ await receiver.start()
49
+ await receiver.joinDht([entryPointDescriptor])
50
+
51
+ let receivedMessage: Message | undefined = undefined
52
+ receiver.on('message', (msg: Message) => receivedMessage = msg)
53
+ const msg: Message = {
54
+ serviceId: 'mock-service-id',
55
+ targetDescriptor: receiver.getLocalPeerDescriptor(),
56
+ messageType: MessageType.RPC,
57
+ messageId: 'mock-message-id',
58
+ body: {
59
+ oneofKind: 'rpcMessage',
60
+ rpcMessage: RpcMessage.create()
61
+ }
62
+ }
63
+ await sender.send(msg)
64
+ await waitForCondition(() => receivedMessage !== undefined)
65
+ expect(receivedMessage!.messageId).toEqual(MESSAGE_ID)
66
+
67
+ await Promise.all([
68
+ entryPoint.stop(),
69
+ sender.stop(),
70
+ receiver.stop()
71
+ ])
72
+
73
+ const detector1 = new LeakDetector(entryPoint)
74
+ entryPoint = undefined
75
+ expect(await detector1.isLeaking()).toBe(false)
76
+
77
+ const detector2 = new LeakDetector(sender)
78
+ sender = undefined
79
+ expect(await detector2.isLeaking()).toBe(false)
80
+
81
+ const detector3 = new LeakDetector(receiver)
82
+ receiver = undefined
83
+ expect(await detector3.isLeaking()).toBe(false)
84
+ })
85
+ })
@@ -1,17 +1,18 @@
1
1
  import { MetricsContext, waitForCondition } from '@streamr/utils'
2
2
  import { ConnectionManager } from '../../src/connection/ConnectionManager'
3
3
  import { DefaultConnectorFacade } from '../../src/connection/ConnectorFacade'
4
- import { Simulator } from '../../src/connection/Simulator/Simulator'
5
- import { SimulatorTransport } from '../../src/connection/Simulator/SimulatorTransport'
4
+ import { LatencyType, Simulator } from '../../src/connection/simulator/Simulator'
5
+ import { SimulatorTransport } from '../../src/connection/simulator/SimulatorTransport'
6
6
  import { ITransport } from '../../src/exports'
7
7
  import { PeerID } from '../../src/helpers/PeerID'
8
8
  import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
9
+ import { getRandomRegion } from '../../dist/src/connection/simulator/pings'
9
10
 
10
- const createConnectionManager = (ownPeerDescriptor: PeerDescriptor, transport: ITransport) => {
11
+ const createConnectionManager = (localPeerDescriptor: PeerDescriptor, transport: ITransport) => {
11
12
  return new ConnectionManager({
12
13
  createConnectorFacade: () => new DefaultConnectorFacade({
13
14
  transport,
14
- createOwnPeerDescriptor: () => ownPeerDescriptor
15
+ createLocalPeerDescriptor: () => localPeerDescriptor
15
16
  }),
16
17
  metricsContext: new MetricsContext()
17
18
  })
@@ -21,11 +22,13 @@ describe('Connection Locking', () => {
21
22
 
22
23
  const mockPeerDescriptor1: PeerDescriptor = {
23
24
  kademliaId: PeerID.fromString('mock1').value,
24
- type: NodeType.NODEJS
25
+ type: NodeType.NODEJS,
26
+ region: getRandomRegion()
25
27
  }
26
28
  const mockPeerDescriptor2: PeerDescriptor = {
27
29
  kademliaId: PeerID.fromString('mock2').value,
28
- type: NodeType.NODEJS
30
+ type: NodeType.NODEJS,
31
+ region: getRandomRegion()
29
32
  }
30
33
 
31
34
  let mockConnectorTransport1: ConnectionManager
@@ -37,7 +40,7 @@ describe('Connection Locking', () => {
37
40
  let simulator: Simulator
38
41
 
39
42
  beforeEach(async () => {
40
- simulator = new Simulator()
43
+ simulator = new Simulator(LatencyType.REAL)
41
44
  mockConnectorTransport1 = new SimulatorTransport(mockPeerDescriptor1, simulator)
42
45
  await mockConnectorTransport1.start()
43
46
  mockConnectorTransport2 = new SimulatorTransport(mockPeerDescriptor2, simulator)