@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.
- package/dist/package.json +10 -8
- package/dist/src/NetworkNode.js +1 -1
- package/dist/src/NetworkNode.js.map +1 -1
- package/dist/src/NetworkStack.d.ts +1 -3
- package/dist/src/NetworkStack.js +18 -47
- package/dist/src/NetworkStack.js.map +1 -1
- package/dist/src/identifiers.js +2 -2
- package/dist/src/identifiers.js.map +1 -1
- package/dist/src/logic/{StreamNodeServer.d.ts → DeliveryRpcLocal.d.ts} +6 -5
- package/dist/src/logic/{StreamNodeServer.js → DeliveryRpcLocal.js} +5 -5
- package/dist/src/logic/{StreamNodeServer.js.map → DeliveryRpcLocal.js.map} +1 -1
- package/dist/src/logic/{RemoteRandomGraphNode.d.ts → DeliveryRpcRemote.d.ts} +2 -2
- package/dist/src/logic/{RemoteRandomGraphNode.js → DeliveryRpcRemote.js} +5 -5
- package/dist/src/logic/DeliveryRpcRemote.js.map +1 -0
- package/dist/src/logic/{StreamPartEntryPointDiscovery.d.ts → EntryPointDiscovery.d.ts} +8 -10
- package/dist/src/logic/{StreamPartEntryPointDiscovery.js → EntryPointDiscovery.js} +14 -36
- package/dist/src/logic/EntryPointDiscovery.js.map +1 -0
- package/dist/src/logic/ILayer0.d.ts +3 -6
- package/dist/src/logic/NodeList.d.ts +10 -10
- package/dist/src/logic/NodeList.js.map +1 -1
- package/dist/src/logic/RandomGraphNode.d.ts +8 -12
- package/dist/src/logic/RandomGraphNode.js +41 -40
- package/dist/src/logic/RandomGraphNode.js.map +1 -1
- package/dist/src/logic/StreamrNode.d.ts +9 -12
- package/dist/src/logic/StreamrNode.js +53 -63
- package/dist/src/logic/StreamrNode.js.map +1 -1
- package/dist/src/logic/createRandomGraphNode.d.ts +6 -1
- package/dist/src/logic/createRandomGraphNode.js +17 -23
- package/dist/src/logic/createRandomGraphNode.js.map +1 -1
- package/dist/src/logic/formStreamPartDeliveryServiceId.d.ts +2 -0
- package/dist/src/logic/formStreamPartDeliveryServiceId.js +8 -0
- package/dist/src/logic/formStreamPartDeliveryServiceId.js.map +1 -0
- package/dist/src/logic/inspect/Inspector.d.ts +3 -2
- package/dist/src/logic/inspect/Inspector.js +5 -5
- package/dist/src/logic/inspect/Inspector.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/{HandshakerServer.d.ts → HandshakeRpcLocal.d.ts} +10 -10
- package/dist/src/logic/neighbor-discovery/{HandshakerServer.js → HandshakeRpcLocal.js} +13 -13
- package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js.map +1 -0
- package/dist/src/logic/neighbor-discovery/{RemoteHandshaker.d.ts → HandshakeRpcRemote.d.ts} +1 -1
- package/dist/src/logic/neighbor-discovery/{RemoteHandshaker.js → HandshakeRpcRemote.js} +8 -7
- package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js.map +1 -0
- package/dist/src/logic/neighbor-discovery/Handshaker.d.ts +8 -7
- package/dist/src/logic/neighbor-discovery/Handshaker.js +23 -24
- package/dist/src/logic/neighbor-discovery/Handshaker.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborFinder.d.ts +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborFinder.js +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborFinder.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.d.ts +3 -2
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js +5 -5
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.d.ts → NeighborUpdateRpcLocal.d.ts} +6 -6
- package/dist/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.js → NeighborUpdateRpcLocal.js} +9 -9
- package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js.map +1 -0
- package/dist/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.d.ts → NeighborUpdateRpcRemote.d.ts} +1 -1
- package/dist/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.js → NeighborUpdateRpcRemote.js} +5 -5
- package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js.map +1 -0
- package/dist/src/logic/propagation/Propagation.js +2 -2
- package/dist/src/logic/propagation/Propagation.js.map +1 -1
- package/dist/src/logic/proxy/{ProxyStreamConnectionClient.d.ts → ProxyClient.d.ts} +6 -9
- package/dist/src/logic/proxy/{ProxyStreamConnectionClient.js → ProxyClient.js} +23 -21
- package/dist/src/logic/proxy/ProxyClient.js.map +1 -0
- package/dist/src/logic/proxy/{ProxyStreamConnectionServer.d.ts → ProxyConnectionRpcLocal.d.ts} +5 -5
- package/dist/src/logic/proxy/{ProxyStreamConnectionServer.js → ProxyConnectionRpcLocal.js} +6 -6
- package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js.map +1 -0
- package/dist/src/logic/proxy/{RemoteProxyServer.d.ts → ProxyConnectionRpcRemote.d.ts} +1 -1
- package/dist/src/logic/proxy/{RemoteProxyServer.js → ProxyConnectionRpcRemote.js} +4 -4
- package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js.map +1 -0
- package/dist/src/logic/temporary-connection/{TemporaryConnectionRpcServer.d.ts → TemporaryConnectionRpcLocal.d.ts} +5 -4
- package/dist/src/logic/temporary-connection/{TemporaryConnectionRpcServer.js → TemporaryConnectionRpcLocal.js} +6 -6
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js.map +1 -0
- package/dist/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.d.ts → TemporaryConnectionRpcRemote.d.ts} +1 -1
- package/dist/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.js → TemporaryConnectionRpcRemote.js} +4 -4
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js.map +1 -0
- package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +0 -4
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +1 -2
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.d.ts +4 -4
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js +7 -7
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js.map +1 -1
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.d.ts +10 -10
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js +7 -7
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js.map +1 -1
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.server.d.ts +2 -2
- package/dist/test/benchmark/first-message.js +10 -13
- package/dist/test/benchmark/first-message.js.map +1 -1
- package/dist/test/utils/utils.d.ts +5 -5
- package/dist/test/utils/utils.js +14 -13
- package/dist/test/utils/utils.js.map +1 -1
- package/package.json +10 -8
- package/protos/NetworkRpc.proto +5 -5
- package/src/NetworkNode.ts +1 -1
- package/src/NetworkStack.ts +20 -62
- package/src/identifiers.ts +3 -3
- package/src/logic/{StreamNodeServer.ts → DeliveryRpcLocal.ts} +8 -7
- package/src/logic/{RemoteRandomGraphNode.ts → DeliveryRpcRemote.ts} +3 -3
- package/src/logic/{StreamPartEntryPointDiscovery.ts → EntryPointDiscovery.ts} +18 -42
- package/src/logic/ILayer0.ts +3 -6
- package/src/logic/NodeList.ts +12 -12
- package/src/logic/RandomGraphNode.ts +61 -62
- package/src/logic/StreamrNode.ts +59 -73
- package/src/logic/createRandomGraphNode.ts +28 -26
- package/src/logic/formStreamPartDeliveryServiceId.ts +5 -0
- package/src/logic/inspect/Inspector.ts +8 -7
- package/src/logic/neighbor-discovery/{HandshakerServer.ts → HandshakeRpcLocal.ts} +20 -20
- package/src/logic/neighbor-discovery/{RemoteHandshaker.ts → HandshakeRpcRemote.ts} +6 -5
- package/src/logic/neighbor-discovery/Handshaker.ts +38 -38
- package/src/logic/neighbor-discovery/NeighborFinder.ts +2 -2
- package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +13 -10
- package/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.ts → NeighborUpdateRpcLocal.ts} +15 -15
- package/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.ts → NeighborUpdateRpcRemote.ts} +2 -2
- package/src/logic/propagation/Propagation.ts +2 -2
- package/src/logic/proxy/{ProxyStreamConnectionClient.ts → ProxyClient.ts} +27 -27
- package/src/logic/proxy/{ProxyStreamConnectionServer.ts → ProxyConnectionRpcLocal.ts} +10 -11
- package/src/logic/proxy/{RemoteProxyServer.ts → ProxyConnectionRpcRemote.ts} +1 -1
- package/src/logic/temporary-connection/{TemporaryConnectionRpcServer.ts → TemporaryConnectionRpcLocal.ts} +11 -10
- package/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.ts → TemporaryConnectionRpcRemote.ts} +1 -1
- package/src/proto/packages/dht/protos/DhtRpc.ts +1 -6
- package/src/proto/packages/trackerless-network/protos/NetworkRpc.client.ts +8 -8
- package/src/proto/packages/trackerless-network/protos/NetworkRpc.server.ts +2 -2
- package/src/proto/packages/trackerless-network/protos/NetworkRpc.ts +14 -14
- package/test/benchmark/first-message.ts +10 -13
- package/test/end-to-end/inspect.test.ts +12 -12
- package/test/end-to-end/proxy-and-full-node.test.ts +13 -14
- package/test/end-to-end/proxy-connections.test.ts +9 -11
- package/test/end-to-end/proxy-key-exchange.test.ts +12 -13
- package/test/end-to-end/random-graph-with-real-connections.test.ts +7 -7
- package/test/end-to-end/webrtc-full-node-network.test.ts +8 -8
- package/test/end-to-end/websocket-full-node-network.test.ts +8 -10
- package/test/integration/{RemoteRandomGraphNode.test.ts → DeliveryRpcRemote.test.ts} +17 -14
- package/test/integration/{RemoteHandshaker.test.ts → HandshakeRpcRemote.test.ts} +10 -9
- package/test/integration/Handshakes.test.ts +23 -20
- package/test/integration/Inspect.test.ts +3 -2
- package/test/integration/{RemoteNeighborUpdateManager.test.ts → NeighborUpdateRpcRemote.test.ts} +12 -10
- package/test/integration/NetworkNode.test.ts +9 -8
- package/test/integration/NetworkRpc.test.ts +5 -7
- package/test/integration/NetworkStack.test.ts +13 -15
- package/test/integration/Propagation.test.ts +2 -2
- package/test/integration/RandomGraphNode-Layer1Node-Latencies.test.ts +10 -8
- package/test/integration/RandomGraphNode-Layer1Node.test.ts +17 -17
- package/test/integration/StreamrNode.test.ts +5 -3
- package/test/integration/joining-streams-on-offline-peers.test.ts +16 -18
- package/test/integration/stream-without-default-entrypoints.test.ts +11 -13
- package/test/unit/{StreamNodeServer.test.ts → DeliveryRpcLocal.test.ts} +8 -8
- package/test/unit/{StreamPartEntrypointDiscovery.test.ts → EntrypointDiscovery.test.ts} +23 -40
- package/test/unit/{HandshakerServer.test.ts → HandshakeRpcLocal.test.ts} +26 -24
- package/test/unit/Handshaker.test.ts +10 -8
- package/test/unit/Inspector.test.ts +4 -3
- package/test/unit/NeighborFinder.test.ts +5 -5
- package/test/unit/NodeList.test.ts +22 -13
- package/test/unit/{RemoteProxyServer.test.ts → ProxyConnectionRpcRemote.test.ts} +4 -4
- package/test/unit/RandomGraphNode.test.ts +6 -5
- package/test/unit/StreamMessageTranslator.test.ts +10 -9
- package/test/unit/StreamrNode.test.ts +8 -8
- package/test/utils/mock/MockLayer0.ts +7 -26
- package/test/utils/mock/MockLayer1.ts +3 -8
- package/test/utils/mock/MockNeighborFinder.ts +1 -2
- package/test/utils/mock/MockNeighborUpdateManager.ts +1 -2
- package/test/utils/mock/Transport.ts +2 -2
- package/test/utils/utils.ts +13 -12
- package/dist/src/logic/RemoteRandomGraphNode.js.map +0 -1
- package/dist/src/logic/StreamPartEntryPointDiscovery.js.map +0 -1
- package/dist/src/logic/neighbor-discovery/HandshakerServer.js.map +0 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManagerServer.js.map +0 -1
- package/dist/src/logic/neighbor-discovery/RemoteHandshaker.js.map +0 -1
- package/dist/src/logic/neighbor-discovery/RemoteNeighborUpdateManager.js.map +0 -1
- package/dist/src/logic/proxy/ProxyStreamConnectionClient.js.map +0 -1
- package/dist/src/logic/proxy/ProxyStreamConnectionServer.js.map +0 -1
- package/dist/src/logic/proxy/RemoteProxyServer.js.map +0 -1
- package/dist/src/logic/temporary-connection/RemoteTemporaryConnectionRpcServer.js.map +0 -1
- 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 {
|
|
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
|
|
40
|
+
const streamPartId = StreamPartIDUtils.parse('stream#0')
|
|
41
41
|
|
|
42
|
-
const acceptHandshake = async (request: StreamPartHandshakeRequest
|
|
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
|
|
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
|
|
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(
|
|
80
|
-
rpcCommunicator2 = new ListeningRpcCommunicator(
|
|
81
|
-
rpcCommunicator3 = new ListeningRpcCommunicator(
|
|
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
|
-
|
|
91
|
+
streamPartId,
|
|
89
92
|
nearbyNodeView: nodeView,
|
|
90
93
|
randomNodeView: nodeView,
|
|
91
94
|
targetNeighbors,
|
|
92
95
|
connectionLocker: mockConnectionLocker,
|
|
93
96
|
rpcCommunicator: rpcCommunicator2,
|
|
94
|
-
|
|
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
|
|
117
|
+
new HandshakeRpcRemote(
|
|
115
118
|
peerDescriptor2,
|
|
116
119
|
peerDescriptor1,
|
|
117
|
-
|
|
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
|
|
132
|
+
new HandshakeRpcRemote(
|
|
130
133
|
peerDescriptor2,
|
|
131
134
|
peerDescriptor1,
|
|
132
|
-
|
|
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
|
|
147
|
+
new HandshakeRpcRemote(
|
|
145
148
|
peerDescriptor2,
|
|
146
149
|
peerDescriptor1,
|
|
147
|
-
|
|
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
|
|
163
|
+
new HandshakeRpcRemote(
|
|
161
164
|
peerDescriptor2,
|
|
162
165
|
peerDescriptor1,
|
|
163
|
-
|
|
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
|
|
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
|
-
|
|
33
|
+
transport
|
|
33
34
|
}
|
|
34
35
|
})
|
|
35
36
|
await node.start()
|
package/test/integration/{RemoteNeighborUpdateManager.test.ts → NeighborUpdateRpcRemote.test.ts}
RENAMED
|
@@ -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 {
|
|
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('
|
|
16
|
+
describe('NeighborUpdateRpcRemote', () => {
|
|
17
17
|
let mockServerRpc: ListeningRpcCommunicator
|
|
18
18
|
let clientRpc: ListeningRpcCommunicator
|
|
19
|
-
let
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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,
|
|
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
|
-
|
|
44
|
+
transport: transport1
|
|
44
45
|
}
|
|
45
46
|
})
|
|
46
47
|
node2 = createNetworkNode({
|
|
47
48
|
layer0: {
|
|
48
49
|
entryPoints: [pd1],
|
|
49
50
|
peerDescriptor: pd2,
|
|
50
|
-
|
|
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
|
-
|
|
72
|
-
|
|
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 {
|
|
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<
|
|
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
|
|
26
|
+
rpcCommunicator1.on('outgoingMessage', (message: RpcMessage) => {
|
|
29
27
|
rpcCommunicator2.handleIncomingMessage(message)
|
|
30
28
|
})
|
|
31
|
-
client = toProtoRpcClient(new
|
|
29
|
+
client = toProtoRpcClient(new DeliveryRpcClient(rpcCommunicator1.getRpcClientTransport()))
|
|
32
30
|
rpcCommunicator2.registerRpcNotification(
|
|
33
31
|
StreamMessage,
|
|
34
32
|
'sendStreamMessage',
|
|
35
|
-
async (
|
|
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(
|
|
35
|
+
stack1.getStreamrNode()!.setStreamPartEntryPoints(STREAM_PART_ID, [epDescriptor])
|
|
38
36
|
await stack2.start()
|
|
39
|
-
stack2.getStreamrNode()!.setStreamPartEntryPoints(
|
|
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(
|
|
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
|
-
|
|
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(
|
|
67
|
-
stack2.joinStreamPart(
|
|
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(
|
|
70
|
-
expect(stack2.getStreamrNode().getNeighbors(
|
|
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
|
-
|
|
31
|
+
transport: entrypointCm,
|
|
30
32
|
peerDescriptor: entrypointDescriptor,
|
|
31
33
|
serviceId: streamPartId
|
|
32
34
|
})
|
|
33
35
|
dhtNodes = range(numOfNodes).map((i) => new DhtNode({
|
|
34
|
-
|
|
36
|
+
transport: cms[i],
|
|
35
37
|
peerDescriptor: peerDescriptors[i],
|
|
36
38
|
serviceId: streamPartId
|
|
37
39
|
}))
|
|
38
40
|
graphNodes = range(numOfNodes).map((i) => createRandomGraphNode({
|
|
39
|
-
|
|
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
|
-
|
|
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).
|
|
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
|
-
},
|
|
89
|
+
}, 15000, 2000)
|
|
88
90
|
}))
|
|
89
|
-
range(4).
|
|
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).
|
|
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((
|
|
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
|
|
35
|
-
|
|
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
|
|
41
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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).
|
|
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).
|
|
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).
|
|
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
|
-
|
|
53
|
+
transport: transport1,
|
|
52
54
|
peerDescriptor: peerDescriptor1,
|
|
53
55
|
entryPoints: [peerDescriptor1]
|
|
54
56
|
})
|
|
55
57
|
layer02 = new DhtNode({
|
|
56
|
-
|
|
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
|
|
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([
|