@streamr/trackerless-network 102.0.0-beta.0 → 102.0.0-beta.1
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/generated/google/protobuf/any.js.map +1 -0
- package/dist/generated/google/protobuf/empty.js.map +1 -0
- package/dist/generated/google/protobuf/timestamp.js.map +1 -0
- package/dist/{src/proto → generated}/packages/dht/protos/DhtRpc.client.d.ts +9 -0
- package/dist/{src/proto → generated}/packages/dht/protos/DhtRpc.client.js +7 -0
- package/dist/generated/packages/dht/protos/DhtRpc.client.js.map +1 -0
- package/dist/{src/proto → generated}/packages/dht/protos/DhtRpc.d.ts +32 -8
- package/dist/{src/proto → generated}/packages/dht/protos/DhtRpc.js +23 -7
- package/dist/generated/packages/dht/protos/DhtRpc.js.map +1 -0
- package/dist/{src/proto → generated}/packages/dht/protos/DhtRpc.server.d.ts +5 -0
- package/dist/generated/packages/dht/protos/DhtRpc.server.js.map +1 -0
- package/dist/generated/packages/proto-rpc/protos/ProtoRpc.js.map +1 -0
- package/dist/generated/packages/trackerless-network/protos/NetworkRpc.client.js.map +1 -0
- package/dist/{src/proto → generated}/packages/trackerless-network/protos/NetworkRpc.d.ts +3 -3
- package/dist/{src/proto → generated}/packages/trackerless-network/protos/NetworkRpc.js +1 -1
- package/dist/generated/packages/trackerless-network/protos/NetworkRpc.js.map +1 -0
- package/dist/generated/packages/trackerless-network/protos/NetworkRpc.server.js.map +1 -0
- package/dist/package.json +9 -10
- package/dist/src/NetworkNode.d.ts +4 -3
- package/dist/src/NetworkNode.js.map +1 -1
- package/dist/src/NetworkStack.d.ts +2 -2
- package/dist/src/NetworkStack.js +4 -4
- package/dist/src/NetworkStack.js.map +1 -1
- package/dist/src/exports.d.ts +3 -2
- package/dist/src/exports.js +3 -2
- package/dist/src/exports.js.map +1 -1
- package/dist/src/logic/ContentDeliveryLayerNode.d.ts +2 -1
- package/dist/src/logic/ContentDeliveryLayerNode.js +5 -5
- package/dist/src/logic/ContentDeliveryLayerNode.js.map +1 -1
- package/dist/src/logic/ContentDeliveryManager.d.ts +2 -1
- package/dist/src/logic/ContentDeliveryManager.js +2 -1
- package/dist/src/logic/ContentDeliveryManager.js.map +1 -1
- package/dist/src/logic/ContentDeliveryRpcLocal.d.ts +3 -3
- package/dist/src/logic/ContentDeliveryRpcLocal.js +1 -1
- package/dist/src/logic/ContentDeliveryRpcLocal.js.map +1 -1
- package/dist/src/logic/ContentDeliveryRpcRemote.d.ts +2 -2
- package/dist/src/logic/ControlLayerNode.d.ts +1 -1
- package/dist/src/logic/DiscoveryLayerNode.d.ts +3 -3
- package/dist/src/logic/DuplicateMessageDetector.js +1 -1
- package/dist/src/logic/DuplicateMessageDetector.js.map +1 -1
- package/dist/src/logic/PeerDescriptorStoreManager.d.ts +1 -1
- package/dist/src/logic/PeerDescriptorStoreManager.js +1 -1
- package/dist/src/logic/PeerDescriptorStoreManager.js.map +1 -1
- package/dist/src/logic/inspect/InspectSession.d.ts +2 -2
- package/dist/src/logic/inspect/InspectSession.js +2 -2
- package/dist/src/logic/inspect/InspectSession.js.map +1 -1
- package/dist/src/logic/inspect/Inspector.d.ts +1 -1
- package/dist/src/logic/inspect/Inspector.js +1 -1
- package/dist/src/logic/inspect/Inspector.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.d.ts +2 -2
- package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.d.ts +2 -2
- package/dist/src/logic/neighbor-discovery/Handshaker.js +2 -2
- package/dist/src/logic/neighbor-discovery/Handshaker.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js +2 -2
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.d.ts +2 -2
- package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.d.ts +1 -1
- package/dist/src/logic/node-info/NodeInfoClient.d.ts +1 -1
- package/dist/src/logic/node-info/NodeInfoClient.js +1 -1
- package/dist/src/logic/node-info/NodeInfoClient.js.map +1 -1
- package/dist/src/logic/node-info/NodeInfoRpcLocal.d.ts +2 -2
- package/dist/src/logic/node-info/NodeInfoRpcLocal.js +1 -1
- package/dist/src/logic/node-info/NodeInfoRpcLocal.js.map +1 -1
- package/dist/src/logic/node-info/NodeInfoRpcRemote.d.ts +2 -2
- package/dist/src/logic/propagation/Propagation.d.ts +1 -1
- package/dist/src/logic/propagation/PropagationTaskStore.d.ts +1 -1
- package/dist/src/logic/proxy/ProxyClient.d.ts +1 -2
- package/dist/src/logic/proxy/ProxyClient.js +2 -3
- package/dist/src/logic/proxy/ProxyClient.js.map +1 -1
- package/dist/src/logic/proxy/ProxyConnectionRpcLocal.d.ts +2 -2
- package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js +4 -4
- package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js.map +1 -1
- package/dist/src/logic/proxy/ProxyConnectionRpcRemote.d.ts +2 -2
- package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js +1 -1
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.d.ts +4 -4
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js +1 -1
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js.map +1 -1
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.d.ts +1 -1
- package/dist/src/logic/utils.d.ts +1 -1
- package/dist/src/logic/utils.js +2 -2
- package/dist/src/logic/utils.js.map +1 -1
- package/dist/src/types.d.ts +6 -0
- package/dist/src/types.js +3 -0
- package/dist/src/types.js.map +1 -0
- package/dist/test/benchmark/first-message.js +2 -2
- package/dist/test/benchmark/first-message.js.map +1 -1
- package/dist/test/utils/utils.d.ts +2 -2
- package/dist/test/utils/utils.js +5 -4
- package/dist/test/utils/utils.js.map +1 -1
- package/jest.config.ts +13 -0
- package/package.json +9 -10
- package/proto.sh +2 -2
- package/protos/NetworkRpc.proto +2 -3
- package/src/NetworkNode.ts +4 -3
- package/src/NetworkStack.ts +6 -7
- package/src/exports.ts +5 -3
- package/src/logic/ContentDeliveryLayerNode.ts +6 -6
- package/src/logic/ContentDeliveryManager.ts +4 -2
- package/src/logic/ContentDeliveryRpcLocal.ts +3 -3
- package/src/logic/ContentDeliveryRpcRemote.ts +2 -2
- package/src/logic/ControlLayerNode.ts +1 -1
- package/src/logic/DiscoveryLayerNode.ts +3 -3
- package/src/logic/DuplicateMessageDetector.ts +2 -2
- package/src/logic/PeerDescriptorStoreManager.ts +1 -1
- package/src/logic/createContentDeliveryLayerNode.ts +1 -1
- package/src/logic/inspect/InspectSession.ts +5 -4
- package/src/logic/inspect/Inspector.ts +2 -2
- package/src/logic/neighbor-discovery/HandshakeRpcLocal.ts +2 -2
- package/src/logic/neighbor-discovery/HandshakeRpcRemote.ts +2 -2
- package/src/logic/neighbor-discovery/Handshaker.ts +2 -2
- package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +2 -2
- package/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.ts +3 -3
- package/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.ts +2 -2
- package/src/logic/node-info/NodeInfoClient.ts +2 -2
- package/src/logic/node-info/NodeInfoRpcLocal.ts +2 -2
- package/src/logic/node-info/NodeInfoRpcRemote.ts +2 -2
- package/src/logic/propagation/Propagation.ts +1 -1
- package/src/logic/propagation/PropagationTaskStore.ts +1 -1
- package/src/logic/proxy/ProxyClient.ts +2 -3
- package/src/logic/proxy/ProxyConnectionRpcLocal.ts +6 -6
- package/src/logic/proxy/ProxyConnectionRpcRemote.ts +4 -4
- package/src/logic/temporary-connection/TemporaryConnectionRpcLocal.ts +5 -5
- package/src/logic/temporary-connection/TemporaryConnectionRpcRemote.ts +1 -1
- package/src/logic/utils.ts +4 -4
- package/src/types.ts +13 -0
- package/test/benchmark/first-message.ts +4 -2
- package/test/end-to-end/content-delivery-layer-node-with-real-connections.test.ts +9 -4
- package/test/end-to-end/external-network-rpc.test.ts +2 -2
- package/test/end-to-end/inspect.test.ts +4 -4
- package/test/end-to-end/proxy-and-full-node.test.ts +3 -3
- package/test/end-to-end/proxy-connections.test.ts +10 -12
- package/test/end-to-end/proxy-key-exchange.test.ts +6 -6
- package/test/end-to-end/webrtc-full-node-network.test.ts +3 -5
- package/test/end-to-end/websocket-full-node-network.test.ts +4 -6
- package/test/integration/ContentDeliveryLayerNode-Layer1Node-Latencies.test.ts +7 -7
- package/test/integration/ContentDeliveryLayerNode-Layer1Node.test.ts +6 -6
- package/test/integration/ContentDeliveryManager.test.ts +17 -14
- package/test/integration/ContentDeliveryRpcRemote.test.ts +6 -6
- package/test/integration/HandshakeRpcRemote.test.ts +2 -2
- package/test/integration/Handshakes.test.ts +15 -50
- package/test/integration/NeighborUpdateRpcRemote.test.ts +2 -2
- package/test/integration/NetworkNode.test.ts +5 -5
- package/test/integration/NetworkRpc.test.ts +6 -6
- package/test/integration/NetworkStack.test.ts +2 -2
- package/test/integration/NodeInfoRpc.test.ts +3 -3
- package/test/integration/Propagation.test.ts +4 -4
- package/test/integration/joining-streams-on-offline-peers.test.ts +3 -3
- package/test/integration/stream-without-default-entrypoints.test.ts +8 -8
- package/test/integration/streamEntryPointReplacing.test.ts +3 -3
- package/test/types/global.d.ts +0 -1
- package/test/unit/ContentDeliveryLayerNode.test.ts +4 -4
- package/test/unit/ContentDeliveryManager.test.ts +5 -4
- package/test/unit/ContentDeliveryRpcLocal.test.ts +1 -1
- package/test/unit/DuplicateMessageDetector.test.ts +10 -10
- package/test/unit/ExternalNetworkRpc.test.ts +3 -3
- package/test/unit/HandshakeRpcLocal.test.ts +1 -14
- package/test/unit/InspectSession.test.ts +4 -1
- package/test/unit/Inspector.test.ts +1 -1
- package/test/unit/NeighborFinder.test.ts +2 -2
- package/test/unit/NeighborUpdateRpcLocal.test.ts +1 -1
- package/test/unit/NetworkNode.test.ts +3 -3
- package/test/unit/NodeList.test.ts +1 -1
- package/test/unit/PeerDescriptorStoreManager.test.ts +2 -2
- package/test/unit/Propagation.test.ts +4 -4
- package/test/unit/ProxyConnectionRpcRemote.test.ts +2 -2
- package/test/unit/StreamPartReconnect.test.ts +2 -2
- package/test/utils/mock/MockNeighborUpdateManager.ts +1 -1
- package/test/utils/utils.ts +6 -5
- package/tsconfig.browser.json +1 -0
- package/tsconfig.jest.json +1 -0
- package/tsconfig.node.json +1 -0
- package/.eslintignore +0 -7
- package/.eslintrc +0 -3
- package/dist/src/proto/google/protobuf/any.js.map +0 -1
- package/dist/src/proto/google/protobuf/empty.js.map +0 -1
- package/dist/src/proto/google/protobuf/timestamp.js.map +0 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +0 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +0 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.server.js.map +0 -1
- package/dist/src/proto/packages/proto-rpc/protos/ProtoRpc.js.map +0 -1
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js.map +0 -1
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js.map +0 -1
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.server.js.map +0 -1
- package/jest.config.js +0 -8
- package/src/proto/google/protobuf/any.ts +0 -326
- package/src/proto/google/protobuf/empty.ts +0 -81
- package/src/proto/google/protobuf/timestamp.ts +0 -287
- package/src/proto/packages/dht/protos/DhtRpc.client.ts +0 -407
- package/src/proto/packages/dht/protos/DhtRpc.server.ts +0 -160
- package/src/proto/packages/dht/protos/DhtRpc.ts +0 -1244
- package/src/proto/packages/proto-rpc/protos/ProtoRpc.ts +0 -108
- package/src/proto/packages/trackerless-network/protos/NetworkRpc.client.ts +0 -218
- package/src/proto/packages/trackerless-network/protos/NetworkRpc.server.ts +0 -85
- package/src/proto/packages/trackerless-network/protos/NetworkRpc.ts +0 -783
- /package/dist/{src/proto → generated}/google/protobuf/any.d.ts +0 -0
- /package/dist/{src/proto → generated}/google/protobuf/any.js +0 -0
- /package/dist/{src/proto → generated}/google/protobuf/empty.d.ts +0 -0
- /package/dist/{src/proto → generated}/google/protobuf/empty.js +0 -0
- /package/dist/{src/proto → generated}/google/protobuf/timestamp.d.ts +0 -0
- /package/dist/{src/proto → generated}/google/protobuf/timestamp.js +0 -0
- /package/dist/{src/proto → generated}/packages/dht/protos/DhtRpc.server.js +0 -0
- /package/dist/{src/proto → generated}/packages/proto-rpc/protos/ProtoRpc.d.ts +0 -0
- /package/dist/{src/proto → generated}/packages/proto-rpc/protos/ProtoRpc.js +0 -0
- /package/dist/{src/proto → generated}/packages/trackerless-network/protos/NetworkRpc.client.d.ts +0 -0
- /package/dist/{src/proto → generated}/packages/trackerless-network/protos/NetworkRpc.client.js +0 -0
- /package/dist/{src/proto → generated}/packages/trackerless-network/protos/NetworkRpc.server.d.ts +0 -0
- /package/dist/{src/proto → generated}/packages/trackerless-network/protos/NetworkRpc.server.js +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { randomUserId } from '@streamr/test-utils'
|
|
2
|
-
import { StreamPartID, StreamPartIDUtils, hexToBinary, utf8ToBinary, waitForEvent3 } from '@streamr/utils'
|
|
2
|
+
import { StreamPartID, StreamPartIDUtils, hexToBinary, toUserIdRaw, utf8ToBinary, waitForEvent3 } from '@streamr/utils'
|
|
3
3
|
import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
|
|
4
4
|
import {
|
|
5
5
|
ContentType,
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
ProxyDirection,
|
|
8
8
|
SignatureType,
|
|
9
9
|
StreamMessage
|
|
10
|
-
} from '../../
|
|
10
|
+
} from '../../generated/packages/trackerless-network/protos/NetworkRpc'
|
|
11
11
|
import { createMockPeerDescriptor } from '../utils/utils'
|
|
12
12
|
|
|
13
13
|
const PROXIED_NODE_USER_ID = randomUserId()
|
|
@@ -19,7 +19,7 @@ const createMessage = (streamPartId: StreamPartID): StreamMessage => {
|
|
|
19
19
|
streamPartition: StreamPartIDUtils.getStreamPartition(streamPartId),
|
|
20
20
|
timestamp: 666,
|
|
21
21
|
sequenceNumber: 0,
|
|
22
|
-
publisherId:
|
|
22
|
+
publisherId: toUserIdRaw(randomUserId()),
|
|
23
23
|
messageChainId: 'msgChainId'
|
|
24
24
|
},
|
|
25
25
|
previousMessageRef: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DhtAddress } from '@streamr/dht'
|
|
2
2
|
import { randomUserId } from '@streamr/test-utils'
|
|
3
|
-
import { StreamPartIDUtils, hexToBinary, utf8ToBinary, wait,
|
|
3
|
+
import { StreamPartIDUtils, hexToBinary, toUserIdRaw, utf8ToBinary, wait, until, waitForEvent3 } from '@streamr/utils'
|
|
4
4
|
import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
|
|
5
5
|
import { ContentDeliveryLayerNode } from '../../src/logic/ContentDeliveryLayerNode'
|
|
6
6
|
import { ProxyClient } from '../../src/logic/proxy/ProxyClient'
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
ProxyDirection,
|
|
11
11
|
SignatureType,
|
|
12
12
|
StreamMessage
|
|
13
|
-
} from '../../
|
|
13
|
+
} from '../../generated/packages/trackerless-network/protos/NetworkRpc'
|
|
14
14
|
import { createMockPeerDescriptor } from '../utils/utils'
|
|
15
15
|
|
|
16
16
|
const PROXIED_NODE_USER_ID = randomUserId()
|
|
@@ -21,7 +21,7 @@ const MESSAGE: StreamMessage = {
|
|
|
21
21
|
streamPartition: StreamPartIDUtils.getStreamPartition(STREAM_PART_ID),
|
|
22
22
|
timestamp: 666,
|
|
23
23
|
sequenceNumber: 0,
|
|
24
|
-
publisherId:
|
|
24
|
+
publisherId: toUserIdRaw(randomUserId()),
|
|
25
25
|
messageChainId: 'msgChainId'
|
|
26
26
|
},
|
|
27
27
|
previousMessageRef: {
|
|
@@ -79,7 +79,6 @@ describe('Proxy connections', () => {
|
|
|
79
79
|
}
|
|
80
80
|
})
|
|
81
81
|
await proxyNode1.start()
|
|
82
|
-
proxyNode1.setStreamPartEntryPoints(STREAM_PART_ID, [proxyNodeDescriptor1])
|
|
83
82
|
proxyNode1.stack.getContentDeliveryManager().joinStreamPart(STREAM_PART_ID)
|
|
84
83
|
proxyNode2 = createNetworkNode({
|
|
85
84
|
layer0: {
|
|
@@ -92,7 +91,6 @@ describe('Proxy connections', () => {
|
|
|
92
91
|
}
|
|
93
92
|
})
|
|
94
93
|
await proxyNode2.start()
|
|
95
|
-
proxyNode2.setStreamPartEntryPoints(STREAM_PART_ID, [proxyNodeDescriptor1])
|
|
96
94
|
proxyNode2.stack.getContentDeliveryManager().joinStreamPart(STREAM_PART_ID)
|
|
97
95
|
proxiedNode = createNetworkNode({
|
|
98
96
|
layer0: {
|
|
@@ -131,7 +129,7 @@ describe('Proxy connections', () => {
|
|
|
131
129
|
expect(hasConnectionFromProxy(proxyNode1)).toBe(true)
|
|
132
130
|
await proxiedNode.setProxies(STREAM_PART_ID, [], ProxyDirection.PUBLISH, PROXIED_NODE_USER_ID, 0)
|
|
133
131
|
expect(proxiedNode.hasStreamPart(STREAM_PART_ID)).toBe(false)
|
|
134
|
-
await
|
|
132
|
+
await until(() => hasConnectionFromProxy(proxyNode1) === false)
|
|
135
133
|
})
|
|
136
134
|
|
|
137
135
|
it('can leave proxy subscribe connection', async () => {
|
|
@@ -140,7 +138,7 @@ describe('Proxy connections', () => {
|
|
|
140
138
|
expect(hasConnectionFromProxy(proxyNode1)).toBe(true)
|
|
141
139
|
await proxiedNode.setProxies(STREAM_PART_ID, [], ProxyDirection.SUBSCRIBE, PROXIED_NODE_USER_ID, 0)
|
|
142
140
|
expect(proxiedNode.hasStreamPart(STREAM_PART_ID)).toBe(false)
|
|
143
|
-
await
|
|
141
|
+
await until(() => hasConnectionFromProxy(proxyNode1) === false)
|
|
144
142
|
})
|
|
145
143
|
|
|
146
144
|
it('can open multiple proxy connections', async () => {
|
|
@@ -167,7 +165,7 @@ describe('Proxy connections', () => {
|
|
|
167
165
|
expect(hasConnectionFromProxy(proxyNode2)).toBe(true)
|
|
168
166
|
await proxiedNode.setProxies(STREAM_PART_ID, [proxyNode1.getPeerDescriptor()], ProxyDirection.SUBSCRIBE, PROXIED_NODE_USER_ID)
|
|
169
167
|
expect(proxiedNode.hasStreamPart(STREAM_PART_ID)).toBe(true)
|
|
170
|
-
await
|
|
168
|
+
await until(() => hasConnectionFromProxy(proxyNode2) === false)
|
|
171
169
|
expect(hasConnectionFromProxy(proxyNode1)).toBe(true)
|
|
172
170
|
})
|
|
173
171
|
|
|
@@ -184,8 +182,8 @@ describe('Proxy connections', () => {
|
|
|
184
182
|
|
|
185
183
|
await proxiedNode.setProxies(STREAM_PART_ID, [], ProxyDirection.SUBSCRIBE, PROXIED_NODE_USER_ID)
|
|
186
184
|
expect(proxiedNode.hasStreamPart(STREAM_PART_ID)).toBe(false)
|
|
187
|
-
await
|
|
188
|
-
await
|
|
185
|
+
await until(() => hasConnectionFromProxy(proxyNode1) === false)
|
|
186
|
+
await until(() => hasConnectionFromProxy(proxyNode2) === false)
|
|
189
187
|
})
|
|
190
188
|
|
|
191
189
|
it('will reconnect if proxy node goes offline and comes back online', async () => {
|
|
@@ -197,10 +195,10 @@ describe('Proxy connections', () => {
|
|
|
197
195
|
)
|
|
198
196
|
expect(proxiedNode.hasStreamPart(STREAM_PART_ID)).toBe(true)
|
|
199
197
|
await proxyNode1.leave(STREAM_PART_ID)
|
|
200
|
-
await
|
|
198
|
+
await until(() => hasConnectionToProxy(proxyNode1.getNodeId(), ProxyDirection.SUBSCRIBE))
|
|
201
199
|
expect(hasConnectionFromProxy(proxyNode1)).toBe(false)
|
|
202
200
|
proxyNode1.stack.getContentDeliveryManager().joinStreamPart(STREAM_PART_ID)
|
|
203
|
-
await
|
|
201
|
+
await until(() => hasConnectionToProxy(proxyNode1.getNodeId(), ProxyDirection.SUBSCRIBE), 25000)
|
|
204
202
|
// TODO why wait is needed?
|
|
205
203
|
await wait(100)
|
|
206
204
|
expect(hasConnectionFromProxy(proxyNode1)).toBe(true)
|
|
@@ -2,10 +2,11 @@ import { randomUserId } from '@streamr/test-utils'
|
|
|
2
2
|
import {
|
|
3
3
|
StreamPartIDUtils,
|
|
4
4
|
hexToBinary,
|
|
5
|
+
toUserIdRaw,
|
|
5
6
|
waitForEvent3
|
|
6
7
|
} from '@streamr/utils'
|
|
7
8
|
import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
|
|
8
|
-
import { ProxyDirection, SignatureType, StreamMessage } from '../../
|
|
9
|
+
import { ProxyDirection, SignatureType, StreamMessage } from '../../generated/packages/trackerless-network/protos/NetworkRpc'
|
|
9
10
|
import { createMockPeerDescriptor } from '../utils/utils'
|
|
10
11
|
|
|
11
12
|
const STREAM_PART_ID = StreamPartIDUtils.parse('proxy-test#0')
|
|
@@ -36,7 +37,6 @@ describe('proxy group key exchange', () => {
|
|
|
36
37
|
}
|
|
37
38
|
})
|
|
38
39
|
await proxyNode.start()
|
|
39
|
-
proxyNode.setStreamPartEntryPoints(STREAM_PART_ID, [proxyNodeDescriptor])
|
|
40
40
|
proxyNode.stack.getContentDeliveryManager().joinStreamPart(STREAM_PART_ID)
|
|
41
41
|
publisher = createNetworkNode({
|
|
42
42
|
layer0: {
|
|
@@ -71,14 +71,14 @@ describe('proxy group key exchange', () => {
|
|
|
71
71
|
streamPartition: StreamPartIDUtils.getStreamPartition(STREAM_PART_ID),
|
|
72
72
|
timestamp: Date.now(),
|
|
73
73
|
sequenceNumber: 0,
|
|
74
|
-
publisherId:
|
|
74
|
+
publisherId: toUserIdRaw(subscriberUserId),
|
|
75
75
|
messageChainId: '0'
|
|
76
76
|
},
|
|
77
77
|
body: {
|
|
78
78
|
oneofKind: 'groupKeyRequest' as const,
|
|
79
79
|
groupKeyRequest: {
|
|
80
80
|
requestId: 'requestId',
|
|
81
|
-
recipientId:
|
|
81
|
+
recipientId: toUserIdRaw(publisherUserId),
|
|
82
82
|
rsaPublicKey: new Uint8Array(),
|
|
83
83
|
groupKeyIds: ['mock']
|
|
84
84
|
}
|
|
@@ -103,14 +103,14 @@ describe('proxy group key exchange', () => {
|
|
|
103
103
|
streamPartition: StreamPartIDUtils.getStreamPartition(STREAM_PART_ID),
|
|
104
104
|
timestamp: Date.now(),
|
|
105
105
|
sequenceNumber: 0,
|
|
106
|
-
publisherId:
|
|
106
|
+
publisherId: toUserIdRaw(publisherUserId),
|
|
107
107
|
messageChainId: '0'
|
|
108
108
|
},
|
|
109
109
|
body: {
|
|
110
110
|
oneofKind: 'groupKeyResponse' as const,
|
|
111
111
|
groupKeyResponse: {
|
|
112
112
|
requestId: 'requestId',
|
|
113
|
-
recipientId:
|
|
113
|
+
recipientId: toUserIdRaw(publisherUserId),
|
|
114
114
|
groupKeys: []
|
|
115
115
|
}
|
|
116
116
|
},
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { toNodeId, getRandomRegion } from '@streamr/dht'
|
|
2
|
-
import { StreamPartIDUtils,
|
|
2
|
+
import { StreamPartIDUtils, until } from '@streamr/utils'
|
|
3
3
|
import { range } from 'lodash'
|
|
4
4
|
import { NetworkStack } from '../../src/NetworkStack'
|
|
5
5
|
import { createMockPeerDescriptor, createStreamMessage } from '../utils/utils'
|
|
@@ -32,7 +32,6 @@ describe('Full node network with WebRTC connections', () => {
|
|
|
32
32
|
}
|
|
33
33
|
})
|
|
34
34
|
await entryPoint.start()
|
|
35
|
-
entryPoint.getContentDeliveryManager().setStreamPartEntryPoints(streamPartId, [epPeerDescriptor])
|
|
36
35
|
entryPoint.getContentDeliveryManager().joinStreamPart(streamPartId)
|
|
37
36
|
|
|
38
37
|
await Promise.all(range(NUM_OF_NODES).map(async () => {
|
|
@@ -45,7 +44,6 @@ describe('Full node network with WebRTC connections', () => {
|
|
|
45
44
|
})
|
|
46
45
|
nodes.push(node)
|
|
47
46
|
await node.start()
|
|
48
|
-
node.getContentDeliveryManager().setStreamPartEntryPoints(streamPartId, [epPeerDescriptor])
|
|
49
47
|
node.getContentDeliveryManager().joinStreamPart(streamPartId)
|
|
50
48
|
}))
|
|
51
49
|
|
|
@@ -60,7 +58,7 @@ describe('Full node network with WebRTC connections', () => {
|
|
|
60
58
|
|
|
61
59
|
it('happy path', async () => {
|
|
62
60
|
await Promise.all(nodes.map((node) =>
|
|
63
|
-
|
|
61
|
+
until(() => {
|
|
64
62
|
return node.getContentDeliveryManager().getNeighbors(streamPartId).length >= 3
|
|
65
63
|
}
|
|
66
64
|
, 30000)
|
|
@@ -79,7 +77,7 @@ describe('Full node network with WebRTC connections', () => {
|
|
|
79
77
|
randomUserId()
|
|
80
78
|
)
|
|
81
79
|
entryPoint.getContentDeliveryManager().broadcast(msg)
|
|
82
|
-
await
|
|
80
|
+
await until(() => receivedMessageCount === NUM_OF_NODES)
|
|
83
81
|
}, 120000)
|
|
84
82
|
|
|
85
83
|
})
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { toNodeId } from '@streamr/dht'
|
|
2
|
-
import { StreamPartIDUtils,
|
|
2
|
+
import { StreamPartIDUtils, until } from '@streamr/utils'
|
|
3
3
|
import { range } from 'lodash'
|
|
4
4
|
import { NetworkStack } from '../../src/NetworkStack'
|
|
5
5
|
import { createMockPeerDescriptor, createStreamMessage } from '../utils/utils'
|
|
@@ -7,7 +7,7 @@ import { randomUserId } from '@streamr/test-utils'
|
|
|
7
7
|
|
|
8
8
|
describe('Full node network with WebSocket connections only', () => {
|
|
9
9
|
|
|
10
|
-
const NUM_OF_NODES =
|
|
10
|
+
const NUM_OF_NODES = 12
|
|
11
11
|
const epPeerDescriptor = createMockPeerDescriptor({
|
|
12
12
|
websocket: { host: '127.0.0.1', port: 15555, tls: false }
|
|
13
13
|
})
|
|
@@ -29,7 +29,6 @@ describe('Full node network with WebSocket connections only', () => {
|
|
|
29
29
|
}
|
|
30
30
|
})
|
|
31
31
|
await entryPoint.start()
|
|
32
|
-
entryPoint.getContentDeliveryManager().setStreamPartEntryPoints(streamPartId, [epPeerDescriptor])
|
|
33
32
|
entryPoint.getContentDeliveryManager().joinStreamPart(streamPartId)
|
|
34
33
|
|
|
35
34
|
await Promise.all(range(NUM_OF_NODES).map(async (i) => {
|
|
@@ -43,7 +42,6 @@ describe('Full node network with WebSocket connections only', () => {
|
|
|
43
42
|
})
|
|
44
43
|
nodes.push(node)
|
|
45
44
|
await node.start()
|
|
46
|
-
node.getContentDeliveryManager().setStreamPartEntryPoints(streamPartId, [epPeerDescriptor])
|
|
47
45
|
node.getContentDeliveryManager().joinStreamPart(streamPartId)
|
|
48
46
|
}))
|
|
49
47
|
|
|
@@ -58,7 +56,7 @@ describe('Full node network with WebSocket connections only', () => {
|
|
|
58
56
|
|
|
59
57
|
it('happy path', async () => {
|
|
60
58
|
await Promise.all(nodes.map((node) =>
|
|
61
|
-
|
|
59
|
+
until(() => {
|
|
62
60
|
return node.getContentDeliveryManager().getNeighbors(streamPartId).length >= 4
|
|
63
61
|
}
|
|
64
62
|
, 30000)
|
|
@@ -78,7 +76,7 @@ describe('Full node network with WebSocket connections only', () => {
|
|
|
78
76
|
randomUserId()
|
|
79
77
|
)
|
|
80
78
|
entryPoint.getContentDeliveryManager().broadcast(msg)
|
|
81
|
-
await
|
|
79
|
+
await until(() => receivedMessageCount === NUM_OF_NODES)
|
|
82
80
|
}, 220000)
|
|
83
81
|
|
|
84
82
|
})
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DhtNode, LatencyType, PeerDescriptor, Simulator, SimulatorTransport, toNodeId } from '@streamr/dht'
|
|
2
|
-
import { StreamPartIDUtils,
|
|
2
|
+
import { StreamPartIDUtils, until } from '@streamr/utils'
|
|
3
3
|
import { range } from 'lodash'
|
|
4
4
|
import { ContentDeliveryLayerNode } from '../../src/logic/ContentDeliveryLayerNode'
|
|
5
5
|
import { DiscoveryLayerNode } from '../../src/logic/DiscoveryLayerNode'
|
|
@@ -72,8 +72,8 @@ describe('ContentDeliveryLayerNode-DhtNode-Latencies', () => {
|
|
|
72
72
|
await otherContentDeliveryLayerNodes[0].start()
|
|
73
73
|
await otherDiscoveryLayerNodes[0].joinDht([entrypointDescriptor])
|
|
74
74
|
await Promise.all([
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
until(() => otherContentDeliveryLayerNodes[0].getNearbyNodeView().getIds().length === 1),
|
|
76
|
+
until(() => otherContentDeliveryLayerNodes[0].getNeighbors().length === 1)
|
|
77
77
|
])
|
|
78
78
|
expect(otherContentDeliveryLayerNodes[0].getNearbyNodeView().getIds().length).toEqual(1)
|
|
79
79
|
expect(otherContentDeliveryLayerNodes[0].getNeighbors().length).toEqual(1)
|
|
@@ -84,7 +84,7 @@ describe('ContentDeliveryLayerNode-DhtNode-Latencies', () => {
|
|
|
84
84
|
await Promise.all(range(4).map(async (i) => {
|
|
85
85
|
await otherDiscoveryLayerNodes[i].joinDht([entrypointDescriptor])
|
|
86
86
|
}))
|
|
87
|
-
await
|
|
87
|
+
await until(() => range(4).every((i) => otherContentDeliveryLayerNodes[i].getNeighbors().length >= 4), 15000, 1000)
|
|
88
88
|
range(4).forEach((i) => {
|
|
89
89
|
expect(otherContentDeliveryLayerNodes[i].getNearbyNodeView().getIds().length).toBeGreaterThanOrEqual(4)
|
|
90
90
|
expect(otherContentDeliveryLayerNodes[i].getNeighbors().length).toBeGreaterThanOrEqual(4)
|
|
@@ -110,14 +110,14 @@ describe('ContentDeliveryLayerNode-DhtNode-Latencies', () => {
|
|
|
110
110
|
otherDiscoveryLayerNodes[i].joinDht([entrypointDescriptor])
|
|
111
111
|
}))
|
|
112
112
|
await Promise.all(otherContentDeliveryLayerNodes.map((node) =>
|
|
113
|
-
|
|
113
|
+
until(() => node.getNeighbors().length >= 4, 10000)
|
|
114
114
|
))
|
|
115
115
|
|
|
116
116
|
await Promise.all(otherContentDeliveryLayerNodes.map((node) =>
|
|
117
|
-
|
|
117
|
+
until(() => node.getOutgoingHandshakeCount() === 0)
|
|
118
118
|
))
|
|
119
119
|
|
|
120
|
-
await
|
|
120
|
+
await until(() => {
|
|
121
121
|
let mismatchCounter = 0
|
|
122
122
|
otherContentDeliveryLayerNodes.forEach((node) => {
|
|
123
123
|
const nodeId = node.getOwnNodeId()
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ConnectionManager, DhtNode, PeerDescriptor, Simulator, SimulatorTransport, toNodeId, getRandomRegion } from '@streamr/dht'
|
|
2
|
-
import { Logger, StreamPartIDUtils,
|
|
2
|
+
import { Logger, StreamPartIDUtils, until } from '@streamr/utils'
|
|
3
3
|
import { range } from 'lodash'
|
|
4
4
|
import { ContentDeliveryLayerNode } from '../../src/logic/ContentDeliveryLayerNode'
|
|
5
5
|
import { DiscoveryLayerNode } from '../../src/logic/DiscoveryLayerNode'
|
|
@@ -92,7 +92,7 @@ describe('ContentDeliveryLayerNode-DhtNode', () => {
|
|
|
92
92
|
await otherContentDeliveryLayerNodes[0].start()
|
|
93
93
|
await otherDiscoveryLayerNodes[0].joinDht([entrypointDescriptor])
|
|
94
94
|
|
|
95
|
-
await
|
|
95
|
+
await until(() => otherContentDeliveryLayerNodes[0].getNeighbors().length === 1)
|
|
96
96
|
expect(otherContentDeliveryLayerNodes[0].getNearbyNodeView().getIds().length).toEqual(1)
|
|
97
97
|
expect(otherContentDeliveryLayerNodes[0].getNeighbors().length).toEqual(1)
|
|
98
98
|
})
|
|
@@ -103,7 +103,7 @@ describe('ContentDeliveryLayerNode-DhtNode', () => {
|
|
|
103
103
|
await otherDiscoveryLayerNodes[i].joinDht([entrypointDescriptor])
|
|
104
104
|
}))
|
|
105
105
|
|
|
106
|
-
await
|
|
106
|
+
await until(() => range(4).every((i) => otherContentDeliveryLayerNodes[i].getNeighbors().length === 4))
|
|
107
107
|
range(4).forEach((i) => {
|
|
108
108
|
expect(otherContentDeliveryLayerNodes[i].getNearbyNodeView().getIds().length).toBeGreaterThanOrEqual(4)
|
|
109
109
|
expect(otherContentDeliveryLayerNodes[i].getNeighbors().length).toBeGreaterThanOrEqual(4)
|
|
@@ -129,7 +129,7 @@ describe('ContentDeliveryLayerNode-DhtNode', () => {
|
|
|
129
129
|
otherDiscoveryLayerNodes[i].joinDht([entrypointDescriptor])
|
|
130
130
|
}))
|
|
131
131
|
await Promise.all(otherContentDeliveryLayerNodes.map((node) =>
|
|
132
|
-
|
|
132
|
+
until(() => node.getNeighbors().length >= 4, 10000)
|
|
133
133
|
))
|
|
134
134
|
|
|
135
135
|
const avg = otherContentDeliveryLayerNodes.reduce((acc, curr) => {
|
|
@@ -138,9 +138,9 @@ describe('ContentDeliveryLayerNode-DhtNode', () => {
|
|
|
138
138
|
|
|
139
139
|
logger.info(`AVG Number of neighbors: ${avg}`)
|
|
140
140
|
await Promise.all(otherContentDeliveryLayerNodes.map((node) =>
|
|
141
|
-
|
|
141
|
+
until(() => node.getOutgoingHandshakeCount() === 0)
|
|
142
142
|
))
|
|
143
|
-
await
|
|
143
|
+
await until(() => {
|
|
144
144
|
let mismatchCounter = 0
|
|
145
145
|
otherContentDeliveryLayerNodes.forEach((node) => {
|
|
146
146
|
const nodeId = node.getOwnNodeId()
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
Simulator,
|
|
4
4
|
SimulatorTransport
|
|
5
5
|
} from '@streamr/dht'
|
|
6
|
-
import { StreamPartIDUtils,
|
|
6
|
+
import { StreamPartIDUtils, until, waitForEvent3, wait } from '@streamr/utils'
|
|
7
7
|
import { ContentDeliveryManager, Events } from '../../src/logic/ContentDeliveryManager'
|
|
8
8
|
import { ControlLayerNode } from '../../src/logic/ControlLayerNode'
|
|
9
9
|
import { createMockPeerDescriptor, createStreamMessage } from '../utils/utils'
|
|
@@ -84,8 +84,8 @@ describe('ContentDeliveryManager', () => {
|
|
|
84
84
|
it('Joining stream', async () => {
|
|
85
85
|
manager1.joinStreamPart(STREAM_PART_ID)
|
|
86
86
|
manager2.joinStreamPart(STREAM_PART_ID)
|
|
87
|
-
await
|
|
88
|
-
await
|
|
87
|
+
await until(() => manager1.getNeighbors(STREAM_PART_ID).length === 1)
|
|
88
|
+
await until(() => manager2.getNeighbors(STREAM_PART_ID).length === 1)
|
|
89
89
|
expect(manager1.getNeighbors(STREAM_PART_ID).length).toEqual(1)
|
|
90
90
|
expect(manager2.getNeighbors(STREAM_PART_ID).length).toEqual(1)
|
|
91
91
|
})
|
|
@@ -93,10 +93,11 @@ describe('ContentDeliveryManager', () => {
|
|
|
93
93
|
it('Publishing after joining and waiting for neighbors', async () => {
|
|
94
94
|
manager1.joinStreamPart(STREAM_PART_ID)
|
|
95
95
|
manager2.joinStreamPart(STREAM_PART_ID)
|
|
96
|
-
await
|
|
97
|
-
await
|
|
96
|
+
await until(() => manager1.getNeighbors(STREAM_PART_ID).length === 1)
|
|
97
|
+
await until(() => manager2.getNeighbors(STREAM_PART_ID).length === 1)
|
|
98
98
|
await Promise.all([
|
|
99
99
|
waitForEvent3<Events>(manager1, 'newMessage'),
|
|
100
|
+
// eslint-disable-next-line @typescript-eslint/no-confusing-void-expression
|
|
100
101
|
manager2.broadcast(msg)
|
|
101
102
|
])
|
|
102
103
|
})
|
|
@@ -110,10 +111,10 @@ describe('ContentDeliveryManager', () => {
|
|
|
110
111
|
manager2.joinStreamPart(STREAM_PART_ID)
|
|
111
112
|
manager2.joinStreamPart(streamPartId2)
|
|
112
113
|
await Promise.all([
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
114
|
+
until(() => manager1.getNeighbors(STREAM_PART_ID).length === 1),
|
|
115
|
+
until(() => manager2.getNeighbors(STREAM_PART_ID).length === 1),
|
|
116
|
+
until(() => manager1.getNeighbors(streamPartId2).length === 1),
|
|
117
|
+
until(() => manager2.getNeighbors(streamPartId2).length === 1)
|
|
117
118
|
])
|
|
118
119
|
const msg2 = createStreamMessage(
|
|
119
120
|
JSON.stringify({ hello: 'WORLD' }),
|
|
@@ -123,7 +124,9 @@ describe('ContentDeliveryManager', () => {
|
|
|
123
124
|
await Promise.all([
|
|
124
125
|
waitForEvent3<Events>(manager1, 'newMessage'),
|
|
125
126
|
waitForEvent3<Events>(manager2, 'newMessage'),
|
|
127
|
+
// eslint-disable-next-line @typescript-eslint/no-confusing-void-expression
|
|
126
128
|
manager1.broadcast(msg2),
|
|
129
|
+
// eslint-disable-next-line @typescript-eslint/no-confusing-void-expression
|
|
127
130
|
manager2.broadcast(msg)
|
|
128
131
|
])
|
|
129
132
|
})
|
|
@@ -132,19 +135,19 @@ describe('ContentDeliveryManager', () => {
|
|
|
132
135
|
manager1.joinStreamPart(STREAM_PART_ID)
|
|
133
136
|
manager2.joinStreamPart(STREAM_PART_ID)
|
|
134
137
|
await Promise.all([
|
|
135
|
-
|
|
136
|
-
|
|
138
|
+
until(() => manager1.getNeighbors(STREAM_PART_ID).length === 1),
|
|
139
|
+
until(() => manager2.getNeighbors(STREAM_PART_ID).length === 1)
|
|
137
140
|
])
|
|
138
141
|
await manager2.leaveStreamPart(STREAM_PART_ID)
|
|
139
|
-
await
|
|
142
|
+
await until(() => manager1.getNeighbors(STREAM_PART_ID).length === 0)
|
|
140
143
|
})
|
|
141
144
|
|
|
142
145
|
it('RTTs are updated for node info', async () => {
|
|
143
146
|
manager1.joinStreamPart(STREAM_PART_ID)
|
|
144
147
|
manager2.joinStreamPart(STREAM_PART_ID)
|
|
145
148
|
await Promise.all([
|
|
146
|
-
|
|
147
|
-
|
|
149
|
+
until(() => manager1.getNeighbors(STREAM_PART_ID).length === 1),
|
|
150
|
+
until(() => manager2.getNeighbors(STREAM_PART_ID).length === 1)
|
|
148
151
|
])
|
|
149
152
|
// Wait for RTTs to be updated
|
|
150
153
|
await wait(500)
|
|
@@ -5,14 +5,14 @@ import {
|
|
|
5
5
|
Simulator,
|
|
6
6
|
SimulatorTransport
|
|
7
7
|
} from '@streamr/dht'
|
|
8
|
-
import { StreamPartIDUtils,
|
|
8
|
+
import { StreamPartIDUtils, until } from '@streamr/utils'
|
|
9
9
|
import { ContentDeliveryRpcRemote } from '../../src/logic/ContentDeliveryRpcRemote'
|
|
10
|
-
import { Empty } from '../../
|
|
10
|
+
import { Empty } from '../../generated/google/protobuf/empty'
|
|
11
11
|
import {
|
|
12
12
|
LeaveStreamPartNotice,
|
|
13
13
|
StreamMessage
|
|
14
|
-
} from '../../
|
|
15
|
-
import { ContentDeliveryRpcClient } from '../../
|
|
14
|
+
} from '../../generated/packages/trackerless-network/protos/NetworkRpc'
|
|
15
|
+
import { ContentDeliveryRpcClient } from '../../generated/packages/trackerless-network/protos/NetworkRpc.client'
|
|
16
16
|
import { createStreamMessage } from '../utils/utils'
|
|
17
17
|
import { randomUserId } from '@streamr/test-utils'
|
|
18
18
|
|
|
@@ -89,12 +89,12 @@ describe('ContentDeliveryRpcRemote', () => {
|
|
|
89
89
|
)
|
|
90
90
|
|
|
91
91
|
await rpcRemote.sendStreamMessage(msg)
|
|
92
|
-
await
|
|
92
|
+
await until(() => recvCounter === 1)
|
|
93
93
|
})
|
|
94
94
|
|
|
95
95
|
it('leaveNotice', async () => {
|
|
96
96
|
rpcRemote.leaveStreamPartNotice(StreamPartIDUtils.parse('test#0'), false)
|
|
97
|
-
await
|
|
97
|
+
await until(() => recvCounter === 1)
|
|
98
98
|
})
|
|
99
99
|
|
|
100
100
|
})
|
|
@@ -10,10 +10,10 @@ import { HandshakeRpcRemote } from '../../src/logic/neighbor-discovery/Handshake
|
|
|
10
10
|
import {
|
|
11
11
|
StreamPartHandshakeRequest,
|
|
12
12
|
StreamPartHandshakeResponse
|
|
13
|
-
} from '../../
|
|
13
|
+
} from '../../generated/packages/trackerless-network/protos/NetworkRpc'
|
|
14
14
|
import {
|
|
15
15
|
HandshakeRpcClient,
|
|
16
|
-
} from '../../
|
|
16
|
+
} from '../../generated/packages/trackerless-network/protos/NetworkRpc.client'
|
|
17
17
|
|
|
18
18
|
describe('HandshakeRpcRemote', () => {
|
|
19
19
|
let mockServerRpc: ListeningRpcCommunicator
|
|
@@ -8,12 +8,10 @@ import {
|
|
|
8
8
|
} from '@streamr/dht'
|
|
9
9
|
import { StreamPartIDUtils } from '@streamr/utils'
|
|
10
10
|
import { NodeList } from '../../src/logic/NodeList'
|
|
11
|
-
import { HandshakeRpcRemote } from '../../src/logic/neighbor-discovery/HandshakeRpcRemote'
|
|
12
11
|
import { Handshaker } from '../../src/logic/neighbor-discovery/Handshaker'
|
|
13
|
-
import { StreamPartHandshakeRequest, StreamPartHandshakeResponse } from '../../
|
|
14
|
-
import {
|
|
15
|
-
|
|
16
|
-
} from '../../src/proto/packages/trackerless-network/protos/NetworkRpc.client'
|
|
12
|
+
import { StreamPartHandshakeRequest, StreamPartHandshakeResponse } from '../../generated/packages/trackerless-network/protos/NetworkRpc'
|
|
13
|
+
import { ContentDeliveryRpcClient } from '../../generated/packages/trackerless-network/protos/NetworkRpc.client'
|
|
14
|
+
import { ContentDeliveryRpcRemote } from '../../src/logic/ContentDeliveryRpcRemote'
|
|
17
15
|
|
|
18
16
|
describe('Handshakes', () => {
|
|
19
17
|
|
|
@@ -86,6 +84,12 @@ describe('Handshakes', () => {
|
|
|
86
84
|
leftNodeView = new NodeList(handshakerNodeId, 10)
|
|
87
85
|
rightNodeView = new NodeList(handshakerNodeId, 10)
|
|
88
86
|
nodeView = new NodeList(handshakerNodeId, 10)
|
|
87
|
+
nodeView.add(new ContentDeliveryRpcRemote(
|
|
88
|
+
peerDescriptor2,
|
|
89
|
+
peerDescriptor1,
|
|
90
|
+
rpcCommunicator2,
|
|
91
|
+
ContentDeliveryRpcClient
|
|
92
|
+
))
|
|
89
93
|
neighbors = new NodeList(handshakerNodeId, 4)
|
|
90
94
|
handshaker = new Handshaker({
|
|
91
95
|
localPeerDescriptor: peerDescriptor2,
|
|
@@ -112,64 +116,25 @@ describe('Handshakes', () => {
|
|
|
112
116
|
simulator.stop()
|
|
113
117
|
})
|
|
114
118
|
|
|
115
|
-
it('Two nodes can handshake', async () => {
|
|
116
|
-
rpcCommunicator1.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', acceptHandshake)
|
|
117
|
-
// @ts-expect-error private
|
|
118
|
-
const res = await handshaker.handshakeWithTarget(
|
|
119
|
-
new HandshakeRpcRemote(
|
|
120
|
-
peerDescriptor2,
|
|
121
|
-
peerDescriptor1,
|
|
122
|
-
rpcCommunicator2,
|
|
123
|
-
HandshakeRpcClient
|
|
124
|
-
)
|
|
125
|
-
)
|
|
126
|
-
expect(res).toEqual(true)
|
|
127
|
-
expect(neighbors.has(toNodeId(peerDescriptor1))).toEqual(true)
|
|
128
|
-
})
|
|
129
|
-
|
|
130
119
|
it('Handshake accepted', async () => {
|
|
131
120
|
rpcCommunicator1.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', acceptHandshake)
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
new HandshakeRpcRemote(
|
|
135
|
-
peerDescriptor2,
|
|
136
|
-
peerDescriptor1,
|
|
137
|
-
rpcCommunicator2,
|
|
138
|
-
HandshakeRpcClient
|
|
139
|
-
)
|
|
140
|
-
)
|
|
141
|
-
expect(res).toEqual(true)
|
|
121
|
+
const res = await handshaker.attemptHandshakesOnContacts([])
|
|
122
|
+
expect(res).toHaveLength(0)
|
|
142
123
|
expect(neighbors.has(toNodeId(peerDescriptor1))).toEqual(true)
|
|
143
124
|
})
|
|
144
125
|
|
|
145
126
|
it('Handshake rejected', async () => {
|
|
146
127
|
rpcCommunicator1.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', rejectHandshake)
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
new HandshakeRpcRemote(
|
|
150
|
-
peerDescriptor2,
|
|
151
|
-
peerDescriptor1,
|
|
152
|
-
rpcCommunicator2,
|
|
153
|
-
HandshakeRpcClient
|
|
154
|
-
)
|
|
155
|
-
)
|
|
156
|
-
expect(res).toEqual(false)
|
|
128
|
+
const res = await handshaker.attemptHandshakesOnContacts([])
|
|
129
|
+
expect(res[0]).toEqual(toNodeId(peerDescriptor1))
|
|
157
130
|
expect(neighbors.has(toNodeId(peerDescriptor1))).toEqual(false)
|
|
158
131
|
})
|
|
159
132
|
|
|
160
133
|
it('Handshake with Interleaving', async () => {
|
|
161
134
|
rpcCommunicator1.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', interleavingHandshake)
|
|
162
135
|
rpcCommunicator3.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', acceptHandshake)
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
new HandshakeRpcRemote(
|
|
166
|
-
peerDescriptor2,
|
|
167
|
-
peerDescriptor1,
|
|
168
|
-
rpcCommunicator2,
|
|
169
|
-
HandshakeRpcClient
|
|
170
|
-
)
|
|
171
|
-
)
|
|
172
|
-
expect(res).toEqual(true)
|
|
136
|
+
const res = await handshaker.attemptHandshakesOnContacts([])
|
|
137
|
+
expect(res).toHaveLength(0)
|
|
173
138
|
expect(neighbors.has(toNodeId(peerDescriptor1))).toEqual(true)
|
|
174
139
|
expect(neighbors.has(toNodeId(peerDescriptor3))).toEqual(true)
|
|
175
140
|
})
|
|
@@ -7,10 +7,10 @@ import {
|
|
|
7
7
|
} from '@streamr/dht'
|
|
8
8
|
import { StreamPartIDUtils } from '@streamr/utils'
|
|
9
9
|
import { NeighborUpdateRpcRemote } from '../../src/logic/neighbor-discovery/NeighborUpdateRpcRemote'
|
|
10
|
-
import { NeighborUpdate } from '../../
|
|
10
|
+
import { NeighborUpdate } from '../../generated/packages/trackerless-network/protos/NetworkRpc'
|
|
11
11
|
import {
|
|
12
12
|
NeighborUpdateRpcClient,
|
|
13
|
-
} from '../../
|
|
13
|
+
} from '../../generated/packages/trackerless-network/protos/NetworkRpc.client'
|
|
14
14
|
|
|
15
15
|
describe('NeighborUpdateRpcRemote', () => {
|
|
16
16
|
let mockServerRpc: ListeningRpcCommunicator
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { PeerDescriptor, Simulator, SimulatorTransport } from '@streamr/dht'
|
|
2
|
-
import {
|
|
2
|
+
import { randomUserId } from '@streamr/test-utils'
|
|
3
|
+
import { StreamPartIDUtils, hexToBinary, toUserIdRaw, utf8ToBinary, until } from '@streamr/utils'
|
|
3
4
|
import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
|
|
4
|
-
import { ContentType, EncryptionType, SignatureType, StreamMessage } from '../../
|
|
5
|
+
import { ContentType, EncryptionType, SignatureType, StreamMessage } from '../../generated/packages/trackerless-network/protos/NetworkRpc'
|
|
5
6
|
import { createMockPeerDescriptor } from '../utils/utils'
|
|
6
|
-
import { randomUserId } from '@streamr/test-utils'
|
|
7
7
|
|
|
8
8
|
const STREAM_PART_ID = StreamPartIDUtils.parse('test#0')
|
|
9
9
|
|
|
@@ -63,7 +63,7 @@ describe('NetworkNode', () => {
|
|
|
63
63
|
streamPartition: StreamPartIDUtils.getStreamPartition(STREAM_PART_ID),
|
|
64
64
|
timestamp: 666,
|
|
65
65
|
sequenceNumber: 0,
|
|
66
|
-
publisherId:
|
|
66
|
+
publisherId: toUserIdRaw(randomUserId()),
|
|
67
67
|
messageChainId: 'msgChainId'
|
|
68
68
|
},
|
|
69
69
|
previousMessageRef: {
|
|
@@ -92,7 +92,7 @@ describe('NetworkNode', () => {
|
|
|
92
92
|
msgCount += 1
|
|
93
93
|
})
|
|
94
94
|
await node2.broadcast(streamMessage)
|
|
95
|
-
await
|
|
95
|
+
await until(() => msgCount === 1)
|
|
96
96
|
})
|
|
97
97
|
|
|
98
98
|
it('fetchNodeInfo', async () => {
|