@streamr/trackerless-network 100.0.0-pretestnet.4 → 100.0.0-rc.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 (241) hide show
  1. package/README.md +57 -0
  2. package/dist/package.json +11 -11
  3. package/dist/src/NetworkNode.d.ts +6 -5
  4. package/dist/src/NetworkNode.js +9 -2
  5. package/dist/src/NetworkNode.js.map +1 -1
  6. package/dist/src/NetworkStack.d.ts +13 -9
  7. package/dist/src/NetworkStack.js +80 -12
  8. package/dist/src/NetworkStack.js.map +1 -1
  9. package/dist/src/exports.d.ts +4 -3
  10. package/dist/src/exports.js +12 -1
  11. package/dist/src/exports.js.map +1 -1
  12. package/dist/src/logic/DeliveryRpcLocal.d.ts +4 -5
  13. package/dist/src/logic/DeliveryRpcLocal.js +6 -5
  14. package/dist/src/logic/DeliveryRpcLocal.js.map +1 -1
  15. package/dist/src/logic/DeliveryRpcRemote.d.ts +5 -4
  16. package/dist/src/logic/DeliveryRpcRemote.js +4 -3
  17. package/dist/src/logic/DeliveryRpcRemote.js.map +1 -1
  18. package/dist/src/logic/DuplicateMessageDetector.d.ts +3 -3
  19. package/dist/src/logic/DuplicateMessageDetector.js +10 -6
  20. package/dist/src/logic/DuplicateMessageDetector.js.map +1 -1
  21. package/dist/src/logic/EntryPointDiscovery.d.ts +8 -5
  22. package/dist/src/logic/EntryPointDiscovery.js +24 -15
  23. package/dist/src/logic/EntryPointDiscovery.js.map +1 -1
  24. package/dist/src/logic/Layer0Node.d.ts +6 -4
  25. package/dist/src/logic/Layer1Node.d.ts +12 -6
  26. package/dist/src/logic/NodeList.d.ts +13 -15
  27. package/dist/src/logic/NodeList.js +18 -15
  28. package/dist/src/logic/NodeList.js.map +1 -1
  29. package/dist/src/logic/RandomGraphNode.d.ts +26 -22
  30. package/dist/src/logic/RandomGraphNode.js +82 -52
  31. package/dist/src/logic/RandomGraphNode.js.map +1 -1
  32. package/dist/src/logic/StreamrNode.d.ts +6 -6
  33. package/dist/src/logic/StreamrNode.js +53 -37
  34. package/dist/src/logic/StreamrNode.js.map +1 -1
  35. package/dist/src/logic/createRandomGraphNode.d.ts +2 -2
  36. package/dist/src/logic/createRandomGraphNode.js +33 -21
  37. package/dist/src/logic/createRandomGraphNode.js.map +1 -1
  38. package/dist/src/logic/formStreamPartDeliveryServiceId.d.ts +2 -1
  39. package/dist/src/logic/formStreamPartDeliveryServiceId.js.map +1 -1
  40. package/dist/src/logic/inspect/InspectSession.d.ts +4 -3
  41. package/dist/src/logic/inspect/InspectSession.js +6 -2
  42. package/dist/src/logic/inspect/InspectSession.js.map +1 -1
  43. package/dist/src/logic/inspect/Inspector.d.ts +11 -16
  44. package/dist/src/logic/inspect/Inspector.js +21 -9
  45. package/dist/src/logic/inspect/Inspector.js.map +1 -1
  46. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.d.ts +7 -9
  47. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js +55 -32
  48. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js.map +1 -1
  49. package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.d.ts +8 -6
  50. package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js +25 -16
  51. package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js.map +1 -1
  52. package/dist/src/logic/neighbor-discovery/Handshaker.d.ts +9 -15
  53. package/dist/src/logic/neighbor-discovery/Handshaker.js +68 -44
  54. package/dist/src/logic/neighbor-discovery/Handshaker.js.map +1 -1
  55. package/dist/src/logic/neighbor-discovery/NeighborFinder.d.ts +8 -10
  56. package/dist/src/logic/neighbor-discovery/NeighborFinder.js +12 -2
  57. package/dist/src/logic/neighbor-discovery/NeighborFinder.js.map +1 -1
  58. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.d.ts +7 -10
  59. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js +11 -9
  60. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js.map +1 -1
  61. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.d.ts +8 -4
  62. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js +33 -24
  63. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js.map +1 -1
  64. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.d.ts +5 -4
  65. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js +4 -5
  66. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js.map +1 -1
  67. package/dist/src/logic/node-info/NodeInfoClient.d.ts +9 -0
  68. package/dist/src/logic/node-info/NodeInfoClient.js +21 -0
  69. package/dist/src/logic/node-info/NodeInfoClient.js.map +1 -0
  70. package/dist/src/logic/node-info/NodeInfoRpcLocal.d.ts +12 -0
  71. package/dist/src/logic/node-info/NodeInfoRpcLocal.js +22 -0
  72. package/dist/src/logic/node-info/NodeInfoRpcLocal.js.map +1 -0
  73. package/dist/src/logic/node-info/NodeInfoRpcRemote.d.ts +6 -0
  74. package/dist/src/logic/node-info/NodeInfoRpcRemote.js +11 -0
  75. package/dist/src/logic/node-info/NodeInfoRpcRemote.js.map +1 -0
  76. package/dist/src/logic/propagation/FifoMapWithTTL.js +7 -3
  77. package/dist/src/logic/propagation/FifoMapWithTTL.js.map +1 -1
  78. package/dist/src/logic/propagation/Propagation.d.ts +4 -4
  79. package/dist/src/logic/propagation/Propagation.js +4 -0
  80. package/dist/src/logic/propagation/Propagation.js.map +1 -1
  81. package/dist/src/logic/propagation/PropagationTaskStore.d.ts +2 -2
  82. package/dist/src/logic/propagation/PropagationTaskStore.js +1 -0
  83. package/dist/src/logic/propagation/PropagationTaskStore.js.map +1 -1
  84. package/dist/src/logic/protocol-integration/stream-message/GroupKeyRequestTranslator.js +1 -1
  85. package/dist/src/logic/protocol-integration/stream-message/GroupKeyRequestTranslator.js.map +1 -1
  86. package/dist/src/logic/protocol-integration/stream-message/GroupKeyResponseTranslator.js +1 -1
  87. package/dist/src/logic/protocol-integration/stream-message/GroupKeyResponseTranslator.js.map +1 -1
  88. package/dist/src/logic/protocol-integration/stream-message/StreamMessageTranslator.js +87 -53
  89. package/dist/src/logic/protocol-integration/stream-message/StreamMessageTranslator.js.map +1 -1
  90. package/dist/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.d.ts +7 -0
  91. package/dist/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.js +32 -0
  92. package/dist/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.js.map +1 -0
  93. package/dist/src/logic/proxy/ProxyClient.d.ts +8 -6
  94. package/dist/src/logic/proxy/ProxyClient.js +40 -28
  95. package/dist/src/logic/proxy/ProxyClient.js.map +1 -1
  96. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.d.ts +6 -7
  97. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js +8 -8
  98. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js.map +1 -1
  99. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.d.ts +3 -3
  100. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js +1 -1
  101. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js.map +1 -1
  102. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.d.ts +9 -4
  103. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js +21 -6
  104. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js.map +1 -1
  105. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.d.ts +4 -3
  106. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js +13 -3
  107. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js.map +1 -1
  108. package/dist/src/logic/utils.js.map +1 -1
  109. package/dist/src/proto/google/protobuf/any.js +8 -8
  110. package/dist/src/proto/google/protobuf/any.js.map +1 -1
  111. package/dist/src/proto/google/protobuf/empty.js +2 -4
  112. package/dist/src/proto/google/protobuf/empty.js.map +1 -1
  113. package/dist/src/proto/google/protobuf/timestamp.js +10 -10
  114. package/dist/src/proto/google/protobuf/timestamp.js.map +1 -1
  115. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +36 -49
  116. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +54 -52
  117. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
  118. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +184 -234
  119. package/dist/src/proto/packages/dht/protos/DhtRpc.js +118 -168
  120. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  121. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +20 -29
  122. package/dist/src/proto/packages/proto-rpc/protos/ProtoRpc.js +1 -1
  123. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.d.ts +42 -5
  124. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js +52 -19
  125. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js.map +1 -1
  126. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.d.ts +193 -28
  127. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js +129 -20
  128. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js.map +1 -1
  129. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.server.d.ts +20 -3
  130. package/dist/test/benchmark/first-message.js +14 -15
  131. package/dist/test/benchmark/first-message.js.map +1 -1
  132. package/dist/test/utils/utils.d.ts +2 -4
  133. package/dist/test/utils/utils.js +20 -19
  134. package/dist/test/utils/utils.js.map +1 -1
  135. package/jest.config.js +3 -38
  136. package/package.json +11 -11
  137. package/protos/NetworkRpc.proto +57 -12
  138. package/src/NetworkNode.ts +13 -6
  139. package/src/NetworkStack.ts +94 -16
  140. package/src/exports.ts +11 -3
  141. package/src/logic/DeliveryRpcLocal.ts +7 -8
  142. package/src/logic/DeliveryRpcRemote.ts +7 -5
  143. package/src/logic/DuplicateMessageDetector.ts +7 -7
  144. package/src/logic/EntryPointDiscovery.ts +26 -19
  145. package/src/logic/Layer0Node.ts +6 -4
  146. package/src/logic/Layer1Node.ts +21 -6
  147. package/src/logic/NodeList.ts +25 -26
  148. package/src/logic/RandomGraphNode.ts +148 -78
  149. package/src/logic/StreamrNode.ts +58 -41
  150. package/src/logic/createRandomGraphNode.ts +37 -25
  151. package/src/logic/formStreamPartDeliveryServiceId.ts +2 -1
  152. package/src/logic/inspect/InspectSession.ts +8 -4
  153. package/src/logic/inspect/Inspector.ts +34 -24
  154. package/src/logic/neighbor-discovery/HandshakeRpcLocal.ts +72 -38
  155. package/src/logic/neighbor-discovery/HandshakeRpcRemote.ts +32 -20
  156. package/src/logic/neighbor-discovery/Handshaker.ts +90 -75
  157. package/src/logic/neighbor-discovery/NeighborFinder.ts +18 -13
  158. package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +19 -20
  159. package/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.ts +43 -33
  160. package/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.ts +6 -6
  161. package/src/logic/node-info/NodeInfoClient.ts +23 -0
  162. package/src/logic/node-info/NodeInfoRpcLocal.ts +28 -0
  163. package/src/logic/node-info/NodeInfoRpcRemote.ts +11 -0
  164. package/src/logic/propagation/Propagation.ts +7 -6
  165. package/src/logic/propagation/PropagationTaskStore.ts +2 -2
  166. package/src/logic/protocol-integration/stream-message/GroupKeyRequestTranslator.ts +1 -1
  167. package/src/logic/protocol-integration/stream-message/GroupKeyResponseTranslator.ts +1 -2
  168. package/src/logic/protocol-integration/stream-message/StreamMessageTranslator.ts +95 -69
  169. package/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.ts +37 -0
  170. package/src/logic/proxy/ProxyClient.ts +60 -40
  171. package/src/logic/proxy/ProxyConnectionRpcLocal.ts +15 -19
  172. package/src/logic/proxy/ProxyConnectionRpcRemote.ts +3 -3
  173. package/src/logic/temporary-connection/TemporaryConnectionRpcLocal.ts +30 -10
  174. package/src/logic/temporary-connection/TemporaryConnectionRpcRemote.ts +14 -4
  175. package/src/proto/google/protobuf/any.ts +4 -4
  176. package/src/proto/google/protobuf/empty.ts +2 -4
  177. package/src/proto/google/protobuf/timestamp.ts +4 -4
  178. package/src/proto/packages/dht/protos/DhtRpc.client.ts +50 -66
  179. package/src/proto/packages/dht/protos/DhtRpc.server.ts +21 -30
  180. package/src/proto/packages/dht/protos/DhtRpc.ts +242 -316
  181. package/src/proto/packages/proto-rpc/protos/ProtoRpc.ts +1 -1
  182. package/src/proto/packages/trackerless-network/protos/NetworkRpc.client.ts +49 -7
  183. package/src/proto/packages/trackerless-network/protos/NetworkRpc.server.ts +21 -4
  184. package/src/proto/packages/trackerless-network/protos/NetworkRpc.ts +251 -44
  185. package/test/benchmark/StreamPartIdDataKeyDistribution.test.ts +60 -0
  186. package/test/benchmark/first-message.ts +38 -17
  187. package/test/end-to-end/inspect.test.ts +16 -4
  188. package/test/end-to-end/proxy-and-full-node.test.ts +26 -13
  189. package/test/end-to-end/proxy-connections.test.ts +23 -11
  190. package/test/end-to-end/proxy-key-exchange.test.ts +25 -15
  191. package/test/end-to-end/random-graph-with-real-connections.test.ts +35 -32
  192. package/test/end-to-end/webrtc-full-node-network.test.ts +11 -12
  193. package/test/end-to-end/websocket-full-node-network.test.ts +12 -12
  194. package/test/integration/DeliveryRpcRemote.test.ts +6 -9
  195. package/test/integration/HandshakeRpcRemote.test.ts +6 -8
  196. package/test/integration/Handshakes.test.ts +29 -27
  197. package/test/integration/Inspect.test.ts +0 -2
  198. package/test/integration/NeighborUpdateRpcRemote.test.ts +6 -7
  199. package/test/integration/NetworkNode.test.ts +27 -12
  200. package/test/integration/NetworkRpc.test.ts +3 -5
  201. package/test/integration/NetworkStack.test.ts +2 -2
  202. package/test/integration/NodeInfoRpc.test.ts +104 -0
  203. package/test/integration/Propagation.test.ts +3 -3
  204. package/test/integration/RandomGraphNode-Layer1Node-Latencies.test.ts +24 -25
  205. package/test/integration/RandomGraphNode-Layer1Node.test.ts +26 -24
  206. package/test/integration/StreamrNode.test.ts +4 -16
  207. package/test/integration/joining-streams-on-offline-peers.test.ts +7 -31
  208. package/test/integration/stream-without-default-entrypoints.test.ts +22 -23
  209. package/test/integration/streamEntryPointReplacing.test.ts +94 -0
  210. package/test/unit/DeliveryRpcLocal.test.ts +2 -1
  211. package/test/unit/EntrypointDiscovery.test.ts +11 -8
  212. package/test/unit/GroupKeyResponseTranslator.test.ts +1 -1
  213. package/test/unit/HandshakeRpcLocal.test.ts +80 -28
  214. package/test/unit/Handshaker.test.ts +14 -9
  215. package/test/unit/InspectSession.test.ts +5 -6
  216. package/test/unit/Inspector.test.ts +3 -4
  217. package/test/unit/NeighborFinder.test.ts +12 -9
  218. package/test/unit/NeighborUpdateRpcLocal.test.ts +139 -0
  219. package/test/unit/NodeList.test.ts +77 -80
  220. package/test/unit/Propagation.test.ts +21 -16
  221. package/test/unit/ProxyConnectionRpcRemote.test.ts +18 -12
  222. package/test/unit/RandomGraphNode.test.ts +23 -20
  223. package/test/unit/StreamMessageTranslator.test.ts +10 -8
  224. package/test/unit/StreamPartIDDataKey.test.ts +12 -0
  225. package/test/unit/StreamrNode.test.ts +2 -0
  226. package/test/unit/TemporaryConnectionRpcLocal.test.ts +38 -0
  227. package/test/unit/oldStreamMessageBinaryUtils.test.ts +39 -0
  228. package/test/utils/mock/MockHandshaker.ts +6 -5
  229. package/test/utils/mock/MockLayer0Node.ts +7 -2
  230. package/test/utils/mock/MockLayer1Node.ts +5 -2
  231. package/test/utils/mock/MockNeighborFinder.ts +3 -2
  232. package/test/utils/mock/MockNeighborUpdateManager.ts +3 -2
  233. package/test/utils/mock/Transport.ts +1 -1
  234. package/test/utils/utils.ts +40 -25
  235. package/tsconfig.jest.json +5 -4
  236. package/tsconfig.node.json +2 -2
  237. package/dist/src/identifiers.d.ts +0 -4
  238. package/dist/src/identifiers.js +0 -9
  239. package/dist/src/identifiers.js.map +0 -1
  240. package/src/identifiers.ts +0 -8
  241. package/test/unit/GroupKeyRequestTranslator.test.ts +0 -36
@@ -3,12 +3,12 @@ import { randomEthereumAddress } from '@streamr/test-utils'
3
3
  import { waitForCondition } from '@streamr/utils'
4
4
  import { range } from 'lodash'
5
5
  import { NetworkStack } from '../../src/NetworkStack'
6
- import { getNodeIdFromPeerDescriptor } from '../../src/identifiers'
7
6
  import { createMockPeerDescriptor, createStreamMessage } from '../utils/utils'
7
+ import { getNodeIdFromPeerDescriptor } from '@streamr/dht'
8
8
 
9
9
  describe('Full node network with WebSocket connections only', () => {
10
10
 
11
- const NUM_OF_NODES = 48
11
+ const NUM_OF_NODES = 32
12
12
  const epPeerDescriptor = createMockPeerDescriptor({
13
13
  websocket: { host: '127.0.0.1', port: 15555, tls: false }
14
14
  })
@@ -30,8 +30,8 @@ describe('Full node network with WebSocket connections only', () => {
30
30
  }
31
31
  })
32
32
  await entryPoint.start()
33
- entryPoint.getStreamrNode()!.setStreamPartEntryPoints(streamPartId, [epPeerDescriptor])
34
- entryPoint.getStreamrNode()!.joinStreamPart(streamPartId)
33
+ entryPoint.getStreamrNode().setStreamPartEntryPoints(streamPartId, [epPeerDescriptor])
34
+ entryPoint.getStreamrNode().joinStreamPart(streamPartId)
35
35
 
36
36
  await Promise.all(range(NUM_OF_NODES).map(async (i) => {
37
37
  const node = new NetworkStack({
@@ -60,16 +60,16 @@ describe('Full node network with WebSocket connections only', () => {
60
60
  it('happy path', async () => {
61
61
  await Promise.all(nodes.map((node) =>
62
62
  waitForCondition(() => {
63
- return node.getStreamrNode()!.getNeighbors(streamPartId).length >= 4
63
+ return node.getStreamrNode().getNeighbors(streamPartId).length >= 4
64
64
  }
65
- , 120000)
65
+ , 30000)
66
66
  ))
67
- let numOfMessagesReceived = 0
67
+ let receivedMessageCount = 0
68
68
  const successIds: string[] = []
69
69
  nodes.forEach((node) => {
70
- node.getStreamrNode()!.on('newMessage', () => {
71
- successIds.push(getNodeIdFromPeerDescriptor(node.getStreamrNode()!.getPeerDescriptor()))
72
- numOfMessagesReceived += 1
70
+ node.getStreamrNode().on('newMessage', () => {
71
+ successIds.push(getNodeIdFromPeerDescriptor(node.getStreamrNode().getPeerDescriptor()))
72
+ receivedMessageCount += 1
73
73
  })
74
74
  })
75
75
 
@@ -78,8 +78,8 @@ describe('Full node network with WebSocket connections only', () => {
78
78
  streamPartId,
79
79
  randomEthereumAddress()
80
80
  )
81
- entryPoint.getStreamrNode()!.broadcast(msg)
82
- await waitForCondition(() => numOfMessagesReceived === NUM_OF_NODES)
81
+ entryPoint.getStreamrNode().broadcast(msg)
82
+ await waitForCondition(() => receivedMessageCount === NUM_OF_NODES)
83
83
  }, 220000)
84
84
 
85
85
  })
@@ -13,24 +13,21 @@ import {
13
13
  } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
14
14
  import { Empty } from '../../src/proto/google/protobuf/empty'
15
15
  import { waitForCondition } from '@streamr/utils'
16
- import { toProtoRpcClient } from '@streamr/proto-rpc'
17
16
  import { createStreamMessage } from '../utils/utils'
18
17
  import { StreamPartIDUtils } from '@streamr/protocol'
19
18
  import { randomEthereumAddress } from '@streamr/test-utils'
20
19
 
21
- const STREAM_PART_ID = StreamPartIDUtils.parse('test-stream#0')
22
-
23
20
  describe('DeliveryRpcRemote', () => {
24
21
  let mockServerRpc: ListeningRpcCommunicator
25
22
  let clientRpc: ListeningRpcCommunicator
26
23
  let rpcRemote: DeliveryRpcRemote
27
24
 
28
25
  const clientNode: PeerDescriptor = {
29
- kademliaId: new Uint8Array([1, 1, 1]),
26
+ nodeId: new Uint8Array([1, 1, 1]),
30
27
  type: NodeType.NODEJS
31
28
  }
32
29
  const serverNode: PeerDescriptor = {
33
- kademliaId: new Uint8Array([2, 2, 2]),
30
+ nodeId: new Uint8Array([2, 2, 2]),
34
31
  type: NodeType.NODEJS
35
32
  }
36
33
 
@@ -72,8 +69,8 @@ describe('DeliveryRpcRemote', () => {
72
69
  rpcRemote = new DeliveryRpcRemote(
73
70
  clientNode,
74
71
  serverNode,
75
- STREAM_PART_ID,
76
- toProtoRpcClient(new DeliveryRpcClient(clientRpc.getRpcClientTransport()))
72
+ clientRpc,
73
+ DeliveryRpcClient
77
74
  )
78
75
  })
79
76
 
@@ -88,7 +85,7 @@ describe('DeliveryRpcRemote', () => {
88
85
  it('sendStreamMessage', async () => {
89
86
  const msg = createStreamMessage(
90
87
  JSON.stringify({ hello: 'WORLD' }),
91
- STREAM_PART_ID,
88
+ StreamPartIDUtils.parse('test-stream#0'),
92
89
  randomEthereumAddress()
93
90
  )
94
91
 
@@ -97,7 +94,7 @@ describe('DeliveryRpcRemote', () => {
97
94
  })
98
95
 
99
96
  it('leaveNotice', async () => {
100
- rpcRemote.leaveStreamPartNotice()
97
+ rpcRemote.leaveStreamPartNotice(StreamPartIDUtils.parse('test#0'), false)
101
98
  await waitForCondition(() => recvCounter === 1)
102
99
  })
103
100
 
@@ -9,11 +9,11 @@ import {
9
9
  Simulator,
10
10
  SimulatorTransport
11
11
  } from '@streamr/dht'
12
- import { toProtoRpcClient } from '@streamr/proto-rpc'
13
12
  import {
14
13
  HandshakeRpcClient,
15
14
  } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc.client'
16
15
  import { HandshakeRpcRemote } from '../../src/logic/neighbor-discovery/HandshakeRpcRemote'
16
+ import { StreamPartIDUtils } from '@streamr/protocol'
17
17
 
18
18
  describe('HandshakeRpcRemote', () => {
19
19
  let mockServerRpc: ListeningRpcCommunicator
@@ -21,11 +21,11 @@ describe('HandshakeRpcRemote', () => {
21
21
  let rpcRemote: HandshakeRpcRemote
22
22
 
23
23
  const clientNode: PeerDescriptor = {
24
- kademliaId: new Uint8Array([1, 1, 1]),
24
+ nodeId: new Uint8Array([1, 1, 1]),
25
25
  type: NodeType.NODEJS
26
26
  }
27
27
  const serverNode: PeerDescriptor = {
28
- kademliaId: new Uint8Array([2, 2, 2]),
28
+ nodeId: new Uint8Array([2, 2, 2]),
29
29
  type: NodeType.NODEJS
30
30
  }
31
31
 
@@ -34,7 +34,6 @@ describe('HandshakeRpcRemote', () => {
34
34
  let mockConnectionManager2: SimulatorTransport
35
35
 
36
36
  beforeEach(async () => {
37
- Simulator.useFakeTimers()
38
37
  simulator = new Simulator()
39
38
  mockConnectionManager1 = new SimulatorTransport(serverNode, simulator)
40
39
  await mockConnectionManager1.start()
@@ -60,8 +59,8 @@ describe('HandshakeRpcRemote', () => {
60
59
  rpcRemote = new HandshakeRpcRemote(
61
60
  clientNode,
62
61
  serverNode,
63
- 'test-stream-part',
64
- toProtoRpcClient(new HandshakeRpcClient(clientRpc.getRpcClientTransport()))
62
+ clientRpc,
63
+ HandshakeRpcClient
65
64
  )
66
65
  })
67
66
 
@@ -71,11 +70,10 @@ describe('HandshakeRpcRemote', () => {
71
70
  await mockConnectionManager1.stop()
72
71
  await mockConnectionManager2.stop()
73
72
  simulator.stop()
74
- Simulator.useFakeTimers(false)
75
73
  })
76
74
 
77
75
  it('handshake', async () => {
78
- const result = await rpcRemote.handshake([])
76
+ const result = await rpcRemote.handshake(StreamPartIDUtils.parse('test#0'), [])
79
77
  expect(result.accepted).toEqual(true)
80
78
  })
81
79
  })
@@ -4,38 +4,38 @@ import {
4
4
  PeerDescriptor,
5
5
  ListeningRpcCommunicator,
6
6
  Simulator,
7
- SimulatorTransport
7
+ SimulatorTransport,
8
+ getNodeIdFromPeerDescriptor
8
9
  } from '@streamr/dht'
9
- import { toProtoRpcClient } from '@streamr/proto-rpc'
10
10
  import {
11
11
  HandshakeRpcClient
12
12
  } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc.client'
13
13
  import { NodeList } from '../../src/logic/NodeList'
14
- import { mockConnectionLocker } from '../utils/utils'
15
14
  import { StreamPartHandshakeRequest, StreamPartHandshakeResponse } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
16
15
  import { HandshakeRpcRemote } from '../../src/logic/neighbor-discovery/HandshakeRpcRemote'
17
- import { getNodeIdFromPeerDescriptor } from '../../src/identifiers'
18
16
  import { StreamPartIDUtils } from '@streamr/protocol'
19
17
 
20
18
  describe('Handshakes', () => {
21
19
 
22
20
  const peerDescriptor1: PeerDescriptor = {
23
- kademliaId: new Uint8Array([1, 1, 1]),
21
+ nodeId: new Uint8Array([1, 1, 1]),
24
22
  type: NodeType.NODEJS
25
23
  }
26
24
  const peerDescriptor2: PeerDescriptor = {
27
- kademliaId: new Uint8Array([2, 1, 1]),
25
+ nodeId: new Uint8Array([2, 1, 1]),
28
26
  type: NodeType.NODEJS
29
27
  }
30
28
  const peerDescriptor3: PeerDescriptor = {
31
- kademliaId: new Uint8Array([3, 1, 1]),
29
+ nodeId: new Uint8Array([3, 1, 1]),
32
30
  type: NodeType.NODEJS
33
31
  }
34
32
  let rpcCommunicator1: ListeningRpcCommunicator
35
33
  let rpcCommunicator2: ListeningRpcCommunicator
36
34
  let rpcCommunicator3: ListeningRpcCommunicator
35
+ let neighbors: NodeList
36
+ let leftNodeView: NodeList
37
+ let rightNodeView: NodeList
37
38
  let nodeView: NodeList
38
- let targetNeighbors: NodeList
39
39
  let handshaker: Handshaker
40
40
  const streamPartId = StreamPartIDUtils.parse('stream#0')
41
41
 
@@ -70,7 +70,6 @@ describe('Handshakes', () => {
70
70
  let simulatorTransport3: SimulatorTransport
71
71
 
72
72
  beforeEach(async () => {
73
- Simulator.useFakeTimers()
74
73
  simulator = new Simulator()
75
74
  simulatorTransport1 = new SimulatorTransport(peerDescriptor1, simulator)
76
75
  await simulatorTransport1.start()
@@ -84,17 +83,21 @@ describe('Handshakes', () => {
84
83
  rpcCommunicator3 = new ListeningRpcCommunicator(streamPartId, simulatorTransport3)
85
84
 
86
85
  const handshakerNodeId = getNodeIdFromPeerDescriptor(peerDescriptor2)
86
+ leftNodeView = new NodeList(handshakerNodeId, 10)
87
+ rightNodeView = new NodeList(handshakerNodeId, 10)
87
88
  nodeView = new NodeList(handshakerNodeId, 10)
88
- targetNeighbors = new NodeList(handshakerNodeId, 4)
89
+ neighbors = new NodeList(handshakerNodeId, 4)
89
90
  handshaker = new Handshaker({
90
91
  localPeerDescriptor: peerDescriptor2,
91
92
  streamPartId,
92
93
  nearbyNodeView: nodeView,
93
94
  randomNodeView: nodeView,
94
- targetNeighbors,
95
- connectionLocker: mockConnectionLocker,
95
+ leftNodeView,
96
+ rightNodeView,
97
+ neighbors,
96
98
  rpcCommunicator: rpcCommunicator2,
97
- maxNeighborCount: 4
99
+ maxNeighborCount: 4,
100
+ ongoingHandshakes: new Set()
98
101
  })
99
102
 
100
103
  })
@@ -107,7 +110,6 @@ describe('Handshakes', () => {
107
110
  await simulatorTransport2.stop()
108
111
  await simulatorTransport3.stop()
109
112
  simulator.stop()
110
- Simulator.useFakeTimers(false)
111
113
  })
112
114
 
113
115
  it('Two nodes can handshake', async () => {
@@ -117,12 +119,12 @@ describe('Handshakes', () => {
117
119
  new HandshakeRpcRemote(
118
120
  peerDescriptor2,
119
121
  peerDescriptor1,
120
- streamPartId,
121
- toProtoRpcClient(new HandshakeRpcClient(rpcCommunicator2.getRpcClientTransport()))
122
+ rpcCommunicator2,
123
+ HandshakeRpcClient
122
124
  )
123
125
  )
124
126
  expect(res).toEqual(true)
125
- expect(targetNeighbors.hasNode(peerDescriptor1)).toEqual(true)
127
+ expect(neighbors.has(getNodeIdFromPeerDescriptor(peerDescriptor1))).toEqual(true)
126
128
  })
127
129
 
128
130
  it('Handshake accepted', async () => {
@@ -132,12 +134,12 @@ describe('Handshakes', () => {
132
134
  new HandshakeRpcRemote(
133
135
  peerDescriptor2,
134
136
  peerDescriptor1,
135
- streamPartId,
136
- toProtoRpcClient(new HandshakeRpcClient(rpcCommunicator2.getRpcClientTransport()))
137
+ rpcCommunicator2,
138
+ HandshakeRpcClient
137
139
  )
138
140
  )
139
141
  expect(res).toEqual(true)
140
- expect(targetNeighbors.hasNode(peerDescriptor1)).toEqual(true)
142
+ expect(neighbors.has(getNodeIdFromPeerDescriptor(peerDescriptor1))).toEqual(true)
141
143
  })
142
144
 
143
145
  it('Handshake rejected', async () => {
@@ -147,12 +149,12 @@ describe('Handshakes', () => {
147
149
  new HandshakeRpcRemote(
148
150
  peerDescriptor2,
149
151
  peerDescriptor1,
150
- streamPartId,
151
- toProtoRpcClient(new HandshakeRpcClient(rpcCommunicator2.getRpcClientTransport()))
152
+ rpcCommunicator2,
153
+ HandshakeRpcClient
152
154
  )
153
155
  )
154
156
  expect(res).toEqual(false)
155
- expect(targetNeighbors.hasNode(peerDescriptor1)).toEqual(false)
157
+ expect(neighbors.has(getNodeIdFromPeerDescriptor(peerDescriptor1))).toEqual(false)
156
158
  })
157
159
 
158
160
  it('Handshake with Interleaving', async () => {
@@ -163,12 +165,12 @@ describe('Handshakes', () => {
163
165
  new HandshakeRpcRemote(
164
166
  peerDescriptor2,
165
167
  peerDescriptor1,
166
- streamPartId,
167
- toProtoRpcClient(new HandshakeRpcClient(rpcCommunicator2.getRpcClientTransport()))
168
+ rpcCommunicator2,
169
+ HandshakeRpcClient
168
170
  )
169
171
  )
170
172
  expect(res).toEqual(true)
171
- expect(targetNeighbors.hasNode(peerDescriptor1)).toEqual(true)
172
- expect(targetNeighbors.hasNode(peerDescriptor3)).toEqual(true)
173
+ expect(neighbors.has(getNodeIdFromPeerDescriptor(peerDescriptor1))).toEqual(true)
174
+ expect(neighbors.has(getNodeIdFromPeerDescriptor(peerDescriptor3))).toEqual(true)
173
175
  })
174
176
  })
@@ -38,7 +38,6 @@ describe('inspect', () => {
38
38
  }
39
39
 
40
40
  beforeEach(async () => {
41
- Simulator.useFakeTimers()
42
41
  simulator = new Simulator(LatencyType.REAL)
43
42
 
44
43
  publisherNode = await initiateNode(publisherDescriptor, simulator)
@@ -65,7 +64,6 @@ describe('inspect', () => {
65
64
  inspectorNode.stop(),
66
65
  ...inspectedNodes.map((node) => node.stop())
67
66
  ])
68
- Simulator.useFakeTimers(false)
69
67
  })
70
68
 
71
69
  it('gets successful inspections from all suspects', async () => {
@@ -5,7 +5,6 @@ import {
5
5
  Simulator,
6
6
  SimulatorTransport
7
7
  } from '@streamr/dht'
8
- import { toProtoRpcClient } from '@streamr/proto-rpc'
9
8
  import { NeighborUpdateRpcRemote } from '../../src/logic/neighbor-discovery/NeighborUpdateRpcRemote'
10
9
  import { NeighborUpdate } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
11
10
  import {
@@ -19,11 +18,11 @@ describe('NeighborUpdateRpcRemote', () => {
19
18
  let rpcRemote: NeighborUpdateRpcRemote
20
19
 
21
20
  const clientNode: PeerDescriptor = {
22
- kademliaId: new Uint8Array([1, 1, 1]),
21
+ nodeId: new Uint8Array([1, 1, 1]),
23
22
  type: NodeType.NODEJS
24
23
  }
25
24
  const serverNode: PeerDescriptor = {
26
- kademliaId: new Uint8Array([2, 2, 2]),
25
+ nodeId: new Uint8Array([2, 2, 2]),
27
26
  type: NodeType.NODEJS
28
27
  }
29
28
 
@@ -47,7 +46,7 @@ describe('NeighborUpdateRpcRemote', () => {
47
46
  'neighborUpdate',
48
47
  async (): Promise<NeighborUpdate> => {
49
48
  const node: PeerDescriptor = {
50
- kademliaId: new Uint8Array([4, 2, 4]),
49
+ nodeId: new Uint8Array([4, 2, 4]),
51
50
  type: NodeType.NODEJS
52
51
  }
53
52
  const update: NeighborUpdate = {
@@ -63,8 +62,8 @@ describe('NeighborUpdateRpcRemote', () => {
63
62
  rpcRemote = new NeighborUpdateRpcRemote(
64
63
  clientNode,
65
64
  serverNode,
66
- 'test-stream-part',
67
- toProtoRpcClient(new NeighborUpdateRpcClient(clientRpc.getRpcClientTransport()))
65
+ clientRpc,
66
+ NeighborUpdateRpcClient
68
67
  )
69
68
  })
70
69
 
@@ -77,7 +76,7 @@ describe('NeighborUpdateRpcRemote', () => {
77
76
  })
78
77
 
79
78
  it('updateNeighbors', async () => {
80
- const res = await rpcRemote.updateNeighbors([])
79
+ const res = await rpcRemote.updateNeighbors(StreamPartIDUtils.parse('test#0'), [])
81
80
  expect(res.peerDescriptors.length).toEqual(1)
82
81
  })
83
82
  })
@@ -1,13 +1,16 @@
1
- import { NodeType, PeerDescriptor, Simulator, SimulatorTransport } from '@streamr/dht'
1
+ import { PeerDescriptor, Simulator, SimulatorTransport } from '@streamr/dht'
2
2
  import {
3
+ ContentType,
4
+ EncryptionType,
3
5
  MessageID,
4
- MessageRef,
6
+ MessageRef, SignatureType,
5
7
  StreamMessage,
6
8
  StreamMessageType,
7
9
  StreamPartIDUtils
8
10
  } from '@streamr/protocol'
9
11
  import { EthereumAddress, hexToBinary, utf8ToBinary, waitForCondition } from '@streamr/utils'
10
12
  import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
13
+ import { createMockPeerDescriptor } from '../utils/utils'
11
14
 
12
15
  const STREAM_PART_ID = StreamPartIDUtils.parse('test#0')
13
16
 
@@ -19,18 +22,11 @@ describe('NetworkNode', () => {
19
22
  let node1: NetworkNode
20
23
  let node2: NetworkNode
21
24
 
22
- const pd1: PeerDescriptor = {
23
- kademliaId: new Uint8Array([1, 2, 3]),
24
- type: NodeType.NODEJS
25
- }
25
+ const pd1: PeerDescriptor = createMockPeerDescriptor()
26
26
 
27
- const pd2: PeerDescriptor = {
28
- kademliaId: new Uint8Array([1, 1, 1]),
29
- type: NodeType.NODEJS
30
- }
27
+ const pd2: PeerDescriptor = createMockPeerDescriptor()
31
28
 
32
29
  beforeEach(async () => {
33
- Simulator.useFakeTimers()
34
30
  const simulator = new Simulator()
35
31
  transport1 = new SimulatorTransport(pd1, simulator)
36
32
  await transport1.start()
@@ -63,7 +59,6 @@ describe('NetworkNode', () => {
63
59
  node1.stop(),
64
60
  node2.stop()
65
61
  ])
66
- Simulator.useFakeTimers(false)
67
62
  })
68
63
 
69
64
  it('wait for join + broadcast and subscribe', async () => {
@@ -80,7 +75,10 @@ describe('NetworkNode', () => {
80
75
  content: utf8ToBinary(JSON.stringify({
81
76
  hello: 'world'
82
77
  })),
78
+ contentType: ContentType.JSON,
83
79
  messageType: StreamMessageType.MESSAGE,
80
+ encryptionType: EncryptionType.NONE,
81
+ signatureType: SignatureType.SECP256K1,
84
82
  signature: hexToBinary('0x1234'),
85
83
  })
86
84
 
@@ -95,4 +93,21 @@ describe('NetworkNode', () => {
95
93
  await waitForCondition(() => msgCount === 1)
96
94
  })
97
95
 
96
+ it('fetchNodeInfo', async () => {
97
+ await node1.join(STREAM_PART_ID)
98
+ await node2.join(STREAM_PART_ID)
99
+ const result1 = await node1.fetchNodeInfo(pd2)
100
+ const result2 = await node2.fetchNodeInfo(pd1)
101
+ const result3 = await node1.fetchNodeInfo(node1.getPeerDescriptor())
102
+ expect(result1.streamPartitions.length).toEqual(1)
103
+ expect(result2.streamPartitions.length).toEqual(1)
104
+ expect(result3.streamPartitions.length).toEqual(1)
105
+ expect(result1.controlLayer.connections.length).toEqual(1)
106
+ expect(result2.controlLayer.connections.length).toEqual(1)
107
+ expect(result3.controlLayer.connections.length).toEqual(1)
108
+ expect(result1.controlLayer.neighbors.length).toEqual(1)
109
+ expect(result2.controlLayer.neighbors.length).toEqual(1)
110
+ expect(result3.controlLayer.neighbors.length).toEqual(1)
111
+ })
112
+
98
113
  })
@@ -9,18 +9,17 @@ import { waitForCondition } from '@streamr/utils'
9
9
  import { Empty } from '../../src/proto/google/protobuf/empty'
10
10
  import { createStreamMessage } from '../utils/utils'
11
11
  import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
12
- import { Simulator } from '@streamr/dht'
12
+ import { DhtCallContext } from '@streamr/dht'
13
13
  import { StreamPartIDUtils } from '@streamr/protocol'
14
14
  import { randomEthereumAddress } from '@streamr/test-utils'
15
15
 
16
16
  describe('Network RPC', () => {
17
- let rpcCommunicator1: RpcCommunicator
18
- let rpcCommunicator2: RpcCommunicator
17
+ let rpcCommunicator1: RpcCommunicator<DhtCallContext>
18
+ let rpcCommunicator2: RpcCommunicator<DhtCallContext>
19
19
  let client: ProtoRpcClient<DeliveryRpcClient>
20
20
  let recvCounter = 0
21
21
 
22
22
  beforeEach(() => {
23
- Simulator.useFakeTimers()
24
23
  rpcCommunicator1 = new RpcCommunicator()
25
24
  rpcCommunicator2 = new RpcCommunicator()
26
25
  rpcCommunicator1.on('outgoingMessage', (message: RpcMessage) => {
@@ -40,7 +39,6 @@ describe('Network RPC', () => {
40
39
  afterEach(() => {
41
40
  rpcCommunicator1.stop()
42
41
  rpcCommunicator2.stop()
43
- Simulator.useFakeTimers(false)
44
42
  })
45
43
 
46
44
  it('sends Data', async () => {
@@ -34,9 +34,9 @@ describe('NetworkStack', () => {
34
34
  })
35
35
 
36
36
  await stack1.start()
37
- stack1.getStreamrNode()!.setStreamPartEntryPoints(STREAM_PART_ID, [epDescriptor])
37
+ stack1.getStreamrNode().setStreamPartEntryPoints(STREAM_PART_ID, [epDescriptor])
38
38
  await stack2.start()
39
- stack2.getStreamrNode()!.setStreamPartEntryPoints(STREAM_PART_ID, [epDescriptor])
39
+ stack2.getStreamrNode().setStreamPartEntryPoints(STREAM_PART_ID, [epDescriptor])
40
40
  })
41
41
 
42
42
  afterEach(async () => {
@@ -0,0 +1,104 @@
1
+ import { Simulator, SimulatorTransport, ListeningRpcCommunicator, PeerDescriptor } from '@streamr/dht'
2
+ import { NetworkStack } from '../../src/NetworkStack'
3
+ import { createMockPeerDescriptor } from '../utils/utils'
4
+ import { NodeInfoClient } from '../../src/logic/node-info/NodeInfoClient'
5
+ import { NODE_INFO_RPC_SERVICE_ID } from '../../src/logic/node-info/NodeInfoRpcLocal'
6
+ import { StreamPartIDUtils } from '@streamr/protocol'
7
+ import { waitForCondition } from '@streamr/utils'
8
+
9
+ // TODO add Jest utility so that the normalization is not needed (NET-1254)
10
+ const normalizePeerDescriptor = (peerDescriptor: PeerDescriptor) => {
11
+ return {
12
+ ...peerDescriptor,
13
+ nodeId: new Uint8Array(peerDescriptor.nodeId)
14
+ }
15
+ }
16
+
17
+ describe('NetworkStack NodeInfoRpc', () => {
18
+
19
+ let requesteStack: NetworkStack
20
+ let otherStack: NetworkStack
21
+ let nodeInfoClient: NodeInfoClient
22
+ let requesteeTransport1: SimulatorTransport
23
+ let otherTransport: SimulatorTransport
24
+ let requestorTransport: SimulatorTransport
25
+
26
+ let simulator: Simulator
27
+
28
+ const requesteePeerDescriptor = createMockPeerDescriptor()
29
+ const otherPeerDescriptor = createMockPeerDescriptor()
30
+ const requestorPeerDescriptor = createMockPeerDescriptor()
31
+
32
+ beforeEach(async () => {
33
+ simulator = new Simulator()
34
+ requesteeTransport1 = new SimulatorTransport(requesteePeerDescriptor, simulator)
35
+ otherTransport = new SimulatorTransport(otherPeerDescriptor, simulator)
36
+ requestorTransport = new SimulatorTransport(requestorPeerDescriptor, simulator)
37
+ await requesteeTransport1.start()
38
+ await otherTransport.start()
39
+ await requestorTransport.start()
40
+ requesteStack = new NetworkStack({
41
+ layer0: {
42
+ transport: requesteeTransport1,
43
+ peerDescriptor: requesteePeerDescriptor,
44
+ entryPoints: [requesteePeerDescriptor]
45
+ }
46
+ })
47
+ otherStack = new NetworkStack({
48
+ layer0: {
49
+ transport: otherTransport,
50
+ peerDescriptor: otherPeerDescriptor,
51
+ entryPoints: [requesteePeerDescriptor]
52
+ }
53
+ })
54
+ await requesteStack.start()
55
+ await otherStack.start()
56
+ nodeInfoClient = new NodeInfoClient(requestorPeerDescriptor, new ListeningRpcCommunicator(NODE_INFO_RPC_SERVICE_ID, requestorTransport))
57
+ })
58
+
59
+ afterEach(async () => {
60
+ await requesteStack.stop()
61
+ await otherStack.stop()
62
+ await requesteeTransport1.stop()
63
+ await otherTransport.stop()
64
+ await requestorTransport.stop()
65
+ })
66
+
67
+ it('happy path', async () => {
68
+ const streamPartId1 = StreamPartIDUtils.parse('stream1#0')
69
+ const streamPartId2 = StreamPartIDUtils.parse('stream2#0')
70
+ requesteStack.getStreamrNode().joinStreamPart(streamPartId1)
71
+ otherStack.getStreamrNode().joinStreamPart(streamPartId1)
72
+ requesteStack.getStreamrNode().joinStreamPart(streamPartId2)
73
+ otherStack.getStreamrNode().joinStreamPart(streamPartId2)
74
+ await waitForCondition(() =>
75
+ requesteStack.getStreamrNode().getNeighbors(streamPartId1).length === 1
76
+ && otherStack.getStreamrNode().getNeighbors(streamPartId1).length === 1
77
+ && requesteStack.getStreamrNode().getNeighbors(streamPartId2).length === 1
78
+ && otherStack.getStreamrNode().getNeighbors(streamPartId2).length === 1
79
+ )
80
+ const result = await nodeInfoClient.getInfo(requesteePeerDescriptor)
81
+ expect(result).toMatchObject({
82
+ peerDescriptor: normalizePeerDescriptor(requesteePeerDescriptor),
83
+ controlLayer: {
84
+ neighbors: [normalizePeerDescriptor(otherPeerDescriptor)],
85
+ connections: [normalizePeerDescriptor(otherPeerDescriptor), normalizePeerDescriptor(requestorPeerDescriptor)]
86
+ },
87
+ streamPartitions: [
88
+ {
89
+ id: streamPartId1,
90
+ controlLayerNeighbors: [normalizePeerDescriptor(otherPeerDescriptor)],
91
+ deliveryLayerNeighbors: [normalizePeerDescriptor(otherPeerDescriptor)]
92
+ },
93
+ {
94
+ id: streamPartId2,
95
+ controlLayerNeighbors: [normalizePeerDescriptor(otherPeerDescriptor)],
96
+ deliveryLayerNeighbors: [normalizePeerDescriptor(otherPeerDescriptor)]
97
+ }
98
+ ],
99
+ version: expect.any(String)
100
+ })
101
+ expect(result.streamPartitions.length).toEqual(2)
102
+ })
103
+
104
+ })
@@ -16,8 +16,8 @@ describe('Propagation', () => {
16
16
  const NUM_OF_NODES = 256
17
17
 
18
18
  beforeEach(async () => {
19
- totalReceived = 0
20
19
  const simulator = new Simulator()
20
+ totalReceived = 0
21
21
  layer1Nodes = []
22
22
  randomGraphNodes = []
23
23
  const [entryPoint, node1] = await createMockRandomGraphNodeAndDhtNode(entryPointDescriptor, entryPointDescriptor, STREAM_PART_ID, simulator)
@@ -54,11 +54,11 @@ describe('Propagation', () => {
54
54
 
55
55
  it('All nodes receive messages', async () => {
56
56
  await waitForCondition(
57
- () => randomGraphNodes.every((node) => node.getTargetNeighborIds().length >= 3), 30000
57
+ () => randomGraphNodes.every((node) => node.getNeighbors().length >= 3), 30000
58
58
  )
59
59
  await waitForCondition(() => {
60
60
  const avg = randomGraphNodes.reduce((acc, curr) => {
61
- return acc + curr.getTargetNeighborIds().length
61
+ return acc + curr.getNeighbors().length
62
62
  }, 0) / randomGraphNodes.length
63
63
  return avg >= 4
64
64
  }, 20000)