@streamr/trackerless-network 0.0.1-tatum.6 → 0.0.1-tatum.8
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 +2 -2
- package/dist/src/NetworkNode.js.map +1 -1
- package/dist/src/NetworkStack.d.ts +5 -6
- package/dist/src/NetworkStack.js +27 -56
- 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} +10 -12
- package/dist/src/logic/{StreamPartEntryPointDiscovery.js → EntryPointDiscovery.js} +18 -40
- package/dist/src/logic/EntryPointDiscovery.js.map +1 -0
- package/dist/src/logic/Layer0Node.d.ts +14 -0
- package/dist/src/logic/{ILayer1.js → Layer0Node.js} +1 -1
- package/dist/src/logic/Layer0Node.js.map +1 -0
- package/dist/src/logic/{ILayer1.d.ts → Layer1Node.d.ts} +5 -5
- package/dist/src/logic/{ILayer0.js → Layer1Node.js} +1 -1
- package/dist/src/logic/Layer1Node.js.map +1 -0
- 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 +11 -15
- package/dist/src/logic/RandomGraphNode.js +46 -45
- package/dist/src/logic/RandomGraphNode.js.map +1 -1
- package/dist/src/logic/StreamrNode.d.ts +15 -18
- package/dist/src/logic/StreamrNode.js +78 -87
- 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} +7 -10
- package/dist/src/logic/proxy/{ProxyStreamConnectionClient.js → ProxyClient.js} +24 -22
- 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.client.d.ts +10 -0
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +7 -0
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +54 -118
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +50 -49
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +6 -0
- 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 +16 -17
- package/dist/test/benchmark/first-message.js.map +1 -1
- package/dist/test/utils/utils.d.ts +7 -6
- package/dist/test/utils/utils.js +18 -17
- package/dist/test/utils/utils.js.map +1 -1
- package/package.json +10 -8
- package/protos/NetworkRpc.proto +5 -5
- package/src/NetworkNode.ts +2 -2
- package/src/NetworkStack.ts +31 -72
- 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} +24 -48
- package/src/logic/Layer0Node.ts +15 -0
- package/src/logic/{ILayer1.ts → Layer1Node.ts} +5 -5
- package/src/logic/NodeList.ts +12 -12
- package/src/logic/RandomGraphNode.ts +73 -74
- package/src/logic/StreamrNode.ts +90 -103
- 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} +29 -29
- 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.client.ts +13 -0
- package/src/proto/packages/dht/protos/DhtRpc.server.ts +6 -0
- package/src/proto/packages/dht/protos/DhtRpc.ts +88 -166
- 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 +19 -20
- package/test/end-to-end/inspect.test.ts +12 -12
- package/test/end-to-end/proxy-and-full-node.test.ts +17 -18
- 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 +27 -22
- 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 +4 -3
- 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 +14 -13
- package/test/integration/RandomGraphNode-Layer1Node-Latencies.test.ts +23 -20
- package/test/integration/RandomGraphNode-Layer1Node.test.ts +30 -29
- package/test/integration/StreamrNode.test.ts +16 -13
- package/test/integration/joining-streams-on-offline-peers.test.ts +16 -18
- package/test/integration/stream-without-default-entrypoints.test.ts +12 -14
- package/test/unit/{StreamNodeServer.test.ts → DeliveryRpcLocal.test.ts} +8 -8
- package/test/unit/{StreamPartEntrypointDiscovery.test.ts → EntrypointDiscovery.test.ts} +27 -44
- 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 +15 -13
- package/test/unit/StreamMessageTranslator.test.ts +10 -9
- package/test/unit/StreamrNode.test.ts +10 -10
- package/test/utils/mock/{MockLayer0.ts → MockLayer0Node.ts} +23 -26
- package/test/utils/mock/{MockLayer1.ts → MockLayer1Node.ts} +5 -10
- 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 +18 -16
- package/dist/src/logic/ILayer0.d.ts +0 -13
- package/dist/src/logic/ILayer0.js.map +0 -1
- package/dist/src/logic/ILayer1.js.map +0 -1
- 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
- package/src/logic/ILayer0.ts +0 -14
|
@@ -146,9 +146,9 @@ export interface GroupKey {
|
|
|
146
146
|
*/
|
|
147
147
|
export interface StreamPartHandshakeRequest {
|
|
148
148
|
/**
|
|
149
|
-
* @generated from protobuf field: string
|
|
149
|
+
* @generated from protobuf field: string streamPartId = 1;
|
|
150
150
|
*/
|
|
151
|
-
|
|
151
|
+
streamPartId: string;
|
|
152
152
|
/**
|
|
153
153
|
* @generated from protobuf field: string requestId = 2;
|
|
154
154
|
*/
|
|
@@ -188,9 +188,9 @@ export interface StreamPartHandshakeResponse {
|
|
|
188
188
|
*/
|
|
189
189
|
export interface InterleaveNotice {
|
|
190
190
|
/**
|
|
191
|
-
* @generated from protobuf field: string
|
|
191
|
+
* @generated from protobuf field: string streamPartId = 1;
|
|
192
192
|
*/
|
|
193
|
-
|
|
193
|
+
streamPartId: string;
|
|
194
194
|
/**
|
|
195
195
|
* this is a required field but in generated NetworkRpc.ts it is incorrectly annotated as optional (NET-1082)
|
|
196
196
|
*
|
|
@@ -203,18 +203,18 @@ export interface InterleaveNotice {
|
|
|
203
203
|
*/
|
|
204
204
|
export interface LeaveStreamPartNotice {
|
|
205
205
|
/**
|
|
206
|
-
* @generated from protobuf field: string
|
|
206
|
+
* @generated from protobuf field: string streamPartId = 1;
|
|
207
207
|
*/
|
|
208
|
-
|
|
208
|
+
streamPartId: string;
|
|
209
209
|
}
|
|
210
210
|
/**
|
|
211
211
|
* @generated from protobuf message NeighborUpdate
|
|
212
212
|
*/
|
|
213
213
|
export interface NeighborUpdate {
|
|
214
214
|
/**
|
|
215
|
-
* @generated from protobuf field: string
|
|
215
|
+
* @generated from protobuf field: string streamPartId = 1;
|
|
216
216
|
*/
|
|
217
|
-
|
|
217
|
+
streamPartId: string;
|
|
218
218
|
/**
|
|
219
219
|
* @generated from protobuf field: bool removeMe = 2;
|
|
220
220
|
*/
|
|
@@ -412,7 +412,7 @@ export const GroupKey = new GroupKey$Type();
|
|
|
412
412
|
class StreamPartHandshakeRequest$Type extends MessageType<StreamPartHandshakeRequest> {
|
|
413
413
|
constructor() {
|
|
414
414
|
super("StreamPartHandshakeRequest", [
|
|
415
|
-
{ no: 1, name: "
|
|
415
|
+
{ no: 1, name: "streamPartId", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
|
|
416
416
|
{ no: 2, name: "requestId", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
|
|
417
417
|
{ no: 3, name: "concurrentHandshakeTargetId", kind: "scalar", opt: true, T: 12 /*ScalarType.BYTES*/ },
|
|
418
418
|
{ no: 4, name: "neighborIds", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 12 /*ScalarType.BYTES*/ },
|
|
@@ -442,7 +442,7 @@ export const StreamPartHandshakeResponse = new StreamPartHandshakeResponse$Type(
|
|
|
442
442
|
class InterleaveNotice$Type extends MessageType<InterleaveNotice> {
|
|
443
443
|
constructor() {
|
|
444
444
|
super("InterleaveNotice", [
|
|
445
|
-
{ no: 1, name: "
|
|
445
|
+
{ no: 1, name: "streamPartId", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
|
|
446
446
|
{ no: 2, name: "interleaveTargetDescriptor", kind: "message", T: () => PeerDescriptor }
|
|
447
447
|
]);
|
|
448
448
|
}
|
|
@@ -455,7 +455,7 @@ export const InterleaveNotice = new InterleaveNotice$Type();
|
|
|
455
455
|
class LeaveStreamPartNotice$Type extends MessageType<LeaveStreamPartNotice> {
|
|
456
456
|
constructor() {
|
|
457
457
|
super("LeaveStreamPartNotice", [
|
|
458
|
-
{ no: 1, name: "
|
|
458
|
+
{ no: 1, name: "streamPartId", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
|
|
459
459
|
]);
|
|
460
460
|
}
|
|
461
461
|
}
|
|
@@ -467,7 +467,7 @@ export const LeaveStreamPartNotice = new LeaveStreamPartNotice$Type();
|
|
|
467
467
|
class NeighborUpdate$Type extends MessageType<NeighborUpdate> {
|
|
468
468
|
constructor() {
|
|
469
469
|
super("NeighborUpdate", [
|
|
470
|
-
{ no: 1, name: "
|
|
470
|
+
{ no: 1, name: "streamPartId", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
|
|
471
471
|
{ no: 2, name: "removeMe", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
|
|
472
472
|
{ no: 3, name: "neighborDescriptors", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => PeerDescriptor }
|
|
473
473
|
]);
|
|
@@ -525,9 +525,9 @@ class TemporaryConnectionResponse$Type extends MessageType<TemporaryConnectionRe
|
|
|
525
525
|
*/
|
|
526
526
|
export const TemporaryConnectionResponse = new TemporaryConnectionResponse$Type();
|
|
527
527
|
/**
|
|
528
|
-
* @generated ServiceType for protobuf service
|
|
528
|
+
* @generated ServiceType for protobuf service DeliveryRpc
|
|
529
529
|
*/
|
|
530
|
-
export const
|
|
530
|
+
export const DeliveryRpc = new ServiceType("DeliveryRpc", [
|
|
531
531
|
{ name: "sendStreamMessage", options: {}, I: StreamMessage, O: Empty },
|
|
532
532
|
{ name: "leaveStreamPartNotice", options: {}, I: LeaveStreamPartNotice, O: Empty }
|
|
533
533
|
]);
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/* eslint-disable no-console */
|
|
2
2
|
|
|
3
|
-
import { LatencyType, Simulator, getRandomRegion } from '@streamr/dht'
|
|
3
|
+
import { DhtNode, LatencyType, Simulator, getRandomRegion } from '@streamr/dht'
|
|
4
4
|
import { MessageID, StreamMessage, StreamMessageType, StreamPartID, StreamPartIDUtils, toStreamID, toStreamPartID } from '@streamr/protocol'
|
|
5
5
|
import { hexToBinary, utf8ToBinary, waitForEvent3 } from '@streamr/utils'
|
|
6
6
|
import fs from 'fs'
|
|
7
|
-
import { PeerDescriptor } from '
|
|
7
|
+
import { PeerDescriptor } from '@streamr/dht'
|
|
8
8
|
import { NetworkNode } from '../../src/NetworkNode'
|
|
9
9
|
import { getNodeIdFromPeerDescriptor } from '../../src/identifiers'
|
|
10
|
-
import { streamPartIdToDataKey } from '../../src/logic/
|
|
10
|
+
import { streamPartIdToDataKey } from '../../src/logic/EntryPointDiscovery'
|
|
11
11
|
import { createMockPeerDescriptor, createNetworkNodeWithSimulator } from '../utils/utils'
|
|
12
|
-
import {
|
|
12
|
+
import { Layer1Node } from '../../src/logic/Layer1Node'
|
|
13
13
|
import { RandomGraphNode } from '../../src/logic/RandomGraphNode'
|
|
14
14
|
|
|
15
15
|
const numNodes = 10000
|
|
@@ -28,8 +28,7 @@ const prepareLayer0 = async () => {
|
|
|
28
28
|
nodes = []
|
|
29
29
|
simulator = new Simulator(LatencyType.REAL)
|
|
30
30
|
const peerDescriptor = createMockPeerDescriptor({
|
|
31
|
-
region: getRandomRegion()
|
|
32
|
-
nodeName: 'entrypoint'
|
|
31
|
+
region: getRandomRegion()
|
|
33
32
|
})
|
|
34
33
|
layer0Ep = peerDescriptor
|
|
35
34
|
const entryPoint = createNetworkNodeWithSimulator(peerDescriptor, simulator, [peerDescriptor])
|
|
@@ -42,8 +41,7 @@ const prepareLayer0 = async () => {
|
|
|
42
41
|
const prepareStream = async (streamId: string) => {
|
|
43
42
|
console.log('Preparing stream ')
|
|
44
43
|
const peerDescriptor = createMockPeerDescriptor({
|
|
45
|
-
region: getRandomRegion()
|
|
46
|
-
nodeName: streamId
|
|
44
|
+
region: getRandomRegion()
|
|
47
45
|
})
|
|
48
46
|
const streamPartId = toStreamPartID(toStreamID(streamId), 0)
|
|
49
47
|
const streamPublisher = createNetworkNodeWithSimulator(peerDescriptor, simulator, [layer0Ep])
|
|
@@ -61,10 +59,9 @@ const shutdownNetwork = async () => {
|
|
|
61
59
|
simulator.stop()
|
|
62
60
|
}
|
|
63
61
|
|
|
64
|
-
const measureJoiningTime = async (
|
|
62
|
+
const measureJoiningTime = async () => {
|
|
65
63
|
const peerDescriptor = createMockPeerDescriptor({
|
|
66
|
-
region: getRandomRegion()
|
|
67
|
-
nodeName: `${count}`
|
|
64
|
+
region: getRandomRegion()
|
|
68
65
|
})
|
|
69
66
|
console.log('starting node with id ', getNodeIdFromPeerDescriptor(peerDescriptor))
|
|
70
67
|
|
|
@@ -93,7 +90,7 @@ const measureJoiningTime = async (count: number) => {
|
|
|
93
90
|
}, 1000)
|
|
94
91
|
// get random node from network to use as entrypoint
|
|
95
92
|
const randomNode = nodes[Math.floor(Math.random() * nodes.length)]
|
|
96
|
-
const streamSubscriber = createNetworkNodeWithSimulator(peerDescriptor, simulator, [randomNode.stack.
|
|
93
|
+
const streamSubscriber = createNetworkNodeWithSimulator(peerDescriptor, simulator, [randomNode.stack.getLayer0Node().getPeerDescriptor()])
|
|
97
94
|
currentNode = streamSubscriber
|
|
98
95
|
const start = performance.now()
|
|
99
96
|
await streamSubscriber.start()
|
|
@@ -121,7 +118,7 @@ const run = async () => {
|
|
|
121
118
|
|
|
122
119
|
fs.writeSync(logFile, 'Network size' + '\t' + 'Time to receive first message time (ms)' + '\n')
|
|
123
120
|
for (let i = 0; i < numNodes; i++) {
|
|
124
|
-
const time = await measureJoiningTime(
|
|
121
|
+
const time = await measureJoiningTime()
|
|
125
122
|
console.log(`Time to receive first message for ${i + 1} nodes network: ${time}ms`)
|
|
126
123
|
fs.writeSync(logFile, `${i + 1}` + '\t' + `${Math.round(time)}\n`)
|
|
127
124
|
}
|
|
@@ -135,14 +132,16 @@ run().then(() => {
|
|
|
135
132
|
console.log('done')
|
|
136
133
|
}).catch((err) => {
|
|
137
134
|
console.error(err)
|
|
138
|
-
const
|
|
139
|
-
const
|
|
135
|
+
const streamrNode = currentNode.stack.getStreamrNode()
|
|
136
|
+
const streamParts = streamrNode.getStreamParts()
|
|
137
|
+
const foundData = nodes[0].stack.getLayer0Node().getDataFromDht(streamPartIdToDataKey(streamParts[0]))
|
|
140
138
|
console.log(foundData)
|
|
141
|
-
|
|
142
|
-
console.log(
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
console.log(
|
|
139
|
+
const layer0Node = currentNode.stack.getLayer0Node() as DhtNode
|
|
140
|
+
console.log(layer0Node.getKBucketPeers().length)
|
|
141
|
+
console.log(layer0Node.getNumberOfConnections())
|
|
142
|
+
const streamPartDelivery = streamrNode.getStreamPartDelivery(streamParts[0])! as { layer1Node: Layer1Node, node: RandomGraphNode }
|
|
143
|
+
console.log(streamPartDelivery.layer1Node.getKBucketPeers())
|
|
144
|
+
console.log(streamPartDelivery.node.getTargetNeighborIds())
|
|
146
145
|
console.log(nodes[nodes.length - 1])
|
|
147
146
|
if (publishInterval) {
|
|
148
147
|
clearInterval(publishInterval)
|
|
@@ -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,57 +71,57 @@ 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
|
-
expect(proxiedNode.stack.
|
|
76
|
+
expect(proxiedNode.stack.getLayer0Node().hasJoined()).toBe(false)
|
|
78
77
|
|
|
79
78
|
await Promise.all([
|
|
80
79
|
waitForEvent3(proxyNode.stack.getStreamrNode()! as any, 'newMessage'),
|
|
81
80
|
proxiedNode.broadcast(createMessage(regularStreamPart1))
|
|
82
81
|
])
|
|
83
82
|
|
|
84
|
-
expect(proxiedNode.stack.
|
|
83
|
+
expect(proxiedNode.stack.getLayer0Node().hasJoined()).toBe(true)
|
|
85
84
|
|
|
86
85
|
await Promise.all([
|
|
87
86
|
waitForEvent3(proxyNode.stack.getStreamrNode()! as any, 'newMessage'),
|
|
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
|
-
expect(proxiedNode.stack.
|
|
96
|
+
expect(proxiedNode.stack.getLayer0Node().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)),
|
|
111
110
|
proxiedNode.broadcast(createMessage(regularStreamPart4))
|
|
112
111
|
])
|
|
113
112
|
|
|
114
|
-
expect(proxiedNode.stack.
|
|
113
|
+
expect(proxiedNode.stack.getLayer0Node().hasJoined()).toBe(true)
|
|
115
114
|
|
|
116
115
|
await Promise.all([
|
|
117
116
|
waitForEvent3(proxyNode.stack.getStreamrNode()! as any, 'newMessage'),
|
|
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,
|
|
@@ -5,6 +5,8 @@ import { createStreamMessage } from '../utils/utils'
|
|
|
5
5
|
import { createRandomGraphNode } from '../../src/logic/createRandomGraphNode'
|
|
6
6
|
import { StreamPartIDUtils } from '@streamr/protocol'
|
|
7
7
|
import { randomEthereumAddress } from '@streamr/test-utils'
|
|
8
|
+
import { Layer0Node } from '../../src/logic/Layer0Node'
|
|
9
|
+
import { Layer1Node } from '../../src/logic/Layer1Node'
|
|
8
10
|
|
|
9
11
|
describe('random graph with real connections', () => {
|
|
10
12
|
|
|
@@ -14,12 +16,15 @@ describe('random graph with real connections', () => {
|
|
|
14
16
|
websocket: { host: '127.0.0.1', port: 12221, tls: false }
|
|
15
17
|
}
|
|
16
18
|
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
let
|
|
22
|
-
let
|
|
19
|
+
const streamPartId = StreamPartIDUtils.parse('random-graph#0')
|
|
20
|
+
// Currently the nodes here are practically layer0 nodes acting as layer1 nodes, for the purpose of this test
|
|
21
|
+
// they are layer1 nodes as the DHT is per stream
|
|
22
|
+
// TODO refactor the test to use normal layering style (i.e. have separate objects for layer0 and layer1 nodes)
|
|
23
|
+
let epDhtNode: Layer0Node & Layer1Node
|
|
24
|
+
let dhtNode1: Layer0Node & Layer1Node
|
|
25
|
+
let dhtNode2: Layer0Node & Layer1Node
|
|
26
|
+
let dhtNode3: Layer0Node & Layer1Node
|
|
27
|
+
let dhtNode4: Layer0Node & Layer1Node
|
|
23
28
|
let randomGraphNode1: RandomGraphNode
|
|
24
29
|
let randomGraphNode2: RandomGraphNode
|
|
25
30
|
let randomGraphNode3: RandomGraphNode
|
|
@@ -41,38 +46,38 @@ describe('random graph with real connections', () => {
|
|
|
41
46
|
|
|
42
47
|
randomGraphNode1 = createRandomGraphNode(
|
|
43
48
|
{
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
49
|
+
streamPartId,
|
|
50
|
+
layer1Node: epDhtNode,
|
|
51
|
+
transport: epDhtNode.getTransport(),
|
|
47
52
|
connectionLocker: epDhtNode.getTransport() as ConnectionManager,
|
|
48
53
|
ownPeerDescriptor: epPeerDescriptor
|
|
49
54
|
}
|
|
50
55
|
)
|
|
51
56
|
randomGraphNode2 = createRandomGraphNode({
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
57
|
+
streamPartId,
|
|
58
|
+
layer1Node: dhtNode1,
|
|
59
|
+
transport: dhtNode1.getTransport(),
|
|
55
60
|
connectionLocker: dhtNode1.getTransport() as ConnectionManager,
|
|
56
61
|
ownPeerDescriptor: dhtNode1.getPeerDescriptor()
|
|
57
62
|
})
|
|
58
63
|
randomGraphNode3 = createRandomGraphNode({
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
streamPartId,
|
|
65
|
+
layer1Node: dhtNode2,
|
|
66
|
+
transport: dhtNode2.getTransport(),
|
|
62
67
|
connectionLocker: dhtNode2.getTransport() as ConnectionManager,
|
|
63
68
|
ownPeerDescriptor: dhtNode2.getPeerDescriptor()
|
|
64
69
|
})
|
|
65
70
|
randomGraphNode4 = createRandomGraphNode({
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
71
|
+
streamPartId,
|
|
72
|
+
layer1Node: dhtNode3,
|
|
73
|
+
transport: dhtNode3.getTransport(),
|
|
69
74
|
connectionLocker: dhtNode3.getTransport() as ConnectionManager,
|
|
70
75
|
ownPeerDescriptor: dhtNode3.getPeerDescriptor()
|
|
71
76
|
})
|
|
72
77
|
randomGraphNode5 = createRandomGraphNode({
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
78
|
+
streamPartId,
|
|
79
|
+
layer1Node: dhtNode4,
|
|
80
|
+
transport: dhtNode4.getTransport(),
|
|
76
81
|
connectionLocker: dhtNode4.getTransport() as ConnectionManager,
|
|
77
82
|
ownPeerDescriptor: dhtNode4.getPeerDescriptor()
|
|
78
83
|
})
|
|
@@ -144,7 +149,7 @@ describe('random graph with real connections', () => {
|
|
|
144
149
|
|
|
145
150
|
const msg = createStreamMessage(
|
|
146
151
|
JSON.stringify({ hello: 'WORLD' }),
|
|
147
|
-
|
|
152
|
+
streamPartId,
|
|
148
153
|
randomEthereumAddress()
|
|
149
154
|
)
|
|
150
155
|
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)
|