@streamr/trackerless-network 0.0.1-tatum.5 → 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/EntryPointDiscovery.d.ts +35 -0
- package/dist/src/logic/EntryPointDiscovery.js +145 -0
- package/dist/src/logic/EntryPointDiscovery.js.map +1 -0
- package/dist/src/logic/ILayer0.d.ts +3 -6
- package/dist/src/logic/ILayer1.d.ts +2 -2
- package/dist/src/logic/NodeList.d.ts +10 -10
- package/dist/src/logic/NodeList.js +2 -2
- package/dist/src/logic/NodeList.js.map +1 -1
- package/dist/src/logic/RandomGraphNode.d.ts +8 -12
- package/dist/src/logic/RandomGraphNode.js +47 -46
- package/dist/src/logic/RandomGraphNode.js.map +1 -1
- package/dist/src/logic/StreamrNode.d.ts +9 -11
- package/dist/src/logic/StreamrNode.js +72 -75
- 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 +5 -5
- 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 +7 -7
- 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} +11 -11
- 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} +8 -12
- package/dist/src/logic/proxy/{ProxyStreamConnectionClient.js → ProxyClient.js} +28 -29
- package/dist/src/logic/proxy/ProxyClient.js.map +1 -0
- package/dist/src/logic/proxy/{ProxyStreamConnectionServer.d.ts → ProxyConnectionRpcLocal.d.ts} +5 -7
- package/dist/src/logic/proxy/{ProxyStreamConnectionServer.js → ProxyConnectionRpcLocal.js} +6 -12
- 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 -14
- 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/EntryPointDiscovery.ts +181 -0
- package/src/logic/ILayer0.ts +3 -6
- package/src/logic/ILayer1.ts +2 -5
- package/src/logic/NodeList.ts +12 -12
- package/src/logic/RandomGraphNode.ts +67 -69
- package/src/logic/StreamrNode.ts +78 -90
- 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 +6 -6
- package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +15 -12
- package/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.ts → NeighborUpdateRpcLocal.ts} +17 -17
- 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} +33 -37
- package/src/logic/proxy/{ProxyStreamConnectionServer.ts → ProxyConnectionRpcLocal.ts} +10 -19
- 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 +10 -12
- 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/EntrypointDiscovery.test.ts +132 -0
- 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 +12 -11
- 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 +6 -13
- 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 -13
- package/dist/src/logic/RemoteRandomGraphNode.js.map +0 -1
- package/dist/src/logic/StreamPartEntryPointDiscovery.d.ts +0 -39
- package/dist/src/logic/StreamPartEntryPointDiscovery.js +0 -194
- 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
- package/src/logic/StreamPartEntryPointDiscovery.ts +0 -240
- package/test/unit/StreamPartEntrypointDiscovery.test.ts +0 -164
|
@@ -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([
|
|
@@ -1,42 +1,38 @@
|
|
|
1
1
|
import { NodeType, PeerDescriptor, Simulator, SimulatorTransport, LatencyType } from '@streamr/dht'
|
|
2
2
|
import { NetworkStack } from '../../src/NetworkStack'
|
|
3
|
-
import { streamPartIdToDataKey } from '../../src/logic/
|
|
3
|
+
import { streamPartIdToDataKey } from '../../src/logic/EntryPointDiscovery'
|
|
4
4
|
import { StreamPartIDUtils } from '@streamr/protocol'
|
|
5
5
|
import { Any } from '../../src/proto/google/protobuf/any'
|
|
6
6
|
import { createStreamMessage } from '../utils/utils'
|
|
7
7
|
import { waitForCondition } from '@streamr/utils'
|
|
8
8
|
import { randomEthereumAddress } from '@streamr/test-utils'
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
const STREAM_PART_ID = StreamPartIDUtils.parse('stream#0')
|
|
11
|
+
|
|
12
|
+
describe('Joining stream parts on offline nodes', () => {
|
|
12
13
|
|
|
13
14
|
const entryPointPeerDescriptor: PeerDescriptor = {
|
|
14
15
|
kademliaId: new Uint8Array([1, 2, 3]),
|
|
15
|
-
nodeName: 'entrypoint',
|
|
16
16
|
type: NodeType.NODEJS
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
const node1PeerDescriptor: PeerDescriptor = {
|
|
20
20
|
kademliaId: new Uint8Array([1, 1, 1]),
|
|
21
|
-
nodeName: 'node1',
|
|
22
21
|
type: NodeType.NODEJS
|
|
23
22
|
}
|
|
24
23
|
|
|
25
24
|
const node2PeerDescriptor: PeerDescriptor = {
|
|
26
25
|
kademliaId: new Uint8Array([2, 2, 2]),
|
|
27
|
-
nodeName: 'node2',
|
|
28
26
|
type: NodeType.NODEJS
|
|
29
27
|
}
|
|
30
28
|
|
|
31
29
|
const offlineDescriptor1: PeerDescriptor = {
|
|
32
30
|
kademliaId: new Uint8Array([3, 3, 3]),
|
|
33
|
-
nodeName: 'offline',
|
|
34
31
|
type: NodeType.NODEJS
|
|
35
32
|
}
|
|
36
33
|
|
|
37
34
|
const offlineDescriptor2: PeerDescriptor = {
|
|
38
35
|
kademliaId: new Uint8Array([4, 4, 4]),
|
|
39
|
-
nodeName: 'offline',
|
|
40
36
|
type: NodeType.NODEJS
|
|
41
37
|
}
|
|
42
38
|
|
|
@@ -50,28 +46,30 @@ describe('Joining streams on offline nodes', () => {
|
|
|
50
46
|
const entryPointTransport = new SimulatorTransport(entryPointPeerDescriptor, simulator)
|
|
51
47
|
entryPoint = new NetworkStack({
|
|
52
48
|
layer0: {
|
|
53
|
-
|
|
49
|
+
transport: entryPointTransport,
|
|
54
50
|
peerDescriptor: entryPointPeerDescriptor,
|
|
55
51
|
entryPoints: [entryPointPeerDescriptor]
|
|
56
52
|
}
|
|
57
53
|
})
|
|
58
|
-
|
|
54
|
+
const node1Transport = new SimulatorTransport(node1PeerDescriptor, simulator)
|
|
59
55
|
node1 = new NetworkStack({
|
|
60
56
|
layer0: {
|
|
61
|
-
|
|
57
|
+
transport: node1Transport,
|
|
62
58
|
peerDescriptor: node1PeerDescriptor,
|
|
63
59
|
entryPoints: [entryPointPeerDescriptor]
|
|
64
60
|
}
|
|
65
61
|
})
|
|
66
|
-
|
|
62
|
+
const node2Transport = new SimulatorTransport(node2PeerDescriptor, simulator)
|
|
67
63
|
node2 = new NetworkStack({
|
|
68
64
|
layer0: {
|
|
69
|
-
|
|
65
|
+
transport: node2Transport,
|
|
70
66
|
peerDescriptor: node2PeerDescriptor,
|
|
71
67
|
entryPoints: [entryPointPeerDescriptor]
|
|
72
68
|
}
|
|
73
69
|
})
|
|
74
|
-
|
|
70
|
+
await entryPointTransport.start()
|
|
71
|
+
await node1Transport.start()
|
|
72
|
+
await node2Transport.start()
|
|
75
73
|
await entryPoint.start()
|
|
76
74
|
await node1.start()
|
|
77
75
|
await node2.start()
|
|
@@ -88,12 +86,12 @@ describe('Joining streams on offline nodes', () => {
|
|
|
88
86
|
let messageReceived = false
|
|
89
87
|
|
|
90
88
|
// store offline peer descriptors to DHT
|
|
91
|
-
await entryPoint.getLayer0DhtNode().storeDataToDht(streamPartIdToDataKey(
|
|
92
|
-
await entryPoint.getLayer0DhtNode().storeDataToDht(streamPartIdToDataKey(
|
|
89
|
+
await entryPoint.getLayer0DhtNode().storeDataToDht(streamPartIdToDataKey(STREAM_PART_ID), Any.pack(offlineDescriptor1, PeerDescriptor))
|
|
90
|
+
await entryPoint.getLayer0DhtNode().storeDataToDht(streamPartIdToDataKey(STREAM_PART_ID), Any.pack(offlineDescriptor2, PeerDescriptor))
|
|
93
91
|
|
|
94
|
-
node1.getStreamrNode().joinStreamPart(
|
|
92
|
+
node1.getStreamrNode().joinStreamPart(STREAM_PART_ID)
|
|
95
93
|
node1.getStreamrNode().on('newMessage', () => { messageReceived = true })
|
|
96
|
-
const msg = createStreamMessage(JSON.stringify({ hello: 'WORLD' }),
|
|
94
|
+
const msg = createStreamMessage(JSON.stringify({ hello: 'WORLD' }), STREAM_PART_ID, randomEthereumAddress())
|
|
97
95
|
node2.getStreamrNode().broadcast(msg)
|
|
98
96
|
await waitForCondition(() => messageReceived, 40000)
|
|
99
97
|
}, 60000)
|
|
@@ -4,13 +4,12 @@ import {
|
|
|
4
4
|
MessageRef,
|
|
5
5
|
StreamMessage,
|
|
6
6
|
StreamMessageType,
|
|
7
|
-
StreamPartIDUtils
|
|
8
|
-
toStreamID
|
|
7
|
+
StreamPartIDUtils
|
|
9
8
|
} from '@streamr/protocol'
|
|
10
9
|
import { EthereumAddress, hexToBinary, utf8ToBinary, waitForCondition } from '@streamr/utils'
|
|
11
10
|
import { range } from 'lodash'
|
|
12
11
|
import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
|
|
13
|
-
import { streamPartIdToDataKey } from '../../src/logic/
|
|
12
|
+
import { streamPartIdToDataKey } from '../../src/logic/EntryPointDiscovery'
|
|
14
13
|
import { createMockPeerDescriptor } from '../utils/utils'
|
|
15
14
|
|
|
16
15
|
const STREAM_PART_ID = StreamPartIDUtils.parse('test#0')
|
|
@@ -22,14 +21,13 @@ describe('stream without default entrypoints', () => {
|
|
|
22
21
|
let numOfReceivedMessages: number
|
|
23
22
|
const entryPointPeerDescriptor: PeerDescriptor = {
|
|
24
23
|
kademliaId: new Uint8Array([1, 2, 3]),
|
|
25
|
-
nodeName: 'entrypoint',
|
|
26
24
|
type: NodeType.NODEJS
|
|
27
25
|
}
|
|
28
26
|
|
|
29
27
|
const streamMessage = new StreamMessage({
|
|
30
28
|
messageId: new MessageID(
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
StreamPartIDUtils.getStreamID(STREAM_PART_ID),
|
|
30
|
+
StreamPartIDUtils.getStreamPartition(STREAM_PART_ID),
|
|
33
31
|
666,
|
|
34
32
|
0,
|
|
35
33
|
'0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' as EthereumAddress,
|
|
@@ -49,23 +47,23 @@ describe('stream without default entrypoints', () => {
|
|
|
49
47
|
nodes = []
|
|
50
48
|
numOfReceivedMessages = 0
|
|
51
49
|
const entryPointTransport = new SimulatorTransport(entryPointPeerDescriptor, simulator)
|
|
50
|
+
await entryPointTransport.start()
|
|
52
51
|
entrypoint = createNetworkNode({
|
|
53
52
|
layer0: {
|
|
54
|
-
|
|
53
|
+
transport: entryPointTransport,
|
|
55
54
|
peerDescriptor: entryPointPeerDescriptor,
|
|
56
55
|
entryPoints: [entryPointPeerDescriptor]
|
|
57
56
|
}
|
|
58
57
|
})
|
|
59
58
|
await entrypoint.start()
|
|
60
|
-
await Promise.all(range(20).map(async (
|
|
61
|
-
const peerDescriptor = createMockPeerDescriptor(
|
|
62
|
-
nodeName: `${i}`
|
|
63
|
-
})
|
|
59
|
+
await Promise.all(range(20).map(async () => {
|
|
60
|
+
const peerDescriptor = createMockPeerDescriptor()
|
|
64
61
|
const transport = new SimulatorTransport(peerDescriptor, simulator)
|
|
62
|
+
await transport.start()
|
|
65
63
|
const node = createNetworkNode({
|
|
66
64
|
layer0: {
|
|
67
65
|
peerDescriptor,
|
|
68
|
-
|
|
66
|
+
transport,
|
|
69
67
|
entryPoints: [entryPointPeerDescriptor]
|
|
70
68
|
}
|
|
71
69
|
})
|
|
@@ -122,7 +120,7 @@ describe('stream without default entrypoints', () => {
|
|
|
122
120
|
}
|
|
123
121
|
await waitForCondition(async () => {
|
|
124
122
|
const entryPointData = await nodes[15].stack.getLayer0DhtNode().getDataFromDht(streamPartIdToDataKey(STREAM_PART_ID))
|
|
125
|
-
return entryPointData.
|
|
123
|
+
return entryPointData.length >= 7
|
|
126
124
|
}, 15000)
|
|
127
125
|
|
|
128
126
|
}, 90000)
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { ListeningRpcCommunicator } from '@streamr/dht'
|
|
2
2
|
import { StreamPartIDUtils } from '@streamr/protocol'
|
|
3
3
|
import { randomEthereumAddress } from '@streamr/test-utils'
|
|
4
|
-
import {
|
|
4
|
+
import { DeliveryRpcLocal } from '../../src/logic/DeliveryRpcLocal'
|
|
5
5
|
import { LeaveStreamPartNotice } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
|
|
6
6
|
import { MockTransport } from '../utils/mock/Transport'
|
|
7
7
|
import { createMockPeerDescriptor, createStreamMessage } from '../utils/utils'
|
|
8
8
|
|
|
9
|
-
describe('
|
|
9
|
+
describe('DeliveryRpcLocal', () => {
|
|
10
10
|
|
|
11
|
-
let
|
|
11
|
+
let rpcLocal: DeliveryRpcLocal
|
|
12
12
|
const peerDescriptor = createMockPeerDescriptor()
|
|
13
13
|
|
|
14
14
|
const mockSender = createMockPeerDescriptor()
|
|
@@ -30,19 +30,19 @@ describe('StreamNodeServer', () => {
|
|
|
30
30
|
mockOnLeaveNotice = jest.fn((_m) => {})
|
|
31
31
|
mockMarkForInspection = jest.fn((_m) => {})
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
rpcLocal = new DeliveryRpcLocal({
|
|
34
34
|
markAndCheckDuplicate: mockDuplicateCheck,
|
|
35
35
|
broadcast: mockBroadcast,
|
|
36
36
|
onLeaveNotice: mockOnLeaveNotice,
|
|
37
37
|
markForInspection: mockMarkForInspection,
|
|
38
38
|
ownPeerDescriptor: peerDescriptor,
|
|
39
|
-
|
|
39
|
+
streamPartId: StreamPartIDUtils.parse('stream#0'),
|
|
40
40
|
rpcCommunicator: new ListeningRpcCommunicator('random-graph-node', new MockTransport())
|
|
41
41
|
})
|
|
42
42
|
})
|
|
43
43
|
|
|
44
44
|
it('Server sendStreamMessage()', async () => {
|
|
45
|
-
await
|
|
45
|
+
await rpcLocal.sendStreamMessage(message, { incomingSourceDescriptor: mockSender } as any)
|
|
46
46
|
expect(mockDuplicateCheck).toHaveBeenCalledTimes(1)
|
|
47
47
|
expect(mockBroadcast).toHaveBeenCalledTimes(1)
|
|
48
48
|
expect(mockMarkForInspection).toHaveBeenCalledTimes(1)
|
|
@@ -50,9 +50,9 @@ describe('StreamNodeServer', () => {
|
|
|
50
50
|
|
|
51
51
|
it('Server leaveStreamPartNotice()', async () => {
|
|
52
52
|
const leaveNotice: LeaveStreamPartNotice = {
|
|
53
|
-
|
|
53
|
+
streamPartId: StreamPartIDUtils.parse('stream#0')
|
|
54
54
|
}
|
|
55
|
-
await
|
|
55
|
+
await rpcLocal.leaveStreamPartNotice(leaveNotice, { incomingSourceDescriptor: mockSender } as any)
|
|
56
56
|
expect(mockOnLeaveNotice).toHaveBeenCalledTimes(1)
|
|
57
57
|
})
|
|
58
58
|
|