@streamr/trackerless-network 101.1.2 → 102.0.0-beta.1

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 (244) hide show
  1. package/dist/{src/proto → generated}/google/protobuf/any.d.ts +11 -4
  2. package/dist/generated/google/protobuf/any.js.map +1 -0
  3. package/dist/{src/proto → generated}/google/protobuf/empty.d.ts +0 -1
  4. package/dist/generated/google/protobuf/empty.js.map +1 -0
  5. package/dist/{src/proto → generated}/google/protobuf/timestamp.d.ts +9 -3
  6. package/dist/generated/google/protobuf/timestamp.js.map +1 -0
  7. package/dist/{src/proto → generated}/packages/dht/protos/DhtRpc.client.d.ts +9 -0
  8. package/dist/{src/proto → generated}/packages/dht/protos/DhtRpc.client.js +7 -0
  9. package/dist/generated/packages/dht/protos/DhtRpc.client.js.map +1 -0
  10. package/dist/{src/proto → generated}/packages/dht/protos/DhtRpc.d.ts +32 -8
  11. package/dist/{src/proto → generated}/packages/dht/protos/DhtRpc.js +23 -7
  12. package/dist/generated/packages/dht/protos/DhtRpc.js.map +1 -0
  13. package/dist/{src/proto → generated}/packages/dht/protos/DhtRpc.server.d.ts +5 -0
  14. package/dist/generated/packages/dht/protos/DhtRpc.server.js.map +1 -0
  15. package/dist/generated/packages/proto-rpc/protos/ProtoRpc.js.map +1 -0
  16. package/dist/generated/packages/trackerless-network/protos/NetworkRpc.client.js.map +1 -0
  17. package/dist/{src/proto → generated}/packages/trackerless-network/protos/NetworkRpc.d.ts +29 -5
  18. package/dist/{src/proto → generated}/packages/trackerless-network/protos/NetworkRpc.js +17 -3
  19. package/dist/generated/packages/trackerless-network/protos/NetworkRpc.js.map +1 -0
  20. package/dist/generated/packages/trackerless-network/protos/NetworkRpc.server.js.map +1 -0
  21. package/dist/package.json +10 -11
  22. package/dist/src/NetworkNode.d.ts +8 -7
  23. package/dist/src/NetworkNode.js +5 -3
  24. package/dist/src/NetworkNode.js.map +1 -1
  25. package/dist/src/NetworkStack.d.ts +2 -2
  26. package/dist/src/NetworkStack.js +7 -6
  27. package/dist/src/NetworkStack.js.map +1 -1
  28. package/dist/src/exports.d.ts +3 -2
  29. package/dist/src/exports.js +3 -2
  30. package/dist/src/exports.js.map +1 -1
  31. package/dist/src/logic/ContentDeliveryLayerNode.d.ts +5 -1
  32. package/dist/src/logic/ContentDeliveryLayerNode.js +30 -10
  33. package/dist/src/logic/ContentDeliveryLayerNode.js.map +1 -1
  34. package/dist/src/logic/ContentDeliveryManager.d.ts +8 -3
  35. package/dist/src/logic/ContentDeliveryManager.js +28 -7
  36. package/dist/src/logic/ContentDeliveryManager.js.map +1 -1
  37. package/dist/src/logic/ContentDeliveryRpcLocal.d.ts +3 -3
  38. package/dist/src/logic/ContentDeliveryRpcLocal.js +3 -3
  39. package/dist/src/logic/ContentDeliveryRpcLocal.js.map +1 -1
  40. package/dist/src/logic/ContentDeliveryRpcRemote.d.ts +5 -2
  41. package/dist/src/logic/ContentDeliveryRpcRemote.js +7 -0
  42. package/dist/src/logic/ContentDeliveryRpcRemote.js.map +1 -1
  43. package/dist/src/logic/ControlLayerNode.d.ts +1 -1
  44. package/dist/src/logic/DiscoveryLayerNode.d.ts +3 -3
  45. package/dist/src/logic/DuplicateMessageDetector.js +3 -3
  46. package/dist/src/logic/DuplicateMessageDetector.js.map +1 -1
  47. package/dist/src/logic/ExternalNetworkRpc.js.map +1 -1
  48. package/dist/src/logic/NodeList.js +2 -2
  49. package/dist/src/logic/NodeList.js.map +1 -1
  50. package/dist/src/logic/PeerDescriptorStoreManager.d.ts +1 -1
  51. package/dist/src/logic/PeerDescriptorStoreManager.js +1 -2
  52. package/dist/src/logic/PeerDescriptorStoreManager.js.map +1 -1
  53. package/dist/src/logic/StreamPartNetworkSplitAvoidance.js +4 -3
  54. package/dist/src/logic/StreamPartNetworkSplitAvoidance.js.map +1 -1
  55. package/dist/src/logic/createContentDeliveryLayerNode.js +1 -1
  56. package/dist/src/logic/createContentDeliveryLayerNode.js.map +1 -1
  57. package/dist/src/logic/inspect/InspectSession.d.ts +2 -2
  58. package/dist/src/logic/inspect/InspectSession.js +2 -2
  59. package/dist/src/logic/inspect/InspectSession.js.map +1 -1
  60. package/dist/src/logic/inspect/Inspector.d.ts +1 -1
  61. package/dist/src/logic/inspect/Inspector.js +4 -4
  62. package/dist/src/logic/inspect/Inspector.js.map +1 -1
  63. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.d.ts +2 -2
  64. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js +9 -9
  65. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js.map +1 -1
  66. package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.d.ts +2 -2
  67. package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js +5 -5
  68. package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js.map +1 -1
  69. package/dist/src/logic/neighbor-discovery/Handshaker.js +14 -14
  70. package/dist/src/logic/neighbor-discovery/Handshaker.js.map +1 -1
  71. package/dist/src/logic/neighbor-discovery/NeighborFinder.js +5 -0
  72. package/dist/src/logic/neighbor-discovery/NeighborFinder.js.map +1 -1
  73. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js +5 -3
  74. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js.map +1 -1
  75. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.d.ts +2 -2
  76. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js +4 -4
  77. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js.map +1 -1
  78. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.d.ts +1 -1
  79. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js +1 -1
  80. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js.map +1 -1
  81. package/dist/src/logic/node-info/NodeInfoClient.d.ts +1 -1
  82. package/dist/src/logic/node-info/NodeInfoClient.js +1 -1
  83. package/dist/src/logic/node-info/NodeInfoClient.js.map +1 -1
  84. package/dist/src/logic/node-info/NodeInfoRpcLocal.d.ts +2 -2
  85. package/dist/src/logic/node-info/NodeInfoRpcLocal.js +1 -1
  86. package/dist/src/logic/node-info/NodeInfoRpcLocal.js.map +1 -1
  87. package/dist/src/logic/node-info/NodeInfoRpcRemote.d.ts +2 -2
  88. package/dist/src/logic/propagation/Propagation.d.ts +1 -1
  89. package/dist/src/logic/propagation/Propagation.js +0 -1
  90. package/dist/src/logic/propagation/Propagation.js.map +1 -1
  91. package/dist/src/logic/propagation/PropagationTaskStore.d.ts +1 -1
  92. package/dist/src/logic/proxy/ProxyClient.d.ts +4 -4
  93. package/dist/src/logic/proxy/ProxyClient.js +11 -7
  94. package/dist/src/logic/proxy/ProxyClient.js.map +1 -1
  95. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.d.ts +4 -4
  96. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js +5 -5
  97. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js.map +1 -1
  98. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.d.ts +4 -4
  99. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js +1 -1
  100. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js.map +1 -1
  101. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.d.ts +4 -4
  102. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js +4 -4
  103. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js.map +1 -1
  104. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.d.ts +1 -1
  105. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js +2 -2
  106. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js.map +1 -1
  107. package/dist/src/logic/utils.d.ts +1 -1
  108. package/dist/src/logic/utils.js +2 -2
  109. package/dist/src/logic/utils.js.map +1 -1
  110. package/dist/src/types.d.ts +6 -0
  111. package/dist/src/types.js +3 -0
  112. package/dist/src/types.js.map +1 -0
  113. package/dist/test/benchmark/first-message.js +3 -4
  114. package/dist/test/benchmark/first-message.js.map +1 -1
  115. package/dist/test/utils/utils.d.ts +4 -4
  116. package/dist/test/utils/utils.js +6 -5
  117. package/dist/test/utils/utils.js.map +1 -1
  118. package/jest.config.ts +13 -0
  119. package/karma-setup.js +7 -0
  120. package/karma.config.js +1 -1
  121. package/package.json +10 -11
  122. package/proto.sh +2 -2
  123. package/protos/NetworkRpc.proto +9 -4
  124. package/src/NetworkNode.ts +12 -9
  125. package/src/NetworkStack.ts +10 -10
  126. package/src/exports.ts +5 -3
  127. package/src/logic/ContentDeliveryLayerNode.ts +35 -11
  128. package/src/logic/ContentDeliveryManager.ts +41 -13
  129. package/src/logic/ContentDeliveryRpcLocal.ts +6 -6
  130. package/src/logic/ContentDeliveryRpcRemote.ts +12 -2
  131. package/src/logic/ControlLayerNode.ts +1 -1
  132. package/src/logic/DiscoveryLayerNode.ts +3 -3
  133. package/src/logic/DuplicateMessageDetector.ts +4 -4
  134. package/src/logic/ExternalNetworkRpc.ts +0 -1
  135. package/src/logic/NodeList.ts +4 -3
  136. package/src/logic/PeerDescriptorStoreManager.ts +1 -2
  137. package/src/logic/StreamPartNetworkSplitAvoidance.ts +5 -4
  138. package/src/logic/createContentDeliveryLayerNode.ts +3 -3
  139. package/src/logic/inspect/InspectSession.ts +5 -4
  140. package/src/logic/inspect/Inspector.ts +6 -6
  141. package/src/logic/neighbor-discovery/HandshakeRpcLocal.ts +13 -13
  142. package/src/logic/neighbor-discovery/HandshakeRpcRemote.ts +8 -8
  143. package/src/logic/neighbor-discovery/Handshaker.ts +15 -15
  144. package/src/logic/neighbor-discovery/NeighborFinder.ts +6 -1
  145. package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +6 -4
  146. package/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.ts +7 -7
  147. package/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.ts +4 -4
  148. package/src/logic/node-info/NodeInfoClient.ts +2 -2
  149. package/src/logic/node-info/NodeInfoRpcLocal.ts +2 -2
  150. package/src/logic/node-info/NodeInfoRpcRemote.ts +2 -2
  151. package/src/logic/propagation/Propagation.ts +1 -2
  152. package/src/logic/propagation/PropagationTaskStore.ts +1 -1
  153. package/src/logic/proxy/ProxyClient.ts +17 -12
  154. package/src/logic/proxy/ProxyConnectionRpcLocal.ts +10 -10
  155. package/src/logic/proxy/ProxyConnectionRpcRemote.ts +5 -5
  156. package/src/logic/temporary-connection/TemporaryConnectionRpcLocal.ts +9 -9
  157. package/src/logic/temporary-connection/TemporaryConnectionRpcRemote.ts +4 -4
  158. package/src/logic/utils.ts +4 -4
  159. package/src/types.ts +13 -0
  160. package/test/benchmark/first-message.ts +6 -5
  161. package/test/end-to-end/content-delivery-layer-node-with-real-connections.test.ts +11 -6
  162. package/test/end-to-end/external-network-rpc.test.ts +2 -2
  163. package/test/end-to-end/inspect.test.ts +5 -5
  164. package/test/end-to-end/proxy-and-full-node.test.ts +6 -6
  165. package/test/end-to-end/proxy-connections.test.ts +12 -14
  166. package/test/end-to-end/proxy-key-exchange.test.ts +11 -9
  167. package/test/end-to-end/webrtc-full-node-network.test.ts +7 -9
  168. package/test/end-to-end/websocket-full-node-network.test.ts +8 -10
  169. package/test/integration/ContentDeliveryLayerNode-Layer1Node-Latencies.test.ts +11 -11
  170. package/test/integration/ContentDeliveryLayerNode-Layer1Node.test.ts +10 -10
  171. package/test/integration/ContentDeliveryManager.test.ts +49 -25
  172. package/test/integration/ContentDeliveryRpcRemote.test.ts +8 -8
  173. package/test/integration/HandshakeRpcRemote.test.ts +2 -2
  174. package/test/integration/Handshakes.test.ts +21 -56
  175. package/test/integration/Inspect.test.ts +2 -2
  176. package/test/integration/NeighborUpdateRpcRemote.test.ts +2 -2
  177. package/test/integration/NetworkNode.test.ts +5 -4
  178. package/test/integration/NetworkRpc.test.ts +10 -10
  179. package/test/integration/NetworkStack.test.ts +4 -4
  180. package/test/integration/NodeInfoRpc.test.ts +9 -5
  181. package/test/integration/Propagation.test.ts +6 -6
  182. package/test/integration/joining-streams-on-offline-peers.test.ts +5 -5
  183. package/test/integration/stream-without-default-entrypoints.test.ts +8 -7
  184. package/test/integration/streamEntryPointReplacing.test.ts +5 -5
  185. package/test/types/global.d.ts +1 -0
  186. package/test/unit/ContentDeliveryLayerNode.test.ts +26 -14
  187. package/test/unit/ContentDeliveryManager.test.ts +10 -9
  188. package/test/unit/ContentDeliveryRpcLocal.test.ts +3 -3
  189. package/test/unit/DuplicateMessageDetector.test.ts +10 -10
  190. package/test/unit/ExternalNetworkRpc.test.ts +3 -3
  191. package/test/unit/HandshakeRpcLocal.test.ts +8 -21
  192. package/test/unit/Handshaker.test.ts +2 -2
  193. package/test/unit/InspectSession.test.ts +7 -4
  194. package/test/unit/Inspector.test.ts +5 -5
  195. package/test/unit/NeighborFinder.test.ts +5 -5
  196. package/test/unit/NeighborUpdateRpcLocal.test.ts +6 -6
  197. package/test/unit/NetworkNode.test.ts +5 -5
  198. package/test/unit/NodeList.test.ts +23 -23
  199. package/test/unit/PeerDescriptorStoreManager.test.ts +4 -4
  200. package/test/unit/Propagation.test.ts +8 -7
  201. package/test/unit/ProxyConnectionRpcRemote.test.ts +5 -5
  202. package/test/unit/StreamPartReconnect.test.ts +2 -2
  203. package/test/unit/TemporaryConnectionRpcLocal.test.ts +3 -3
  204. package/test/utils/mock/MockControlLayerNode.ts +5 -0
  205. package/test/utils/mock/MockNeighborUpdateManager.ts +1 -1
  206. package/test/utils/mock/MockTransport.ts +11 -0
  207. package/test/utils/utils.ts +10 -9
  208. package/tsconfig.browser.json +1 -0
  209. package/tsconfig.jest.json +2 -1
  210. package/tsconfig.json +3 -0
  211. package/tsconfig.node.json +1 -0
  212. package/.eslintignore +0 -7
  213. package/.eslintrc +0 -3
  214. package/dist/src/proto/google/protobuf/any.js.map +0 -1
  215. package/dist/src/proto/google/protobuf/empty.js.map +0 -1
  216. package/dist/src/proto/google/protobuf/timestamp.js.map +0 -1
  217. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +0 -1
  218. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +0 -1
  219. package/dist/src/proto/packages/dht/protos/DhtRpc.server.js.map +0 -1
  220. package/dist/src/proto/packages/proto-rpc/protos/ProtoRpc.js.map +0 -1
  221. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js.map +0 -1
  222. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js.map +0 -1
  223. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.server.js.map +0 -1
  224. package/jest.config.js +0 -5
  225. package/src/proto/google/protobuf/any.ts +0 -319
  226. package/src/proto/google/protobuf/empty.ts +0 -82
  227. package/src/proto/google/protobuf/timestamp.ts +0 -281
  228. package/src/proto/packages/dht/protos/DhtRpc.client.ts +0 -407
  229. package/src/proto/packages/dht/protos/DhtRpc.server.ts +0 -160
  230. package/src/proto/packages/dht/protos/DhtRpc.ts +0 -1244
  231. package/src/proto/packages/proto-rpc/protos/ProtoRpc.ts +0 -108
  232. package/src/proto/packages/trackerless-network/protos/NetworkRpc.client.ts +0 -218
  233. package/src/proto/packages/trackerless-network/protos/NetworkRpc.server.ts +0 -85
  234. package/src/proto/packages/trackerless-network/protos/NetworkRpc.ts +0 -752
  235. /package/dist/{src/proto → generated}/google/protobuf/any.js +0 -0
  236. /package/dist/{src/proto → generated}/google/protobuf/empty.js +0 -0
  237. /package/dist/{src/proto → generated}/google/protobuf/timestamp.js +0 -0
  238. /package/dist/{src/proto → generated}/packages/dht/protos/DhtRpc.server.js +0 -0
  239. /package/dist/{src/proto → generated}/packages/proto-rpc/protos/ProtoRpc.d.ts +0 -0
  240. /package/dist/{src/proto → generated}/packages/proto-rpc/protos/ProtoRpc.js +0 -0
  241. /package/dist/{src/proto → generated}/packages/trackerless-network/protos/NetworkRpc.client.d.ts +0 -0
  242. /package/dist/{src/proto → generated}/packages/trackerless-network/protos/NetworkRpc.client.js +0 -0
  243. /package/dist/{src/proto → generated}/packages/trackerless-network/protos/NetworkRpc.server.d.ts +0 -0
  244. /package/dist/{src/proto → generated}/packages/trackerless-network/protos/NetworkRpc.server.js +0 -0
@@ -1,5 +1,5 @@
1
- import { ConnectionManager, DhtNode, PeerDescriptor, Simulator, SimulatorTransport, getNodeIdFromPeerDescriptor, getRandomRegion } from '@streamr/dht'
2
- import { Logger, StreamPartIDUtils, waitForCondition } from '@streamr/utils'
1
+ import { ConnectionManager, DhtNode, PeerDescriptor, Simulator, SimulatorTransport, toNodeId, getRandomRegion } from '@streamr/dht'
2
+ import { Logger, StreamPartIDUtils, until } from '@streamr/utils'
3
3
  import { range } from 'lodash'
4
4
  import { ContentDeliveryLayerNode } from '../../src/logic/ContentDeliveryLayerNode'
5
5
  import { DiscoveryLayerNode } from '../../src/logic/DiscoveryLayerNode'
@@ -92,7 +92,7 @@ describe('ContentDeliveryLayerNode-DhtNode', () => {
92
92
  await otherContentDeliveryLayerNodes[0].start()
93
93
  await otherDiscoveryLayerNodes[0].joinDht([entrypointDescriptor])
94
94
 
95
- await waitForCondition(() => otherContentDeliveryLayerNodes[0].getNeighbors().length === 1)
95
+ await until(() => otherContentDeliveryLayerNodes[0].getNeighbors().length === 1)
96
96
  expect(otherContentDeliveryLayerNodes[0].getNearbyNodeView().getIds().length).toEqual(1)
97
97
  expect(otherContentDeliveryLayerNodes[0].getNeighbors().length).toEqual(1)
98
98
  })
@@ -103,7 +103,7 @@ describe('ContentDeliveryLayerNode-DhtNode', () => {
103
103
  await otherDiscoveryLayerNodes[i].joinDht([entrypointDescriptor])
104
104
  }))
105
105
 
106
- await waitForCondition(() => range(4).every((i) => otherContentDeliveryLayerNodes[i].getNeighbors().length === 4))
106
+ await until(() => range(4).every((i) => otherContentDeliveryLayerNodes[i].getNeighbors().length === 4))
107
107
  range(4).forEach((i) => {
108
108
  expect(otherContentDeliveryLayerNodes[i].getNearbyNodeView().getIds().length).toBeGreaterThanOrEqual(4)
109
109
  expect(otherContentDeliveryLayerNodes[i].getNeighbors().length).toBeGreaterThanOrEqual(4)
@@ -117,7 +117,7 @@ describe('ContentDeliveryLayerNode-DhtNode', () => {
117
117
  const neighbor = allNodes.find((node) => {
118
118
  return node.getOwnNodeId() === nodeId
119
119
  })
120
- const neighborNodeIds = neighbor!.getNeighbors().map((n) => getNodeIdFromPeerDescriptor(n))
120
+ const neighborNodeIds = neighbor!.getNeighbors().map((n) => toNodeId(n))
121
121
  expect(neighborNodeIds.includes(allNodes[i].getOwnNodeId())).toEqual(true)
122
122
  })
123
123
  })
@@ -129,7 +129,7 @@ describe('ContentDeliveryLayerNode-DhtNode', () => {
129
129
  otherDiscoveryLayerNodes[i].joinDht([entrypointDescriptor])
130
130
  }))
131
131
  await Promise.all(otherContentDeliveryLayerNodes.map((node) =>
132
- waitForCondition(() => node.getNeighbors().length >= 4, 10000)
132
+ until(() => node.getNeighbors().length >= 4, 10000)
133
133
  ))
134
134
 
135
135
  const avg = otherContentDeliveryLayerNodes.reduce((acc, curr) => {
@@ -138,17 +138,17 @@ describe('ContentDeliveryLayerNode-DhtNode', () => {
138
138
 
139
139
  logger.info(`AVG Number of neighbors: ${avg}`)
140
140
  await Promise.all(otherContentDeliveryLayerNodes.map((node) =>
141
- waitForCondition(() => node.getOutgoingHandshakeCount() === 0)
141
+ until(() => node.getOutgoingHandshakeCount() === 0)
142
142
  ))
143
- await waitForCondition(() => {
143
+ await until(() => {
144
144
  let mismatchCounter = 0
145
145
  otherContentDeliveryLayerNodes.forEach((node) => {
146
146
  const nodeId = node.getOwnNodeId()
147
147
  node.getNeighbors().forEach((neighbor) => {
148
- const neighborId = getNodeIdFromPeerDescriptor(neighbor)
148
+ const neighborId = toNodeId(neighbor)
149
149
  if (neighborId !== entryPointContentDeliveryLayerNode.getOwnNodeId()) {
150
150
  const neighbor = otherContentDeliveryLayerNodes.find((n) => n.getOwnNodeId() === neighborId)
151
- const neighborNodeIds = neighbor!.getNeighbors().map((n) => getNodeIdFromPeerDescriptor(n))
151
+ const neighborNodeIds = neighbor!.getNeighbors().map((n) => toNodeId(n))
152
152
  if (!neighborNodeIds.includes(nodeId)) {
153
153
  mismatchCounter += 1
154
154
  }
@@ -3,11 +3,11 @@ import {
3
3
  Simulator,
4
4
  SimulatorTransport
5
5
  } from '@streamr/dht'
6
- import { randomEthereumAddress } from '@streamr/test-utils'
7
- import { StreamPartIDUtils, waitForCondition, waitForEvent3 } from '@streamr/utils'
6
+ import { StreamPartIDUtils, until, waitForEvent3, wait } from '@streamr/utils'
8
7
  import { ContentDeliveryManager, Events } from '../../src/logic/ContentDeliveryManager'
9
8
  import { ControlLayerNode } from '../../src/logic/ControlLayerNode'
10
9
  import { createMockPeerDescriptor, createStreamMessage } from '../utils/utils'
10
+ import { randomUserId } from '@streamr/test-utils'
11
11
 
12
12
  describe('ContentDeliveryManager', () => {
13
13
 
@@ -25,18 +25,12 @@ describe('ContentDeliveryManager', () => {
25
25
  const msg = createStreamMessage(
26
26
  JSON.stringify({ hello: 'WORLD' }),
27
27
  STREAM_PART_ID,
28
- randomEthereumAddress()
28
+ randomUserId()
29
29
  )
30
-
31
- afterEach(async () => {
32
- await Promise.all([
33
- manager1.destroy(),
34
- manager2.destroy()
35
- ])
36
- })
30
+ let simulator: Simulator
37
31
 
38
32
  beforeEach(async () => {
39
- const simulator = new Simulator()
33
+ simulator = new Simulator()
40
34
  transport1 = new SimulatorTransport(peerDescriptor1, simulator)
41
35
  await transport1.start()
42
36
  transport2 = new SimulatorTransport(peerDescriptor2, simulator)
@@ -62,14 +56,26 @@ describe('ContentDeliveryManager', () => {
62
56
  controlLayerNode2.joinDht([peerDescriptor1])
63
57
  ])
64
58
 
65
- manager1 = new ContentDeliveryManager({})
66
- manager2 = new ContentDeliveryManager({})
59
+ manager1 = new ContentDeliveryManager({ neighborUpdateInterval: 100 })
60
+ manager2 = new ContentDeliveryManager({ neighborUpdateInterval: 100 })
67
61
  await manager1.start(controlLayerNode1, transport1, transport1)
68
62
  manager1.setStreamPartEntryPoints(STREAM_PART_ID, [peerDescriptor1])
69
63
  await manager2.start(controlLayerNode2, transport2, transport2)
70
64
  manager2.setStreamPartEntryPoints(STREAM_PART_ID, [peerDescriptor1])
71
65
  })
72
66
 
67
+ afterEach(async () => {
68
+ await Promise.all([
69
+ manager1.destroy(),
70
+ manager2.destroy(),
71
+ controlLayerNode1.stop(),
72
+ controlLayerNode2.stop(),
73
+ transport1.stop(),
74
+ transport2.stop()
75
+ ])
76
+ simulator.stop()
77
+ })
78
+
73
79
  it('starts', async () => {
74
80
  expect(manager1.getPeerDescriptor()).toEqual(peerDescriptor1)
75
81
  expect(manager2.getPeerDescriptor()).toEqual(peerDescriptor2)
@@ -78,8 +84,8 @@ describe('ContentDeliveryManager', () => {
78
84
  it('Joining stream', async () => {
79
85
  manager1.joinStreamPart(STREAM_PART_ID)
80
86
  manager2.joinStreamPart(STREAM_PART_ID)
81
- await waitForCondition(() => manager1.getNeighbors(STREAM_PART_ID).length === 1)
82
- await waitForCondition(() => manager2.getNeighbors(STREAM_PART_ID).length === 1)
87
+ await until(() => manager1.getNeighbors(STREAM_PART_ID).length === 1)
88
+ await until(() => manager2.getNeighbors(STREAM_PART_ID).length === 1)
83
89
  expect(manager1.getNeighbors(STREAM_PART_ID).length).toEqual(1)
84
90
  expect(manager2.getNeighbors(STREAM_PART_ID).length).toEqual(1)
85
91
  })
@@ -87,10 +93,11 @@ describe('ContentDeliveryManager', () => {
87
93
  it('Publishing after joining and waiting for neighbors', async () => {
88
94
  manager1.joinStreamPart(STREAM_PART_ID)
89
95
  manager2.joinStreamPart(STREAM_PART_ID)
90
- await waitForCondition(() => manager1.getNeighbors(STREAM_PART_ID).length === 1)
91
- await waitForCondition(() => manager2.getNeighbors(STREAM_PART_ID).length === 1)
96
+ await until(() => manager1.getNeighbors(STREAM_PART_ID).length === 1)
97
+ await until(() => manager2.getNeighbors(STREAM_PART_ID).length === 1)
92
98
  await Promise.all([
93
99
  waitForEvent3<Events>(manager1, 'newMessage'),
100
+ // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression
94
101
  manager2.broadcast(msg)
95
102
  ])
96
103
  })
@@ -104,20 +111,22 @@ describe('ContentDeliveryManager', () => {
104
111
  manager2.joinStreamPart(STREAM_PART_ID)
105
112
  manager2.joinStreamPart(streamPartId2)
106
113
  await Promise.all([
107
- waitForCondition(() => manager1.getNeighbors(STREAM_PART_ID).length === 1),
108
- waitForCondition(() => manager2.getNeighbors(STREAM_PART_ID).length === 1),
109
- waitForCondition(() => manager1.getNeighbors(streamPartId2).length === 1),
110
- waitForCondition(() => manager2.getNeighbors(streamPartId2).length === 1)
114
+ until(() => manager1.getNeighbors(STREAM_PART_ID).length === 1),
115
+ until(() => manager2.getNeighbors(STREAM_PART_ID).length === 1),
116
+ until(() => manager1.getNeighbors(streamPartId2).length === 1),
117
+ until(() => manager2.getNeighbors(streamPartId2).length === 1)
111
118
  ])
112
119
  const msg2 = createStreamMessage(
113
120
  JSON.stringify({ hello: 'WORLD' }),
114
121
  streamPartId2,
115
- randomEthereumAddress()
122
+ randomUserId()
116
123
  )
117
124
  await Promise.all([
118
125
  waitForEvent3<Events>(manager1, 'newMessage'),
119
126
  waitForEvent3<Events>(manager2, 'newMessage'),
127
+ // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression
120
128
  manager1.broadcast(msg2),
129
+ // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression
121
130
  manager2.broadcast(msg)
122
131
  ])
123
132
  })
@@ -126,11 +135,26 @@ describe('ContentDeliveryManager', () => {
126
135
  manager1.joinStreamPart(STREAM_PART_ID)
127
136
  manager2.joinStreamPart(STREAM_PART_ID)
128
137
  await Promise.all([
129
- waitForCondition(() => manager1.getNeighbors(STREAM_PART_ID).length === 1),
130
- waitForCondition(() => manager2.getNeighbors(STREAM_PART_ID).length === 1)
138
+ until(() => manager1.getNeighbors(STREAM_PART_ID).length === 1),
139
+ until(() => manager2.getNeighbors(STREAM_PART_ID).length === 1)
131
140
  ])
132
141
  await manager2.leaveStreamPart(STREAM_PART_ID)
133
- await waitForCondition(() => manager1.getNeighbors(STREAM_PART_ID).length === 0)
142
+ await until(() => manager1.getNeighbors(STREAM_PART_ID).length === 0)
143
+ })
144
+
145
+ it('RTTs are updated for node info', async () => {
146
+ manager1.joinStreamPart(STREAM_PART_ID)
147
+ manager2.joinStreamPart(STREAM_PART_ID)
148
+ await Promise.all([
149
+ until(() => manager1.getNeighbors(STREAM_PART_ID).length === 1),
150
+ until(() => manager2.getNeighbors(STREAM_PART_ID).length === 1)
151
+ ])
152
+ // Wait for RTTs to be updated
153
+ await wait(500)
154
+ const nodeInfo1 = manager1.getNodeInfo()
155
+ const nodeInfo2 = manager2.getNodeInfo()
156
+ expect(nodeInfo1[0].contentDeliveryLayerNeighbors[0].rtt).toBeGreaterThanOrEqual(0)
157
+ expect(nodeInfo2[0].contentDeliveryLayerNeighbors[0].rtt).toBeGreaterThanOrEqual(0)
134
158
  })
135
159
 
136
160
  })
@@ -5,16 +5,16 @@ import {
5
5
  Simulator,
6
6
  SimulatorTransport
7
7
  } from '@streamr/dht'
8
- import { randomEthereumAddress } from '@streamr/test-utils'
9
- import { StreamPartIDUtils, waitForCondition } from '@streamr/utils'
8
+ import { StreamPartIDUtils, until } from '@streamr/utils'
10
9
  import { ContentDeliveryRpcRemote } from '../../src/logic/ContentDeliveryRpcRemote'
11
- import { Empty } from '../../src/proto/google/protobuf/empty'
10
+ import { Empty } from '../../generated/google/protobuf/empty'
12
11
  import {
13
12
  LeaveStreamPartNotice,
14
13
  StreamMessage
15
- } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
16
- import { ContentDeliveryRpcClient } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc.client'
14
+ } from '../../generated/packages/trackerless-network/protos/NetworkRpc'
15
+ import { ContentDeliveryRpcClient } from '../../generated/packages/trackerless-network/protos/NetworkRpc.client'
17
16
  import { createStreamMessage } from '../utils/utils'
17
+ import { randomUserId } from '@streamr/test-utils'
18
18
 
19
19
  describe('ContentDeliveryRpcRemote', () => {
20
20
  let mockServerRpc: ListeningRpcCommunicator
@@ -85,16 +85,16 @@ describe('ContentDeliveryRpcRemote', () => {
85
85
  const msg = createStreamMessage(
86
86
  JSON.stringify({ hello: 'WORLD' }),
87
87
  StreamPartIDUtils.parse('test-stream#0'),
88
- randomEthereumAddress()
88
+ randomUserId()
89
89
  )
90
90
 
91
91
  await rpcRemote.sendStreamMessage(msg)
92
- await waitForCondition(() => recvCounter === 1)
92
+ await until(() => recvCounter === 1)
93
93
  })
94
94
 
95
95
  it('leaveNotice', async () => {
96
96
  rpcRemote.leaveStreamPartNotice(StreamPartIDUtils.parse('test#0'), false)
97
- await waitForCondition(() => recvCounter === 1)
97
+ await until(() => recvCounter === 1)
98
98
  })
99
99
 
100
100
  })
@@ -10,10 +10,10 @@ import { HandshakeRpcRemote } from '../../src/logic/neighbor-discovery/Handshake
10
10
  import {
11
11
  StreamPartHandshakeRequest,
12
12
  StreamPartHandshakeResponse
13
- } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
13
+ } from '../../generated/packages/trackerless-network/protos/NetworkRpc'
14
14
  import {
15
15
  HandshakeRpcClient,
16
- } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc.client'
16
+ } from '../../generated/packages/trackerless-network/protos/NetworkRpc.client'
17
17
 
18
18
  describe('HandshakeRpcRemote', () => {
19
19
  let mockServerRpc: ListeningRpcCommunicator
@@ -4,16 +4,14 @@ import {
4
4
  PeerDescriptor,
5
5
  Simulator,
6
6
  SimulatorTransport,
7
- getNodeIdFromPeerDescriptor
7
+ toNodeId
8
8
  } from '@streamr/dht'
9
9
  import { StreamPartIDUtils } from '@streamr/utils'
10
10
  import { NodeList } from '../../src/logic/NodeList'
11
- import { HandshakeRpcRemote } from '../../src/logic/neighbor-discovery/HandshakeRpcRemote'
12
11
  import { Handshaker } from '../../src/logic/neighbor-discovery/Handshaker'
13
- import { StreamPartHandshakeRequest, StreamPartHandshakeResponse } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
14
- import {
15
- HandshakeRpcClient
16
- } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc.client'
12
+ import { StreamPartHandshakeRequest, StreamPartHandshakeResponse } from '../../generated/packages/trackerless-network/protos/NetworkRpc'
13
+ import { ContentDeliveryRpcClient } from '../../generated/packages/trackerless-network/protos/NetworkRpc.client'
14
+ import { ContentDeliveryRpcRemote } from '../../src/logic/ContentDeliveryRpcRemote'
17
15
 
18
16
  describe('Handshakes', () => {
19
17
 
@@ -82,10 +80,16 @@ describe('Handshakes', () => {
82
80
  rpcCommunicator2 = new ListeningRpcCommunicator(streamPartId, simulatorTransport2)
83
81
  rpcCommunicator3 = new ListeningRpcCommunicator(streamPartId, simulatorTransport3)
84
82
 
85
- const handshakerNodeId = getNodeIdFromPeerDescriptor(peerDescriptor2)
83
+ const handshakerNodeId = toNodeId(peerDescriptor2)
86
84
  leftNodeView = new NodeList(handshakerNodeId, 10)
87
85
  rightNodeView = new NodeList(handshakerNodeId, 10)
88
86
  nodeView = new NodeList(handshakerNodeId, 10)
87
+ nodeView.add(new ContentDeliveryRpcRemote(
88
+ peerDescriptor2,
89
+ peerDescriptor1,
90
+ rpcCommunicator2,
91
+ ContentDeliveryRpcClient
92
+ ))
89
93
  neighbors = new NodeList(handshakerNodeId, 4)
90
94
  handshaker = new Handshaker({
91
95
  localPeerDescriptor: peerDescriptor2,
@@ -112,65 +116,26 @@ describe('Handshakes', () => {
112
116
  simulator.stop()
113
117
  })
114
118
 
115
- it('Two nodes can handshake', async () => {
116
- rpcCommunicator1.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', acceptHandshake)
117
- // @ts-expect-error private
118
- const res = await handshaker.handshakeWithTarget(
119
- new HandshakeRpcRemote(
120
- peerDescriptor2,
121
- peerDescriptor1,
122
- rpcCommunicator2,
123
- HandshakeRpcClient
124
- )
125
- )
126
- expect(res).toEqual(true)
127
- expect(neighbors.has(getNodeIdFromPeerDescriptor(peerDescriptor1))).toEqual(true)
128
- })
129
-
130
119
  it('Handshake accepted', async () => {
131
120
  rpcCommunicator1.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', acceptHandshake)
132
- // @ts-expect-error private
133
- const res = await handshaker.handshakeWithTarget(
134
- new HandshakeRpcRemote(
135
- peerDescriptor2,
136
- peerDescriptor1,
137
- rpcCommunicator2,
138
- HandshakeRpcClient
139
- )
140
- )
141
- expect(res).toEqual(true)
142
- expect(neighbors.has(getNodeIdFromPeerDescriptor(peerDescriptor1))).toEqual(true)
121
+ const res = await handshaker.attemptHandshakesOnContacts([])
122
+ expect(res).toHaveLength(0)
123
+ expect(neighbors.has(toNodeId(peerDescriptor1))).toEqual(true)
143
124
  })
144
125
 
145
126
  it('Handshake rejected', async () => {
146
127
  rpcCommunicator1.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', rejectHandshake)
147
- // @ts-expect-error private
148
- const res = await handshaker.handshakeWithTarget(
149
- new HandshakeRpcRemote(
150
- peerDescriptor2,
151
- peerDescriptor1,
152
- rpcCommunicator2,
153
- HandshakeRpcClient
154
- )
155
- )
156
- expect(res).toEqual(false)
157
- expect(neighbors.has(getNodeIdFromPeerDescriptor(peerDescriptor1))).toEqual(false)
128
+ const res = await handshaker.attemptHandshakesOnContacts([])
129
+ expect(res[0]).toEqual(toNodeId(peerDescriptor1))
130
+ expect(neighbors.has(toNodeId(peerDescriptor1))).toEqual(false)
158
131
  })
159
132
 
160
133
  it('Handshake with Interleaving', async () => {
161
134
  rpcCommunicator1.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', interleavingHandshake)
162
135
  rpcCommunicator3.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', acceptHandshake)
163
- // @ts-expect-error private
164
- const res = await handshaker.handshakeWithTarget(
165
- new HandshakeRpcRemote(
166
- peerDescriptor2,
167
- peerDescriptor1,
168
- rpcCommunicator2,
169
- HandshakeRpcClient
170
- )
171
- )
172
- expect(res).toEqual(true)
173
- expect(neighbors.has(getNodeIdFromPeerDescriptor(peerDescriptor1))).toEqual(true)
174
- expect(neighbors.has(getNodeIdFromPeerDescriptor(peerDescriptor3))).toEqual(true)
136
+ const res = await handshaker.attemptHandshakesOnContacts([])
137
+ expect(res).toHaveLength(0)
138
+ expect(neighbors.has(toNodeId(peerDescriptor1))).toEqual(true)
139
+ expect(neighbors.has(toNodeId(peerDescriptor3))).toEqual(true)
175
140
  })
176
141
  })
@@ -1,9 +1,9 @@
1
1
  import { LatencyType, PeerDescriptor, Simulator, SimulatorTransport } from '@streamr/dht'
2
- import { randomEthereumAddress } from '@streamr/test-utils'
3
2
  import { StreamPartIDUtils } from '@streamr/utils'
4
3
  import { range } from 'lodash'
5
4
  import { NetworkStack } from '../../src/NetworkStack'
6
5
  import { createMockPeerDescriptor, createStreamMessage } from '../utils/utils'
6
+ import { randomUserId } from '@streamr/test-utils'
7
7
 
8
8
  describe('inspect', () => {
9
9
 
@@ -72,7 +72,7 @@ describe('inspect', () => {
72
72
  const msg = createStreamMessage(
73
73
  JSON.stringify({ hello: 'WORLD' }),
74
74
  streamPartId,
75
- randomEthereumAddress(),
75
+ randomUserId(),
76
76
  123123,
77
77
  sequenceNumber
78
78
  )
@@ -7,10 +7,10 @@ import {
7
7
  } from '@streamr/dht'
8
8
  import { StreamPartIDUtils } from '@streamr/utils'
9
9
  import { NeighborUpdateRpcRemote } from '../../src/logic/neighbor-discovery/NeighborUpdateRpcRemote'
10
- import { NeighborUpdate } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
10
+ import { NeighborUpdate } from '../../generated/packages/trackerless-network/protos/NetworkRpc'
11
11
  import {
12
12
  NeighborUpdateRpcClient,
13
- } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc.client'
13
+ } from '../../generated/packages/trackerless-network/protos/NetworkRpc.client'
14
14
 
15
15
  describe('NeighborUpdateRpcRemote', () => {
16
16
  let mockServerRpc: ListeningRpcCommunicator
@@ -1,7 +1,8 @@
1
1
  import { PeerDescriptor, Simulator, SimulatorTransport } from '@streamr/dht'
2
- import { StreamPartIDUtils, hexToBinary, utf8ToBinary, waitForCondition } from '@streamr/utils'
2
+ import { randomUserId } from '@streamr/test-utils'
3
+ import { StreamPartIDUtils, hexToBinary, toUserIdRaw, utf8ToBinary, until } from '@streamr/utils'
3
4
  import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
4
- import { ContentType, EncryptionType, SignatureType, StreamMessage } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
5
+ import { ContentType, EncryptionType, SignatureType, StreamMessage } from '../../generated/packages/trackerless-network/protos/NetworkRpc'
5
6
  import { createMockPeerDescriptor } from '../utils/utils'
6
7
 
7
8
  const STREAM_PART_ID = StreamPartIDUtils.parse('test#0')
@@ -62,7 +63,7 @@ describe('NetworkNode', () => {
62
63
  streamPartition: StreamPartIDUtils.getStreamPartition(STREAM_PART_ID),
63
64
  timestamp: 666,
64
65
  sequenceNumber: 0,
65
- publisherId: hexToBinary('0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),
66
+ publisherId: toUserIdRaw(randomUserId()),
66
67
  messageChainId: 'msgChainId'
67
68
  },
68
69
  previousMessageRef: {
@@ -91,7 +92,7 @@ describe('NetworkNode', () => {
91
92
  msgCount += 1
92
93
  })
93
94
  await node2.broadcast(streamMessage)
94
- await waitForCondition(() => msgCount === 1)
95
+ await until(() => msgCount === 1)
95
96
  })
96
97
 
97
98
  it('fetchNodeInfo', async () => {
@@ -4,13 +4,13 @@ import {
4
4
  RpcCommunicator,
5
5
  toProtoRpcClient
6
6
  } from '@streamr/proto-rpc'
7
- import { randomEthereumAddress } from '@streamr/test-utils'
8
- import { StreamPartIDUtils, waitForCondition } from '@streamr/utils'
9
- import { Empty } from '../../src/proto/google/protobuf/empty'
10
- import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
11
- import { StreamMessage } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
12
- import { ContentDeliveryRpcClient } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc.client'
7
+ import { StreamPartIDUtils, until } from '@streamr/utils'
8
+ import { Empty } from '../../generated/google/protobuf/empty'
9
+ import { RpcMessage } from '../../generated/packages/proto-rpc/protos/ProtoRpc'
10
+ import { StreamMessage } from '../../generated/packages/trackerless-network/protos/NetworkRpc'
11
+ import { ContentDeliveryRpcClient } from '../../generated/packages/trackerless-network/protos/NetworkRpc.client'
13
12
  import { createStreamMessage } from '../utils/utils'
13
+ import { randomUserId } from '@streamr/test-utils'
14
14
 
15
15
  describe('Network RPC', () => {
16
16
  let rpcCommunicator1: RpcCommunicator<DhtCallContext>
@@ -21,8 +21,8 @@ describe('Network RPC', () => {
21
21
  beforeEach(() => {
22
22
  rpcCommunicator1 = new RpcCommunicator()
23
23
  rpcCommunicator2 = new RpcCommunicator()
24
- rpcCommunicator1.on('outgoingMessage', (message: RpcMessage) => {
25
- rpcCommunicator2.handleIncomingMessage(message)
24
+ rpcCommunicator1.setOutgoingMessageListener(async (message: RpcMessage) => {
25
+ rpcCommunicator2.handleIncomingMessage(message, new DhtCallContext())
26
26
  })
27
27
  client = toProtoRpcClient(new ContentDeliveryRpcClient(rpcCommunicator1.getRpcClientTransport()))
28
28
  rpcCommunicator2.registerRpcNotification(
@@ -44,9 +44,9 @@ describe('Network RPC', () => {
44
44
  const msg = createStreamMessage(
45
45
  JSON.stringify({ hello: 'WORLD' }),
46
46
  StreamPartIDUtils.parse('testStream#0'),
47
- randomEthereumAddress()
47
+ randomUserId()
48
48
  )
49
49
  await client.sendStreamMessage(msg)
50
- await waitForCondition(() => recvCounter === 1)
50
+ await until(() => recvCounter === 1)
51
51
  })
52
52
  })
@@ -1,10 +1,10 @@
1
- import { randomEthereumAddress } from '@streamr/test-utils'
2
1
  import {
3
2
  StreamPartIDUtils,
4
- waitForCondition
3
+ until
5
4
  } from '@streamr/utils'
6
5
  import { NetworkStack } from '../../src/NetworkStack'
7
6
  import { createMockPeerDescriptor, createStreamMessage } from '../utils/utils'
7
+ import { randomUserId } from '@streamr/test-utils'
8
8
 
9
9
  const STREAM_PART_ID = StreamPartIDUtils.parse('stream#0')
10
10
 
@@ -55,10 +55,10 @@ describe('NetworkStack', () => {
55
55
  const msg = createStreamMessage(
56
56
  JSON.stringify({ hello: 'WORLD' }),
57
57
  STREAM_PART_ID,
58
- randomEthereumAddress()
58
+ randomUserId()
59
59
  )
60
60
  stack2.getContentDeliveryManager().broadcast(msg)
61
- await waitForCondition(() => receivedMessages === 1)
61
+ await until(() => receivedMessages === 1)
62
62
  })
63
63
 
64
64
  it('join and wait for neighbors', async () => {
@@ -1,5 +1,5 @@
1
1
  import { ListeningRpcCommunicator, PeerDescriptor, Simulator, SimulatorTransport } from '@streamr/dht'
2
- import { StreamPartIDUtils, waitForCondition } from '@streamr/utils'
2
+ import { StreamPartIDUtils, until } from '@streamr/utils'
3
3
  import { NetworkStack } from '../../src/NetworkStack'
4
4
  import { NodeInfoClient } from '../../src/logic/node-info/NodeInfoClient'
5
5
  import { NODE_INFO_RPC_SERVICE_ID } from '../../src/logic/node-info/NodeInfoRpcLocal'
@@ -72,7 +72,7 @@ describe('NetworkStack NodeInfoRpc', () => {
72
72
  otherStack.getContentDeliveryManager().joinStreamPart(streamPartId1)
73
73
  requesteStack.getContentDeliveryManager().joinStreamPart(streamPartId2)
74
74
  otherStack.getContentDeliveryManager().joinStreamPart(streamPartId2)
75
- await waitForCondition(() =>
75
+ await until(() =>
76
76
  requesteStack.getContentDeliveryManager().getNeighbors(streamPartId1).length === 1
77
77
  && otherStack.getContentDeliveryManager().getNeighbors(streamPartId1).length === 1
78
78
  && requesteStack.getContentDeliveryManager().getNeighbors(streamPartId2).length === 1
@@ -89,15 +89,19 @@ describe('NetworkStack NodeInfoRpc', () => {
89
89
  {
90
90
  id: streamPartId1,
91
91
  controlLayerNeighbors: [normalizePeerDescriptor(otherPeerDescriptor)],
92
- contentDeliveryLayerNeighbors: [normalizePeerDescriptor(otherPeerDescriptor)]
92
+ contentDeliveryLayerNeighbors: [{
93
+ peerDescriptor: normalizePeerDescriptor(otherPeerDescriptor)
94
+ }]
93
95
  },
94
96
  {
95
97
  id: streamPartId2,
96
98
  controlLayerNeighbors: [normalizePeerDescriptor(otherPeerDescriptor)],
97
- contentDeliveryLayerNeighbors: [normalizePeerDescriptor(otherPeerDescriptor)]
99
+ contentDeliveryLayerNeighbors: [{
100
+ peerDescriptor: normalizePeerDescriptor(otherPeerDescriptor)
101
+ }]
98
102
  }
99
103
  ],
100
- version: expect.any(String)
104
+ applicationVersion: expect.any(String)
101
105
  })
102
106
  expect(result.streamPartitions.length).toEqual(2)
103
107
  })
@@ -1,10 +1,10 @@
1
1
  import { Simulator } from '@streamr/dht'
2
- import { randomEthereumAddress } from '@streamr/test-utils'
3
- import { StreamPartIDUtils, waitForCondition } from '@streamr/utils'
2
+ import { StreamPartIDUtils, until } from '@streamr/utils'
4
3
  import { range } from 'lodash'
5
4
  import { ContentDeliveryLayerNode } from '../../src/logic/ContentDeliveryLayerNode'
6
5
  import { DiscoveryLayerNode } from '../../src/logic/DiscoveryLayerNode'
7
6
  import { createMockContentDeliveryLayerNodeAndDhtNode, createMockPeerDescriptor, createStreamMessage } from '../utils/utils'
7
+ import { randomUserId } from '@streamr/test-utils'
8
8
 
9
9
  describe('Propagation', () => {
10
10
  const entryPointDescriptor = createMockPeerDescriptor()
@@ -56,10 +56,10 @@ describe('Propagation', () => {
56
56
  })
57
57
 
58
58
  it('All nodes receive messages', async () => {
59
- await waitForCondition(
59
+ await until(
60
60
  () => contentDeliveryLayerNodes.every((node) => node.getNeighbors().length >= 3), 30000
61
61
  )
62
- await waitForCondition(() => {
62
+ await until(() => {
63
63
  const avg = contentDeliveryLayerNodes.reduce((acc, curr) => {
64
64
  return acc + curr.getNeighbors().length
65
65
  }, 0) / contentDeliveryLayerNodes.length
@@ -68,9 +68,9 @@ describe('Propagation', () => {
68
68
  const msg = createStreamMessage(
69
69
  JSON.stringify({ hello: 'WORLD' }),
70
70
  STREAM_PART_ID,
71
- randomEthereumAddress()
71
+ randomUserId()
72
72
  )
73
73
  contentDeliveryLayerNodes[0].broadcast(msg)
74
- await waitForCondition(() => totalReceived >= NUM_OF_NODES, 10000)
74
+ await until(() => totalReceived >= NUM_OF_NODES, 10000)
75
75
  }, 45000)
76
76
  })
@@ -1,10 +1,10 @@
1
1
  import { LatencyType, PeerDescriptor, Simulator, SimulatorTransport } from '@streamr/dht'
2
- import { randomEthereumAddress } from '@streamr/test-utils'
3
- import { StreamPartIDUtils, waitForCondition } from '@streamr/utils'
2
+ import { StreamPartIDUtils, until } from '@streamr/utils'
4
3
  import { NetworkStack } from '../../src/NetworkStack'
5
4
  import { streamPartIdToDataKey } from '../../src/logic/ContentDeliveryManager'
6
- import { Any } from '../../src/proto/google/protobuf/any'
5
+ import { Any } from '../../generated/google/protobuf/any'
7
6
  import { createMockPeerDescriptor, createStreamMessage } from '../utils/utils'
7
+ import { randomUserId } from '@streamr/test-utils'
8
8
 
9
9
  const STREAM_PART_ID = StreamPartIDUtils.parse('stream#0')
10
10
 
@@ -74,9 +74,9 @@ describe('Joining stream parts on offline nodes', () => {
74
74
 
75
75
  node1.getContentDeliveryManager().joinStreamPart(STREAM_PART_ID)
76
76
  node1.getContentDeliveryManager().on('newMessage', () => { messageReceived = true })
77
- const msg = createStreamMessage(JSON.stringify({ hello: 'WORLD' }), STREAM_PART_ID, randomEthereumAddress())
77
+ const msg = createStreamMessage(JSON.stringify({ hello: 'WORLD' }), STREAM_PART_ID, randomUserId())
78
78
  node2.getContentDeliveryManager().broadcast(msg)
79
- await waitForCondition(() => messageReceived, 40000)
79
+ await until(() => messageReceived, 40000)
80
80
  }, 60000)
81
81
 
82
82
  })