@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
|
@@ -8,25 +8,24 @@ import {
|
|
|
8
8
|
StreamMessageType
|
|
9
9
|
} from '../../proto/packages/trackerless-network/protos/NetworkRpc'
|
|
10
10
|
import { IProxyConnectionRpc } from '../../proto/packages/trackerless-network/protos/NetworkRpc.server'
|
|
11
|
-
import {
|
|
12
|
-
import { ListeningRpcCommunicator, PeerDescriptor } from '@streamr/dht'
|
|
11
|
+
import { DeliveryRpcRemote } from '../DeliveryRpcRemote'
|
|
12
|
+
import { DhtCallContext, ListeningRpcCommunicator, PeerDescriptor } from '@streamr/dht'
|
|
13
13
|
import { toProtoRpcClient } from '@streamr/proto-rpc'
|
|
14
|
-
import {
|
|
14
|
+
import { DeliveryRpcClient } from '../../proto/packages/trackerless-network/protos/NetworkRpc.client'
|
|
15
15
|
import { EventEmitter } from 'eventemitter3'
|
|
16
16
|
import { EthereumAddress, Logger, binaryToHex, toEthereumAddress } from '@streamr/utils'
|
|
17
17
|
import { StreamPartID } from '@streamr/protocol'
|
|
18
18
|
import { NodeID, getNodeIdFromPeerDescriptor } from '../../identifiers'
|
|
19
|
-
import { DhtCallContext } from '@streamr/dht/src/exports'
|
|
20
19
|
|
|
21
20
|
const logger = new Logger(module)
|
|
22
21
|
|
|
23
22
|
interface ProxyConnection {
|
|
24
23
|
direction: ProxyDirection // Direction is from the client's point of view
|
|
25
24
|
userId: EthereumAddress
|
|
26
|
-
remote:
|
|
25
|
+
remote: DeliveryRpcRemote
|
|
27
26
|
}
|
|
28
27
|
|
|
29
|
-
interface
|
|
28
|
+
interface ProxyConnectionRpcLocalConfig {
|
|
30
29
|
ownPeerDescriptor: PeerDescriptor
|
|
31
30
|
streamPartId: StreamPartID
|
|
32
31
|
rpcCommunicator: ListeningRpcCommunicator
|
|
@@ -36,12 +35,12 @@ export interface Events {
|
|
|
36
35
|
newConnection: (nodeId: NodeID) => void
|
|
37
36
|
}
|
|
38
37
|
|
|
39
|
-
export class
|
|
38
|
+
export class ProxyConnectionRpcLocal extends EventEmitter<Events> implements IProxyConnectionRpc {
|
|
40
39
|
|
|
41
|
-
private readonly config:
|
|
40
|
+
private readonly config: ProxyConnectionRpcLocalConfig
|
|
42
41
|
private readonly connections: Map<NodeID, ProxyConnection> = new Map()
|
|
43
42
|
|
|
44
|
-
constructor(config:
|
|
43
|
+
constructor(config: ProxyConnectionRpcLocalConfig) {
|
|
45
44
|
super()
|
|
46
45
|
this.config = config
|
|
47
46
|
this.config.rpcCommunicator.registerRpcMethod(ProxyConnectionRequest, ProxyConnectionResponse, 'requestConnection',
|
|
@@ -66,14 +65,6 @@ export class ProxyStreamConnectionServer extends EventEmitter<Events> implements
|
|
|
66
65
|
this.removeAllListeners()
|
|
67
66
|
}
|
|
68
67
|
|
|
69
|
-
getConnectedNodeIds(): NodeID[] {
|
|
70
|
-
return Array.from(this.connections.keys())
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
getConnections(): ProxyConnection[] {
|
|
74
|
-
return Array.from(this.connections.values())
|
|
75
|
-
}
|
|
76
|
-
|
|
77
68
|
getPropagationTargets(msg: StreamMessage): NodeID[] {
|
|
78
69
|
if (msg.messageType === StreamMessageType.GROUP_KEY_REQUEST) {
|
|
79
70
|
try {
|
|
@@ -103,11 +94,11 @@ export class ProxyStreamConnectionServer extends EventEmitter<Events> implements
|
|
|
103
94
|
this.connections.set(senderId, {
|
|
104
95
|
direction: request.direction,
|
|
105
96
|
userId: toEthereumAddress(binaryToHex(request.userId, true)),
|
|
106
|
-
remote: new
|
|
97
|
+
remote: new DeliveryRpcRemote(
|
|
107
98
|
this.config.ownPeerDescriptor,
|
|
108
99
|
senderPeerDescriptor,
|
|
109
100
|
this.config.streamPartId,
|
|
110
|
-
toProtoRpcClient(new
|
|
101
|
+
toProtoRpcClient(new DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport()))
|
|
111
102
|
)
|
|
112
103
|
})
|
|
113
104
|
const response: ProxyConnectionResponse = {
|
|
@@ -5,7 +5,7 @@ import { IProxyConnectionRpcClient } from '../../proto/packages/trackerless-netw
|
|
|
5
5
|
|
|
6
6
|
const logger = new Logger(module)
|
|
7
7
|
|
|
8
|
-
export class
|
|
8
|
+
export class ProxyConnectionRpcRemote extends Remote<IProxyConnectionRpcClient> {
|
|
9
9
|
|
|
10
10
|
async requestConnection(direction: ProxyDirection, userId: EthereumAddress): Promise<boolean> {
|
|
11
11
|
const request: ProxyConnectionRequest = {
|
|
@@ -2,25 +2,26 @@ import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
|
|
|
2
2
|
import { TemporaryConnectionRequest, TemporaryConnectionResponse } from '../../proto/packages/trackerless-network/protos/NetworkRpc'
|
|
3
3
|
import { ITemporaryConnectionRpc } from '../../proto/packages/trackerless-network/protos/NetworkRpc.server'
|
|
4
4
|
import { DhtCallContext, ListeningRpcCommunicator } from '@streamr/dht'
|
|
5
|
-
import {
|
|
5
|
+
import { DeliveryRpcClient } from '../../proto/packages/trackerless-network/protos/NetworkRpc.client'
|
|
6
6
|
import { NodeList } from '../NodeList'
|
|
7
7
|
import { toProtoRpcClient } from '@streamr/proto-rpc'
|
|
8
|
-
import {
|
|
8
|
+
import { DeliveryRpcRemote } from '../DeliveryRpcRemote'
|
|
9
9
|
import { PeerDescriptor } from '../../proto/packages/dht/protos/DhtRpc'
|
|
10
10
|
import { getNodeIdFromPeerDescriptor } from '../../identifiers'
|
|
11
|
+
import { StreamPartID } from '@streamr/protocol'
|
|
11
12
|
|
|
12
|
-
interface
|
|
13
|
-
|
|
13
|
+
interface TemporaryConnectionRpcLocalConfig {
|
|
14
|
+
streamPartId: StreamPartID
|
|
14
15
|
rpcCommunicator: ListeningRpcCommunicator
|
|
15
16
|
ownPeerDescriptor: PeerDescriptor
|
|
16
17
|
}
|
|
17
18
|
|
|
18
|
-
export class
|
|
19
|
+
export class TemporaryConnectionRpcLocal implements ITemporaryConnectionRpc {
|
|
19
20
|
|
|
20
|
-
private readonly config:
|
|
21
|
+
private readonly config: TemporaryConnectionRpcLocalConfig
|
|
21
22
|
private readonly temporaryNodes: NodeList
|
|
22
23
|
|
|
23
|
-
constructor(config:
|
|
24
|
+
constructor(config: TemporaryConnectionRpcLocalConfig) {
|
|
24
25
|
this.config = config
|
|
25
26
|
this.temporaryNodes = new NodeList(getNodeIdFromPeerDescriptor(config.ownPeerDescriptor), 10)
|
|
26
27
|
}
|
|
@@ -38,11 +39,11 @@ export class TemporaryConnectionRpcServer implements ITemporaryConnectionRpc {
|
|
|
38
39
|
context: ServerCallContext
|
|
39
40
|
): Promise<TemporaryConnectionResponse> {
|
|
40
41
|
const sender = (context as DhtCallContext).incomingSourceDescriptor!
|
|
41
|
-
const remote = new
|
|
42
|
+
const remote = new DeliveryRpcRemote(
|
|
42
43
|
this.config.ownPeerDescriptor,
|
|
43
44
|
sender,
|
|
44
|
-
this.config.
|
|
45
|
-
toProtoRpcClient(new
|
|
45
|
+
this.config.streamPartId,
|
|
46
|
+
toProtoRpcClient(new DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport()))
|
|
46
47
|
)
|
|
47
48
|
this.temporaryNodes.add(remote)
|
|
48
49
|
return {
|
|
@@ -5,7 +5,7 @@ import { ITemporaryConnectionRpcClient } from '../../proto/packages/trackerless-
|
|
|
5
5
|
|
|
6
6
|
const logger = new Logger(module)
|
|
7
7
|
|
|
8
|
-
export class
|
|
8
|
+
export class TemporaryConnectionRpcRemote extends Remote<ITemporaryConnectionRpcClient> {
|
|
9
9
|
|
|
10
10
|
async openConnection(): Promise<boolean> {
|
|
11
11
|
try {
|
|
@@ -231,10 +231,6 @@ export interface PeerDescriptor {
|
|
|
231
231
|
* @generated from protobuf field: optional uint32 region = 7;
|
|
232
232
|
*/
|
|
233
233
|
region?: number;
|
|
234
|
-
/**
|
|
235
|
-
* @generated from protobuf field: optional string nodeName = 8;
|
|
236
|
-
*/
|
|
237
|
-
nodeName?: string;
|
|
238
234
|
}
|
|
239
235
|
/**
|
|
240
236
|
* @generated from protobuf message dht.ConnectivityMethod
|
|
@@ -972,8 +968,7 @@ class PeerDescriptor$Type extends MessageType$<PeerDescriptor> {
|
|
|
972
968
|
{ no: 4, name: "tcp", kind: "message", T: () => ConnectivityMethod },
|
|
973
969
|
{ no: 5, name: "websocket", kind: "message", T: () => ConnectivityMethod },
|
|
974
970
|
{ no: 6, name: "openInternet", kind: "scalar", opt: true, T: 8 /*ScalarType.BOOL*/ },
|
|
975
|
-
{ no: 7, name: "region", kind: "scalar", opt: true, T: 13 /*ScalarType.UINT32*/ }
|
|
976
|
-
{ no: 8, name: "nodeName", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
|
|
971
|
+
{ no: 7, name: "region", kind: "scalar", opt: true, T: 13 /*ScalarType.UINT32*/ }
|
|
977
972
|
]);
|
|
978
973
|
}
|
|
979
974
|
}
|
|
@@ -15,7 +15,7 @@ import type { ProxyConnectionResponse } from "./NetworkRpc";
|
|
|
15
15
|
import type { ProxyConnectionRequest } from "./NetworkRpc";
|
|
16
16
|
import type { RpcTransport } from "@protobuf-ts/runtime-rpc";
|
|
17
17
|
import type { ServiceInfo } from "@protobuf-ts/runtime-rpc";
|
|
18
|
-
import {
|
|
18
|
+
import { DeliveryRpc } from "./NetworkRpc";
|
|
19
19
|
import type { LeaveStreamPartNotice } from "./NetworkRpc";
|
|
20
20
|
import { stackIntercept } from "@protobuf-ts/runtime-rpc";
|
|
21
21
|
import type { Empty } from "../../../google/protobuf/empty";
|
|
@@ -23,9 +23,9 @@ import type { StreamMessage } from "./NetworkRpc";
|
|
|
23
23
|
import type { UnaryCall } from "@protobuf-ts/runtime-rpc";
|
|
24
24
|
import type { RpcOptions } from "@protobuf-ts/runtime-rpc";
|
|
25
25
|
/**
|
|
26
|
-
* @generated from protobuf service
|
|
26
|
+
* @generated from protobuf service DeliveryRpc
|
|
27
27
|
*/
|
|
28
|
-
export interface
|
|
28
|
+
export interface IDeliveryRpcClient {
|
|
29
29
|
/**
|
|
30
30
|
* @generated from protobuf rpc: sendStreamMessage(StreamMessage) returns (google.protobuf.Empty);
|
|
31
31
|
*/
|
|
@@ -36,12 +36,12 @@ export interface INetworkRpcClient {
|
|
|
36
36
|
leaveStreamPartNotice(input: LeaveStreamPartNotice, options?: RpcOptions): UnaryCall<LeaveStreamPartNotice, Empty>;
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
|
-
* @generated from protobuf service
|
|
39
|
+
* @generated from protobuf service DeliveryRpc
|
|
40
40
|
*/
|
|
41
|
-
export class
|
|
42
|
-
typeName =
|
|
43
|
-
methods =
|
|
44
|
-
options =
|
|
41
|
+
export class DeliveryRpcClient implements IDeliveryRpcClient, ServiceInfo {
|
|
42
|
+
typeName = DeliveryRpc.typeName;
|
|
43
|
+
methods = DeliveryRpc.methods;
|
|
44
|
+
options = DeliveryRpc.options;
|
|
45
45
|
constructor(private readonly _transport: RpcTransport) {
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
@@ -14,9 +14,9 @@ import { Empty } from "../../../google/protobuf/empty";
|
|
|
14
14
|
import { StreamMessage } from "./NetworkRpc";
|
|
15
15
|
import { ServerCallContext } from "@protobuf-ts/runtime-rpc";
|
|
16
16
|
/**
|
|
17
|
-
* @generated from protobuf service
|
|
17
|
+
* @generated from protobuf service DeliveryRpc
|
|
18
18
|
*/
|
|
19
|
-
export interface
|
|
19
|
+
export interface IDeliveryRpc<T = ServerCallContext> {
|
|
20
20
|
/**
|
|
21
21
|
* @generated from protobuf rpc: sendStreamMessage(StreamMessage) returns (google.protobuf.Empty);
|
|
22
22
|
*/
|
|
@@ -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
|
]);
|
|
@@ -4,10 +4,10 @@ import { 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
12
|
import { ILayer1 } from '../../src/logic/ILayer1'
|
|
13
13
|
import { RandomGraphNode } from '../../src/logic/RandomGraphNode'
|
|
@@ -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
|
|
|
@@ -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
|
}
|
|
@@ -140,9 +137,9 @@ run().then(() => {
|
|
|
140
137
|
console.log(foundData)
|
|
141
138
|
console.log(currentNode.stack.getLayer0DhtNode().getKBucketPeers().length)
|
|
142
139
|
console.log(currentNode.stack.getLayer0DhtNode().getNumberOfConnections())
|
|
143
|
-
const
|
|
144
|
-
console.log(
|
|
145
|
-
console.log(
|
|
140
|
+
const streamPartDelivery = currentNode.stack.getStreamrNode().getStreamPartDelivery(streamParts[0])! as { layer1: ILayer1, node: RandomGraphNode }
|
|
141
|
+
console.log(streamPartDelivery.layer1.getKBucketPeers())
|
|
142
|
+
console.log(streamPartDelivery.node.getTargetNeighborIds())
|
|
146
143
|
console.log(nodes[nodes.length - 1])
|
|
147
144
|
if (publishInterval) {
|
|
148
145
|
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,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()!.
|
|
45
|
-
return client.
|
|
44
|
+
const client = (proxiedNode.stack.getStreamrNode()!.getStreamPartDelivery(STREAM_PART_ID) as { client: ProxyClient }).client
|
|
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()],
|