@streamr/dht 100.0.0-testnet-one.3 → 100.0.0-testnet-two.0

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 (307) hide show
  1. package/dist/src/connection/ConnectionLockHandler.d.ts +11 -11
  2. package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
  3. package/dist/src/connection/ConnectionLockRpcLocal.d.ts +3 -3
  4. package/dist/src/connection/ConnectionLockRpcLocal.js +4 -4
  5. package/dist/src/connection/ConnectionLockRpcLocal.js.map +1 -1
  6. package/dist/src/connection/ConnectionLockRpcRemote.d.ts +3 -5
  7. package/dist/src/connection/ConnectionLockRpcRemote.js +4 -7
  8. package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -1
  9. package/dist/src/connection/ConnectionManager.d.ts +4 -6
  10. package/dist/src/connection/ConnectionManager.js +48 -46
  11. package/dist/src/connection/ConnectionManager.js.map +1 -1
  12. package/dist/src/connection/ConnectorFacade.d.ts +2 -2
  13. package/dist/src/connection/ConnectorFacade.js +2 -1
  14. package/dist/src/connection/ConnectorFacade.js.map +1 -1
  15. package/dist/src/connection/ManagedConnection.d.ts +3 -6
  16. package/dist/src/connection/ManagedConnection.js +6 -10
  17. package/dist/src/connection/ManagedConnection.js.map +1 -1
  18. package/dist/src/connection/connectivityChecker.js +1 -0
  19. package/dist/src/connection/connectivityChecker.js.map +1 -1
  20. package/dist/src/connection/simulator/Simulator.d.ts +0 -3
  21. package/dist/src/connection/simulator/Simulator.js +3 -51
  22. package/dist/src/connection/simulator/Simulator.js.map +1 -1
  23. package/dist/src/connection/simulator/SimulatorConnector.js +5 -5
  24. package/dist/src/connection/simulator/SimulatorConnector.js.map +1 -1
  25. package/dist/src/connection/webrtc/NodeWebrtcConnection.js +2 -2
  26. package/dist/src/connection/webrtc/NodeWebrtcConnection.js.map +1 -1
  27. package/dist/src/connection/webrtc/WebrtcConnector.d.ts +0 -1
  28. package/dist/src/connection/webrtc/WebrtcConnector.js +7 -9
  29. package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -1
  30. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.d.ts +2 -2
  31. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +11 -12
  32. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +1 -1
  33. package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.d.ts +2 -5
  34. package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.js +1 -4
  35. package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.js.map +1 -1
  36. package/dist/src/connection/websocket/AutoCertifierClientFacade.d.ts +1 -2
  37. package/dist/src/connection/websocket/AutoCertifierClientFacade.js +3 -4
  38. package/dist/src/connection/websocket/AutoCertifierClientFacade.js.map +1 -1
  39. package/dist/src/connection/websocket/ClientWebsocket.js.map +1 -1
  40. package/dist/src/connection/websocket/WebsocketConnector.d.ts +2 -7
  41. package/dist/src/connection/websocket/WebsocketConnector.js +32 -38
  42. package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -1
  43. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.d.ts +3 -2
  44. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js +8 -10
  45. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js.map +1 -1
  46. package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.d.ts +3 -6
  47. package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js +0 -3
  48. package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js.map +1 -1
  49. package/dist/src/connection/websocket/WebsocketServer.d.ts +1 -4
  50. package/dist/src/connection/websocket/WebsocketServer.js +11 -12
  51. package/dist/src/connection/websocket/WebsocketServer.js.map +1 -1
  52. package/dist/src/dht/DhtNode.d.ts +10 -13
  53. package/dist/src/dht/DhtNode.js +39 -52
  54. package/dist/src/dht/DhtNode.js.map +1 -1
  55. package/dist/src/dht/DhtNodeRpcLocal.d.ts +0 -1
  56. package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -1
  57. package/dist/src/dht/DhtNodeRpcRemote.d.ts +7 -7
  58. package/dist/src/dht/DhtNodeRpcRemote.js +8 -7
  59. package/dist/src/dht/DhtNodeRpcRemote.js.map +1 -1
  60. package/dist/src/dht/ExternalApiRpcLocal.d.ts +5 -4
  61. package/dist/src/dht/ExternalApiRpcLocal.js +3 -2
  62. package/dist/src/dht/ExternalApiRpcLocal.js.map +1 -1
  63. package/dist/src/dht/ExternalApiRpcRemote.d.ts +2 -2
  64. package/dist/src/dht/ExternalApiRpcRemote.js +2 -0
  65. package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -1
  66. package/dist/src/dht/PeerManager.d.ts +13 -14
  67. package/dist/src/dht/PeerManager.js +45 -60
  68. package/dist/src/dht/PeerManager.js.map +1 -1
  69. package/dist/src/dht/contact/Contact.d.ts +2 -2
  70. package/dist/src/dht/contact/Contact.js +2 -2
  71. package/dist/src/dht/contact/Contact.js.map +1 -1
  72. package/dist/src/dht/contact/ContactList.d.ts +7 -7
  73. package/dist/src/dht/contact/ContactList.js +3 -3
  74. package/dist/src/dht/contact/ContactList.js.map +1 -1
  75. package/dist/src/dht/contact/RandomContactList.d.ts +4 -4
  76. package/dist/src/dht/contact/RandomContactList.js +12 -11
  77. package/dist/src/dht/contact/RandomContactList.js.map +1 -1
  78. package/dist/src/dht/contact/RpcRemote.d.ts +7 -4
  79. package/dist/src/dht/contact/RpcRemote.js +5 -2
  80. package/dist/src/dht/contact/RpcRemote.js.map +1 -1
  81. package/dist/src/dht/contact/SortedContactList.d.ts +13 -13
  82. package/dist/src/dht/contact/SortedContactList.js +33 -29
  83. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  84. package/dist/src/dht/discovery/DiscoverySession.d.ts +2 -4
  85. package/dist/src/dht/discovery/DiscoverySession.js +19 -20
  86. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  87. package/dist/src/dht/discovery/PeerDiscovery.d.ts +2 -5
  88. package/dist/src/dht/discovery/PeerDiscovery.js +12 -20
  89. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  90. package/dist/src/dht/recursive-operation/RecursiveOperationManager.d.ts +36 -0
  91. package/dist/src/dht/recursive-operation/RecursiveOperationManager.js +165 -0
  92. package/dist/src/dht/recursive-operation/RecursiveOperationManager.js.map +1 -0
  93. package/dist/src/dht/recursive-operation/RecursiveOperationRpcLocal.d.ts +14 -0
  94. package/dist/src/dht/{find/FindRpcLocal.js → recursive-operation/RecursiveOperationRpcLocal.js} +7 -7
  95. package/dist/src/dht/recursive-operation/RecursiveOperationRpcLocal.js.map +1 -0
  96. package/dist/src/dht/recursive-operation/RecursiveOperationRpcRemote.d.ts +6 -0
  97. package/dist/src/dht/{routing/FindRpcRemote.js → recursive-operation/RecursiveOperationRpcRemote.js} +11 -11
  98. package/dist/src/dht/recursive-operation/RecursiveOperationRpcRemote.js.map +1 -0
  99. package/dist/src/dht/recursive-operation/RecursiveOperationSession.d.ts +42 -0
  100. package/dist/src/dht/recursive-operation/RecursiveOperationSession.js +182 -0
  101. package/dist/src/dht/recursive-operation/RecursiveOperationSession.js.map +1 -0
  102. package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.d.ts +12 -0
  103. package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.js +17 -0
  104. package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.js.map +1 -0
  105. package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.d.ts +6 -0
  106. package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.js +21 -0
  107. package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.js.map +1 -0
  108. package/dist/src/dht/routing/Router.d.ts +4 -19
  109. package/dist/src/dht/routing/Router.js +41 -33
  110. package/dist/src/dht/routing/Router.js.map +1 -1
  111. package/dist/src/dht/routing/RouterRpcLocal.js +6 -5
  112. package/dist/src/dht/routing/RouterRpcLocal.js.map +1 -1
  113. package/dist/src/dht/routing/RouterRpcRemote.d.ts +2 -2
  114. package/dist/src/dht/routing/RouterRpcRemote.js +7 -7
  115. package/dist/src/dht/routing/RouterRpcRemote.js.map +1 -1
  116. package/dist/src/dht/routing/RoutingSession.d.ts +20 -16
  117. package/dist/src/dht/routing/RoutingSession.js +37 -45
  118. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  119. package/dist/src/dht/store/LocalDataStore.d.ts +11 -13
  120. package/dist/src/dht/store/LocalDataStore.js +36 -56
  121. package/dist/src/dht/store/LocalDataStore.js.map +1 -1
  122. package/dist/src/dht/store/StoreManager.d.ts +33 -0
  123. package/dist/src/dht/store/StoreManager.js +186 -0
  124. package/dist/src/dht/store/StoreManager.js.map +1 -0
  125. package/dist/src/dht/store/StoreRpcLocal.d.ts +8 -40
  126. package/dist/src/dht/store/StoreRpcLocal.js +13 -229
  127. package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
  128. package/dist/src/dht/store/StoreRpcRemote.d.ts +5 -5
  129. package/dist/src/dht/store/StoreRpcRemote.js +4 -5
  130. package/dist/src/dht/store/StoreRpcRemote.js.map +1 -1
  131. package/dist/src/exports.d.ts +2 -0
  132. package/dist/src/exports.js.map +1 -1
  133. package/dist/src/helpers/MapWithTtl.d.ts +14 -0
  134. package/dist/src/helpers/MapWithTtl.js +59 -0
  135. package/dist/src/helpers/MapWithTtl.js.map +1 -0
  136. package/dist/src/helpers/PeerID.d.ts +2 -0
  137. package/dist/src/helpers/PeerID.js +4 -0
  138. package/dist/src/helpers/PeerID.js.map +1 -1
  139. package/dist/src/helpers/nodeId.d.ts +5 -0
  140. package/dist/src/helpers/nodeId.js +18 -1
  141. package/dist/src/helpers/nodeId.js.map +1 -1
  142. package/dist/src/helpers/peerIdFromPeerDescriptor.d.ts +2 -1
  143. package/dist/src/helpers/peerIdFromPeerDescriptor.js +2 -1
  144. package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
  145. package/dist/src/helpers/protoClasses.js +2 -3
  146. package/dist/src/helpers/protoClasses.js.map +1 -1
  147. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +21 -22
  148. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +18 -18
  149. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
  150. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +36 -60
  151. package/dist/src/proto/packages/dht/protos/DhtRpc.js +34 -53
  152. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  153. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +11 -12
  154. package/dist/src/rpc-protocol/DhtCallContext.d.ts +2 -1
  155. package/dist/src/rpc-protocol/DhtCallContext.js.map +1 -1
  156. package/dist/src/rpc-protocol/DhtRpcOptions.d.ts +2 -1
  157. package/dist/src/transport/ITransport.d.ts +9 -1
  158. package/dist/src/transport/ITransport.js +5 -0
  159. package/dist/src/transport/ITransport.js.map +1 -1
  160. package/dist/src/transport/ListeningRpcCommunicator.js +1 -1
  161. package/dist/src/transport/ListeningRpcCommunicator.js.map +1 -1
  162. package/dist/src/transport/RoutingRpcCommunicator.d.ts +2 -1
  163. package/dist/src/transport/RoutingRpcCommunicator.js +16 -11
  164. package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
  165. package/jest.config.js +4 -1
  166. package/karma-setup.js +2 -0
  167. package/karma.config.js +11 -7
  168. package/package.json +6 -7
  169. package/protos/DhtRpc.proto +17 -23
  170. package/src/connection/ConnectionLockHandler.ts +15 -15
  171. package/src/connection/ConnectionLockRpcLocal.ts +8 -9
  172. package/src/connection/ConnectionLockRpcRemote.ts +7 -16
  173. package/src/connection/ConnectionManager.ts +58 -55
  174. package/src/connection/ConnectorFacade.ts +3 -0
  175. package/src/connection/ManagedConnection.ts +12 -30
  176. package/src/connection/connectivityChecker.ts +1 -0
  177. package/src/connection/simulator/Simulator.ts +5 -36
  178. package/src/connection/simulator/SimulatorConnector.ts +8 -8
  179. package/src/connection/webrtc/BrowserWebrtcConnection.ts +0 -3
  180. package/src/connection/webrtc/NodeWebrtcConnection.ts +3 -4
  181. package/src/connection/webrtc/WebrtcConnector.ts +11 -13
  182. package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +16 -16
  183. package/src/connection/webrtc/WebrtcConnectorRpcRemote.ts +3 -13
  184. package/src/connection/websocket/AutoCertifierClientFacade.ts +4 -6
  185. package/src/connection/websocket/ClientWebsocket.ts +1 -0
  186. package/src/connection/websocket/WebsocketConnector.ts +43 -56
  187. package/src/connection/websocket/WebsocketConnectorRpcLocal.ts +11 -13
  188. package/src/connection/websocket/WebsocketConnectorRpcRemote.ts +4 -15
  189. package/src/connection/websocket/WebsocketServer.ts +14 -17
  190. package/src/dht/DhtNode.ts +67 -69
  191. package/src/dht/DhtNodeRpcLocal.ts +0 -1
  192. package/src/dht/DhtNodeRpcRemote.ts +13 -13
  193. package/src/dht/ExternalApiRpcLocal.ts +16 -6
  194. package/src/dht/ExternalApiRpcRemote.ts +5 -3
  195. package/src/dht/PeerManager.ts +73 -90
  196. package/src/dht/contact/Contact.ts +5 -4
  197. package/src/dht/contact/ContactList.ts +9 -9
  198. package/src/dht/contact/RandomContactList.ts +14 -14
  199. package/src/dht/contact/RpcRemote.ts +10 -7
  200. package/src/dht/contact/SortedContactList.ts +48 -45
  201. package/src/dht/discovery/DiscoverySession.ts +25 -25
  202. package/src/dht/discovery/PeerDiscovery.ts +16 -37
  203. package/src/dht/recursive-operation/RecursiveOperationManager.ts +240 -0
  204. package/src/dht/{find/FindRpcLocal.ts → recursive-operation/RecursiveOperationRpcLocal.ts} +9 -9
  205. package/src/dht/{routing/FindRpcRemote.ts → recursive-operation/RecursiveOperationRpcRemote.ts} +10 -10
  206. package/src/dht/recursive-operation/RecursiveOperationSession.ts +224 -0
  207. package/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.ts +25 -0
  208. package/src/dht/{find/FindSessionRpcRemote.ts → recursive-operation/RecursiveOperationSessionRpcRemote.ts} +8 -8
  209. package/src/dht/routing/Router.ts +45 -64
  210. package/src/dht/routing/RouterRpcLocal.ts +7 -6
  211. package/src/dht/routing/RouterRpcRemote.ts +9 -10
  212. package/src/dht/routing/RoutingSession.ts +59 -68
  213. package/src/dht/store/LocalDataStore.ts +47 -66
  214. package/src/dht/store/StoreManager.ts +217 -0
  215. package/src/dht/store/StoreRpcLocal.ts +26 -302
  216. package/src/dht/store/StoreRpcRemote.ts +9 -11
  217. package/src/exports.ts +2 -0
  218. package/src/helpers/MapWithTtl.ts +71 -0
  219. package/src/helpers/PeerID.ts +5 -0
  220. package/src/helpers/nodeId.ts +20 -0
  221. package/src/helpers/peerIdFromPeerDescriptor.ts +5 -3
  222. package/src/helpers/protoClasses.ts +4 -6
  223. package/src/proto/packages/dht/protos/DhtRpc.client.ts +31 -32
  224. package/src/proto/packages/dht/protos/DhtRpc.server.ts +11 -12
  225. package/src/proto/packages/dht/protos/DhtRpc.ts +49 -80
  226. package/src/rpc-protocol/DhtCallContext.ts +2 -1
  227. package/src/rpc-protocol/DhtRpcOptions.ts +2 -1
  228. package/src/transport/ITransport.ts +10 -1
  229. package/src/transport/ListeningRpcCommunicator.ts +1 -1
  230. package/src/transport/RoutingRpcCommunicator.ts +18 -12
  231. package/test/benchmark/Find.test.ts +8 -21
  232. package/test/benchmark/KademliaCorrectness.test.ts +11 -20
  233. package/test/benchmark/SortedContactListBenchmark.test.ts +9 -9
  234. package/test/benchmark/kademlia-simulation/Contact.ts +9 -8
  235. package/test/benchmark/kademlia-simulation/KademliaSimulation.ts +2 -2
  236. package/test/benchmark/kademlia-simulation/SimulationNode.ts +17 -17
  237. package/test/end-to-end/Layer0-Layer1.test.ts +10 -14
  238. package/test/end-to-end/Layer0.test.ts +15 -18
  239. package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +7 -9
  240. package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +4 -10
  241. package/test/end-to-end/Layer0Webrtc.test.ts +5 -6
  242. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +8 -16
  243. package/test/end-to-end/Layer1-Scale-Webrtc.test.ts +6 -13
  244. package/test/end-to-end/WebsocketConnectionRequest.test.ts +5 -6
  245. package/test/end-to-end/memory-leak.test.ts +6 -8
  246. package/test/integration/ConnectionLocking.test.ts +6 -13
  247. package/test/integration/ConnectionManager.test.ts +26 -43
  248. package/test/integration/DhtJoinPeerDiscovery.test.ts +5 -10
  249. package/test/integration/DhtNodeExternalAPI.test.ts +16 -22
  250. package/test/integration/DhtNodeRpcRemote.test.ts +13 -22
  251. package/test/integration/DhtRpc.test.ts +13 -18
  252. package/test/integration/Find.test.ts +10 -10
  253. package/test/integration/Layer1-scale.test.ts +17 -28
  254. package/test/integration/Mock-Layer1-Layer0.test.ts +25 -43
  255. package/test/integration/MultipleEntryPointJoining.test.ts +7 -7
  256. package/test/integration/ReplicateData.test.ts +28 -30
  257. package/test/integration/RouteMessage.test.ts +30 -27
  258. package/test/integration/RouterRpcRemote.test.ts +12 -18
  259. package/test/integration/RpcErrors.test.ts +8 -21
  260. package/test/integration/ScaleDownDht.test.ts +11 -10
  261. package/test/integration/SimultaneousConnections.test.ts +43 -67
  262. package/test/integration/Store.test.ts +23 -36
  263. package/test/integration/StoreAndDelete.test.ts +30 -50
  264. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +16 -37
  265. package/test/integration/StoreRpcRemote.test.ts +20 -30
  266. package/test/integration/WebrtcConnectionManagement.test.ts +3 -13
  267. package/test/integration/WebrtcConnectorRpc.test.ts +3 -9
  268. package/test/integration/WebsocketConnectionManagement.test.ts +7 -10
  269. package/test/integration/WebsocketConnectorRpc.test.ts +8 -17
  270. package/test/unit/ConnectivityHelpers.test.ts +9 -17
  271. package/test/unit/DuplicateDetector.test.ts +7 -4
  272. package/test/unit/LocalDataStore.test.ts +66 -77
  273. package/test/unit/PeerManager.test.ts +31 -0
  274. package/test/unit/RandomContactList.test.ts +13 -8
  275. package/test/unit/{Finder.test.ts → RecursiveOperationManager.test.ts} +38 -43
  276. package/test/unit/RecursiveOperationSession.test.ts +68 -0
  277. package/test/unit/Router.test.ts +15 -22
  278. package/test/unit/RoutingSession.test.ts +23 -25
  279. package/test/unit/SortedContactList.test.ts +41 -26
  280. package/test/unit/StoreManager.test.ts +132 -0
  281. package/test/unit/WebsocketConnector.test.ts +27 -35
  282. package/test/unit/customMatchers.test.ts +16 -0
  283. package/test/utils/FakeTransport.ts +44 -0
  284. package/test/utils/customMatchers.ts +70 -0
  285. package/test/utils/mock/MockRpcCommunicator.ts +7 -0
  286. package/test/utils/mock/Router.ts +3 -2
  287. package/test/utils/mock/mockDataEntry.ts +36 -0
  288. package/test/utils/utils.ts +49 -87
  289. package/dist/src/dht/find/FindRpcLocal.d.ts +0 -14
  290. package/dist/src/dht/find/FindRpcLocal.js.map +0 -1
  291. package/dist/src/dht/find/FindSession.d.ts +0 -44
  292. package/dist/src/dht/find/FindSession.js +0 -150
  293. package/dist/src/dht/find/FindSession.js.map +0 -1
  294. package/dist/src/dht/find/FindSessionRpcLocal.d.ts +0 -12
  295. package/dist/src/dht/find/FindSessionRpcLocal.js +0 -17
  296. package/dist/src/dht/find/FindSessionRpcLocal.js.map +0 -1
  297. package/dist/src/dht/find/FindSessionRpcRemote.d.ts +0 -6
  298. package/dist/src/dht/find/FindSessionRpcRemote.js +0 -21
  299. package/dist/src/dht/find/FindSessionRpcRemote.js.map +0 -1
  300. package/dist/src/dht/find/Finder.d.ts +0 -49
  301. package/dist/src/dht/find/Finder.js +0 -197
  302. package/dist/src/dht/find/Finder.js.map +0 -1
  303. package/dist/src/dht/routing/FindRpcRemote.d.ts +0 -6
  304. package/dist/src/dht/routing/FindRpcRemote.js.map +0 -1
  305. package/src/dht/find/FindSession.ts +0 -183
  306. package/src/dht/find/FindSessionRpcLocal.ts +0 -25
  307. package/src/dht/find/Finder.ts +0 -295
@@ -1,32 +1,22 @@
1
1
  import { Simulator } from '../../src/connection/simulator/Simulator'
2
- import { PeerID } from '../../src/helpers/PeerID'
3
2
  import { DhtNode } from '../../src/dht/DhtNode'
4
- import { createMockConnectionDhtNode, createMockConnectionLayer1Node } from '../utils/utils'
5
- import { UUID } from '../../src/helpers/UUID'
6
- import { NodeType } from '../../src/proto/packages/dht/protos/DhtRpc'
3
+ import { createMockConnectionDhtNode, createMockConnectionLayer1Node, createMockPeerDescriptor } from '../utils/utils'
4
+ import { areEqualNodeIds } from '../../src/helpers/nodeId'
7
5
 
6
+ const NODE_COUNT = 48
8
7
  const NUM_OF_NODES_PER_KBUCKET = 8
9
8
 
10
9
  describe('Layer1', () => {
11
10
 
12
11
  let simulator: Simulator
13
- const layer0EntryPointId = new UUID().toString()
14
-
15
- const entryPoint0Descriptor = {
16
- nodeId: PeerID.fromString(layer0EntryPointId).value,
17
- type: NodeType.NODEJS
18
- }
19
-
12
+ const entryPoint0Descriptor = createMockPeerDescriptor()
20
13
  let layer0EntryPoint: DhtNode
21
-
22
- const NODE_COUNT = 48
23
14
  let nodes: DhtNode[]
24
-
25
15
  let layer1CleanUp: DhtNode[]
26
16
 
27
17
  beforeEach(async () => {
28
18
  simulator = new Simulator()
29
- layer0EntryPoint = await createMockConnectionDhtNode(layer0EntryPointId, simulator)
19
+ layer0EntryPoint = await createMockConnectionDhtNode(simulator, entryPoint0Descriptor.nodeId)
30
20
  await layer0EntryPoint.joinDht([entryPoint0Descriptor])
31
21
 
32
22
  nodes = []
@@ -34,7 +24,6 @@ describe('Layer1', () => {
34
24
 
35
25
  for (let i = 0; i < NODE_COUNT; i++) {
36
26
  const node = await createMockConnectionDhtNode(
37
- new UUID().toString(),
38
27
  simulator,
39
28
  undefined,
40
29
  undefined,
@@ -56,14 +45,14 @@ describe('Layer1', () => {
56
45
  })
57
46
 
58
47
  it('single layer1 dht', async () => {
59
- const layer1EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint.getNodeId().toString(), layer0EntryPoint)
48
+ const layer1EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint)
60
49
  await layer1EntryPoint.joinDht([entryPoint0Descriptor])
61
50
  layer1CleanUp.push(layer1EntryPoint)
62
51
 
63
52
  const layer1Nodes: DhtNode[] = []
64
53
  for (let i = 0; i < NODE_COUNT; i++) {
65
54
  const layer0 = nodes[i]
66
- const layer1 = await createMockConnectionLayer1Node(layer0.getNodeId().toString(), layer0, undefined, NUM_OF_NODES_PER_KBUCKET)
55
+ const layer1 = await createMockConnectionLayer1Node(layer0, undefined, NUM_OF_NODES_PER_KBUCKET)
67
56
  layer1Nodes.push(layer1)
68
57
  layer1CleanUp.push(layer1)
69
58
  }
@@ -73,7 +62,7 @@ describe('Layer1', () => {
73
62
  for (let i = 0; i < NODE_COUNT; i++) {
74
63
  const layer0Node = nodes[i]
75
64
  const layer1Node = layer1Nodes[i]
76
- expect(layer1Node.getNodeId().equals(layer0Node.getNodeId())).toEqual(true)
65
+ expect(areEqualNodeIds(layer1Node.getNodeId(), layer0Node.getNodeId())).toEqual(true)
77
66
  expect(layer1Node.getNumberOfConnections()).toEqual(layer0Node.getNumberOfConnections())
78
67
  expect(layer1Node.getNumberOfNeighbors()).toBeGreaterThanOrEqual(NUM_OF_NODES_PER_KBUCKET / 2)
79
68
  expect(layer1Node.getAllConnectionPeerDescriptors()).toEqual(layer0Node.getAllConnectionPeerDescriptors())
@@ -81,16 +70,16 @@ describe('Layer1', () => {
81
70
  }, 120000)
82
71
 
83
72
  it('multiple layer1 dht', async () => {
84
- const stream1EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint.getNodeId().toString(), layer0EntryPoint, 'one')
73
+ const stream1EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint, 'one')
85
74
  await stream1EntryPoint.joinDht([entryPoint0Descriptor])
86
75
 
87
- const stream2EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint.getNodeId().toString(), layer0EntryPoint, 'two')
76
+ const stream2EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint, 'two')
88
77
  await stream2EntryPoint.joinDht([entryPoint0Descriptor])
89
78
 
90
- const stream3EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint.getNodeId().toString(), layer0EntryPoint, 'three')
79
+ const stream3EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint, 'three')
91
80
  await stream3EntryPoint.joinDht([entryPoint0Descriptor])
92
81
 
93
- const stream4EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint.getNodeId().toString(), layer0EntryPoint, 'four')
82
+ const stream4EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint, 'four')
94
83
  await stream4EntryPoint.joinDht([entryPoint0Descriptor])
95
84
 
96
85
  layer1CleanUp.push(stream1EntryPoint)
@@ -105,10 +94,10 @@ describe('Layer1', () => {
105
94
 
106
95
  for (let i = 0; i < NODE_COUNT; i++) {
107
96
  const layer0 = nodes[i]
108
- const one = await createMockConnectionLayer1Node(layer0.getNodeId().toString(), layer0, 'one')
109
- const two = await createMockConnectionLayer1Node(layer0.getNodeId().toString(), layer0, 'two')
110
- const three = await createMockConnectionLayer1Node(layer0.getNodeId().toString(), layer0, 'three')
111
- const four = await createMockConnectionLayer1Node(layer0.getNodeId().toString(), layer0, 'four')
97
+ const one = await createMockConnectionLayer1Node(layer0, 'one')
98
+ const two = await createMockConnectionLayer1Node(layer0, 'two')
99
+ const three = await createMockConnectionLayer1Node(layer0, 'three')
100
+ const four = await createMockConnectionLayer1Node(layer0, 'four')
112
101
 
113
102
  stream1.push(one)
114
103
  stream2.push(two)
@@ -180,7 +169,7 @@ describe('Layer1', () => {
180
169
  // }
181
170
  // await sender.doRouteMessage({
182
171
  // message,
183
- // destinationPeer: receiver.getPeerDescriptor(),
172
+ // target: receiver.getPeerDescriptor().nodeId,
184
173
  // sourcePeer: sender.getPeerDescriptor(),
185
174
  // requestId: v4(),
186
175
  // reachableThrough: [],
@@ -1,62 +1,44 @@
1
1
  import { Logger } from '@streamr/utils'
2
2
  import { Simulator } from '../../src/connection/simulator/Simulator'
3
3
  import { DhtNode } from '../../src/dht/DhtNode'
4
- import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
5
4
  import { createMockConnectionDhtNode, createMockConnectionLayer1Node } from '../utils/utils'
5
+ import { PeerID } from '../../src/exports'
6
6
 
7
7
  const logger = new Logger(module)
8
8
 
9
+ // TODO refactor the test to not to use PeerID
10
+
9
11
  describe('Layer 1 on Layer 0 with mocked connections', () => {
10
- const simulator = new Simulator()
11
- const layer0EntryPointId = 'layer0entrypoint'
12
12
 
13
+ const simulator = new Simulator()
13
14
  let layer0EntryPoint: DhtNode
14
15
  let layer1Node1: DhtNode
15
-
16
16
  let layer0Node1: DhtNode
17
17
  let layer1EntryPoint: DhtNode
18
-
19
18
  let layer0Node2: DhtNode
20
19
  let layer1Node2: DhtNode
21
-
22
20
  let layer0Node3: DhtNode
23
21
  let layer1Node3: DhtNode
24
-
25
22
  let layer0Node4: DhtNode
26
23
  let layer1Node4: DhtNode
27
24
 
28
- let entryPointDescriptor: PeerDescriptor
29
-
30
25
  beforeEach(async () => {
31
26
 
32
- layer0EntryPoint = await createMockConnectionDhtNode(layer0EntryPointId, simulator)
33
-
34
- const layer0Node1Id = 'node1'
35
- layer0Node1 = await createMockConnectionDhtNode(layer0Node1Id, simulator)
36
-
37
- const layer0Node2Id = 'node2'
38
- layer0Node2 = await createMockConnectionDhtNode(layer0Node2Id, simulator)
39
-
40
- const layer0Node3Id = 'node3'
41
- layer0Node3 = await createMockConnectionDhtNode(layer0Node3Id, simulator)
42
-
43
- const layer0Node4Id = 'node4'
44
- layer0Node4 = await createMockConnectionDhtNode(layer0Node4Id, simulator)
45
-
46
- layer1EntryPoint = await createMockConnectionLayer1Node(layer0EntryPointId, layer0EntryPoint)
27
+ layer0EntryPoint = await createMockConnectionDhtNode(simulator, PeerID.fromString('layer0entrypoint').value)
28
+ layer0Node1 = await createMockConnectionDhtNode(simulator, PeerID.fromString('node1').value)
29
+ layer0Node2 = await createMockConnectionDhtNode(simulator, PeerID.fromString('node2').value)
30
+ layer0Node3 = await createMockConnectionDhtNode(simulator, PeerID.fromString('node3').value)
31
+ layer0Node4 = await createMockConnectionDhtNode(simulator, PeerID.fromString('node4').value)
47
32
 
48
- layer1Node1 = await createMockConnectionLayer1Node(layer0Node1Id, layer0Node1)
49
- layer1Node2 = await createMockConnectionLayer1Node(layer0Node2Id, layer0Node2)
50
- layer1Node3 = await createMockConnectionLayer1Node(layer0Node3Id, layer0Node3)
51
- layer1Node4 = await createMockConnectionLayer1Node(layer0Node4Id, layer0Node4)
33
+ layer1EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint)
52
34
 
53
- entryPointDescriptor = {
54
- nodeId: layer0EntryPoint.getNodeId().value,
55
- type: NodeType.NODEJS
56
- }
35
+ layer1Node1 = await createMockConnectionLayer1Node(layer0Node1)
36
+ layer1Node2 = await createMockConnectionLayer1Node(layer0Node2)
37
+ layer1Node3 = await createMockConnectionLayer1Node(layer0Node3)
38
+ layer1Node4 = await createMockConnectionLayer1Node(layer0Node4)
57
39
 
58
- await layer0EntryPoint.joinDht([entryPointDescriptor])
59
- await layer1EntryPoint.joinDht([entryPointDescriptor])
40
+ await layer0EntryPoint.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
41
+ await layer1EntryPoint.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
60
42
  })
61
43
 
62
44
  afterEach(async () => {
@@ -75,15 +57,15 @@ describe('Layer 1 on Layer 0 with mocked connections', () => {
75
57
  })
76
58
 
77
59
  it('Happy Path', async () => {
78
- await layer0Node1.joinDht([entryPointDescriptor])
79
- await layer0Node2.joinDht([entryPointDescriptor])
80
- await layer0Node3.joinDht([entryPointDescriptor])
81
- await layer0Node4.joinDht([entryPointDescriptor])
82
-
83
- await layer1Node1.joinDht([entryPointDescriptor])
84
- await layer1Node2.joinDht([entryPointDescriptor])
85
- await layer1Node3.joinDht([entryPointDescriptor])
86
- await layer1Node4.joinDht([entryPointDescriptor])
60
+ await layer0Node1.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
61
+ await layer0Node2.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
62
+ await layer0Node3.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
63
+ await layer0Node4.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
64
+
65
+ await layer1Node1.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
66
+ await layer1Node2.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
67
+ await layer1Node3.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
68
+ await layer1Node4.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
87
69
 
88
70
  logger.info('layer1EntryPoint.getNumberOfNeighbors() ' + layer1EntryPoint.getNumberOfNeighbors())
89
71
  logger.info('layer1Node1.getNumberOfNeighbors()' + layer1Node1.getNumberOfNeighbors())
@@ -16,9 +16,9 @@ describe('multiple entry point joining', () => {
16
16
  beforeEach(async () => {
17
17
  simulator = new Simulator(LatencyType.REAL)
18
18
 
19
- node1 = await createMockConnectionDhtNode('node1', simulator)
20
- node2 = await createMockConnectionDhtNode('node2', simulator)
21
- node3 = await createMockConnectionDhtNode('node3', simulator)
19
+ node1 = await createMockConnectionDhtNode(simulator)
20
+ node2 = await createMockConnectionDhtNode(simulator)
21
+ node3 = await createMockConnectionDhtNode(simulator)
22
22
 
23
23
  entryPoints = [
24
24
  node1.getLocalPeerDescriptor(),
@@ -69,11 +69,11 @@ describe('multiple entry point joining', () => {
69
69
  beforeEach(async () => {
70
70
  simulator = new Simulator(LatencyType.REAL)
71
71
 
72
- entryPoint1 = await createMockConnectionDhtNode('entryPoint1', simulator)
73
- entryPoint2 = await createMockConnectionDhtNode('entryPoint2', simulator)
72
+ entryPoint1 = await createMockConnectionDhtNode(simulator)
73
+ entryPoint2 = await createMockConnectionDhtNode(simulator)
74
74
 
75
- node1 = await createMockConnectionDhtNode('node1', simulator)
76
- node2 = await createMockConnectionDhtNode('node2', simulator)
75
+ node1 = await createMockConnectionDhtNode(simulator)
76
+ node2 = await createMockConnectionDhtNode(simulator)
77
77
 
78
78
  entryPoints = [
79
79
  entryPoint1.getLocalPeerDescriptor(),
@@ -5,27 +5,29 @@ import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/Dh
5
5
  import { createMockConnectionDhtNode, waitNodesReadyForTesting } from '../utils/utils'
6
6
  import { execSync } from 'child_process'
7
7
  import fs from 'fs'
8
- import { Logger } from '@streamr/utils'
8
+ import { Logger, hexToBinary } from '@streamr/utils'
9
9
  import { PeerID } from '../../src/helpers/PeerID'
10
10
  import { getNodeIdFromPeerDescriptor, keyFromPeerDescriptor, peerIdFromPeerDescriptor } from '../../src/helpers/peerIdFromPeerDescriptor'
11
- import { Any } from '../../src/proto/google/protobuf/any'
12
11
  import { SortedContactList } from '../../src/dht/contact/SortedContactList'
13
12
  import { Contact } from '../../src/dht/contact/Contact'
13
+ import { NodeID } from '../../src/helpers/nodeId'
14
+ import { createMockDataEntry } from '../utils/mock/mockDataEntry'
14
15
 
15
16
  const logger = new Logger(module)
16
17
 
17
18
  jest.setTimeout(60000)
18
19
 
20
+ const NUM_NODES = 100
21
+ const MAX_CONNECTIONS = 80
22
+ const K = 8
23
+
19
24
  describe('Replicate data from node to node in DHT', () => {
25
+
20
26
  let entryPoint: DhtNode
21
27
  let nodes: DhtNode[]
22
28
  let entrypointDescriptor: PeerDescriptor
23
29
  const simulator = new Simulator(LatencyType.FIXED, 20)
24
- const NUM_NODES = 100
25
- const MAX_CONNECTIONS = 80
26
- const K = 8
27
-
28
- const nodesById: Map<string, DhtNode> = new Map()
30
+ const nodesById: Map<NodeID, DhtNode> = new Map()
29
31
 
30
32
  if (!fs.existsSync('test/data/nodeids.json')) {
31
33
  console.log('ground truth data does not exist yet, generating..')
@@ -40,25 +42,22 @@ describe('Replicate data from node to node in DHT', () => {
40
42
  */
41
43
  beforeEach(async () => {
42
44
  nodes = []
43
- const entryPointId = '0'
44
- entryPoint = await createMockConnectionDhtNode(entryPointId, simulator,
45
+ entryPoint = await createMockConnectionDhtNode(simulator,
45
46
  Uint8Array.from(dhtIds[0].data), K, MAX_CONNECTIONS)
46
47
  nodes.push(entryPoint)
47
- nodesById.set(entryPoint.getNodeId().toKey(), entryPoint)
48
+ nodesById.set(entryPoint.getNodeId(), entryPoint)
48
49
 
49
50
  entrypointDescriptor = {
50
- nodeId: entryPoint.getNodeId().value,
51
+ nodeId: hexToBinary(entryPoint.getNodeId()),
51
52
  type: NodeType.NODEJS
52
53
  }
53
54
 
54
55
  nodes.push(entryPoint)
55
56
 
56
57
  for (let i = 1; i < NUM_NODES; i++) {
57
- const nodeId = `${i}`
58
-
59
- const node = await createMockConnectionDhtNode(nodeId, simulator,
58
+ const node = await createMockConnectionDhtNode(simulator,
60
59
  Uint8Array.from(dhtIds[i].data), K, MAX_CONNECTIONS)
61
- nodesById.set(node.getNodeId().toKey(), node)
60
+ nodesById.set(node.getNodeId(), node)
62
61
  nodes.push(node)
63
62
  }
64
63
  })
@@ -76,12 +75,12 @@ describe('Replicate data from node to node in DHT', () => {
76
75
 
77
76
  it('Data replicates to the closest node no matter where it is stored', async () => {
78
77
  const dataKey = PeerID.fromString('3232323e12r31r3')
79
- const data = Any.pack(entrypointDescriptor, PeerDescriptor)
78
+ const data = createMockDataEntry({ key: dataKey.value })
80
79
 
81
80
  // calculate offline which node is closest to the data
82
81
 
83
82
  const sortedList = new SortedContactList<Contact>({
84
- referenceId: dataKey,
83
+ referenceId: dataKey.toNodeId(),
85
84
  maxSize: 10000,
86
85
  allowToContainReferenceId: true,
87
86
  emitEvents: false
@@ -104,18 +103,18 @@ describe('Replicate data from node to node in DHT', () => {
104
103
  await nodes[0].joinDht([entrypointDescriptor])
105
104
 
106
105
  logger.info('storing data to node 0')
107
- const successfulStorers = await nodes[0].storeDataToDht(dataKey.value, data)
106
+ const successfulStorers = await nodes[0].storeDataToDht(dataKey.value, data.data!)
108
107
  expect(successfulStorers.length).toBe(1)
109
108
  logger.info('data successfully stored to node 0')
110
109
 
111
110
  logger.info('Nodes sorted according to distance to data with storing nodes marked are: ')
112
111
 
113
112
  closest.forEach((contact) => {
114
- const node = nodesById.get(PeerID.fromValue(contact.getPeerDescriptor().nodeId).toKey())!
113
+ const node = nodesById.get(getNodeIdFromPeerDescriptor(contact.getPeerDescriptor()))!
115
114
  let hasDataMarker = ''
116
115
 
117
116
  // @ts-expect-error private field
118
- if (node.localDataStore.getEntry(dataKey)) {
117
+ if (node.localDataStore.getEntries(dataKey.value)) {
119
118
  hasDataMarker = '<-'
120
119
  }
121
120
 
@@ -139,27 +138,26 @@ describe('Replicate data from node to node in DHT', () => {
139
138
  logger.info('After join of 99 nodes: nodes sorted according to distance to data with storing nodes marked are: ')
140
139
 
141
140
  closest.forEach((contact) => {
142
- const node = nodesById.get(PeerID.fromValue(contact.getPeerDescriptor().nodeId).toKey())!
141
+ const node = nodesById.get(getNodeIdFromPeerDescriptor(contact.getPeerDescriptor()))!
143
142
  let hasDataMarker = ''
144
143
 
145
144
  // @ts-expect-error private field
146
-
147
- if (node.localDataStore.getEntry(dataKey)) {
145
+ if (node.localDataStore.getEntries(dataKey.value)) {
148
146
  hasDataMarker = '<-'
149
147
  }
150
148
 
151
149
  logger.info(getNodeIdFromPeerDescriptor(node.getLocalPeerDescriptor()) + hasDataMarker)
152
150
  })
153
151
 
154
- const closestNode = nodesById.get(PeerID.fromValue(closest[0].getPeerDescriptor().nodeId).toKey())!
152
+ const closestNode = nodesById.get(getNodeIdFromPeerDescriptor(closest[0].getPeerDescriptor()))!
155
153
 
156
154
  // @ts-expect-error private field
157
- expect(closestNode.localDataStore.getEntry(dataKey).size).toBeGreaterThanOrEqual(1)
155
+ expect(closestNode.localDataStore.getEntries(dataKey.value).size).toBeGreaterThanOrEqual(1)
158
156
  }, 180000)
159
157
 
160
158
  it('Data replicates to the last remaining node if all other nodes leave gracefully', async () => {
161
159
  const dataKey = PeerID.fromString('3232323e12r31r3')
162
- const data = Any.pack(entrypointDescriptor, PeerDescriptor)
160
+ const data = createMockDataEntry({ key: dataKey.value })
163
161
 
164
162
  logger.info(NUM_NODES + ' nodes joining layer0 DHT')
165
163
  await Promise.all(
@@ -175,7 +173,7 @@ describe('Replicate data from node to node in DHT', () => {
175
173
  const randomIndex = Math.floor(Math.random() * nodes.length)
176
174
  logger.info('storing data to a random node: ' + randomIndex)
177
175
 
178
- const successfulStorers = await nodes[randomIndex].storeDataToDht(dataKey.value, data)
176
+ const successfulStorers = await nodes[randomIndex].storeDataToDht(dataKey.value, data.data!)
179
177
 
180
178
  logger.info('data successfully stored to ' + successfulStorers + ' nodes')
181
179
 
@@ -192,7 +190,7 @@ describe('Replicate data from node to node in DHT', () => {
192
190
 
193
191
  logger.info('Stopping node ' + nodeIndex + ' ' +
194
192
  // @ts-expect-error private field
195
- (nodes[nodeIndex].localDataStore.getEntry(dataKey) ? ', has data' : ' does not have data'))
193
+ (nodes[nodeIndex].localDataStore.getEntries(dataKey.value) ? ', has data' : ' does not have data'))
196
194
 
197
195
  await nodes[nodeIndex].stop()
198
196
  }
@@ -200,10 +198,10 @@ describe('Replicate data from node to node in DHT', () => {
200
198
  logger.info('after random graceful leaving, node ' + randomIndices[0] + ' is left')
201
199
 
202
200
  // @ts-expect-error private field
203
- logger.info('data of ' + randomIndices[0] + ' was ' + nodes[randomIndices[0]].localDataStore.getEntry(dataKey))
201
+ logger.info('data of ' + randomIndices[0] + ' was ' + nodes[randomIndices[0]].localDataStore.getEntries(dataKey.value))
204
202
 
205
203
  // @ts-expect-error private field
206
- expect(nodes[randomIndices[0]].localDataStore.getEntry(dataKey).size).toBeGreaterThanOrEqual(1)
204
+ expect(nodes[randomIndices[0]].localDataStore.getEntries(dataKey.value).size).toBeGreaterThanOrEqual(1)
207
205
 
208
206
  }, 180000)
209
207
  })
@@ -1,47 +1,50 @@
1
1
  import { DhtNode, Events as DhtNodeEvents } from '../../src/dht/DhtNode'
2
2
  import { Message, MessageType, NodeType, PeerDescriptor, RouteMessageWrapper } from '../../src/proto/packages/dht/protos/DhtRpc'
3
3
  import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
4
- import { Logger, runAndWaitForEvents3, waitForCondition } from '@streamr/utils'
4
+ import { Logger, hexToBinary, runAndWaitForEvents3, waitForCondition } from '@streamr/utils'
5
5
  import { createMockConnectionDhtNode, createWrappedClosestPeersRequest } from '../utils/utils'
6
- import { PeerID } from '../../src/helpers/PeerID'
6
+ import { PeerID, PeerIDKey } from '../../src/helpers/PeerID'
7
7
  import { Simulator } from '../../src/connection/simulator/Simulator'
8
8
  import { v4 } from 'uuid'
9
9
  import { Any } from '../../src/proto/google/protobuf/any'
10
10
  import { RoutingMode } from '../../src/dht/routing/RoutingSession'
11
+ import { areEqualNodeIds } from '../../src/helpers/nodeId'
12
+ import { createRandomNodeId } from '../../src/helpers/nodeId'
11
13
 
12
14
  const logger = new Logger(module)
13
15
 
16
+ // TODO refactor the test to not to use PeerID
17
+ const getPeerId = (node: DhtNode) => {
18
+ return PeerID.fromValue(hexToBinary(node.getNodeId()))
19
+ }
20
+
21
+ const NUM_NODES = 30
22
+
14
23
  describe('Route Message With Mock Connections', () => {
24
+
15
25
  let entryPoint: DhtNode
16
26
  let sourceNode: DhtNode
17
27
  let destinationNode: DhtNode
18
28
  let routerNodes: DhtNode[]
19
29
  let simulator: Simulator
20
30
  let entryPointDescriptor: PeerDescriptor
21
-
22
- const entryPointId = '0'
23
- const sourceId = 'eeeeeeeee'
24
- const destinationId = '000000000'
25
- const NUM_NODES = 30
26
-
27
31
  const receiveMatrix: Array<Array<number>> = []
28
32
 
29
33
  beforeEach(async () => {
30
34
  routerNodes = []
31
35
  simulator = new Simulator()
32
- entryPoint = await createMockConnectionDhtNode(entryPointId, simulator)
36
+ entryPoint = await createMockConnectionDhtNode(simulator, createRandomNodeId())
33
37
 
34
38
  entryPointDescriptor = {
35
- nodeId: entryPoint.getNodeId().value,
39
+ nodeId: hexToBinary(entryPoint.getNodeId()),
36
40
  type: NodeType.NODEJS
37
41
  }
38
42
 
39
- sourceNode = await createMockConnectionDhtNode(sourceId, simulator)
40
- destinationNode = await createMockConnectionDhtNode(destinationId, simulator)
43
+ sourceNode = await createMockConnectionDhtNode(simulator, createRandomNodeId())
44
+ destinationNode = await createMockConnectionDhtNode(simulator, createRandomNodeId())
41
45
 
42
46
  for (let i = 1; i < NUM_NODES; i++) {
43
- const nodeId = `${i}`
44
- const node = await createMockConnectionDhtNode(nodeId, simulator)
47
+ const node = await createMockConnectionDhtNode(simulator, PeerID.fromString(`${i}`).value)
45
48
  routerNodes.push(node)
46
49
  }
47
50
 
@@ -81,7 +84,7 @@ describe('Route Message With Mock Connections', () => {
81
84
  await runAndWaitForEvents3<DhtNodeEvents>([() => {
82
85
  sourceNode.router!.doRouteMessage({
83
86
  message,
84
- destinationPeer: destinationNode.getLocalPeerDescriptor(),
87
+ target: destinationNode.getLocalPeerDescriptor().nodeId,
85
88
  requestId: v4(),
86
89
  sourcePeer: sourceNode.getLocalPeerDescriptor(),
87
90
  reachableThrough: [],
@@ -113,7 +116,7 @@ describe('Route Message With Mock Connections', () => {
113
116
  }
114
117
  sourceNode.router!.doRouteMessage({
115
118
  message,
116
- destinationPeer: destinationNode.getLocalPeerDescriptor(),
119
+ target: destinationNode.getLocalPeerDescriptor().nodeId,
117
120
  requestId: v4(),
118
121
  sourcePeer: sourceNode.getLocalPeerDescriptor(),
119
122
  reachableThrough: [],
@@ -134,19 +137,19 @@ describe('Route Message With Mock Connections', () => {
134
137
  receiveMatrix.push(arr)
135
138
  }
136
139
 
137
- const numsOfReceivedMessages: Record<string, number> = {}
140
+ const numsOfReceivedMessages: Record<PeerIDKey, number> = {}
138
141
  routerNodes.forEach((node) => {
139
- numsOfReceivedMessages[node.getNodeId().toKey()] = 0
142
+ numsOfReceivedMessages[getPeerId(node).toKey()] = 0
140
143
  node.on('message', (msg: Message) => {
141
- numsOfReceivedMessages[node.getNodeId().toKey()] = numsOfReceivedMessages[node.getNodeId().toKey()] + 1
144
+ numsOfReceivedMessages[getPeerId(node).toKey()] = numsOfReceivedMessages[getPeerId(node).toKey()] + 1
142
145
  try {
143
- const target = receiveMatrix[parseInt(node.getNodeId().toString()) - 1]
146
+ const target = receiveMatrix[parseInt(getPeerId(node).toString()) - 1]
144
147
  target[parseInt(PeerID.fromValue(msg.sourceDescriptor!.nodeId).toString()) - 1]++
145
148
  } catch (e) {
146
149
  console.error(e)
147
150
  }
148
- if (parseInt(node.getNodeId().toString()) > routerNodes.length || parseInt(node.getNodeId().toString()) === 0) {
149
- console.error(node.getNodeId().toString())
151
+ if (parseInt(getPeerId(node).toString()) > routerNodes.length || parseInt(getPeerId(node).toString()) === 0) {
152
+ console.error(getPeerId(node).toString())
150
153
  }
151
154
  })
152
155
  }
@@ -154,7 +157,7 @@ describe('Route Message With Mock Connections', () => {
154
157
  await Promise.all(
155
158
  routerNodes.map(async (node) =>
156
159
  Promise.all(routerNodes.map(async (receiver) => {
157
- if (!node.getNodeId().equals(receiver.getNodeId())) {
160
+ if (!areEqualNodeIds(node.getNodeId(), receiver.getNodeId())) {
158
161
  const rpcWrapper = createWrappedClosestPeersRequest(sourceNode.getLocalPeerDescriptor())
159
162
  const message: Message = {
160
163
  serviceId: 'nonexisting_service',
@@ -169,7 +172,7 @@ describe('Route Message With Mock Connections', () => {
169
172
  }
170
173
  node.router!.doRouteMessage({
171
174
  message,
172
- destinationPeer: receiver.getLocalPeerDescriptor(),
175
+ target: receiver.getLocalPeerDescriptor().nodeId,
173
176
  sourcePeer: node.getLocalPeerDescriptor(),
174
177
  requestId: v4(),
175
178
  reachableThrough: [],
@@ -183,7 +186,7 @@ describe('Route Message With Mock Connections', () => {
183
186
  , 30000)
184
187
  await Promise.all(
185
188
  Object.keys(numsOfReceivedMessages).map(async (key) =>
186
- waitForCondition(() => numsOfReceivedMessages[key] >= routerNodes.length - 1, 30000)
189
+ waitForCondition(() => numsOfReceivedMessages[key as PeerIDKey] >= routerNodes.length - 1, 30000)
187
190
  )
188
191
  )
189
192
 
@@ -205,7 +208,7 @@ describe('Route Message With Mock Connections', () => {
205
208
 
206
209
  const routeMessageWrapper: RouteMessageWrapper = {
207
210
  message: closestPeersRequestMessage,
208
- destinationPeer: destinationNode.getLocalPeerDescriptor(),
211
+ target: destinationNode.getLocalPeerDescriptor().nodeId,
209
212
  requestId: v4(),
210
213
  sourcePeer: sourceNode.getLocalPeerDescriptor(),
211
214
  reachableThrough: [entryPointDescriptor],
@@ -237,7 +240,7 @@ describe('Route Message With Mock Connections', () => {
237
240
  message: requestMessage,
238
241
  requestId: v4(),
239
242
  sourcePeer: sourceNode.getLocalPeerDescriptor(),
240
- destinationPeer: entryPoint.getLocalPeerDescriptor()!,
243
+ target: entryPoint.getLocalPeerDescriptor()!.nodeId,
241
244
  reachableThrough: [],
242
245
  routingPath: []
243
246
  }
@@ -1,24 +1,19 @@
1
- import { RpcCommunicator, toProtoRpcClient } from '@streamr/proto-rpc'
1
+ import { RpcCommunicator } from '@streamr/proto-rpc'
2
2
  import { RouterRpcRemote } from '../../src/dht/routing/RouterRpcRemote'
3
- import { Message, MessageType, NodeType, PeerDescriptor, RouteMessageAck, RouteMessageWrapper } from '../../src/proto/packages/dht/protos/DhtRpc'
3
+ import { Message, MessageType, RouteMessageAck, RouteMessageWrapper } from '../../src/proto/packages/dht/protos/DhtRpc'
4
4
  import { RouterRpcClient } from '../../src/proto/packages/dht/protos/DhtRpc.client'
5
5
  import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
6
- import { createWrappedClosestPeersRequest, generateId, mockRouterRpc } from '../utils/utils'
6
+ import { createMockPeerDescriptor, createWrappedClosestPeersRequest, mockRouterRpc } from '../utils/utils'
7
+
8
+ const SERVICE_ID = 'test'
7
9
 
8
10
  describe('RemoteRouter', () => {
9
11
 
10
12
  let remoteRouter: RouterRpcRemote
11
13
  let clientRpcCommunicator: RpcCommunicator
12
14
  let serverRpcCommunicator: RpcCommunicator
13
- const serviceId = 'test'
14
- const clientPeerDescriptor: PeerDescriptor = {
15
- nodeId: generateId('client'),
16
- type: NodeType.NODEJS
17
- }
18
- const serverPeerDescriptor: PeerDescriptor = {
19
- nodeId: generateId('server'),
20
- type: NodeType.NODEJS
21
- }
15
+ const clientPeerDescriptor = createMockPeerDescriptor()
16
+ const serverPeerDescriptor = createMockPeerDescriptor()
22
17
 
23
18
  beforeEach(() => {
24
19
  clientRpcCommunicator = new RpcCommunicator()
@@ -30,14 +25,13 @@ describe('RemoteRouter', () => {
30
25
  serverRpcCommunicator.on('outgoingMessage', (message: RpcMessage) => {
31
26
  clientRpcCommunicator.handleIncomingMessage(message)
32
27
  })
33
- const client = toProtoRpcClient(new RouterRpcClient(clientRpcCommunicator.getRpcClientTransport()))
34
- remoteRouter = new RouterRpcRemote(clientPeerDescriptor, serverPeerDescriptor, serviceId, client)
28
+ remoteRouter = new RouterRpcRemote(clientPeerDescriptor, serverPeerDescriptor, SERVICE_ID, clientRpcCommunicator, RouterRpcClient)
35
29
  })
36
30
 
37
31
  it('routeMessage happy path', async () => {
38
32
  const rpcWrapper = createWrappedClosestPeersRequest(clientPeerDescriptor)
39
33
  const routed: Message = {
40
- serviceId,
34
+ serviceId: SERVICE_ID,
41
35
  messageId: 'routed',
42
36
  messageType: MessageType.RPC,
43
37
  body: {
@@ -49,7 +43,7 @@ describe('RemoteRouter', () => {
49
43
  requestId: 'routed',
50
44
  message: routed,
51
45
  sourcePeer: clientPeerDescriptor,
52
- destinationPeer: serverPeerDescriptor,
46
+ target: serverPeerDescriptor.nodeId,
53
47
  reachableThrough: [],
54
48
  routingPath: []
55
49
  })
@@ -60,7 +54,7 @@ describe('RemoteRouter', () => {
60
54
  serverRpcCommunicator.registerRpcMethod(RouteMessageWrapper, RouteMessageAck, 'routeMessage', mockRouterRpc.throwRouteMessageError)
61
55
  const rpcWrapper = createWrappedClosestPeersRequest(clientPeerDescriptor)
62
56
  const routed: Message = {
63
- serviceId,
57
+ serviceId: SERVICE_ID,
64
58
  messageId: 'routed',
65
59
  messageType: MessageType.RPC,
66
60
  body: {
@@ -72,7 +66,7 @@ describe('RemoteRouter', () => {
72
66
  requestId: 'routed',
73
67
  message: routed,
74
68
  sourcePeer: clientPeerDescriptor,
75
- destinationPeer: serverPeerDescriptor,
69
+ target: serverPeerDescriptor.nodeId,
76
70
  reachableThrough: [],
77
71
  routingPath: []
78
72
  })