@streamr/trackerless-network 100.0.0-pretestnet.6 → 100.0.0-rc.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 (241) hide show
  1. package/README.md +57 -0
  2. package/dist/package.json +12 -12
  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 +19 -16
  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 +85 -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 +12 -12
  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 +26 -27
  148. package/src/logic/RandomGraphNode.ts +158 -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
@@ -1,12 +1,28 @@
1
1
  /* eslint-disable no-console */
2
2
 
3
- import { DhtNode, LatencyType, Simulator, getRandomRegion } from '@streamr/dht'
4
- import { MessageID, StreamMessage, StreamMessageType, StreamPartID, StreamPartIDUtils, toStreamID, toStreamPartID } from '@streamr/protocol'
3
+ import {
4
+ DhtNode,
5
+ getNodeIdFromPeerDescriptor,
6
+ getRandomRegion,
7
+ LatencyType,
8
+ PeerDescriptor,
9
+ Simulator
10
+ } from '@streamr/dht'
11
+ import {
12
+ ContentType,
13
+ EncryptionType,
14
+ MessageID,
15
+ SignatureType,
16
+ StreamMessage,
17
+ StreamMessageType,
18
+ StreamPartID,
19
+ StreamPartIDUtils,
20
+ toStreamID,
21
+ toStreamPartID
22
+ } from '@streamr/protocol'
5
23
  import { hexToBinary, utf8ToBinary, waitForEvent3 } from '@streamr/utils'
6
24
  import fs from 'fs'
7
- import { PeerDescriptor } from '@streamr/dht'
8
25
  import { NetworkNode } from '../../src/NetworkNode'
9
- import { getNodeIdFromPeerDescriptor } from '../../src/identifiers'
10
26
  import { streamPartIdToDataKey } from '../../src/logic/EntryPointDiscovery'
11
27
  import { createMockPeerDescriptor, createNetworkNodeWithSimulator } from '../utils/utils'
12
28
  import { Layer1Node } from '../../src/logic/Layer1Node'
@@ -31,7 +47,7 @@ const prepareLayer0 = async () => {
31
47
  region: getRandomRegion()
32
48
  })
33
49
  layer0Ep = peerDescriptor
34
- const entryPoint = createNetworkNodeWithSimulator(peerDescriptor, simulator, [peerDescriptor])
50
+ const entryPoint = await createNetworkNodeWithSimulator(peerDescriptor, simulator, [peerDescriptor])
35
51
  await entryPoint.start()
36
52
  nodes.push(entryPoint)
37
53
 
@@ -44,7 +60,7 @@ const prepareStream = async (streamId: string) => {
44
60
  region: getRandomRegion()
45
61
  })
46
62
  const streamPartId = toStreamPartID(toStreamID(streamId), 0)
47
- const streamPublisher = createNetworkNodeWithSimulator(peerDescriptor, simulator, [layer0Ep])
63
+ const streamPublisher = await createNetworkNodeWithSimulator(peerDescriptor, simulator, [layer0Ep])
48
64
  await streamPublisher.start()
49
65
  streamPublisher.join(streamPartId)
50
66
  nodes.push(streamPublisher)
@@ -52,7 +68,7 @@ const prepareStream = async (streamId: string) => {
52
68
  }
53
69
 
54
70
  const shutdownNetwork = async () => {
55
- publishIntervals.map((interval) => clearInterval(interval))
71
+ publishIntervals.forEach((interval) => clearInterval(interval))
56
72
  await Promise.all([
57
73
  ...nodes.map((node) => node.stop())
58
74
  ])
@@ -76,21 +92,28 @@ const measureJoiningTime = async () => {
76
92
  0,
77
93
  i,
78
94
  Math.floor(Math.random() * 20000),
79
- 'node' as any,
95
+ '2222' as any,
80
96
  'msgChainId'
81
97
  ),
82
- prevMsgRef: null,
83
98
  content: utf8ToBinary(JSON.stringify({
84
99
  hello: 'world'
85
100
  })),
86
101
  messageType: StreamMessageType.MESSAGE,
102
+ contentType: ContentType.JSON,
103
+ encryptionType: EncryptionType.NONE,
87
104
  signature: hexToBinary('0x1234'),
105
+ signatureType: SignatureType.SECP256K1,
106
+
88
107
  })
89
108
  streamParts.get(stream)!.broadcast(streamMessage)
90
109
  }, 1000)
91
110
  // get random node from network to use as entrypoint
92
111
  const randomNode = nodes[Math.floor(Math.random() * nodes.length)]
93
- const streamSubscriber = createNetworkNodeWithSimulator(peerDescriptor, simulator, [randomNode.stack.getLayer0Node().getLocalPeerDescriptor()])
112
+ const streamSubscriber = await createNetworkNodeWithSimulator(
113
+ peerDescriptor,
114
+ simulator,
115
+ [randomNode.stack.getLayer0Node().getLocalPeerDescriptor()]
116
+ )
94
117
  currentNode = streamSubscriber
95
118
  const start = performance.now()
96
119
  await streamSubscriber.start()
@@ -109,7 +132,6 @@ const measureJoiningTime = async () => {
109
132
  }
110
133
 
111
134
  const run = async () => {
112
- Simulator.useFakeTimers()
113
135
  await prepareLayer0()
114
136
  for (let i = 0; i < 20; i++) {
115
137
  await prepareStream(`stream-${i}`)
@@ -124,7 +146,6 @@ const run = async () => {
124
146
  }
125
147
  fs.closeSync(logFile)
126
148
  await shutdownNetwork()
127
- Simulator.useFakeTimers(false)
128
149
  }
129
150
 
130
151
  // eslint-disable-next-line promise/catch-or-return, promise/always-return
@@ -134,14 +155,14 @@ run().then(() => {
134
155
  console.error(err)
135
156
  const streamrNode = currentNode.stack.getStreamrNode()
136
157
  const streamParts = streamrNode.getStreamParts()
137
- const foundData = nodes[0].stack.getLayer0Node().getDataFromDht(streamPartIdToDataKey(streamParts[0]))
158
+ const foundData = nodes[0].stack.getLayer0Node().fetchDataFromDht(streamPartIdToDataKey(streamParts[0]))
138
159
  console.log(foundData)
139
160
  const layer0Node = currentNode.stack.getLayer0Node() as DhtNode
140
- console.log(layer0Node.getKBucketPeers().length)
141
- console.log(layer0Node.getNumberOfConnections())
161
+ console.log(layer0Node.getNeighbors().length)
162
+ console.log(layer0Node.getConnectionCount())
142
163
  const streamPartDelivery = streamrNode.getStreamPartDelivery(streamParts[0])! as { layer1Node: Layer1Node, node: RandomGraphNode }
143
- console.log(streamPartDelivery.layer1Node.getKBucketPeers())
144
- console.log(streamPartDelivery.node.getTargetNeighborIds())
164
+ console.log(streamPartDelivery.layer1Node.getNeighbors())
165
+ console.log(streamPartDelivery.node.getNeighbors())
145
166
  console.log(nodes[nodes.length - 1])
146
167
  if (publishInterval) {
147
168
  clearInterval(publishInterval)
@@ -1,4 +1,13 @@
1
- import { MessageID, MessageRef, StreamMessage, StreamMessageType, StreamPartIDUtils } from '@streamr/protocol'
1
+ import {
2
+ ContentType,
3
+ EncryptionType,
4
+ MessageID,
5
+ MessageRef,
6
+ SignatureType,
7
+ StreamMessage,
8
+ StreamMessageType,
9
+ StreamPartIDUtils
10
+ } from '@streamr/protocol'
2
11
  import { randomEthereumAddress } from '@streamr/test-utils'
3
12
  import { hexToBinary, utf8ToBinary, waitForCondition } from '@streamr/utils'
4
13
  import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
@@ -52,6 +61,9 @@ describe('inspect', () => {
52
61
  hello: 'world'
53
62
  })),
54
63
  messageType: StreamMessageType.MESSAGE,
64
+ contentType: ContentType.JSON,
65
+ encryptionType: EncryptionType.NONE,
66
+ signatureType: SignatureType.SECP256K1,
55
67
  signature: hexToBinary('0x1234'),
56
68
  })
57
69
 
@@ -84,9 +96,9 @@ describe('inspect', () => {
84
96
  await inspectedNode.start()
85
97
  await inspectorNode.start()
86
98
 
87
- publisherNode.stack.getStreamrNode()!.joinStreamPart(STREAM_PART_ID)
88
- inspectedNode.stack.getStreamrNode()!.joinStreamPart(STREAM_PART_ID)
89
- inspectorNode.stack.getStreamrNode()!.joinStreamPart(STREAM_PART_ID)
99
+ publisherNode.stack.getStreamrNode().joinStreamPart(STREAM_PART_ID)
100
+ inspectedNode.stack.getStreamrNode().joinStreamPart(STREAM_PART_ID)
101
+ inspectorNode.stack.getStreamrNode().joinStreamPart(STREAM_PART_ID)
90
102
 
91
103
  await waitForCondition(() =>
92
104
  publisherNode.stack.getStreamrNode().getNeighbors(STREAM_PART_ID).length === 2
@@ -1,4 +1,14 @@
1
- import { MessageID, MessageRef, StreamMessage, StreamMessageType, StreamPartID, StreamPartIDUtils } from '@streamr/protocol'
1
+ import {
2
+ ContentType,
3
+ EncryptionType,
4
+ MessageID,
5
+ MessageRef,
6
+ SignatureType,
7
+ StreamMessage,
8
+ StreamMessageType,
9
+ StreamPartID,
10
+ StreamPartIDUtils
11
+ } from '@streamr/protocol'
2
12
  import { randomEthereumAddress } from '@streamr/test-utils'
3
13
  import { hexToBinary, utf8ToBinary, waitForEvent3 } from '@streamr/utils'
4
14
  import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
@@ -22,6 +32,9 @@ const createMessage = (streamPartId: StreamPartID): StreamMessage => {
22
32
  hello: 'world'
23
33
  })),
24
34
  messageType: StreamMessageType.MESSAGE,
35
+ contentType: ContentType.JSON,
36
+ encryptionType: EncryptionType.NONE,
37
+ signatureType: SignatureType.SECP256K1,
25
38
  signature: hexToBinary('0x1234'),
26
39
  })
27
40
  }
@@ -52,11 +65,11 @@ describe('proxy and full node', () => {
52
65
  }
53
66
  })
54
67
  await proxyNode.start()
55
- proxyNode.stack.getStreamrNode()!.joinStreamPart(proxiedStreamPart)
56
- proxyNode.stack.getStreamrNode()!.joinStreamPart(regularStreamPart1)
57
- proxyNode.stack.getStreamrNode()!.joinStreamPart(regularStreamPart2)
58
- proxyNode.stack.getStreamrNode()!.joinStreamPart(regularStreamPart3)
59
- proxyNode.stack.getStreamrNode()!.joinStreamPart(regularStreamPart4)
68
+ proxyNode.stack.getStreamrNode().joinStreamPart(proxiedStreamPart)
69
+ proxyNode.stack.getStreamrNode().joinStreamPart(regularStreamPart1)
70
+ proxyNode.stack.getStreamrNode().joinStreamPart(regularStreamPart2)
71
+ proxyNode.stack.getStreamrNode().joinStreamPart(regularStreamPart3)
72
+ proxyNode.stack.getStreamrNode().joinStreamPart(regularStreamPart4)
60
73
 
61
74
  proxiedNode = createNetworkNode({
62
75
  layer0: {
@@ -77,14 +90,14 @@ describe('proxy and full node', () => {
77
90
  expect(proxiedNode.stack.getLayer0Node().hasJoined()).toBe(false)
78
91
 
79
92
  await Promise.all([
80
- waitForEvent3(proxyNode.stack.getStreamrNode()! as any, 'newMessage'),
93
+ waitForEvent3(proxyNode.stack.getStreamrNode() as any, 'newMessage'),
81
94
  proxiedNode.broadcast(createMessage(regularStreamPart1))
82
95
  ])
83
96
 
84
97
  expect(proxiedNode.stack.getLayer0Node().hasJoined()).toBe(true)
85
98
 
86
99
  await Promise.all([
87
- waitForEvent3(proxyNode.stack.getStreamrNode()! as any, 'newMessage'),
100
+ waitForEvent3(proxyNode.stack.getStreamrNode() as any, 'newMessage'),
88
101
  proxiedNode.broadcast(createMessage(proxiedStreamPart))
89
102
  ])
90
103
 
@@ -97,13 +110,13 @@ describe('proxy and full node', () => {
97
110
  expect(proxiedNode.stack.getLayer0Node().hasJoined()).toBe(false)
98
111
 
99
112
  await Promise.all([
100
- waitForEvent3(proxyNode.stack.getStreamrNode()! as any, 'newMessage', 5000,
113
+ waitForEvent3(proxyNode.stack.getStreamrNode() as any, 'newMessage', 5000,
101
114
  (streamMessage: InternalStreamMessage) => streamMessage.messageId!.streamId === StreamPartIDUtils.getStreamID(regularStreamPart1)),
102
- waitForEvent3(proxyNode.stack.getStreamrNode()! as any, 'newMessage', 5000,
115
+ waitForEvent3(proxyNode.stack.getStreamrNode() as any, 'newMessage', 5000,
103
116
  (streamMessage: InternalStreamMessage) => streamMessage.messageId!.streamId === StreamPartIDUtils.getStreamID(regularStreamPart2)),
104
- waitForEvent3(proxyNode.stack.getStreamrNode()! as any, 'newMessage', 5000,
117
+ waitForEvent3(proxyNode.stack.getStreamrNode() as any, 'newMessage', 5000,
105
118
  (streamMessage: InternalStreamMessage) => streamMessage.messageId!.streamId === StreamPartIDUtils.getStreamID(regularStreamPart3)),
106
- waitForEvent3(proxyNode.stack.getStreamrNode()! as any, 'newMessage', 5000,
119
+ waitForEvent3(proxyNode.stack.getStreamrNode() as any, 'newMessage', 5000,
107
120
  (streamMessage: InternalStreamMessage) => streamMessage.messageId!.streamId === StreamPartIDUtils.getStreamID(regularStreamPart4)),
108
121
  proxiedNode.broadcast(createMessage(regularStreamPart1)),
109
122
  proxiedNode.broadcast(createMessage(regularStreamPart2)),
@@ -114,7 +127,7 @@ describe('proxy and full node', () => {
114
127
  expect(proxiedNode.stack.getLayer0Node().hasJoined()).toBe(true)
115
128
 
116
129
  await Promise.all([
117
- waitForEvent3(proxyNode.stack.getStreamrNode()! as any, 'newMessage'),
130
+ waitForEvent3(proxyNode.stack.getStreamrNode() as any, 'newMessage'),
118
131
  proxiedNode.broadcast(createMessage(proxiedStreamPart))
119
132
  ])
120
133
 
@@ -1,12 +1,21 @@
1
- import { MessageID, MessageRef, StreamMessage, StreamMessageType, StreamPartIDUtils } from '@streamr/protocol'
1
+ import {
2
+ ContentType,
3
+ EncryptionType,
4
+ MessageID,
5
+ MessageRef,
6
+ SignatureType,
7
+ StreamMessage,
8
+ StreamMessageType,
9
+ StreamPartIDUtils
10
+ } from '@streamr/protocol'
2
11
  import { randomEthereumAddress } from '@streamr/test-utils'
3
12
  import { hexToBinary, utf8ToBinary, wait, waitForCondition, waitForEvent3 } from '@streamr/utils'
4
13
  import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
5
- import { NodeID } from '../../src/identifiers'
6
14
  import { RandomGraphNode } from '../../src/logic/RandomGraphNode'
7
15
  import { ProxyClient } from '../../src/logic/proxy/ProxyClient'
8
16
  import { ProxyDirection } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
9
17
  import { createMockPeerDescriptor } from '../utils/utils'
18
+ import { DhtAddress } from '@streamr/dht'
10
19
 
11
20
  const PROXIED_NODE_USER_ID = randomEthereumAddress()
12
21
  const STREAM_PART_ID = StreamPartIDUtils.parse('proxy-test#0')
@@ -24,7 +33,10 @@ const MESSAGE = new StreamMessage({
24
33
  hello: 'world'
25
34
  })),
26
35
  messageType: StreamMessageType.MESSAGE,
27
- signature: hexToBinary('0x1234')
36
+ encryptionType: EncryptionType.NONE,
37
+ signatureType: SignatureType.SECP256K1,
38
+ signature: hexToBinary('0x1234'),
39
+ contentType: ContentType.JSON
28
40
  })
29
41
 
30
42
  describe('Proxy connections', () => {
@@ -34,14 +46,14 @@ describe('Proxy connections', () => {
34
46
  let proxiedNode: NetworkNode
35
47
 
36
48
  const hasConnectionFromProxy = (proxyNode: NetworkNode): boolean => {
37
- const delivery = proxyNode.stack.getStreamrNode()!.getStreamPartDelivery(STREAM_PART_ID)
49
+ const delivery = proxyNode.stack.getStreamrNode().getStreamPartDelivery(STREAM_PART_ID)
38
50
  return (delivery !== undefined)
39
51
  ? ((delivery as { node: RandomGraphNode }).node).hasProxyConnection(proxiedNode.getNodeId())
40
52
  : false
41
53
  }
42
54
 
43
- const hasConnectionToProxy = (proxyNodeId: NodeID, direction: ProxyDirection): boolean => {
44
- const client = (proxiedNode.stack.getStreamrNode()!.getStreamPartDelivery(STREAM_PART_ID) as { client: ProxyClient }).client
55
+ const hasConnectionToProxy = (proxyNodeId: DhtAddress, direction: ProxyDirection): boolean => {
56
+ const client = (proxiedNode.stack.getStreamrNode().getStreamPartDelivery(STREAM_PART_ID) as { client: ProxyClient }).client
45
57
  return client.hasConnection(proxyNodeId, direction)
46
58
  }
47
59
 
@@ -65,7 +77,7 @@ describe('Proxy connections', () => {
65
77
  })
66
78
  await proxyNode1.start()
67
79
  proxyNode1.setStreamPartEntryPoints(STREAM_PART_ID, [proxyNodeDescriptor1])
68
- proxyNode1.stack.getStreamrNode()!.joinStreamPart(STREAM_PART_ID)
80
+ proxyNode1.stack.getStreamrNode().joinStreamPart(STREAM_PART_ID)
69
81
  proxyNode2 = createNetworkNode({
70
82
  layer0: {
71
83
  entryPoints: [proxyNodeDescriptor1],
@@ -78,7 +90,7 @@ describe('Proxy connections', () => {
78
90
  })
79
91
  await proxyNode2.start()
80
92
  proxyNode2.setStreamPartEntryPoints(STREAM_PART_ID, [proxyNodeDescriptor1])
81
- proxyNode2.stack.getStreamrNode()!.joinStreamPart(STREAM_PART_ID)
93
+ proxyNode2.stack.getStreamrNode().joinStreamPart(STREAM_PART_ID)
82
94
  proxiedNode = createNetworkNode({
83
95
  layer0: {
84
96
  entryPoints: [proxyNode1.getPeerDescriptor()],
@@ -97,7 +109,7 @@ describe('Proxy connections', () => {
97
109
  it('happy path publishing', async () => {
98
110
  await proxiedNode.setProxies(STREAM_PART_ID, [proxyNode1.getPeerDescriptor()], ProxyDirection.PUBLISH, PROXIED_NODE_USER_ID, 1)
99
111
  await Promise.all([
100
- waitForEvent3(proxyNode1.stack.getStreamrNode()! as any, 'newMessage'),
112
+ waitForEvent3(proxyNode1.stack.getStreamrNode() as any, 'newMessage'),
101
113
  proxiedNode.broadcast(MESSAGE)
102
114
  ])
103
115
  })
@@ -105,7 +117,7 @@ describe('Proxy connections', () => {
105
117
  it('happy path subscribing', async () => {
106
118
  await proxiedNode.setProxies(STREAM_PART_ID, [proxyNode1.getPeerDescriptor()], ProxyDirection.SUBSCRIBE, PROXIED_NODE_USER_ID, 1)
107
119
  await Promise.all([
108
- waitForEvent3(proxiedNode.stack.getStreamrNode()! as any, 'newMessage'),
120
+ waitForEvent3(proxiedNode.stack.getStreamrNode() as any, 'newMessage'),
109
121
  proxyNode1.broadcast(MESSAGE)
110
122
  ])
111
123
  })
@@ -184,7 +196,7 @@ describe('Proxy connections', () => {
184
196
  await proxyNode1.leave(STREAM_PART_ID)
185
197
  await waitForCondition(() => hasConnectionToProxy(proxyNode1.getNodeId(), ProxyDirection.SUBSCRIBE))
186
198
  expect(hasConnectionFromProxy(proxyNode1)).toBe(false)
187
- proxyNode1.stack.getStreamrNode()!.joinStreamPart(STREAM_PART_ID)
199
+ proxyNode1.stack.getStreamrNode().joinStreamPart(STREAM_PART_ID)
188
200
  await waitForCondition(() => hasConnectionToProxy(proxyNode1.getNodeId(), ProxyDirection.SUBSCRIBE), 25000)
189
201
  // TODO why wait is needed?
190
202
  await wait(100)
@@ -1,14 +1,20 @@
1
1
  import {
2
+ ContentType,
2
3
  EncryptionType,
3
- GroupKeyRequest,
4
- GroupKeyResponse,
5
4
  MessageID,
5
+ GroupKeyRequest as OldGroupKeyRequest,
6
+ GroupKeyResponse as OldGroupKeyResponse,
7
+ SignatureType,
6
8
  StreamMessage,
7
9
  StreamMessageType,
8
10
  StreamPartIDUtils
9
11
  } from '@streamr/protocol'
10
- import { hexToBinary, toEthereumAddress, utf8ToBinary, waitForEvent3 } from '@streamr/utils'
12
+ import { hexToBinary, toEthereumAddress, waitForEvent3 } from '@streamr/utils'
11
13
  import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
14
+ import {
15
+ convertGroupKeyRequestToBytes,
16
+ convertGroupKeyResponseToBytes
17
+ } from '../../src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils'
12
18
  import { ProxyDirection } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
13
19
  import { createMockPeerDescriptor } from '../utils/utils'
14
20
 
@@ -41,10 +47,10 @@ describe('proxy group key exchange', () => {
41
47
  })
42
48
  await proxyNode.start()
43
49
  proxyNode.setStreamPartEntryPoints(STREAM_PART_ID, [proxyNodeDescriptor])
44
- proxyNode.stack.getStreamrNode()!.joinStreamPart(STREAM_PART_ID)
50
+ proxyNode.stack.getStreamrNode().joinStreamPart(STREAM_PART_ID)
45
51
  publisher = createNetworkNode({
46
52
  layer0: {
47
- entryPoints: [publisherDescriptor],
53
+ entryPoints: [proxyNodeDescriptor],
48
54
  peerDescriptor: publisherDescriptor,
49
55
  }
50
56
  })
@@ -52,7 +58,7 @@ describe('proxy group key exchange', () => {
52
58
 
53
59
  subscriber = createNetworkNode({
54
60
  layer0: {
55
- entryPoints: [subscriberDescriptor],
61
+ entryPoints: [proxyNodeDescriptor],
56
62
  peerDescriptor: subscriberDescriptor,
57
63
  }
58
64
  })
@@ -69,14 +75,14 @@ describe('proxy group key exchange', () => {
69
75
  await publisher.setProxies(STREAM_PART_ID, [proxyNodeDescriptor], ProxyDirection.PUBLISH, publisherUserId)
70
76
  await subscriber.setProxies(STREAM_PART_ID, [proxyNodeDescriptor], ProxyDirection.SUBSCRIBE, subscriberUserId)
71
77
 
72
- const requestContent = utf8ToBinary(new GroupKeyRequest({
78
+ const groupKeyRequest = new OldGroupKeyRequest({
73
79
  recipient: publisherUserId,
74
80
  requestId: 'requestId',
75
81
  rsaPublicKey: 'mockKey',
76
82
  groupKeyIds: [
77
83
  'mock'
78
84
  ],
79
- }).serialize())
85
+ })
80
86
  const request = new StreamMessage({
81
87
  messageId: new MessageID(
82
88
  StreamPartIDUtils.getStreamID(STREAM_PART_ID),
@@ -87,13 +93,15 @@ describe('proxy group key exchange', () => {
87
93
  '0'
88
94
  ),
89
95
  messageType: StreamMessageType.GROUP_KEY_REQUEST,
96
+ contentType: ContentType.BINARY,
90
97
  encryptionType: EncryptionType.NONE,
91
- content: requestContent,
98
+ content: convertGroupKeyRequestToBytes(groupKeyRequest),
99
+ signatureType: SignatureType.SECP256K1,
92
100
  signature: hexToBinary('1234')
93
101
  })
94
102
 
95
103
  await Promise.all([
96
- waitForEvent3(publisher.stack.getStreamrNode()! as any, 'newMessage'),
104
+ waitForEvent3(publisher.stack.getStreamrNode() as any, 'newMessage'),
97
105
  subscriber.broadcast(request)
98
106
  ])
99
107
  })
@@ -102,11 +110,11 @@ describe('proxy group key exchange', () => {
102
110
  await publisher.setProxies(STREAM_PART_ID, [proxyNodeDescriptor], ProxyDirection.PUBLISH, publisherUserId)
103
111
  await subscriber.setProxies(STREAM_PART_ID, [proxyNodeDescriptor], ProxyDirection.SUBSCRIBE, subscriberUserId)
104
112
 
105
- const responseContent = utf8ToBinary(new GroupKeyResponse({
113
+ const groupKeyResponse = new OldGroupKeyResponse({
106
114
  recipient: publisherUserId,
107
115
  requestId: 'requestId',
108
116
  encryptedGroupKeys: []
109
- }).serialize())
117
+ })
110
118
  const response = new StreamMessage({
111
119
  messageId: new MessageID(
112
120
  StreamPartIDUtils.getStreamID(STREAM_PART_ID),
@@ -117,13 +125,15 @@ describe('proxy group key exchange', () => {
117
125
  '0'
118
126
  ),
119
127
  messageType: StreamMessageType.GROUP_KEY_RESPONSE,
120
- encryptionType: EncryptionType.RSA,
121
- content: responseContent,
128
+ contentType: ContentType.BINARY,
129
+ encryptionType: EncryptionType.NONE,
130
+ content: convertGroupKeyResponseToBytes(groupKeyResponse),
131
+ signatureType: SignatureType.SECP256K1,
122
132
  signature: hexToBinary('1234')
123
133
  })
124
134
 
125
135
  await Promise.all([
126
- waitForEvent3(subscriber.stack.getStreamrNode()! as any, 'newMessage'),
136
+ waitForEvent3(subscriber.stack.getStreamrNode() as any, 'newMessage'),
127
137
  publisher.broadcast(response)
128
138
  ])
129
139
  })
@@ -1,7 +1,7 @@
1
- import { ConnectionManager, DhtNode, PeerDescriptor, NodeType } from '@streamr/dht'
1
+ import { ConnectionManager, DhtNode, PeerDescriptor } from '@streamr/dht'
2
2
  import { RandomGraphNode } from '../../src/logic/RandomGraphNode'
3
3
  import { waitForCondition } from '@streamr/utils'
4
- import { createStreamMessage } from '../utils/utils'
4
+ import { createMockPeerDescriptor, createStreamMessage } from '../utils/utils'
5
5
  import { createRandomGraphNode } from '../../src/logic/createRandomGraphNode'
6
6
  import { StreamPartIDUtils } from '@streamr/protocol'
7
7
  import { randomEthereumAddress } from '@streamr/test-utils'
@@ -10,11 +10,9 @@ import { Layer1Node } from '../../src/logic/Layer1Node'
10
10
 
11
11
  describe('random graph with real connections', () => {
12
12
 
13
- const epPeerDescriptor: PeerDescriptor = {
14
- kademliaId: Uint8Array.from([1, 2, 3]),
15
- type: NodeType.NODEJS,
13
+ const epPeerDescriptor: PeerDescriptor = createMockPeerDescriptor({
16
14
  websocket: { host: '127.0.0.1', port: 12221, tls: false }
17
- }
15
+ })
18
16
 
19
17
  const streamPartId = StreamPartIDUtils.parse('random-graph#0')
20
18
  // Currently the nodes here are practically layer0 nodes acting as layer1 nodes, for the purpose of this test
@@ -50,7 +48,8 @@ describe('random graph with real connections', () => {
50
48
  layer1Node: epDhtNode,
51
49
  transport: epDhtNode.getTransport(),
52
50
  connectionLocker: epDhtNode.getTransport() as ConnectionManager,
53
- localPeerDescriptor: epPeerDescriptor
51
+ localPeerDescriptor: epPeerDescriptor,
52
+ isLocalNodeEntryPoint: () => false
54
53
  }
55
54
  )
56
55
  randomGraphNode2 = createRandomGraphNode({
@@ -58,28 +57,32 @@ describe('random graph with real connections', () => {
58
57
  layer1Node: dhtNode1,
59
58
  transport: dhtNode1.getTransport(),
60
59
  connectionLocker: dhtNode1.getTransport() as ConnectionManager,
61
- localPeerDescriptor: dhtNode1.getLocalPeerDescriptor()
60
+ localPeerDescriptor: dhtNode1.getLocalPeerDescriptor(),
61
+ isLocalNodeEntryPoint: () => false
62
62
  })
63
63
  randomGraphNode3 = createRandomGraphNode({
64
64
  streamPartId,
65
65
  layer1Node: dhtNode2,
66
66
  transport: dhtNode2.getTransport(),
67
67
  connectionLocker: dhtNode2.getTransport() as ConnectionManager,
68
- localPeerDescriptor: dhtNode2.getLocalPeerDescriptor()
68
+ localPeerDescriptor: dhtNode2.getLocalPeerDescriptor(),
69
+ isLocalNodeEntryPoint: () => false
69
70
  })
70
71
  randomGraphNode4 = createRandomGraphNode({
71
72
  streamPartId,
72
73
  layer1Node: dhtNode3,
73
74
  transport: dhtNode3.getTransport(),
74
75
  connectionLocker: dhtNode3.getTransport() as ConnectionManager,
75
- localPeerDescriptor: dhtNode3.getLocalPeerDescriptor()
76
+ localPeerDescriptor: dhtNode3.getLocalPeerDescriptor(),
77
+ isLocalNodeEntryPoint: () => false
76
78
  })
77
79
  randomGraphNode5 = createRandomGraphNode({
78
80
  streamPartId,
79
81
  layer1Node: dhtNode4,
80
82
  transport: dhtNode4.getTransport(),
81
83
  connectionLocker: dhtNode4.getTransport() as ConnectionManager,
82
- localPeerDescriptor: dhtNode4.getLocalPeerDescriptor()
84
+ localPeerDescriptor: dhtNode4.getLocalPeerDescriptor(),
85
+ isLocalNodeEntryPoint: () => false
83
86
  })
84
87
  await epDhtNode.joinDht([epPeerDescriptor])
85
88
  await Promise.all([
@@ -119,32 +122,32 @@ describe('random graph with real connections', () => {
119
122
 
120
123
  it('can fully connected topologies ', async () => {
121
124
  await waitForCondition(() => {
122
- return randomGraphNode1.getTargetNeighborIds().length >= 3
123
- && randomGraphNode2.getTargetNeighborIds().length >= 3
124
- && randomGraphNode3.getTargetNeighborIds().length >= 3
125
- && randomGraphNode4.getTargetNeighborIds().length >= 3
126
- && randomGraphNode5.getTargetNeighborIds().length >= 3
125
+ return randomGraphNode1.getNeighbors().length >= 3
126
+ && randomGraphNode2.getNeighbors().length >= 3
127
+ && randomGraphNode3.getNeighbors().length >= 3
128
+ && randomGraphNode4.getNeighbors().length >= 3
129
+ && randomGraphNode5.getNeighbors().length >= 3
127
130
  }, 10000)
128
- expect(randomGraphNode1.getTargetNeighborIds().length).toBeGreaterThanOrEqual(3)
129
- expect(randomGraphNode2.getTargetNeighborIds().length).toBeGreaterThanOrEqual(3)
130
- expect(randomGraphNode3.getTargetNeighborIds().length).toBeGreaterThanOrEqual(3)
131
- expect(randomGraphNode4.getTargetNeighborIds().length).toBeGreaterThanOrEqual(3)
132
- expect(randomGraphNode5.getTargetNeighborIds().length).toBeGreaterThanOrEqual(3)
131
+ expect(randomGraphNode1.getNeighbors().length).toBeGreaterThanOrEqual(3)
132
+ expect(randomGraphNode2.getNeighbors().length).toBeGreaterThanOrEqual(3)
133
+ expect(randomGraphNode3.getNeighbors().length).toBeGreaterThanOrEqual(3)
134
+ expect(randomGraphNode4.getNeighbors().length).toBeGreaterThanOrEqual(3)
135
+ expect(randomGraphNode5.getNeighbors().length).toBeGreaterThanOrEqual(3)
133
136
  })
134
137
 
135
138
  it('can propagate messages', async () => {
136
- let numOfMessagesReceived = 0
137
- randomGraphNode2.on('message', () => numOfMessagesReceived += 1)
138
- randomGraphNode3.on('message', () => numOfMessagesReceived += 1)
139
- randomGraphNode4.on('message', () => numOfMessagesReceived += 1)
140
- randomGraphNode5.on('message', () => numOfMessagesReceived += 1)
139
+ let receivedMessageCount = 0
140
+ randomGraphNode2.on('message', () => receivedMessageCount += 1)
141
+ randomGraphNode3.on('message', () => receivedMessageCount += 1)
142
+ randomGraphNode4.on('message', () => receivedMessageCount += 1)
143
+ randomGraphNode5.on('message', () => receivedMessageCount += 1)
141
144
 
142
145
  await waitForCondition(() => {
143
- return randomGraphNode1.getTargetNeighborIds().length >= 3
144
- && randomGraphNode2.getTargetNeighborIds().length >= 3
145
- && randomGraphNode3.getTargetNeighborIds().length >= 3
146
- && randomGraphNode4.getTargetNeighborIds().length >= 3
147
- && randomGraphNode5.getTargetNeighborIds().length >= 3
146
+ return randomGraphNode1.getNeighbors().length >= 3
147
+ && randomGraphNode2.getNeighbors().length >= 3
148
+ && randomGraphNode3.getNeighbors().length >= 3
149
+ && randomGraphNode4.getNeighbors().length >= 3
150
+ && randomGraphNode5.getNeighbors().length >= 3
148
151
  }, 10000)
149
152
 
150
153
  const msg = createStreamMessage(
@@ -153,6 +156,6 @@ describe('random graph with real connections', () => {
153
156
  randomEthereumAddress()
154
157
  )
155
158
  randomGraphNode1.broadcast(msg)
156
- await waitForCondition(() => numOfMessagesReceived >= 4)
159
+ await waitForCondition(() => receivedMessageCount >= 4)
157
160
  })
158
161
  })
@@ -1,10 +1,9 @@
1
- import { getRandomRegion } from '@streamr/dht'
1
+ import { getNodeIdFromPeerDescriptor, getRandomRegion } from '@streamr/dht'
2
2
  import { StreamPartIDUtils } from '@streamr/protocol'
3
3
  import { randomEthereumAddress } from '@streamr/test-utils'
4
4
  import { waitForCondition } from '@streamr/utils'
5
5
  import { range } from 'lodash'
6
6
  import { NetworkStack } from '../../src/NetworkStack'
7
- import { getNodeIdFromPeerDescriptor } from '../../src/identifiers'
8
7
  import { createMockPeerDescriptor, createStreamMessage } from '../utils/utils'
9
8
 
10
9
  describe('Full node network with WebRTC connections', () => {
@@ -34,8 +33,8 @@ describe('Full node network with WebRTC connections', () => {
34
33
  }
35
34
  })
36
35
  await entryPoint.start()
37
- entryPoint.getStreamrNode()!.setStreamPartEntryPoints(streamPartId, [epPeerDescriptor])
38
- entryPoint.getStreamrNode()!.joinStreamPart(streamPartId)
36
+ entryPoint.getStreamrNode().setStreamPartEntryPoints(streamPartId, [epPeerDescriptor])
37
+ entryPoint.getStreamrNode().joinStreamPart(streamPartId)
39
38
 
40
39
  await Promise.all(range(NUM_OF_NODES).map(async () => {
41
40
  const peerDescriptor = createMockPeerDescriptor()
@@ -63,16 +62,16 @@ describe('Full node network with WebRTC connections', () => {
63
62
  it('happy path', async () => {
64
63
  await Promise.all(nodes.map((node) =>
65
64
  waitForCondition(() => {
66
- return node.getStreamrNode()!.getNeighbors(streamPartId).length >= 3
65
+ return node.getStreamrNode().getNeighbors(streamPartId).length >= 3
67
66
  }
68
- , 120000)
67
+ , 30000)
69
68
  ))
70
- let numOfMessagesReceived = 0
69
+ let receivedMessageCount = 0
71
70
  const successIds: string[] = []
72
71
  nodes.forEach((node) => {
73
- node.getStreamrNode()!.on('newMessage', () => {
74
- successIds.push(getNodeIdFromPeerDescriptor(node.getStreamrNode()!.getPeerDescriptor()))
75
- numOfMessagesReceived += 1
72
+ node.getStreamrNode().on('newMessage', () => {
73
+ successIds.push(getNodeIdFromPeerDescriptor(node.getStreamrNode().getPeerDescriptor()))
74
+ receivedMessageCount += 1
76
75
  })
77
76
  })
78
77
  const msg = createStreamMessage(
@@ -80,8 +79,8 @@ describe('Full node network with WebRTC connections', () => {
80
79
  streamPartId,
81
80
  randomEthereumAddress()
82
81
  )
83
- entryPoint.getStreamrNode()!.broadcast(msg)
84
- await waitForCondition(() => numOfMessagesReceived === NUM_OF_NODES)
82
+ entryPoint.getStreamrNode().broadcast(msg)
83
+ await waitForCondition(() => receivedMessageCount === NUM_OF_NODES)
85
84
  }, 120000)
86
85
 
87
86
  })