@streamr/trackerless-network 0.0.1-tatum.6 → 0.0.1-tatum.7

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 (170) hide show
  1. package/dist/package.json +10 -8
  2. package/dist/src/NetworkNode.js +1 -1
  3. package/dist/src/NetworkNode.js.map +1 -1
  4. package/dist/src/NetworkStack.d.ts +1 -3
  5. package/dist/src/NetworkStack.js +18 -47
  6. package/dist/src/NetworkStack.js.map +1 -1
  7. package/dist/src/identifiers.js +2 -2
  8. package/dist/src/identifiers.js.map +1 -1
  9. package/dist/src/logic/{StreamNodeServer.d.ts → DeliveryRpcLocal.d.ts} +6 -5
  10. package/dist/src/logic/{StreamNodeServer.js → DeliveryRpcLocal.js} +5 -5
  11. package/dist/src/logic/{StreamNodeServer.js.map → DeliveryRpcLocal.js.map} +1 -1
  12. package/dist/src/logic/{RemoteRandomGraphNode.d.ts → DeliveryRpcRemote.d.ts} +2 -2
  13. package/dist/src/logic/{RemoteRandomGraphNode.js → DeliveryRpcRemote.js} +5 -5
  14. package/dist/src/logic/DeliveryRpcRemote.js.map +1 -0
  15. package/dist/src/logic/{StreamPartEntryPointDiscovery.d.ts → EntryPointDiscovery.d.ts} +8 -10
  16. package/dist/src/logic/{StreamPartEntryPointDiscovery.js → EntryPointDiscovery.js} +14 -36
  17. package/dist/src/logic/EntryPointDiscovery.js.map +1 -0
  18. package/dist/src/logic/ILayer0.d.ts +3 -6
  19. package/dist/src/logic/NodeList.d.ts +10 -10
  20. package/dist/src/logic/NodeList.js.map +1 -1
  21. package/dist/src/logic/RandomGraphNode.d.ts +8 -12
  22. package/dist/src/logic/RandomGraphNode.js +41 -40
  23. package/dist/src/logic/RandomGraphNode.js.map +1 -1
  24. package/dist/src/logic/StreamrNode.d.ts +9 -12
  25. package/dist/src/logic/StreamrNode.js +53 -63
  26. package/dist/src/logic/StreamrNode.js.map +1 -1
  27. package/dist/src/logic/createRandomGraphNode.d.ts +6 -1
  28. package/dist/src/logic/createRandomGraphNode.js +17 -23
  29. package/dist/src/logic/createRandomGraphNode.js.map +1 -1
  30. package/dist/src/logic/formStreamPartDeliveryServiceId.d.ts +2 -0
  31. package/dist/src/logic/formStreamPartDeliveryServiceId.js +8 -0
  32. package/dist/src/logic/formStreamPartDeliveryServiceId.js.map +1 -0
  33. package/dist/src/logic/inspect/Inspector.d.ts +3 -2
  34. package/dist/src/logic/inspect/Inspector.js +5 -5
  35. package/dist/src/logic/inspect/Inspector.js.map +1 -1
  36. package/dist/src/logic/neighbor-discovery/{HandshakerServer.d.ts → HandshakeRpcLocal.d.ts} +10 -10
  37. package/dist/src/logic/neighbor-discovery/{HandshakerServer.js → HandshakeRpcLocal.js} +13 -13
  38. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js.map +1 -0
  39. package/dist/src/logic/neighbor-discovery/{RemoteHandshaker.d.ts → HandshakeRpcRemote.d.ts} +1 -1
  40. package/dist/src/logic/neighbor-discovery/{RemoteHandshaker.js → HandshakeRpcRemote.js} +8 -7
  41. package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js.map +1 -0
  42. package/dist/src/logic/neighbor-discovery/Handshaker.d.ts +8 -7
  43. package/dist/src/logic/neighbor-discovery/Handshaker.js +23 -24
  44. package/dist/src/logic/neighbor-discovery/Handshaker.js.map +1 -1
  45. package/dist/src/logic/neighbor-discovery/NeighborFinder.d.ts +1 -1
  46. package/dist/src/logic/neighbor-discovery/NeighborFinder.js +1 -1
  47. package/dist/src/logic/neighbor-discovery/NeighborFinder.js.map +1 -1
  48. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.d.ts +3 -2
  49. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js +5 -5
  50. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js.map +1 -1
  51. package/dist/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.d.ts → NeighborUpdateRpcLocal.d.ts} +6 -6
  52. package/dist/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.js → NeighborUpdateRpcLocal.js} +9 -9
  53. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js.map +1 -0
  54. package/dist/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.d.ts → NeighborUpdateRpcRemote.d.ts} +1 -1
  55. package/dist/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.js → NeighborUpdateRpcRemote.js} +5 -5
  56. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js.map +1 -0
  57. package/dist/src/logic/propagation/Propagation.js +2 -2
  58. package/dist/src/logic/propagation/Propagation.js.map +1 -1
  59. package/dist/src/logic/proxy/{ProxyStreamConnectionClient.d.ts → ProxyClient.d.ts} +6 -9
  60. package/dist/src/logic/proxy/{ProxyStreamConnectionClient.js → ProxyClient.js} +23 -21
  61. package/dist/src/logic/proxy/ProxyClient.js.map +1 -0
  62. package/dist/src/logic/proxy/{ProxyStreamConnectionServer.d.ts → ProxyConnectionRpcLocal.d.ts} +5 -5
  63. package/dist/src/logic/proxy/{ProxyStreamConnectionServer.js → ProxyConnectionRpcLocal.js} +6 -6
  64. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js.map +1 -0
  65. package/dist/src/logic/proxy/{RemoteProxyServer.d.ts → ProxyConnectionRpcRemote.d.ts} +1 -1
  66. package/dist/src/logic/proxy/{RemoteProxyServer.js → ProxyConnectionRpcRemote.js} +4 -4
  67. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js.map +1 -0
  68. package/dist/src/logic/temporary-connection/{TemporaryConnectionRpcServer.d.ts → TemporaryConnectionRpcLocal.d.ts} +5 -4
  69. package/dist/src/logic/temporary-connection/{TemporaryConnectionRpcServer.js → TemporaryConnectionRpcLocal.js} +6 -6
  70. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js.map +1 -0
  71. package/dist/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.d.ts → TemporaryConnectionRpcRemote.d.ts} +1 -1
  72. package/dist/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.js → TemporaryConnectionRpcRemote.js} +4 -4
  73. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js.map +1 -0
  74. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +0 -4
  75. package/dist/src/proto/packages/dht/protos/DhtRpc.js +1 -2
  76. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  77. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.d.ts +4 -4
  78. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js +7 -7
  79. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js.map +1 -1
  80. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.d.ts +10 -10
  81. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js +7 -7
  82. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js.map +1 -1
  83. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.server.d.ts +2 -2
  84. package/dist/test/benchmark/first-message.js +10 -13
  85. package/dist/test/benchmark/first-message.js.map +1 -1
  86. package/dist/test/utils/utils.d.ts +5 -5
  87. package/dist/test/utils/utils.js +14 -13
  88. package/dist/test/utils/utils.js.map +1 -1
  89. package/package.json +10 -8
  90. package/protos/NetworkRpc.proto +5 -5
  91. package/src/NetworkNode.ts +1 -1
  92. package/src/NetworkStack.ts +20 -62
  93. package/src/identifiers.ts +3 -3
  94. package/src/logic/{StreamNodeServer.ts → DeliveryRpcLocal.ts} +8 -7
  95. package/src/logic/{RemoteRandomGraphNode.ts → DeliveryRpcRemote.ts} +3 -3
  96. package/src/logic/{StreamPartEntryPointDiscovery.ts → EntryPointDiscovery.ts} +18 -42
  97. package/src/logic/ILayer0.ts +3 -6
  98. package/src/logic/NodeList.ts +12 -12
  99. package/src/logic/RandomGraphNode.ts +61 -62
  100. package/src/logic/StreamrNode.ts +59 -73
  101. package/src/logic/createRandomGraphNode.ts +28 -26
  102. package/src/logic/formStreamPartDeliveryServiceId.ts +5 -0
  103. package/src/logic/inspect/Inspector.ts +8 -7
  104. package/src/logic/neighbor-discovery/{HandshakerServer.ts → HandshakeRpcLocal.ts} +20 -20
  105. package/src/logic/neighbor-discovery/{RemoteHandshaker.ts → HandshakeRpcRemote.ts} +6 -5
  106. package/src/logic/neighbor-discovery/Handshaker.ts +38 -38
  107. package/src/logic/neighbor-discovery/NeighborFinder.ts +2 -2
  108. package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +13 -10
  109. package/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.ts → NeighborUpdateRpcLocal.ts} +15 -15
  110. package/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.ts → NeighborUpdateRpcRemote.ts} +2 -2
  111. package/src/logic/propagation/Propagation.ts +2 -2
  112. package/src/logic/proxy/{ProxyStreamConnectionClient.ts → ProxyClient.ts} +27 -27
  113. package/src/logic/proxy/{ProxyStreamConnectionServer.ts → ProxyConnectionRpcLocal.ts} +10 -11
  114. package/src/logic/proxy/{RemoteProxyServer.ts → ProxyConnectionRpcRemote.ts} +1 -1
  115. package/src/logic/temporary-connection/{TemporaryConnectionRpcServer.ts → TemporaryConnectionRpcLocal.ts} +11 -10
  116. package/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.ts → TemporaryConnectionRpcRemote.ts} +1 -1
  117. package/src/proto/packages/dht/protos/DhtRpc.ts +1 -6
  118. package/src/proto/packages/trackerless-network/protos/NetworkRpc.client.ts +8 -8
  119. package/src/proto/packages/trackerless-network/protos/NetworkRpc.server.ts +2 -2
  120. package/src/proto/packages/trackerless-network/protos/NetworkRpc.ts +14 -14
  121. package/test/benchmark/first-message.ts +10 -13
  122. package/test/end-to-end/inspect.test.ts +12 -12
  123. package/test/end-to-end/proxy-and-full-node.test.ts +13 -14
  124. package/test/end-to-end/proxy-connections.test.ts +9 -11
  125. package/test/end-to-end/proxy-key-exchange.test.ts +12 -13
  126. package/test/end-to-end/random-graph-with-real-connections.test.ts +7 -7
  127. package/test/end-to-end/webrtc-full-node-network.test.ts +8 -8
  128. package/test/end-to-end/websocket-full-node-network.test.ts +8 -10
  129. package/test/integration/{RemoteRandomGraphNode.test.ts → DeliveryRpcRemote.test.ts} +17 -14
  130. package/test/integration/{RemoteHandshaker.test.ts → HandshakeRpcRemote.test.ts} +10 -9
  131. package/test/integration/Handshakes.test.ts +23 -20
  132. package/test/integration/Inspect.test.ts +3 -2
  133. package/test/integration/{RemoteNeighborUpdateManager.test.ts → NeighborUpdateRpcRemote.test.ts} +12 -10
  134. package/test/integration/NetworkNode.test.ts +9 -8
  135. package/test/integration/NetworkRpc.test.ts +5 -7
  136. package/test/integration/NetworkStack.test.ts +13 -15
  137. package/test/integration/Propagation.test.ts +2 -2
  138. package/test/integration/RandomGraphNode-Layer1Node-Latencies.test.ts +10 -8
  139. package/test/integration/RandomGraphNode-Layer1Node.test.ts +17 -17
  140. package/test/integration/StreamrNode.test.ts +5 -3
  141. package/test/integration/joining-streams-on-offline-peers.test.ts +16 -18
  142. package/test/integration/stream-without-default-entrypoints.test.ts +11 -13
  143. package/test/unit/{StreamNodeServer.test.ts → DeliveryRpcLocal.test.ts} +8 -8
  144. package/test/unit/{StreamPartEntrypointDiscovery.test.ts → EntrypointDiscovery.test.ts} +23 -40
  145. package/test/unit/{HandshakerServer.test.ts → HandshakeRpcLocal.test.ts} +26 -24
  146. package/test/unit/Handshaker.test.ts +10 -8
  147. package/test/unit/Inspector.test.ts +4 -3
  148. package/test/unit/NeighborFinder.test.ts +5 -5
  149. package/test/unit/NodeList.test.ts +22 -13
  150. package/test/unit/{RemoteProxyServer.test.ts → ProxyConnectionRpcRemote.test.ts} +4 -4
  151. package/test/unit/RandomGraphNode.test.ts +6 -5
  152. package/test/unit/StreamMessageTranslator.test.ts +10 -9
  153. package/test/unit/StreamrNode.test.ts +8 -8
  154. package/test/utils/mock/MockLayer0.ts +7 -26
  155. package/test/utils/mock/MockLayer1.ts +3 -8
  156. package/test/utils/mock/MockNeighborFinder.ts +1 -2
  157. package/test/utils/mock/MockNeighborUpdateManager.ts +1 -2
  158. package/test/utils/mock/Transport.ts +2 -2
  159. package/test/utils/utils.ts +13 -12
  160. package/dist/src/logic/RemoteRandomGraphNode.js.map +0 -1
  161. package/dist/src/logic/StreamPartEntryPointDiscovery.js.map +0 -1
  162. package/dist/src/logic/neighbor-discovery/HandshakerServer.js.map +0 -1
  163. package/dist/src/logic/neighbor-discovery/NeighborUpdateManagerServer.js.map +0 -1
  164. package/dist/src/logic/neighbor-discovery/RemoteHandshaker.js.map +0 -1
  165. package/dist/src/logic/neighbor-discovery/RemoteNeighborUpdateManager.js.map +0 -1
  166. package/dist/src/logic/proxy/ProxyStreamConnectionClient.js.map +0 -1
  167. package/dist/src/logic/proxy/ProxyStreamConnectionServer.js.map +0 -1
  168. package/dist/src/logic/proxy/RemoteProxyServer.js.map +0 -1
  169. package/dist/src/logic/temporary-connection/RemoteTemporaryConnectionRpcServer.js.map +0 -1
  170. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcServer.js.map +0 -1
@@ -13,9 +13,9 @@ import {
13
13
  import { NodeList } from '../../src/logic/NodeList'
14
14
  import { mockConnectionLocker } from '../utils/utils'
15
15
  import { StreamPartHandshakeRequest, StreamPartHandshakeResponse } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
16
- import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
17
- import { RemoteHandshaker } from '../../src/logic/neighbor-discovery/RemoteHandshaker'
16
+ import { HandshakeRpcRemote } from '../../src/logic/neighbor-discovery/HandshakeRpcRemote'
18
17
  import { getNodeIdFromPeerDescriptor } from '../../src/identifiers'
18
+ import { StreamPartIDUtils } from '@streamr/protocol'
19
19
 
20
20
  describe('Handshakes', () => {
21
21
 
@@ -37,9 +37,9 @@ describe('Handshakes', () => {
37
37
  let nodeView: NodeList
38
38
  let targetNeighbors: NodeList
39
39
  let handshaker: Handshaker
40
- const randomGraphId = 'handshaker'
40
+ const streamPartId = StreamPartIDUtils.parse('stream#0')
41
41
 
42
- const acceptHandshake = async (request: StreamPartHandshakeRequest, _context: ServerCallContext): Promise<StreamPartHandshakeResponse> => {
42
+ const acceptHandshake = async (request: StreamPartHandshakeRequest): Promise<StreamPartHandshakeResponse> => {
43
43
  const response: StreamPartHandshakeResponse = {
44
44
  requestId: request.requestId,
45
45
  accepted: true
@@ -47,7 +47,7 @@ describe('Handshakes', () => {
47
47
  return response
48
48
  }
49
49
 
50
- const rejectHandshake = async (request: StreamPartHandshakeRequest, _context: ServerCallContext): Promise<StreamPartHandshakeResponse> => {
50
+ const rejectHandshake = async (request: StreamPartHandshakeRequest): Promise<StreamPartHandshakeResponse> => {
51
51
  const response: StreamPartHandshakeResponse = {
52
52
  requestId: request.requestId,
53
53
  accepted: false
@@ -55,7 +55,7 @@ describe('Handshakes', () => {
55
55
  return response
56
56
  }
57
57
 
58
- const interleavingHandshake = async (request: StreamPartHandshakeRequest, _context: ServerCallContext): Promise<StreamPartHandshakeResponse> => {
58
+ const interleavingHandshake = async (request: StreamPartHandshakeRequest): Promise<StreamPartHandshakeResponse> => {
59
59
  const response: StreamPartHandshakeResponse = {
60
60
  requestId: request.requestId,
61
61
  accepted: true,
@@ -69,29 +69,32 @@ describe('Handshakes', () => {
69
69
  let simulatorTransport2: SimulatorTransport
70
70
  let simulatorTransport3: SimulatorTransport
71
71
 
72
- beforeEach(() => {
72
+ beforeEach(async () => {
73
73
  Simulator.useFakeTimers()
74
74
  simulator = new Simulator()
75
75
  simulatorTransport1 = new SimulatorTransport(peerDescriptor1, simulator)
76
+ await simulatorTransport1.start()
76
77
  simulatorTransport2 = new SimulatorTransport(peerDescriptor2, simulator)
78
+ await simulatorTransport2.start()
77
79
  simulatorTransport3 = new SimulatorTransport(peerDescriptor3, simulator)
80
+ await simulatorTransport3.start()
78
81
 
79
- rpcCommunicator1 = new ListeningRpcCommunicator(randomGraphId, simulatorTransport1)
80
- rpcCommunicator2 = new ListeningRpcCommunicator(randomGraphId, simulatorTransport2)
81
- rpcCommunicator3 = new ListeningRpcCommunicator(randomGraphId, simulatorTransport3)
82
+ rpcCommunicator1 = new ListeningRpcCommunicator(streamPartId, simulatorTransport1)
83
+ rpcCommunicator2 = new ListeningRpcCommunicator(streamPartId, simulatorTransport2)
84
+ rpcCommunicator3 = new ListeningRpcCommunicator(streamPartId, simulatorTransport3)
82
85
 
83
86
  const handshakerNodeId = getNodeIdFromPeerDescriptor(peerDescriptor2)
84
87
  nodeView = new NodeList(handshakerNodeId, 10)
85
88
  targetNeighbors = new NodeList(handshakerNodeId, 4)
86
89
  handshaker = new Handshaker({
87
90
  ownPeerDescriptor: peerDescriptor2,
88
- randomGraphId,
91
+ streamPartId,
89
92
  nearbyNodeView: nodeView,
90
93
  randomNodeView: nodeView,
91
94
  targetNeighbors,
92
95
  connectionLocker: mockConnectionLocker,
93
96
  rpcCommunicator: rpcCommunicator2,
94
- N: 4
97
+ maxNeighborCount: 4
95
98
  })
96
99
 
97
100
  })
@@ -111,10 +114,10 @@ describe('Handshakes', () => {
111
114
  rpcCommunicator1.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', acceptHandshake)
112
115
  // @ts-expect-error private
113
116
  const res = await handshaker.handshakeWithTarget(
114
- new RemoteHandshaker(
117
+ new HandshakeRpcRemote(
115
118
  peerDescriptor2,
116
119
  peerDescriptor1,
117
- randomGraphId,
120
+ streamPartId,
118
121
  toProtoRpcClient(new HandshakeRpcClient(rpcCommunicator2.getRpcClientTransport()))
119
122
  )
120
123
  )
@@ -126,10 +129,10 @@ describe('Handshakes', () => {
126
129
  rpcCommunicator1.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', acceptHandshake)
127
130
  // @ts-expect-error private
128
131
  const res = await handshaker.handshakeWithTarget(
129
- new RemoteHandshaker(
132
+ new HandshakeRpcRemote(
130
133
  peerDescriptor2,
131
134
  peerDescriptor1,
132
- randomGraphId,
135
+ streamPartId,
133
136
  toProtoRpcClient(new HandshakeRpcClient(rpcCommunicator2.getRpcClientTransport()))
134
137
  )
135
138
  )
@@ -141,10 +144,10 @@ describe('Handshakes', () => {
141
144
  rpcCommunicator1.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', rejectHandshake)
142
145
  // @ts-expect-error private
143
146
  const res = await handshaker.handshakeWithTarget(
144
- new RemoteHandshaker(
147
+ new HandshakeRpcRemote(
145
148
  peerDescriptor2,
146
149
  peerDescriptor1,
147
- randomGraphId,
150
+ streamPartId,
148
151
  toProtoRpcClient(new HandshakeRpcClient(rpcCommunicator2.getRpcClientTransport()))
149
152
  )
150
153
  )
@@ -157,10 +160,10 @@ describe('Handshakes', () => {
157
160
  rpcCommunicator3.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', acceptHandshake)
158
161
  // @ts-expect-error private
159
162
  const res = await handshaker.handshakeWithTarget(
160
- new RemoteHandshaker(
163
+ new HandshakeRpcRemote(
161
164
  peerDescriptor2,
162
165
  peerDescriptor1,
163
- randomGraphId,
166
+ streamPartId,
164
167
  toProtoRpcClient(new HandshakeRpcClient(rpcCommunicator2.getRpcClientTransport()))
165
168
  )
166
169
  )
@@ -24,12 +24,13 @@ describe('inspect', () => {
24
24
  let publishInterval: NodeJS.Timeout
25
25
 
26
26
  const initiateNode = async (peerDescriptor: PeerDescriptor, simulator: Simulator): Promise<NetworkStack> => {
27
- const transportLayer = new SimulatorTransport(peerDescriptor, simulator)
27
+ const transport = new SimulatorTransport(peerDescriptor, simulator)
28
+ await transport.start()
28
29
  const node = new NetworkStack({
29
30
  layer0: {
30
31
  entryPoints: [publisherDescriptor],
31
32
  peerDescriptor,
32
- transportLayer
33
+ transport
33
34
  }
34
35
  })
35
36
  await node.start()
@@ -1,4 +1,3 @@
1
- import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
2
1
  import {
3
2
  ListeningRpcCommunicator,
4
3
  NodeType,
@@ -7,16 +6,17 @@ import {
7
6
  SimulatorTransport
8
7
  } from '@streamr/dht'
9
8
  import { toProtoRpcClient } from '@streamr/proto-rpc'
10
- import { RemoteNeighborUpdateManager } from '../../src/logic/neighbor-discovery/RemoteNeighborUpdateManager'
9
+ import { NeighborUpdateRpcRemote } from '../../src/logic/neighbor-discovery/NeighborUpdateRpcRemote'
11
10
  import { NeighborUpdate } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
12
11
  import {
13
12
  NeighborUpdateRpcClient,
14
13
  } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc.client'
14
+ import { StreamPartIDUtils } from '@streamr/protocol'
15
15
 
16
- describe('RemoteNeighborUpdateManager', () => {
16
+ describe('NeighborUpdateRpcRemote', () => {
17
17
  let mockServerRpc: ListeningRpcCommunicator
18
18
  let clientRpc: ListeningRpcCommunicator
19
- let neighborUpdateRpcClient: RemoteNeighborUpdateManager
19
+ let rpcRemote: NeighborUpdateRpcRemote
20
20
 
21
21
  const clientNode: PeerDescriptor = {
22
22
  kademliaId: new Uint8Array([1, 1, 1]),
@@ -31,10 +31,12 @@ describe('RemoteNeighborUpdateManager', () => {
31
31
  let mockConnectionManager1: SimulatorTransport
32
32
  let mockConnectionManager2: SimulatorTransport
33
33
 
34
- beforeEach(() => {
34
+ beforeEach(async () => {
35
35
  simulator = new Simulator()
36
36
  mockConnectionManager1 = new SimulatorTransport(serverNode, simulator)
37
+ await mockConnectionManager1.start()
37
38
  mockConnectionManager2 = new SimulatorTransport(clientNode, simulator)
39
+ await mockConnectionManager2.start()
38
40
 
39
41
  mockServerRpc = new ListeningRpcCommunicator('test', mockConnectionManager1)
40
42
  clientRpc = new ListeningRpcCommunicator('test', mockConnectionManager2)
@@ -43,13 +45,13 @@ describe('RemoteNeighborUpdateManager', () => {
43
45
  NeighborUpdate,
44
46
  NeighborUpdate,
45
47
  'neighborUpdate',
46
- async (_msg: NeighborUpdate, _context: ServerCallContext): Promise<NeighborUpdate> => {
48
+ async (): Promise<NeighborUpdate> => {
47
49
  const node: PeerDescriptor = {
48
50
  kademliaId: new Uint8Array([4, 2, 4]),
49
51
  type: NodeType.NODEJS
50
52
  }
51
53
  const update: NeighborUpdate = {
52
- randomGraphId: 'testStream',
54
+ streamPartId: StreamPartIDUtils.parse('stream#0'),
53
55
  neighborDescriptors: [
54
56
  node
55
57
  ],
@@ -58,10 +60,10 @@ describe('RemoteNeighborUpdateManager', () => {
58
60
  return update
59
61
  }
60
62
  )
61
- neighborUpdateRpcClient = new RemoteNeighborUpdateManager(
63
+ rpcRemote = new NeighborUpdateRpcRemote(
62
64
  clientNode,
63
65
  serverNode,
64
- 'test-stream',
66
+ 'test-stream-part',
65
67
  toProtoRpcClient(new NeighborUpdateRpcClient(clientRpc.getRpcClientTransport()))
66
68
  )
67
69
  })
@@ -75,7 +77,7 @@ describe('RemoteNeighborUpdateManager', () => {
75
77
  })
76
78
 
77
79
  it('updateNeighbors', async () => {
78
- const res = await neighborUpdateRpcClient.updateNeighbors([])
80
+ const res = await rpcRemote.updateNeighbors([])
79
81
  expect(res.peerDescriptors.length).toEqual(1)
80
82
  })
81
83
  })
@@ -1,14 +1,13 @@
1
- import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
2
1
  import { NodeType, PeerDescriptor, Simulator, SimulatorTransport } from '@streamr/dht'
3
2
  import {
4
3
  MessageID,
5
4
  MessageRef,
6
5
  StreamMessage,
7
6
  StreamMessageType,
8
- StreamPartIDUtils,
9
- toStreamID
7
+ StreamPartIDUtils
10
8
  } from '@streamr/protocol'
11
- import { EthereumAddress, waitForCondition, hexToBinary, utf8ToBinary } from '@streamr/utils'
9
+ import { EthereumAddress, hexToBinary, utf8ToBinary, waitForCondition } from '@streamr/utils'
10
+ import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
12
11
 
13
12
  const STREAM_PART_ID = StreamPartIDUtils.parse('test#0')
14
13
 
@@ -34,20 +33,22 @@ describe('NetworkNode', () => {
34
33
  Simulator.useFakeTimers()
35
34
  const simulator = new Simulator()
36
35
  transport1 = new SimulatorTransport(pd1, simulator)
36
+ await transport1.start()
37
37
  transport2 = new SimulatorTransport(pd2, simulator)
38
+ await transport2.start()
38
39
 
39
40
  node1 = createNetworkNode({
40
41
  layer0: {
41
42
  entryPoints: [pd1],
42
43
  peerDescriptor: pd1,
43
- transportLayer: transport1
44
+ transport: transport1
44
45
  }
45
46
  })
46
47
  node2 = createNetworkNode({
47
48
  layer0: {
48
49
  entryPoints: [pd1],
49
50
  peerDescriptor: pd2,
50
- transportLayer: transport2
51
+ transport: transport2
51
52
  }
52
53
  })
53
54
 
@@ -68,8 +69,8 @@ describe('NetworkNode', () => {
68
69
  it('wait for join + broadcast and subscribe', async () => {
69
70
  const streamMessage = new StreamMessage({
70
71
  messageId: new MessageID(
71
- toStreamID('test'),
72
- 0,
72
+ StreamPartIDUtils.getStreamID(STREAM_PART_ID),
73
+ StreamPartIDUtils.getStreamPartition(STREAM_PART_ID),
73
74
  666,
74
75
  0,
75
76
  '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' as EthereumAddress,
@@ -1,14 +1,12 @@
1
1
  import {
2
2
  RpcCommunicator,
3
- ProtoCallContext,
4
3
  ProtoRpcClient,
5
4
  toProtoRpcClient
6
5
  } from '@streamr/proto-rpc'
7
- import { NetworkRpcClient } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc.client'
6
+ import { DeliveryRpcClient } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc.client'
8
7
  import { StreamMessage } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
9
8
  import { waitForCondition } from '@streamr/utils'
10
9
  import { Empty } from '../../src/proto/google/protobuf/empty'
11
- import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
12
10
  import { createStreamMessage } from '../utils/utils'
13
11
  import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
14
12
  import { Simulator } from '@streamr/dht'
@@ -18,21 +16,21 @@ import { randomEthereumAddress } from '@streamr/test-utils'
18
16
  describe('Network RPC', () => {
19
17
  let rpcCommunicator1: RpcCommunicator
20
18
  let rpcCommunicator2: RpcCommunicator
21
- let client: ProtoRpcClient<NetworkRpcClient>
19
+ let client: ProtoRpcClient<DeliveryRpcClient>
22
20
  let recvCounter = 0
23
21
 
24
22
  beforeEach(() => {
25
23
  Simulator.useFakeTimers()
26
24
  rpcCommunicator1 = new RpcCommunicator()
27
25
  rpcCommunicator2 = new RpcCommunicator()
28
- rpcCommunicator1.on('outgoingMessage', (message: RpcMessage, _requestId: string, _ucallContext?: ProtoCallContext) => {
26
+ rpcCommunicator1.on('outgoingMessage', (message: RpcMessage) => {
29
27
  rpcCommunicator2.handleIncomingMessage(message)
30
28
  })
31
- client = toProtoRpcClient(new NetworkRpcClient(rpcCommunicator1.getRpcClientTransport()))
29
+ client = toProtoRpcClient(new DeliveryRpcClient(rpcCommunicator1.getRpcClientTransport()))
32
30
  rpcCommunicator2.registerRpcNotification(
33
31
  StreamMessage,
34
32
  'sendStreamMessage',
35
- async (_msg: StreamMessage, _context: ServerCallContext): Promise<Empty> => {
33
+ async (): Promise<Empty> => {
36
34
  recvCounter += 1
37
35
  return {}
38
36
  }
@@ -6,37 +6,35 @@ import { waitForCondition } from '@streamr/utils'
6
6
  import { NetworkStack } from '../../src/NetworkStack'
7
7
  import { createMockPeerDescriptor, createStreamMessage } from '../utils/utils'
8
8
 
9
+ const STREAM_PART_ID = StreamPartIDUtils.parse('stream#0')
10
+
9
11
  describe('NetworkStack', () => {
10
12
 
11
13
  let stack1: NetworkStack
12
14
  let stack2: NetworkStack
13
- const streamPartId = StreamPartIDUtils.parse('stream1#0')
14
15
 
15
16
  const epDescriptor = createMockPeerDescriptor({
16
- websocket: { host: '127.0.0.1', port: 32222, tls: false },
17
- nodeName: 'entrypoint'
17
+ websocket: { host: '127.0.0.1', port: 32222, tls: false }
18
18
  })
19
19
 
20
20
  beforeEach(async () => {
21
21
  stack1 = new NetworkStack({
22
22
  layer0: {
23
23
  peerDescriptor: epDescriptor,
24
- entryPoints: [epDescriptor],
25
- nodeName: 'entrypoint'
24
+ entryPoints: [epDescriptor]
26
25
  }
27
26
  })
28
27
  stack2 = new NetworkStack({
29
28
  layer0: {
30
29
  websocketPortRange: { min: 32223, max: 32223 },
31
- entryPoints: [epDescriptor],
32
- nodeName: 'node2'
30
+ entryPoints: [epDescriptor]
33
31
  }
34
32
  })
35
33
 
36
34
  await stack1.start()
37
- stack1.getStreamrNode()!.setStreamPartEntryPoints(streamPartId, [epDescriptor])
35
+ stack1.getStreamrNode()!.setStreamPartEntryPoints(STREAM_PART_ID, [epDescriptor])
38
36
  await stack2.start()
39
- stack2.getStreamrNode()!.setStreamPartEntryPoints(streamPartId, [epDescriptor])
37
+ stack2.getStreamrNode()!.setStreamPartEntryPoints(STREAM_PART_ID, [epDescriptor])
40
38
  })
41
39
 
42
40
  afterEach(async () => {
@@ -48,13 +46,13 @@ describe('NetworkStack', () => {
48
46
 
49
47
  it('Can use NetworkNode pub/sub via NetworkStack', async () => {
50
48
  let receivedMessages = 0
51
- stack1.getStreamrNode().joinStreamPart(streamPartId)
49
+ stack1.getStreamrNode().joinStreamPart(STREAM_PART_ID)
52
50
  stack1.getStreamrNode().on('newMessage', () => {
53
51
  receivedMessages += 1
54
52
  })
55
53
  const msg = createStreamMessage(
56
54
  JSON.stringify({ hello: 'WORLD' }),
57
- streamPartId,
55
+ STREAM_PART_ID,
58
56
  randomEthereumAddress()
59
57
  )
60
58
  stack2.getStreamrNode().broadcast(msg)
@@ -63,10 +61,10 @@ describe('NetworkStack', () => {
63
61
 
64
62
  it('join and wait for neighbors', async () => {
65
63
  await Promise.all([
66
- stack1.joinStreamPart(streamPartId, { minCount: 1, timeout: 5000 }),
67
- stack2.joinStreamPart(streamPartId, { minCount: 1, timeout: 5000 }),
64
+ stack1.joinStreamPart(STREAM_PART_ID, { minCount: 1, timeout: 5000 }),
65
+ stack2.joinStreamPart(STREAM_PART_ID, { minCount: 1, timeout: 5000 }),
68
66
  ])
69
- expect(stack1.getStreamrNode().getNeighbors(streamPartId).length).toBe(1)
70
- expect(stack2.getStreamrNode().getNeighbors(streamPartId).length).toBe(1)
67
+ expect(stack1.getStreamrNode().getNeighbors(STREAM_PART_ID).length).toBe(1)
68
+ expect(stack2.getStreamrNode().getNeighbors(STREAM_PART_ID).length).toBe(1)
71
69
  })
72
70
  })
@@ -19,7 +19,7 @@ describe('Propagation', () => {
19
19
  const simulator = new Simulator()
20
20
  dhtNodes = []
21
21
  randomGraphNodes = []
22
- const [entryPoint, node1] = createMockRandomGraphNodeAndDhtNode(entryPointDescriptor, entryPointDescriptor, STREAM_PART_ID, simulator)
22
+ const [entryPoint, node1] = await createMockRandomGraphNodeAndDhtNode(entryPointDescriptor, entryPointDescriptor, STREAM_PART_ID, simulator)
23
23
  await entryPoint.start()
24
24
  await entryPoint.joinDht([entryPointDescriptor])
25
25
  await node1.start()
@@ -29,7 +29,7 @@ describe('Propagation', () => {
29
29
 
30
30
  await Promise.all(range(NUM_OF_NODES).map(async (_i) => {
31
31
  const descriptor = createMockPeerDescriptor()
32
- const [dht, graph] = createMockRandomGraphNodeAndDhtNode(
32
+ const [dht, graph] = await createMockRandomGraphNodeAndDhtNode(
33
33
  descriptor,
34
34
  entryPointDescriptor,
35
35
  STREAM_PART_ID,
@@ -24,26 +24,28 @@ describe('RandomGraphNode-DhtNode-Latencies', () => {
24
24
  const cms: SimulatorTransport[] = range(numOfNodes).map((i) =>
25
25
  new SimulatorTransport(peerDescriptors[i], simulator)
26
26
  )
27
+ await entrypointCm.start()
28
+ await Promise.all(cms.map((cm) => cm.start()))
27
29
 
28
30
  dhtEntryPoint = new DhtNode({
29
- transportLayer: entrypointCm,
31
+ transport: entrypointCm,
30
32
  peerDescriptor: entrypointDescriptor,
31
33
  serviceId: streamPartId
32
34
  })
33
35
  dhtNodes = range(numOfNodes).map((i) => new DhtNode({
34
- transportLayer: cms[i],
36
+ transport: cms[i],
35
37
  peerDescriptor: peerDescriptors[i],
36
38
  serviceId: streamPartId
37
39
  }))
38
40
  graphNodes = range(numOfNodes).map((i) => createRandomGraphNode({
39
- randomGraphId: streamPartId,
41
+ streamPartId,
40
42
  layer1: dhtNodes[i],
41
43
  P2PTransport: cms[i],
42
44
  connectionLocker: cms[i],
43
45
  ownPeerDescriptor: peerDescriptors[i]
44
46
  }))
45
47
  entryPointRandomGraphNode = createRandomGraphNode({
46
- randomGraphId: streamPartId,
48
+ streamPartId,
47
49
  layer1: dhtEntryPoint,
48
50
  P2PTransport: entrypointCm,
49
51
  connectionLocker: entrypointCm,
@@ -77,23 +79,23 @@ describe('RandomGraphNode-DhtNode-Latencies', () => {
77
79
 
78
80
  it('happy path 5 nodes', async () => {
79
81
  entryPointRandomGraphNode.start()
80
- range(4).map((i) => graphNodes[i].start())
82
+ range(4).forEach((i) => graphNodes[i].start())
81
83
  await Promise.all(range(4).map(async (i) => {
82
84
  await dhtNodes[i].joinDht([entrypointDescriptor])
83
85
  }))
84
86
  await Promise.all(range(4).map((i) => {
85
87
  return waitForCondition(() => {
86
88
  return graphNodes[i].getTargetNeighborIds().length >= 4
87
- }, 10000, 2000)
89
+ }, 15000, 2000)
88
90
  }))
89
- range(4).map((i) => {
91
+ range(4).forEach((i) => {
90
92
  expect(graphNodes[i].getNearbyNodeView().getIds().length).toBeGreaterThanOrEqual(4)
91
93
  expect(graphNodes[i].getTargetNeighborIds().length).toBeGreaterThanOrEqual(4)
92
94
  })
93
95
  // Check bidirectionality
94
96
  const allNodes = graphNodes
95
97
  allNodes.push(entryPointRandomGraphNode)
96
- range(5).map((i) => {
98
+ range(5).forEach((i) => {
97
99
  const ownNodeId = allNodes[i].getOwnNodeId()
98
100
  allNodes[i].getNearbyNodeView().getIds().forEach((nodeId) => {
99
101
  const neighbor = allNodes.find((node) => {
@@ -1,4 +1,4 @@
1
- import { ConnectionManager, DhtNode, PeerDescriptor, Simulator, getRandomRegion } from '@streamr/dht'
1
+ import { ConnectionManager, DhtNode, PeerDescriptor, Simulator, SimulatorTransport, getRandomRegion } from '@streamr/dht'
2
2
  import { Logger, waitForCondition } from '@streamr/utils'
3
3
  import { range } from 'lodash'
4
4
  import { RandomGraphNode } from '../../src/logic/RandomGraphNode'
@@ -17,13 +17,11 @@ describe('RandomGraphNode-DhtNode', () => {
17
17
 
18
18
  const streamPartId = StreamPartIDUtils.parse('stream#0')
19
19
  const entrypointDescriptor = createMockPeerDescriptor({
20
- nodeName: 'entrypoint',
21
20
  region: getRandomRegion()
22
21
  })
23
22
 
24
- const peerDescriptors: PeerDescriptor[] = range(numOfNodes).map((i) => {
23
+ const peerDescriptors: PeerDescriptor[] = range(numOfNodes).map(() => {
25
24
  return createMockPeerDescriptor({
26
- nodeName: `node${i}`,
27
25
  region: getRandomRegion()
28
26
  })
29
27
  })
@@ -31,32 +29,34 @@ describe('RandomGraphNode-DhtNode', () => {
31
29
 
32
30
  Simulator.useFakeTimers()
33
31
  const simulator = new Simulator()
34
- const entrypointCm = new ConnectionManager({
35
- ownPeerDescriptor: entrypointDescriptor,
32
+ const entrypointCm = new SimulatorTransport(
33
+ entrypointDescriptor,
36
34
  simulator
37
- })
35
+ )
36
+ await entrypointCm.start()
38
37
 
39
38
  const cms: ConnectionManager[] = range(numOfNodes).map((i) =>
40
- new ConnectionManager({
41
- ownPeerDescriptor: peerDescriptors[i],
39
+ new SimulatorTransport(
40
+ peerDescriptors[i],
42
41
  simulator
43
- })
42
+ )
44
43
  )
44
+ await Promise.all(cms.map((cm) => cm.start()))
45
45
 
46
46
  dhtEntryPoint = new DhtNode({
47
- transportLayer: entrypointCm,
47
+ transport: entrypointCm,
48
48
  peerDescriptor: entrypointDescriptor,
49
49
  serviceId: streamPartId
50
50
  })
51
51
 
52
52
  dhtNodes = range(numOfNodes).map((i) => new DhtNode({
53
- transportLayer: cms[i],
53
+ transport: cms[i],
54
54
  peerDescriptor: peerDescriptors[i],
55
55
  serviceId: streamPartId
56
56
  }))
57
57
 
58
58
  graphNodes = range(numOfNodes).map((i) => createRandomGraphNode({
59
- randomGraphId: streamPartId,
59
+ streamPartId,
60
60
  layer1: dhtNodes[i],
61
61
  P2PTransport: cms[i],
62
62
  connectionLocker: cms[i],
@@ -65,7 +65,7 @@ describe('RandomGraphNode-DhtNode', () => {
65
65
  }))
66
66
 
67
67
  entryPointRandomGraphNode = createRandomGraphNode({
68
- randomGraphId: streamPartId,
68
+ streamPartId,
69
69
  layer1: dhtEntryPoint,
70
70
  P2PTransport: entrypointCm,
71
71
  connectionLocker: entrypointCm,
@@ -99,13 +99,13 @@ describe('RandomGraphNode-DhtNode', () => {
99
99
 
100
100
  it('happy path 4 nodes', async () => {
101
101
  entryPointRandomGraphNode.start()
102
- range(4).map((i) => graphNodes[i].start())
102
+ range(4).forEach((i) => graphNodes[i].start())
103
103
  await Promise.all(range(4).map(async (i) => {
104
104
  await dhtNodes[i].joinDht([entrypointDescriptor])
105
105
  }))
106
106
 
107
107
  await waitForCondition(() => range(4).every((i) => graphNodes[i].getTargetNeighborIds().length === 4))
108
- range(4).map((i) => {
108
+ range(4).forEach((i) => {
109
109
  expect(graphNodes[i].getNearbyNodeView().getIds().length).toBeGreaterThanOrEqual(4)
110
110
  expect(graphNodes[i].getTargetNeighborIds().length).toBeGreaterThanOrEqual(4)
111
111
  })
@@ -113,7 +113,7 @@ describe('RandomGraphNode-DhtNode', () => {
113
113
  // Check bidirectionality
114
114
  const allNodes = graphNodes
115
115
  allNodes.push(entryPointRandomGraphNode)
116
- range(5).map((i) => {
116
+ range(5).forEach((i) => {
117
117
  allNodes[i].getNearbyNodeView().getIds().forEach((nodeId) => {
118
118
  const neighbor = allNodes.find((node) => {
119
119
  return node.getOwnNodeId() === nodeId
@@ -46,14 +46,16 @@ describe('StreamrNode', () => {
46
46
  beforeEach(async () => {
47
47
  const simulator = new Simulator()
48
48
  transport1 = new SimulatorTransport(peerDescriptor1, simulator)
49
+ await transport1.start()
49
50
  transport2 = new SimulatorTransport(peerDescriptor2, simulator)
51
+ await transport2.start()
50
52
  layer01 = new DhtNode({
51
- transportLayer: transport1,
53
+ transport: transport1,
52
54
  peerDescriptor: peerDescriptor1,
53
55
  entryPoints: [peerDescriptor1]
54
56
  })
55
57
  layer02 = new DhtNode({
56
- transportLayer: transport2,
58
+ transport: transport2,
57
59
  peerDescriptor: peerDescriptor2,
58
60
  entryPoints: [peerDescriptor1]
59
61
  })
@@ -126,7 +128,7 @@ describe('StreamrNode', () => {
126
128
  ])
127
129
  })
128
130
 
129
- it('leaving streams', async () => {
131
+ it('leaving stream parts', async () => {
130
132
  node1.joinStreamPart(STREAM_PART_ID)
131
133
  node2.joinStreamPart(STREAM_PART_ID)
132
134
  await Promise.all([