@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
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { MessageID, MessageRef, StreamMessage, StreamMessageType,
|
|
1
|
+
import { MessageID, MessageRef, StreamMessage, StreamMessageType, StreamPartIDUtils } from '@streamr/protocol'
|
|
2
2
|
import { randomEthereumAddress } from '@streamr/test-utils'
|
|
3
3
|
import { hexToBinary, utf8ToBinary, waitForCondition } from '@streamr/utils'
|
|
4
4
|
import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
|
|
5
5
|
import { createMockPeerDescriptor } from '../utils/utils'
|
|
6
6
|
|
|
7
|
+
const STREAM_PART_ID = StreamPartIDUtils.parse('stream#0')
|
|
8
|
+
|
|
7
9
|
describe('inspect', () => {
|
|
8
10
|
|
|
9
11
|
const publisherDescriptor = createMockPeerDescriptor({
|
|
@@ -30,8 +32,6 @@ describe('inspect', () => {
|
|
|
30
32
|
}
|
|
31
33
|
})
|
|
32
34
|
|
|
33
|
-
const streamPartId = toStreamPartID(toStreamID('stream'), 0)
|
|
34
|
-
|
|
35
35
|
let publisherNode: NetworkNode
|
|
36
36
|
|
|
37
37
|
let inspectedNode: NetworkNode
|
|
@@ -40,8 +40,8 @@ describe('inspect', () => {
|
|
|
40
40
|
|
|
41
41
|
const message = new StreamMessage({
|
|
42
42
|
messageId: new MessageID(
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
StreamPartIDUtils.getStreamID(STREAM_PART_ID),
|
|
44
|
+
StreamPartIDUtils.getStreamPartition(STREAM_PART_ID),
|
|
45
45
|
666,
|
|
46
46
|
0,
|
|
47
47
|
randomEthereumAddress(),
|
|
@@ -81,14 +81,14 @@ describe('inspect', () => {
|
|
|
81
81
|
await inspectedNode.start()
|
|
82
82
|
await inspectorNode.start()
|
|
83
83
|
|
|
84
|
-
publisherNode.stack.getStreamrNode()!.joinStreamPart(
|
|
85
|
-
inspectedNode.stack.getStreamrNode()!.joinStreamPart(
|
|
86
|
-
inspectorNode.stack.getStreamrNode()!.joinStreamPart(
|
|
84
|
+
publisherNode.stack.getStreamrNode()!.joinStreamPart(STREAM_PART_ID)
|
|
85
|
+
inspectedNode.stack.getStreamrNode()!.joinStreamPart(STREAM_PART_ID)
|
|
86
|
+
inspectorNode.stack.getStreamrNode()!.joinStreamPart(STREAM_PART_ID)
|
|
87
87
|
|
|
88
88
|
await waitForCondition(() =>
|
|
89
|
-
publisherNode.stack.getStreamrNode().getNeighbors(
|
|
90
|
-
&& inspectedNode.stack.getStreamrNode().getNeighbors(
|
|
91
|
-
&& inspectorNode.stack.getStreamrNode().getNeighbors(
|
|
89
|
+
publisherNode.stack.getStreamrNode().getNeighbors(STREAM_PART_ID).length === 2
|
|
90
|
+
&& inspectedNode.stack.getStreamrNode().getNeighbors(STREAM_PART_ID).length === 2
|
|
91
|
+
&& inspectorNode.stack.getStreamrNode().getNeighbors(STREAM_PART_ID).length === 2
|
|
92
92
|
)
|
|
93
93
|
}, 30000)
|
|
94
94
|
|
|
@@ -104,7 +104,7 @@ describe('inspect', () => {
|
|
|
104
104
|
setTimeout(async () => {
|
|
105
105
|
await publisherNode.broadcast(message)
|
|
106
106
|
}, 250)
|
|
107
|
-
const success = await inspectorNode.inspect(inspectedDescriptor,
|
|
107
|
+
const success = await inspectorNode.inspect(inspectedDescriptor, STREAM_PART_ID)
|
|
108
108
|
expect(success).toBe(true)
|
|
109
109
|
})
|
|
110
110
|
|
|
@@ -29,7 +29,6 @@ const createMessage = (streamPartId: StreamPartID): StreamMessage => {
|
|
|
29
29
|
describe('proxy and full node', () => {
|
|
30
30
|
|
|
31
31
|
const proxyNodeDescriptor = createMockPeerDescriptor({
|
|
32
|
-
nodeName: 'proxyNode',
|
|
33
32
|
websocket: { host: '127.0.0.1', port: 23135, tls: false }
|
|
34
33
|
})
|
|
35
34
|
const proxiedNodeDescriptor = createMockPeerDescriptor()
|
|
@@ -72,7 +71,7 @@ describe('proxy and full node', () => {
|
|
|
72
71
|
await proxiedNode.stop()
|
|
73
72
|
})
|
|
74
73
|
|
|
75
|
-
it('proxied node can act as full node on another stream', async () => {
|
|
74
|
+
it('proxied node can act as full node on another stream part', async () => {
|
|
76
75
|
await proxiedNode.setProxies(proxiedStreamPart, [proxyNodeDescriptor], ProxyDirection.PUBLISH, PROXIED_NODE_USER_ID, 1)
|
|
77
76
|
expect(proxiedNode.stack.getLayer0DhtNode().hasJoined()).toBe(false)
|
|
78
77
|
|
|
@@ -88,23 +87,23 @@ describe('proxy and full node', () => {
|
|
|
88
87
|
proxiedNode.broadcast(createMessage(proxiedStreamPart))
|
|
89
88
|
])
|
|
90
89
|
|
|
91
|
-
expect(proxiedNode.stack.getStreamrNode().
|
|
92
|
-
expect(proxiedNode.stack.getStreamrNode().
|
|
90
|
+
expect(proxiedNode.stack.getStreamrNode().getStreamPartDelivery(proxiedStreamPart)!.proxied).toBe(true)
|
|
91
|
+
expect(proxiedNode.stack.getStreamrNode().getStreamPartDelivery(regularStreamPart1)!.proxied).toBe(false)
|
|
93
92
|
})
|
|
94
93
|
|
|
95
|
-
it('proxied node can act as full node on multiple
|
|
94
|
+
it('proxied node can act as full node on multiple stream parts', async () => {
|
|
96
95
|
await proxiedNode.setProxies(proxiedStreamPart, [proxyNodeDescriptor], ProxyDirection.PUBLISH, PROXIED_NODE_USER_ID, 1)
|
|
97
96
|
expect(proxiedNode.stack.getLayer0DhtNode().hasJoined()).toBe(false)
|
|
98
97
|
|
|
99
98
|
await Promise.all([
|
|
100
99
|
waitForEvent3(proxyNode.stack.getStreamrNode()! as any, 'newMessage', 5000,
|
|
101
|
-
(streamMessage: InternalStreamMessage) => streamMessage.messageId!.streamId ===
|
|
100
|
+
(streamMessage: InternalStreamMessage) => streamMessage.messageId!.streamId === StreamPartIDUtils.getStreamID(regularStreamPart1)),
|
|
102
101
|
waitForEvent3(proxyNode.stack.getStreamrNode()! as any, 'newMessage', 5000,
|
|
103
|
-
(streamMessage: InternalStreamMessage) => streamMessage.messageId!.streamId ===
|
|
102
|
+
(streamMessage: InternalStreamMessage) => streamMessage.messageId!.streamId === StreamPartIDUtils.getStreamID(regularStreamPart2)),
|
|
104
103
|
waitForEvent3(proxyNode.stack.getStreamrNode()! as any, 'newMessage', 5000,
|
|
105
|
-
(streamMessage: InternalStreamMessage) => streamMessage.messageId!.streamId ===
|
|
104
|
+
(streamMessage: InternalStreamMessage) => streamMessage.messageId!.streamId === StreamPartIDUtils.getStreamID(regularStreamPart3)),
|
|
106
105
|
waitForEvent3(proxyNode.stack.getStreamrNode()! as any, 'newMessage', 5000,
|
|
107
|
-
(streamMessage: InternalStreamMessage) => streamMessage.messageId!.streamId ===
|
|
106
|
+
(streamMessage: InternalStreamMessage) => streamMessage.messageId!.streamId === StreamPartIDUtils.getStreamID(regularStreamPart4)),
|
|
108
107
|
proxiedNode.broadcast(createMessage(regularStreamPart1)),
|
|
109
108
|
proxiedNode.broadcast(createMessage(regularStreamPart2)),
|
|
110
109
|
proxiedNode.broadcast(createMessage(regularStreamPart3)),
|
|
@@ -118,11 +117,11 @@ describe('proxy and full node', () => {
|
|
|
118
117
|
proxiedNode.broadcast(createMessage(proxiedStreamPart))
|
|
119
118
|
])
|
|
120
119
|
|
|
121
|
-
expect(proxiedNode.stack.getStreamrNode().
|
|
122
|
-
expect(proxiedNode.stack.getStreamrNode().
|
|
123
|
-
expect(proxiedNode.stack.getStreamrNode().
|
|
124
|
-
expect(proxiedNode.stack.getStreamrNode().
|
|
125
|
-
expect(proxiedNode.stack.getStreamrNode().
|
|
120
|
+
expect(proxiedNode.stack.getStreamrNode().getStreamPartDelivery(proxiedStreamPart)!.proxied).toBe(true)
|
|
121
|
+
expect(proxiedNode.stack.getStreamrNode().getStreamPartDelivery(regularStreamPart1)!.proxied).toBe(false)
|
|
122
|
+
expect(proxiedNode.stack.getStreamrNode().getStreamPartDelivery(regularStreamPart2)!.proxied).toBe(false)
|
|
123
|
+
expect(proxiedNode.stack.getStreamrNode().getStreamPartDelivery(regularStreamPart3)!.proxied).toBe(false)
|
|
124
|
+
expect(proxiedNode.stack.getStreamrNode().getStreamPartDelivery(regularStreamPart4)!.proxied).toBe(false)
|
|
126
125
|
})
|
|
127
126
|
|
|
128
127
|
})
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { MessageID, MessageRef, StreamMessage, StreamMessageType,
|
|
1
|
+
import { MessageID, MessageRef, StreamMessage, StreamMessageType, StreamPartIDUtils } from '@streamr/protocol'
|
|
2
2
|
import { randomEthereumAddress } from '@streamr/test-utils'
|
|
3
3
|
import { hexToBinary, utf8ToBinary, wait, waitForCondition, waitForEvent3 } from '@streamr/utils'
|
|
4
4
|
import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
|
|
5
5
|
import { NodeID } from '../../src/identifiers'
|
|
6
6
|
import { RandomGraphNode } from '../../src/logic/RandomGraphNode'
|
|
7
|
-
import {
|
|
7
|
+
import { ProxyClient } from '../../src/logic/proxy/ProxyClient'
|
|
8
8
|
import { ProxyDirection } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
|
|
9
9
|
import { createMockPeerDescriptor } from '../utils/utils'
|
|
10
10
|
|
|
11
11
|
const PROXIED_NODE_USER_ID = randomEthereumAddress()
|
|
12
|
-
const STREAM_PART_ID =
|
|
12
|
+
const STREAM_PART_ID = StreamPartIDUtils.parse('proxy-test#0')
|
|
13
13
|
const MESSAGE = new StreamMessage({
|
|
14
14
|
messageId: new MessageID(
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
StreamPartIDUtils.getStreamID(STREAM_PART_ID),
|
|
16
|
+
StreamPartIDUtils.getStreamPartition(STREAM_PART_ID),
|
|
17
17
|
666,
|
|
18
18
|
0,
|
|
19
19
|
randomEthereumAddress(),
|
|
@@ -34,24 +34,22 @@ describe('Proxy connections', () => {
|
|
|
34
34
|
let proxiedNode: NetworkNode
|
|
35
35
|
|
|
36
36
|
const hasConnectionFromProxy = (proxyNode: NetworkNode): boolean => {
|
|
37
|
-
const delivery = proxyNode.stack.getStreamrNode()!.
|
|
37
|
+
const delivery = proxyNode.stack.getStreamrNode()!.getStreamPartDelivery(STREAM_PART_ID)
|
|
38
38
|
return (delivery !== undefined)
|
|
39
39
|
? ((delivery as { node: RandomGraphNode }).node).hasProxyConnection(proxiedNode.getNodeId())
|
|
40
40
|
: false
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
const hasConnectionToProxy = (proxyNodeId: NodeID, direction: ProxyDirection): boolean => {
|
|
44
|
-
const client = (proxiedNode.stack.getStreamrNode()!.
|
|
44
|
+
const client = (proxiedNode.stack.getStreamrNode()!.getStreamPartDelivery(STREAM_PART_ID) as { client: ProxyClient }).client
|
|
45
45
|
return client.hasConnection(proxyNodeId, direction)
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
beforeEach(async () => {
|
|
49
49
|
const proxyNodeDescriptor1 = createMockPeerDescriptor({
|
|
50
|
-
nodeName: 'proxyNode',
|
|
51
50
|
websocket: { host: '127.0.0.1', port: 23132, tls: false }
|
|
52
51
|
})
|
|
53
52
|
const proxyNodeDescriptor2 = createMockPeerDescriptor({
|
|
54
|
-
nodeName: 'proxyNode',
|
|
55
53
|
websocket: { host: '127.0.0.1', port: 23133, tls: false }
|
|
56
54
|
})
|
|
57
55
|
const proxiedNodeDescriptor = createMockPeerDescriptor()
|
|
@@ -191,7 +189,7 @@ describe('Proxy connections', () => {
|
|
|
191
189
|
expect(hasConnectionFromProxy(proxyNode1)).toBe(true)
|
|
192
190
|
}, 30000)
|
|
193
191
|
|
|
194
|
-
it('
|
|
192
|
+
it('can\'t join proxied stream part', async () => {
|
|
195
193
|
await proxiedNode.setProxies(
|
|
196
194
|
STREAM_PART_ID,
|
|
197
195
|
[proxyNode1.getPeerDescriptor()],
|
|
@@ -201,7 +199,7 @@ describe('Proxy connections', () => {
|
|
|
201
199
|
await expect(proxiedNode.join(STREAM_PART_ID)).rejects.toThrow('Cannot join')
|
|
202
200
|
})
|
|
203
201
|
|
|
204
|
-
it('
|
|
202
|
+
it('can\'t broadcast to subscribe-only proxied stream part', async () => {
|
|
205
203
|
await proxiedNode.setProxies(
|
|
206
204
|
STREAM_PART_ID,
|
|
207
205
|
[proxyNode1.getPeerDescriptor()],
|
|
@@ -12,9 +12,10 @@ import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
|
|
|
12
12
|
import { ProxyDirection } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
|
|
13
13
|
import { createMockPeerDescriptor } from '../utils/utils'
|
|
14
14
|
|
|
15
|
+
const STREAM_PART_ID = StreamPartIDUtils.parse('proxy-test#0')
|
|
16
|
+
|
|
15
17
|
describe('proxy group key exchange', () => {
|
|
16
18
|
const proxyNodeDescriptor = createMockPeerDescriptor({
|
|
17
|
-
nodeName: 'proxyNode',
|
|
18
19
|
websocket: { host: '127.0.0.1', port: 23134, tls: false }
|
|
19
20
|
})
|
|
20
21
|
const publisherDescriptor = createMockPeerDescriptor()
|
|
@@ -23,8 +24,6 @@ describe('proxy group key exchange', () => {
|
|
|
23
24
|
const publisherUserId = toEthereumAddress('0x823A026e226EB47980c88616e01E1D3305Ef8Ecb')
|
|
24
25
|
const subscriberUserId = toEthereumAddress('0x73E6183bf9b79D30533bEC7B28e982e9Af649B23')
|
|
25
26
|
|
|
26
|
-
const streamPartId = StreamPartIDUtils.parse('proxy-test#0')
|
|
27
|
-
|
|
28
27
|
let proxyNode: NetworkNode
|
|
29
28
|
let publisher: NetworkNode
|
|
30
29
|
let subscriber: NetworkNode
|
|
@@ -40,8 +39,8 @@ describe('proxy group key exchange', () => {
|
|
|
40
39
|
}
|
|
41
40
|
})
|
|
42
41
|
await proxyNode.start()
|
|
43
|
-
proxyNode.setStreamPartEntryPoints(
|
|
44
|
-
proxyNode.stack.getStreamrNode()!.joinStreamPart(
|
|
42
|
+
proxyNode.setStreamPartEntryPoints(STREAM_PART_ID, [proxyNodeDescriptor])
|
|
43
|
+
proxyNode.stack.getStreamrNode()!.joinStreamPart(STREAM_PART_ID)
|
|
45
44
|
publisher = createNetworkNode({
|
|
46
45
|
layer0: {
|
|
47
46
|
entryPoints: [publisherDescriptor],
|
|
@@ -66,8 +65,8 @@ describe('proxy group key exchange', () => {
|
|
|
66
65
|
})
|
|
67
66
|
|
|
68
67
|
it('happy path request', async () => {
|
|
69
|
-
await publisher.setProxies(
|
|
70
|
-
await subscriber.setProxies(
|
|
68
|
+
await publisher.setProxies(STREAM_PART_ID, [proxyNodeDescriptor], ProxyDirection.PUBLISH, publisherUserId)
|
|
69
|
+
await subscriber.setProxies(STREAM_PART_ID, [proxyNodeDescriptor], ProxyDirection.SUBSCRIBE, subscriberUserId)
|
|
71
70
|
|
|
72
71
|
const requestContent = utf8ToBinary(new GroupKeyRequest({
|
|
73
72
|
recipient: publisherUserId,
|
|
@@ -79,8 +78,8 @@ describe('proxy group key exchange', () => {
|
|
|
79
78
|
}).serialize())
|
|
80
79
|
const request = new StreamMessage({
|
|
81
80
|
messageId: new MessageID(
|
|
82
|
-
StreamPartIDUtils.getStreamID(
|
|
83
|
-
StreamPartIDUtils.getStreamPartition(
|
|
81
|
+
StreamPartIDUtils.getStreamID(STREAM_PART_ID),
|
|
82
|
+
StreamPartIDUtils.getStreamPartition(STREAM_PART_ID),
|
|
84
83
|
Date.now(),
|
|
85
84
|
0,
|
|
86
85
|
subscriberUserId,
|
|
@@ -99,8 +98,8 @@ describe('proxy group key exchange', () => {
|
|
|
99
98
|
})
|
|
100
99
|
|
|
101
100
|
it('happy path response', async () => {
|
|
102
|
-
await publisher.setProxies(
|
|
103
|
-
await subscriber.setProxies(
|
|
101
|
+
await publisher.setProxies(STREAM_PART_ID, [proxyNodeDescriptor], ProxyDirection.PUBLISH, publisherUserId)
|
|
102
|
+
await subscriber.setProxies(STREAM_PART_ID, [proxyNodeDescriptor], ProxyDirection.SUBSCRIBE, subscriberUserId)
|
|
104
103
|
|
|
105
104
|
const responseContent = utf8ToBinary(new GroupKeyResponse({
|
|
106
105
|
recipient: publisherUserId,
|
|
@@ -109,8 +108,8 @@ describe('proxy group key exchange', () => {
|
|
|
109
108
|
}).serialize())
|
|
110
109
|
const response = new StreamMessage({
|
|
111
110
|
messageId: new MessageID(
|
|
112
|
-
StreamPartIDUtils.getStreamID(
|
|
113
|
-
StreamPartIDUtils.getStreamPartition(
|
|
111
|
+
StreamPartIDUtils.getStreamID(STREAM_PART_ID),
|
|
112
|
+
StreamPartIDUtils.getStreamPartition(STREAM_PART_ID),
|
|
114
113
|
Date.now(),
|
|
115
114
|
0,
|
|
116
115
|
publisherUserId,
|
|
@@ -14,7 +14,7 @@ describe('random graph with real connections', () => {
|
|
|
14
14
|
websocket: { host: '127.0.0.1', port: 12221, tls: false }
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
const
|
|
17
|
+
const streamPartId = StreamPartIDUtils.parse('random-graph#0')
|
|
18
18
|
let epDhtNode: DhtNode
|
|
19
19
|
let dhtNode1: DhtNode
|
|
20
20
|
let dhtNode2: DhtNode
|
|
@@ -41,7 +41,7 @@ describe('random graph with real connections', () => {
|
|
|
41
41
|
|
|
42
42
|
randomGraphNode1 = createRandomGraphNode(
|
|
43
43
|
{
|
|
44
|
-
|
|
44
|
+
streamPartId,
|
|
45
45
|
layer1: epDhtNode,
|
|
46
46
|
P2PTransport: epDhtNode.getTransport(),
|
|
47
47
|
connectionLocker: epDhtNode.getTransport() as ConnectionManager,
|
|
@@ -49,28 +49,28 @@ describe('random graph with real connections', () => {
|
|
|
49
49
|
}
|
|
50
50
|
)
|
|
51
51
|
randomGraphNode2 = createRandomGraphNode({
|
|
52
|
-
|
|
52
|
+
streamPartId,
|
|
53
53
|
layer1: dhtNode1,
|
|
54
54
|
P2PTransport: dhtNode1.getTransport(),
|
|
55
55
|
connectionLocker: dhtNode1.getTransport() as ConnectionManager,
|
|
56
56
|
ownPeerDescriptor: dhtNode1.getPeerDescriptor()
|
|
57
57
|
})
|
|
58
58
|
randomGraphNode3 = createRandomGraphNode({
|
|
59
|
-
|
|
59
|
+
streamPartId,
|
|
60
60
|
layer1: dhtNode2,
|
|
61
61
|
P2PTransport: dhtNode2.getTransport(),
|
|
62
62
|
connectionLocker: dhtNode2.getTransport() as ConnectionManager,
|
|
63
63
|
ownPeerDescriptor: dhtNode2.getPeerDescriptor()
|
|
64
64
|
})
|
|
65
65
|
randomGraphNode4 = createRandomGraphNode({
|
|
66
|
-
|
|
66
|
+
streamPartId,
|
|
67
67
|
layer1: dhtNode3,
|
|
68
68
|
P2PTransport: dhtNode3.getTransport(),
|
|
69
69
|
connectionLocker: dhtNode3.getTransport() as ConnectionManager,
|
|
70
70
|
ownPeerDescriptor: dhtNode3.getPeerDescriptor()
|
|
71
71
|
})
|
|
72
72
|
randomGraphNode5 = createRandomGraphNode({
|
|
73
|
-
|
|
73
|
+
streamPartId,
|
|
74
74
|
layer1: dhtNode4,
|
|
75
75
|
P2PTransport: dhtNode4.getTransport(),
|
|
76
76
|
connectionLocker: dhtNode4.getTransport() as ConnectionManager,
|
|
@@ -144,7 +144,7 @@ describe('random graph with real connections', () => {
|
|
|
144
144
|
|
|
145
145
|
const msg = createStreamMessage(
|
|
146
146
|
JSON.stringify({ hello: 'WORLD' }),
|
|
147
|
-
|
|
147
|
+
streamPartId,
|
|
148
148
|
randomEthereumAddress()
|
|
149
149
|
)
|
|
150
150
|
randomGraphNode1.broadcast(msg)
|
|
@@ -16,7 +16,7 @@ describe('Full node network with WebRTC connections', () => {
|
|
|
16
16
|
region: getRandomRegion()
|
|
17
17
|
})
|
|
18
18
|
|
|
19
|
-
const
|
|
19
|
+
const streamPartId = StreamPartIDUtils.parse('webrtc-network#0')
|
|
20
20
|
|
|
21
21
|
let entryPoint: NetworkStack
|
|
22
22
|
|
|
@@ -33,8 +33,8 @@ describe('Full node network with WebRTC connections', () => {
|
|
|
33
33
|
}
|
|
34
34
|
})
|
|
35
35
|
await entryPoint.start()
|
|
36
|
-
entryPoint.getStreamrNode()!.setStreamPartEntryPoints(
|
|
37
|
-
entryPoint.getStreamrNode()!.joinStreamPart(
|
|
36
|
+
entryPoint.getStreamrNode()!.setStreamPartEntryPoints(streamPartId, [epPeerDescriptor])
|
|
37
|
+
entryPoint.getStreamrNode()!.joinStreamPart(streamPartId)
|
|
38
38
|
|
|
39
39
|
await Promise.all(range(NUM_OF_NODES).map(async () => {
|
|
40
40
|
const peerDescriptor = createMockPeerDescriptor()
|
|
@@ -46,8 +46,8 @@ describe('Full node network with WebRTC connections', () => {
|
|
|
46
46
|
})
|
|
47
47
|
nodes.push(node)
|
|
48
48
|
await node.start()
|
|
49
|
-
node.getStreamrNode().setStreamPartEntryPoints(
|
|
50
|
-
node.getStreamrNode().joinStreamPart(
|
|
49
|
+
node.getStreamrNode().setStreamPartEntryPoints(streamPartId, [epPeerDescriptor])
|
|
50
|
+
node.getStreamrNode().joinStreamPart(streamPartId)
|
|
51
51
|
}))
|
|
52
52
|
|
|
53
53
|
}, 90000)
|
|
@@ -62,13 +62,13 @@ describe('Full node network with WebRTC connections', () => {
|
|
|
62
62
|
it('happy path', async () => {
|
|
63
63
|
await Promise.all(nodes.map((node) =>
|
|
64
64
|
waitForCondition(() => {
|
|
65
|
-
return node.getStreamrNode()!.getNeighbors(
|
|
65
|
+
return node.getStreamrNode()!.getNeighbors(streamPartId).length >= 3
|
|
66
66
|
}
|
|
67
67
|
, 120000)
|
|
68
68
|
))
|
|
69
69
|
let numOfMessagesReceived = 0
|
|
70
70
|
const successIds: string[] = []
|
|
71
|
-
nodes.
|
|
71
|
+
nodes.forEach((node) => {
|
|
72
72
|
node.getStreamrNode()!.on('newMessage', () => {
|
|
73
73
|
successIds.push(getNodeIdFromPeerDescriptor(node.getStreamrNode()!.getPeerDescriptor()))
|
|
74
74
|
numOfMessagesReceived += 1
|
|
@@ -76,7 +76,7 @@ describe('Full node network with WebRTC connections', () => {
|
|
|
76
76
|
})
|
|
77
77
|
const msg = createStreamMessage(
|
|
78
78
|
JSON.stringify({ hello: 'WORLD' }),
|
|
79
|
-
|
|
79
|
+
streamPartId,
|
|
80
80
|
randomEthereumAddress()
|
|
81
81
|
)
|
|
82
82
|
entryPoint.getStreamrNode()!.broadcast(msg)
|
|
@@ -10,10 +10,9 @@ describe('Full node network with WebSocket connections only', () => {
|
|
|
10
10
|
|
|
11
11
|
const NUM_OF_NODES = 48
|
|
12
12
|
const epPeerDescriptor = createMockPeerDescriptor({
|
|
13
|
-
nodeName: 'entrypoint',
|
|
14
13
|
websocket: { host: '127.0.0.1', port: 15555, tls: false }
|
|
15
14
|
})
|
|
16
|
-
const
|
|
15
|
+
const streamPartId = StreamPartIDUtils.parse('websocket-network#0')
|
|
17
16
|
|
|
18
17
|
let entryPoint: NetworkStack
|
|
19
18
|
|
|
@@ -30,22 +29,21 @@ describe('Full node network with WebSocket connections only', () => {
|
|
|
30
29
|
}
|
|
31
30
|
})
|
|
32
31
|
await entryPoint.start()
|
|
33
|
-
entryPoint.getStreamrNode()!.setStreamPartEntryPoints(
|
|
34
|
-
entryPoint.getStreamrNode()!.joinStreamPart(
|
|
32
|
+
entryPoint.getStreamrNode()!.setStreamPartEntryPoints(streamPartId, [epPeerDescriptor])
|
|
33
|
+
entryPoint.getStreamrNode()!.joinStreamPart(streamPartId)
|
|
35
34
|
|
|
36
35
|
await Promise.all(range(NUM_OF_NODES).map(async (i) => {
|
|
37
36
|
const node = new NetworkStack({
|
|
38
37
|
layer0: {
|
|
39
38
|
entryPoints: [epPeerDescriptor],
|
|
40
39
|
websocketPortRange: { min: 15556 + i, max: 15556 + i },
|
|
41
|
-
nodeName: `${i}`,
|
|
42
40
|
numberOfNodesPerKBucket: 4
|
|
43
41
|
}
|
|
44
42
|
})
|
|
45
43
|
nodes.push(node)
|
|
46
44
|
await node.start()
|
|
47
|
-
node.getStreamrNode().setStreamPartEntryPoints(
|
|
48
|
-
node.getStreamrNode().joinStreamPart(
|
|
45
|
+
node.getStreamrNode().setStreamPartEntryPoints(streamPartId, [epPeerDescriptor])
|
|
46
|
+
node.getStreamrNode().joinStreamPart(streamPartId)
|
|
49
47
|
}))
|
|
50
48
|
|
|
51
49
|
}, 120000)
|
|
@@ -60,13 +58,13 @@ describe('Full node network with WebSocket connections only', () => {
|
|
|
60
58
|
it('happy path', async () => {
|
|
61
59
|
await Promise.all(nodes.map((node) =>
|
|
62
60
|
waitForCondition(() => {
|
|
63
|
-
return node.getStreamrNode()!.getNeighbors(
|
|
61
|
+
return node.getStreamrNode()!.getNeighbors(streamPartId).length >= 4
|
|
64
62
|
}
|
|
65
63
|
, 120000)
|
|
66
64
|
))
|
|
67
65
|
let numOfMessagesReceived = 0
|
|
68
66
|
const successIds: string[] = []
|
|
69
|
-
nodes.
|
|
67
|
+
nodes.forEach((node) => {
|
|
70
68
|
node.getStreamrNode()!.on('newMessage', () => {
|
|
71
69
|
successIds.push(getNodeIdFromPeerDescriptor(node.getStreamrNode()!.getPeerDescriptor()))
|
|
72
70
|
numOfMessagesReceived += 1
|
|
@@ -75,7 +73,7 @@ describe('Full node network with WebSocket connections only', () => {
|
|
|
75
73
|
|
|
76
74
|
const msg = createStreamMessage(
|
|
77
75
|
JSON.stringify({ hello: 'WORLD' }),
|
|
78
|
-
|
|
76
|
+
streamPartId,
|
|
79
77
|
randomEthereumAddress()
|
|
80
78
|
)
|
|
81
79
|
entryPoint.getStreamrNode()!.broadcast(msg)
|
|
@@ -5,24 +5,25 @@ import {
|
|
|
5
5
|
SimulatorTransport,
|
|
6
6
|
NodeType
|
|
7
7
|
} from '@streamr/dht'
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { DeliveryRpcRemote } from '../../src/logic/DeliveryRpcRemote'
|
|
9
|
+
import { DeliveryRpcClient } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc.client'
|
|
10
10
|
import {
|
|
11
11
|
LeaveStreamPartNotice,
|
|
12
12
|
StreamMessage
|
|
13
13
|
} from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
|
|
14
14
|
import { Empty } from '../../src/proto/google/protobuf/empty'
|
|
15
|
-
import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
|
|
16
15
|
import { waitForCondition } from '@streamr/utils'
|
|
17
16
|
import { toProtoRpcClient } from '@streamr/proto-rpc'
|
|
18
17
|
import { createStreamMessage } from '../utils/utils'
|
|
19
18
|
import { StreamPartIDUtils } from '@streamr/protocol'
|
|
20
19
|
import { randomEthereumAddress } from '@streamr/test-utils'
|
|
21
20
|
|
|
22
|
-
|
|
21
|
+
const STREAM_PART_ID = StreamPartIDUtils.parse('test-stream#0')
|
|
22
|
+
|
|
23
|
+
describe('DeliveryRpcRemote', () => {
|
|
23
24
|
let mockServerRpc: ListeningRpcCommunicator
|
|
24
25
|
let clientRpc: ListeningRpcCommunicator
|
|
25
|
-
let
|
|
26
|
+
let rpcRemote: DeliveryRpcRemote
|
|
26
27
|
|
|
27
28
|
const clientNode: PeerDescriptor = {
|
|
28
29
|
kademliaId: new Uint8Array([1, 1, 1]),
|
|
@@ -39,11 +40,13 @@ describe('RemoteRandomGraphNode', () => {
|
|
|
39
40
|
let mockConnectionManager1: SimulatorTransport
|
|
40
41
|
let mockConnectionManager2: SimulatorTransport
|
|
41
42
|
|
|
42
|
-
beforeEach(() => {
|
|
43
|
+
beforeEach(async () => {
|
|
43
44
|
recvCounter = 0
|
|
44
45
|
simulator = new Simulator()
|
|
45
46
|
mockConnectionManager1 = new SimulatorTransport(serverNode, simulator)
|
|
47
|
+
await mockConnectionManager1.start()
|
|
46
48
|
mockConnectionManager2 = new SimulatorTransport(clientNode, simulator)
|
|
49
|
+
await mockConnectionManager2.start()
|
|
47
50
|
|
|
48
51
|
mockServerRpc = new ListeningRpcCommunicator('test', mockConnectionManager1)
|
|
49
52
|
clientRpc = new ListeningRpcCommunicator('test', mockConnectionManager2)
|
|
@@ -51,7 +54,7 @@ describe('RemoteRandomGraphNode', () => {
|
|
|
51
54
|
mockServerRpc.registerRpcNotification(
|
|
52
55
|
StreamMessage,
|
|
53
56
|
'sendStreamMessage',
|
|
54
|
-
async (
|
|
57
|
+
async (): Promise<Empty> => {
|
|
55
58
|
recvCounter += 1
|
|
56
59
|
return Empty
|
|
57
60
|
}
|
|
@@ -60,17 +63,17 @@ describe('RemoteRandomGraphNode', () => {
|
|
|
60
63
|
mockServerRpc.registerRpcNotification(
|
|
61
64
|
LeaveStreamPartNotice,
|
|
62
65
|
'leaveStreamPartNotice',
|
|
63
|
-
async (
|
|
66
|
+
async (): Promise<Empty> => {
|
|
64
67
|
recvCounter += 1
|
|
65
68
|
return Empty
|
|
66
69
|
}
|
|
67
70
|
)
|
|
68
71
|
|
|
69
|
-
|
|
72
|
+
rpcRemote = new DeliveryRpcRemote(
|
|
70
73
|
clientNode,
|
|
71
74
|
serverNode,
|
|
72
|
-
|
|
73
|
-
toProtoRpcClient(new
|
|
75
|
+
STREAM_PART_ID,
|
|
76
|
+
toProtoRpcClient(new DeliveryRpcClient(clientRpc.getRpcClientTransport()))
|
|
74
77
|
)
|
|
75
78
|
})
|
|
76
79
|
|
|
@@ -85,16 +88,16 @@ describe('RemoteRandomGraphNode', () => {
|
|
|
85
88
|
it('sendStreamMessage', async () => {
|
|
86
89
|
const msg = createStreamMessage(
|
|
87
90
|
JSON.stringify({ hello: 'WORLD' }),
|
|
88
|
-
|
|
91
|
+
STREAM_PART_ID,
|
|
89
92
|
randomEthereumAddress()
|
|
90
93
|
)
|
|
91
94
|
|
|
92
|
-
await
|
|
95
|
+
await rpcRemote.sendStreamMessage(msg)
|
|
93
96
|
await waitForCondition(() => recvCounter === 1)
|
|
94
97
|
})
|
|
95
98
|
|
|
96
99
|
it('leaveNotice', async () => {
|
|
97
|
-
|
|
100
|
+
rpcRemote.leaveStreamPartNotice()
|
|
98
101
|
await waitForCondition(() => recvCounter === 1)
|
|
99
102
|
})
|
|
100
103
|
|
|
@@ -2,7 +2,6 @@ import {
|
|
|
2
2
|
StreamPartHandshakeRequest,
|
|
3
3
|
StreamPartHandshakeResponse
|
|
4
4
|
} from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
|
|
5
|
-
import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
|
|
6
5
|
import {
|
|
7
6
|
ListeningRpcCommunicator,
|
|
8
7
|
NodeType,
|
|
@@ -14,12 +13,12 @@ import { toProtoRpcClient } from '@streamr/proto-rpc'
|
|
|
14
13
|
import {
|
|
15
14
|
HandshakeRpcClient,
|
|
16
15
|
} from '../../src/proto/packages/trackerless-network/protos/NetworkRpc.client'
|
|
17
|
-
import {
|
|
16
|
+
import { HandshakeRpcRemote } from '../../src/logic/neighbor-discovery/HandshakeRpcRemote'
|
|
18
17
|
|
|
19
|
-
describe('
|
|
18
|
+
describe('HandshakeRpcRemote', () => {
|
|
20
19
|
let mockServerRpc: ListeningRpcCommunicator
|
|
21
20
|
let clientRpc: ListeningRpcCommunicator
|
|
22
|
-
let
|
|
21
|
+
let rpcRemote: HandshakeRpcRemote
|
|
23
22
|
|
|
24
23
|
const clientNode: PeerDescriptor = {
|
|
25
24
|
kademliaId: new Uint8Array([1, 1, 1]),
|
|
@@ -34,11 +33,13 @@ describe('RemoteHandshaker', () => {
|
|
|
34
33
|
let mockConnectionManager1: SimulatorTransport
|
|
35
34
|
let mockConnectionManager2: SimulatorTransport
|
|
36
35
|
|
|
37
|
-
beforeEach(() => {
|
|
36
|
+
beforeEach(async () => {
|
|
38
37
|
Simulator.useFakeTimers()
|
|
39
38
|
simulator = new Simulator()
|
|
40
39
|
mockConnectionManager1 = new SimulatorTransport(serverNode, simulator)
|
|
40
|
+
await mockConnectionManager1.start()
|
|
41
41
|
mockConnectionManager2 = new SimulatorTransport(clientNode, simulator)
|
|
42
|
+
await mockConnectionManager2.start()
|
|
42
43
|
|
|
43
44
|
mockServerRpc = new ListeningRpcCommunicator('test', mockConnectionManager1)
|
|
44
45
|
clientRpc = new ListeningRpcCommunicator('test', mockConnectionManager2)
|
|
@@ -47,7 +48,7 @@ describe('RemoteHandshaker', () => {
|
|
|
47
48
|
StreamPartHandshakeRequest,
|
|
48
49
|
StreamPartHandshakeResponse,
|
|
49
50
|
'handshake',
|
|
50
|
-
async (msg: StreamPartHandshakeRequest
|
|
51
|
+
async (msg: StreamPartHandshakeRequest): Promise<StreamPartHandshakeResponse> => {
|
|
51
52
|
const res: StreamPartHandshakeResponse = {
|
|
52
53
|
requestId: msg.requestId,
|
|
53
54
|
accepted: true
|
|
@@ -56,10 +57,10 @@ describe('RemoteHandshaker', () => {
|
|
|
56
57
|
}
|
|
57
58
|
)
|
|
58
59
|
|
|
59
|
-
|
|
60
|
+
rpcRemote = new HandshakeRpcRemote(
|
|
60
61
|
clientNode,
|
|
61
62
|
serverNode,
|
|
62
|
-
'test-stream',
|
|
63
|
+
'test-stream-part',
|
|
63
64
|
toProtoRpcClient(new HandshakeRpcClient(clientRpc.getRpcClientTransport()))
|
|
64
65
|
)
|
|
65
66
|
})
|
|
@@ -74,7 +75,7 @@ describe('RemoteHandshaker', () => {
|
|
|
74
75
|
})
|
|
75
76
|
|
|
76
77
|
it('handshake', async () => {
|
|
77
|
-
const result = await
|
|
78
|
+
const result = await rpcRemote.handshake([])
|
|
78
79
|
expect(result.accepted).toEqual(true)
|
|
79
80
|
})
|
|
80
81
|
})
|