@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
|
@@ -1,28 +1,23 @@
|
|
|
1
|
-
import { PeerDescriptor,
|
|
1
|
+
import { PeerDescriptor, areEqualPeerDescriptors } from '@streamr/dht'
|
|
2
2
|
import { StreamPartIDUtils } from '@streamr/protocol'
|
|
3
3
|
import { wait } from '@streamr/utils'
|
|
4
4
|
import { range } from 'lodash'
|
|
5
|
-
import {
|
|
6
|
-
import { StreamPartEntryPointDiscovery } from '../../src/logic/StreamPartEntryPointDiscovery'
|
|
5
|
+
import { EntryPointDiscovery } from '../../src/logic/EntryPointDiscovery'
|
|
7
6
|
import { Any } from '../../src/proto/google/protobuf/any'
|
|
8
7
|
import { DataEntry } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
9
|
-
import {
|
|
8
|
+
import { MockLayer1Node } from '../utils/mock/MockLayer1Node'
|
|
10
9
|
import { createMockPeerDescriptor } from '../utils/utils'
|
|
11
10
|
|
|
12
11
|
const STREAM_PART_ID = StreamPartIDUtils.parse('stream#0')
|
|
13
12
|
|
|
14
|
-
describe('
|
|
13
|
+
describe('EntryPointDiscovery', () => {
|
|
15
14
|
|
|
16
|
-
let entryPointDiscoveryWithData:
|
|
17
|
-
let entryPointDiscoveryWithoutData:
|
|
15
|
+
let entryPointDiscoveryWithData: EntryPointDiscovery
|
|
16
|
+
let entryPointDiscoveryWithoutData: EntryPointDiscovery
|
|
18
17
|
let storeCalled: number
|
|
19
18
|
|
|
20
|
-
const peerDescriptor = createMockPeerDescriptor(
|
|
21
|
-
|
|
22
|
-
})
|
|
23
|
-
const deletedPeerDescriptor = createMockPeerDescriptor({
|
|
24
|
-
nodeName: 'deleted'
|
|
25
|
-
})
|
|
19
|
+
const peerDescriptor = createMockPeerDescriptor()
|
|
20
|
+
const deletedPeerDescriptor = createMockPeerDescriptor()
|
|
26
21
|
|
|
27
22
|
const fakeData: DataEntry = {
|
|
28
23
|
data: Any.pack(peerDescriptor, PeerDescriptor),
|
|
@@ -42,32 +37,22 @@ describe('StreamPartEntryPointDiscovery', () => {
|
|
|
42
37
|
deleted: true
|
|
43
38
|
}
|
|
44
39
|
|
|
45
|
-
const fakeGetEntryPointData = async (
|
|
46
|
-
return
|
|
47
|
-
closestNodes: [peerDescriptor],
|
|
48
|
-
dataEntries: [fakeData, fakeDeletedData]
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const fakegetEntryPointDataViaNode = async (_key: Uint8Array, _node: PeerDescriptor): Promise<DataEntry[]> => {
|
|
53
|
-
return [fakeData]
|
|
40
|
+
const fakeGetEntryPointData = async (): Promise<DataEntry[]> => {
|
|
41
|
+
return [fakeData, fakeDeletedData]
|
|
54
42
|
}
|
|
55
43
|
|
|
56
|
-
const fakeStoreEntryPointData = async (
|
|
44
|
+
const fakeStoreEntryPointData = async (): Promise<PeerDescriptor[]> => {
|
|
57
45
|
storeCalled++
|
|
58
46
|
return [peerDescriptor]
|
|
59
47
|
}
|
|
60
48
|
|
|
61
|
-
const fakeEmptyGetEntryPointData = async (
|
|
62
|
-
return
|
|
63
|
-
closestNodes: [],
|
|
64
|
-
dataEntries: []
|
|
65
|
-
}
|
|
49
|
+
const fakeEmptyGetEntryPointData = async (): Promise<DataEntry[]> => {
|
|
50
|
+
return []
|
|
66
51
|
}
|
|
67
52
|
|
|
68
|
-
const fakeDeleteEntryPointData = async (
|
|
53
|
+
const fakeDeleteEntryPointData = async (): Promise<void> => {}
|
|
69
54
|
|
|
70
|
-
const
|
|
55
|
+
const addNodesToStreamPart = (layer1: MockLayer1Node, count: number) => {
|
|
71
56
|
range(count).forEach(() => {
|
|
72
57
|
layer1.addNewRandomPeerToKBucket()
|
|
73
58
|
layer1.addNewRandomPeerToKBucket()
|
|
@@ -76,30 +61,28 @@ describe('StreamPartEntryPointDiscovery', () => {
|
|
|
76
61
|
})
|
|
77
62
|
}
|
|
78
63
|
|
|
79
|
-
let
|
|
64
|
+
let layer1Node: MockLayer1Node
|
|
80
65
|
|
|
81
66
|
beforeEach(() => {
|
|
82
67
|
storeCalled = 0
|
|
83
|
-
|
|
84
|
-
entryPointDiscoveryWithData = new
|
|
68
|
+
layer1Node = new MockLayer1Node()
|
|
69
|
+
entryPointDiscoveryWithData = new EntryPointDiscovery({
|
|
85
70
|
ownPeerDescriptor: peerDescriptor,
|
|
86
71
|
streamPartId: STREAM_PART_ID,
|
|
87
|
-
|
|
72
|
+
layer1Node,
|
|
88
73
|
getEntryPointData: fakeGetEntryPointData,
|
|
89
|
-
getEntryPointDataViaNode: fakegetEntryPointDataViaNode,
|
|
90
74
|
storeEntryPointData: fakeStoreEntryPointData,
|
|
91
75
|
deleteEntryPointData: fakeDeleteEntryPointData,
|
|
92
|
-
|
|
76
|
+
storeInterval: 2000
|
|
93
77
|
})
|
|
94
|
-
entryPointDiscoveryWithoutData = new
|
|
78
|
+
entryPointDiscoveryWithoutData = new EntryPointDiscovery({
|
|
95
79
|
ownPeerDescriptor: peerDescriptor,
|
|
96
80
|
streamPartId: STREAM_PART_ID,
|
|
97
|
-
|
|
81
|
+
layer1Node,
|
|
98
82
|
getEntryPointData: fakeEmptyGetEntryPointData,
|
|
99
|
-
getEntryPointDataViaNode: fakegetEntryPointDataViaNode,
|
|
100
83
|
storeEntryPointData: fakeStoreEntryPointData,
|
|
101
84
|
deleteEntryPointData: fakeDeleteEntryPointData,
|
|
102
|
-
|
|
85
|
+
storeInterval: 2000
|
|
103
86
|
})
|
|
104
87
|
})
|
|
105
88
|
|
|
@@ -116,14 +99,14 @@ describe('StreamPartEntryPointDiscovery', () => {
|
|
|
116
99
|
it('discoverEntryPointsFromDht does not have known entrypoints', async () => {
|
|
117
100
|
const res = await entryPointDiscoveryWithData.discoverEntryPointsFromDht(0)
|
|
118
101
|
expect(res.discoveredEntryPoints.length).toBe(1)
|
|
119
|
-
expect(
|
|
102
|
+
expect(areEqualPeerDescriptors(res.discoveredEntryPoints[0], peerDescriptor)).toBe(true)
|
|
120
103
|
})
|
|
121
104
|
|
|
122
105
|
it('discoverEntryPointsfromDht on an empty stream', async () => {
|
|
123
106
|
const res = await entryPointDiscoveryWithoutData.discoverEntryPointsFromDht(0)
|
|
124
107
|
expect(res.entryPointsFromDht).toEqual(true)
|
|
125
108
|
expect(res.discoveredEntryPoints.length).toBe(1)
|
|
126
|
-
expect(
|
|
109
|
+
expect(areEqualPeerDescriptors(res.discoveredEntryPoints[0], peerDescriptor)).toBe(true) // ownPeerDescriptor
|
|
127
110
|
})
|
|
128
111
|
|
|
129
112
|
it('store on empty stream', async () => {
|
|
@@ -132,7 +115,7 @@ describe('StreamPartEntryPointDiscovery', () => {
|
|
|
132
115
|
})
|
|
133
116
|
|
|
134
117
|
it('store on stream without saturated entrypoint count', async () => {
|
|
135
|
-
|
|
118
|
+
addNodesToStreamPart(layer1Node, 4)
|
|
136
119
|
await entryPointDiscoveryWithData.storeSelfAsEntryPointIfNecessary(0)
|
|
137
120
|
expect(storeCalled).toEqual(1)
|
|
138
121
|
})
|
|
@@ -142,7 +125,7 @@ describe('StreamPartEntryPointDiscovery', () => {
|
|
|
142
125
|
expect(storeCalled).toEqual(1)
|
|
143
126
|
await wait(4500)
|
|
144
127
|
await entryPointDiscoveryWithData.destroy()
|
|
145
|
-
// we have configured
|
|
128
|
+
// we have configured storeInterval to 2 seconds, i.e. after 4.5 seconds it should have been called 2 more items
|
|
146
129
|
expect(storeCalled).toEqual(3)
|
|
147
130
|
})
|
|
148
131
|
|
|
@@ -2,13 +2,16 @@ import { NodeType } from '@streamr/dht'
|
|
|
2
2
|
import { hexToBinary } from '@streamr/utils'
|
|
3
3
|
import { NodeID, getNodeIdFromPeerDescriptor } from '../../src/identifiers'
|
|
4
4
|
import { NodeList } from '../../src/logic/NodeList'
|
|
5
|
-
import {
|
|
5
|
+
import { HandshakeRpcLocal } from '../../src/logic/neighbor-discovery/HandshakeRpcLocal'
|
|
6
6
|
import { InterleaveNotice, StreamPartHandshakeRequest } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
|
|
7
|
-
import { createMockPeerDescriptor,
|
|
7
|
+
import { createMockPeerDescriptor, createMockHandshakeRpcRemote, createMockDeliveryRpcRemote, mockConnectionLocker } from '../utils/utils'
|
|
8
|
+
import { StreamPartIDUtils } from '@streamr/protocol'
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
const STREAM_PART_ID = StreamPartIDUtils.parse('stream#0')
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
describe('HandshakeRpcLocal', () => {
|
|
13
|
+
|
|
14
|
+
let rpcLocal: HandshakeRpcLocal
|
|
12
15
|
|
|
13
16
|
const ownPeerDescriptor = createMockPeerDescriptor()
|
|
14
17
|
|
|
@@ -22,28 +25,27 @@ describe('HandshakerServer', () => {
|
|
|
22
25
|
|
|
23
26
|
handshakeWithInterleaving = jest.fn()
|
|
24
27
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
ownPeerDescriptor,
|
|
28
|
+
rpcLocal = new HandshakeRpcLocal({
|
|
29
|
+
streamPartId: STREAM_PART_ID,
|
|
28
30
|
connectionLocker: mockConnectionLocker,
|
|
29
31
|
ongoingHandshakes,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
createRpcRemote: (_p) => createMockHandshakeRpcRemote(),
|
|
33
|
+
createDeliveryRpcRemote: (_p) => createMockDeliveryRpcRemote(),
|
|
32
34
|
handshakeWithInterleaving: async (_p, _t) => {
|
|
33
35
|
handshakeWithInterleaving()
|
|
34
36
|
return true
|
|
35
37
|
},
|
|
36
38
|
targetNeighbors,
|
|
37
|
-
|
|
39
|
+
maxNeighborCount: 4
|
|
38
40
|
})
|
|
39
41
|
})
|
|
40
42
|
|
|
41
43
|
it('handshake', async () => {
|
|
42
44
|
const req = StreamPartHandshakeRequest.create({
|
|
43
|
-
|
|
45
|
+
streamPartId: STREAM_PART_ID,
|
|
44
46
|
requestId: 'requestId'
|
|
45
47
|
})
|
|
46
|
-
const res = await
|
|
48
|
+
const res = await rpcLocal.handshake(req, {
|
|
47
49
|
incomingSourceDescriptor: createMockPeerDescriptor()
|
|
48
50
|
} as any)
|
|
49
51
|
expect(res.accepted).toEqual(true)
|
|
@@ -52,15 +54,15 @@ describe('HandshakerServer', () => {
|
|
|
52
54
|
})
|
|
53
55
|
|
|
54
56
|
it('handshake interleave', async () => {
|
|
55
|
-
targetNeighbors.add(
|
|
56
|
-
targetNeighbors.add(
|
|
57
|
-
targetNeighbors.add(
|
|
58
|
-
targetNeighbors.add(
|
|
57
|
+
targetNeighbors.add(createMockDeliveryRpcRemote())
|
|
58
|
+
targetNeighbors.add(createMockDeliveryRpcRemote())
|
|
59
|
+
targetNeighbors.add(createMockDeliveryRpcRemote())
|
|
60
|
+
targetNeighbors.add(createMockDeliveryRpcRemote())
|
|
59
61
|
const req = StreamPartHandshakeRequest.create({
|
|
60
|
-
|
|
62
|
+
streamPartId: STREAM_PART_ID,
|
|
61
63
|
requestId: 'requestId'
|
|
62
64
|
})
|
|
63
|
-
const res = await
|
|
65
|
+
const res = await rpcLocal.handshake(req, {
|
|
64
66
|
incomingSourceDescriptor: createMockPeerDescriptor()
|
|
65
67
|
} as any)
|
|
66
68
|
expect(res.accepted).toEqual(true)
|
|
@@ -73,10 +75,10 @@ describe('HandshakerServer', () => {
|
|
|
73
75
|
ongoingHandshakes.add('0x4444' as NodeID)
|
|
74
76
|
ongoingHandshakes.add('0x5555' as NodeID)
|
|
75
77
|
const req = StreamPartHandshakeRequest.create({
|
|
76
|
-
|
|
78
|
+
streamPartId: STREAM_PART_ID,
|
|
77
79
|
requestId: 'requestId'
|
|
78
80
|
})
|
|
79
|
-
const res = await
|
|
81
|
+
const res = await rpcLocal.handshake(req, {
|
|
80
82
|
incomingSourceDescriptor: createMockPeerDescriptor()
|
|
81
83
|
} as any)
|
|
82
84
|
expect(res.accepted).toEqual(false)
|
|
@@ -84,14 +86,14 @@ describe('HandshakerServer', () => {
|
|
|
84
86
|
|
|
85
87
|
it('handshakeWithInterleaving success', async () => {
|
|
86
88
|
const req: InterleaveNotice = {
|
|
87
|
-
|
|
89
|
+
streamPartId: STREAM_PART_ID,
|
|
88
90
|
interleaveTargetDescriptor: {
|
|
89
91
|
kademliaId: hexToBinary('0x2222'),
|
|
90
92
|
type: NodeType.NODEJS
|
|
91
93
|
}
|
|
92
94
|
|
|
93
95
|
}
|
|
94
|
-
await
|
|
96
|
+
await rpcLocal.interleaveNotice(req, {
|
|
95
97
|
incomingSourceDescriptor: createMockPeerDescriptor()
|
|
96
98
|
} as any)
|
|
97
99
|
expect(handshakeWithInterleaving).toHaveBeenCalledTimes(1)
|
|
@@ -99,13 +101,13 @@ describe('HandshakerServer', () => {
|
|
|
99
101
|
|
|
100
102
|
it('handshakeWithInterleaving success', async () => {
|
|
101
103
|
const req: InterleaveNotice = {
|
|
102
|
-
|
|
104
|
+
streamPartId: StreamPartIDUtils.parse('other-stream#0'),
|
|
103
105
|
interleaveTargetDescriptor: {
|
|
104
106
|
kademliaId: hexToBinary('0x2222'),
|
|
105
107
|
type: NodeType.NODEJS
|
|
106
108
|
}
|
|
107
109
|
}
|
|
108
|
-
await
|
|
110
|
+
await rpcLocal.interleaveNotice(req, {
|
|
109
111
|
incomingSourceDescriptor: createMockPeerDescriptor()
|
|
110
112
|
} as any)
|
|
111
113
|
expect(handshakeWithInterleaving).toHaveBeenCalledTimes(0)
|
|
@@ -3,15 +3,16 @@ import { range } from 'lodash'
|
|
|
3
3
|
import { getNodeIdFromPeerDescriptor } from '../../src/identifiers'
|
|
4
4
|
import { NodeList } from '../../src/logic/NodeList'
|
|
5
5
|
import { Handshaker } from '../../src/logic/neighbor-discovery/Handshaker'
|
|
6
|
-
import { createMockPeerDescriptor,
|
|
6
|
+
import { createMockPeerDescriptor, createMockDeliveryRpcRemote, mockConnectionLocker } from '../utils/utils'
|
|
7
|
+
import { StreamPartIDUtils } from '@streamr/protocol'
|
|
7
8
|
|
|
8
9
|
describe('Handshaker', () => {
|
|
9
10
|
|
|
10
11
|
let handshaker: Handshaker
|
|
11
12
|
const peerDescriptor = createMockPeerDescriptor()
|
|
12
13
|
|
|
13
|
-
const
|
|
14
|
-
const
|
|
14
|
+
const maxNeighborCount = 4
|
|
15
|
+
const streamPartId = StreamPartIDUtils.parse('stream#0')
|
|
15
16
|
|
|
16
17
|
let targetNeighbors: NodeList
|
|
17
18
|
let nearbyNodeView: NodeList
|
|
@@ -20,10 +21,11 @@ describe('Handshaker', () => {
|
|
|
20
21
|
let simulator: Simulator
|
|
21
22
|
let simulatorTransport: SimulatorTransport
|
|
22
23
|
|
|
23
|
-
beforeEach(() => {
|
|
24
|
+
beforeEach(async () => {
|
|
24
25
|
simulator = new Simulator()
|
|
25
26
|
simulatorTransport = new SimulatorTransport(peerDescriptor, simulator)
|
|
26
|
-
|
|
27
|
+
await simulatorTransport.start()
|
|
28
|
+
const rpcCommunicator = new ListeningRpcCommunicator(streamPartId, simulatorTransport)
|
|
27
29
|
|
|
28
30
|
const nodeId = getNodeIdFromPeerDescriptor(peerDescriptor)
|
|
29
31
|
targetNeighbors = new NodeList(nodeId, 10)
|
|
@@ -32,13 +34,13 @@ describe('Handshaker', () => {
|
|
|
32
34
|
|
|
33
35
|
handshaker = new Handshaker({
|
|
34
36
|
ownPeerDescriptor: peerDescriptor,
|
|
35
|
-
|
|
37
|
+
streamPartId,
|
|
36
38
|
connectionLocker: mockConnectionLocker,
|
|
37
39
|
targetNeighbors,
|
|
38
40
|
nearbyNodeView,
|
|
39
41
|
randomNodeView,
|
|
40
42
|
rpcCommunicator,
|
|
41
|
-
|
|
43
|
+
maxNeighborCount
|
|
42
44
|
})
|
|
43
45
|
})
|
|
44
46
|
|
|
@@ -53,7 +55,7 @@ describe('Handshaker', () => {
|
|
|
53
55
|
})
|
|
54
56
|
|
|
55
57
|
it('attemptHandshakesOnContact with known nodes that cannot be connected to', async () => {
|
|
56
|
-
range(2).forEach(() => nearbyNodeView.add(
|
|
58
|
+
range(2).forEach(() => nearbyNodeView.add(createMockDeliveryRpcRemote()))
|
|
57
59
|
const res = await handshaker.attemptHandshakesOnContacts([])
|
|
58
60
|
expect(res.length).toEqual(2)
|
|
59
61
|
})
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { ListeningRpcCommunicator
|
|
1
|
+
import { ListeningRpcCommunicator } from '@streamr/dht'
|
|
2
2
|
import { utf8ToBinary } from '@streamr/utils'
|
|
3
3
|
import { getNodeIdFromPeerDescriptor } from '../../src/identifiers'
|
|
4
4
|
import { Inspector } from '../../src/logic/inspect/Inspector'
|
|
5
5
|
import { MockTransport } from '../utils/mock/Transport'
|
|
6
6
|
import { createMockPeerDescriptor, createRandomNodeId, mockConnectionLocker } from '../utils/utils'
|
|
7
|
+
import { StreamPartIDUtils } from '@streamr/protocol'
|
|
7
8
|
|
|
8
9
|
describe('Inspector', () => {
|
|
9
10
|
|
|
@@ -28,10 +29,10 @@ describe('Inspector', () => {
|
|
|
28
29
|
mockConnect = jest.fn(() => {})
|
|
29
30
|
inspector = new Inspector({
|
|
30
31
|
ownPeerDescriptor: inspectorDescriptor,
|
|
31
|
-
|
|
32
|
+
streamPartId: StreamPartIDUtils.parse('stream#0'),
|
|
32
33
|
rpcCommunicator: new ListeningRpcCommunicator('inspector', new MockTransport()),
|
|
33
34
|
connectionLocker: mockConnectionLocker,
|
|
34
|
-
openInspectConnection: async (
|
|
35
|
+
openInspectConnection: async () => mockConnect()
|
|
35
36
|
})
|
|
36
37
|
})
|
|
37
38
|
|
|
@@ -3,7 +3,7 @@ import { NodeList } from '../../src/logic/NodeList'
|
|
|
3
3
|
import { waitForCondition } from '@streamr/utils'
|
|
4
4
|
import { range } from 'lodash'
|
|
5
5
|
import { expect } from 'expect'
|
|
6
|
-
import {
|
|
6
|
+
import { createMockDeliveryRpcRemote, createRandomNodeId } from '../utils/utils'
|
|
7
7
|
import { NodeID, getNodeIdFromPeerDescriptor } from '../../src/identifiers'
|
|
8
8
|
|
|
9
9
|
describe('NeighborFinder', () => {
|
|
@@ -13,12 +13,12 @@ describe('NeighborFinder', () => {
|
|
|
13
13
|
let nearbyNodeView: NodeList
|
|
14
14
|
let neighborFinder: NeighborFinder
|
|
15
15
|
|
|
16
|
-
const
|
|
16
|
+
const minCount = 4
|
|
17
17
|
|
|
18
18
|
beforeEach(() => {
|
|
19
19
|
targetNeighbors = new NodeList(nodeId, 15)
|
|
20
20
|
nearbyNodeView = new NodeList(nodeId, 30)
|
|
21
|
-
range(30).forEach(() => nearbyNodeView.add(
|
|
21
|
+
range(30).forEach(() => nearbyNodeView.add(createMockDeliveryRpcRemote()))
|
|
22
22
|
const mockDoFindNeighbors = async (excluded: NodeID[]) => {
|
|
23
23
|
const target = nearbyNodeView.getRandom(excluded)
|
|
24
24
|
if (Math.random() < 0.5) {
|
|
@@ -32,7 +32,7 @@ describe('NeighborFinder', () => {
|
|
|
32
32
|
targetNeighbors,
|
|
33
33
|
nearbyNodeView,
|
|
34
34
|
doFindNeighbors: (excluded) => mockDoFindNeighbors(excluded),
|
|
35
|
-
|
|
35
|
+
minCount
|
|
36
36
|
})
|
|
37
37
|
})
|
|
38
38
|
|
|
@@ -42,7 +42,7 @@ describe('NeighborFinder', () => {
|
|
|
42
42
|
|
|
43
43
|
it('Finds target number of nodes', async () => {
|
|
44
44
|
neighborFinder.start()
|
|
45
|
-
await waitForCondition(() => targetNeighbors.size() >=
|
|
45
|
+
await waitForCondition(() => targetNeighbors.size() >= minCount, 10000)
|
|
46
46
|
expect(neighborFinder.isRunning()).toEqual(false)
|
|
47
47
|
})
|
|
48
48
|
})
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NodeList } from '../../src/logic/NodeList'
|
|
2
|
-
import {
|
|
2
|
+
import { DeliveryRpcRemote } from '../../src/logic/DeliveryRpcRemote'
|
|
3
3
|
import {
|
|
4
4
|
PeerDescriptor,
|
|
5
5
|
ListeningRpcCommunicator,
|
|
@@ -7,12 +7,16 @@ import {
|
|
|
7
7
|
SimulatorTransport,
|
|
8
8
|
NodeType,
|
|
9
9
|
} from '@streamr/dht'
|
|
10
|
-
import {
|
|
10
|
+
import { DeliveryRpcClient } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc.client'
|
|
11
11
|
import { toProtoRpcClient } from '@streamr/proto-rpc'
|
|
12
12
|
import { expect } from 'expect'
|
|
13
13
|
import { NodeID, getNodeIdFromPeerDescriptor } from '../../src/identifiers'
|
|
14
14
|
import { createMockPeerDescriptor, createRandomNodeId } from '../utils/utils'
|
|
15
15
|
import { binaryToHex } from '@streamr/utils'
|
|
16
|
+
import { StreamPartIDUtils } from '@streamr/protocol'
|
|
17
|
+
import { formStreamPartDeliveryServiceId } from '../../src/logic/formStreamPartDeliveryServiceId'
|
|
18
|
+
|
|
19
|
+
const streamPartId = StreamPartIDUtils.parse('stream#0')
|
|
16
20
|
|
|
17
21
|
describe('NodeList', () => {
|
|
18
22
|
|
|
@@ -24,31 +28,36 @@ describe('NodeList', () => {
|
|
|
24
28
|
new Uint8Array([1, 1, 5])
|
|
25
29
|
]
|
|
26
30
|
const ownId = createRandomNodeId()
|
|
27
|
-
const graphId = 'test'
|
|
28
31
|
let nodeList: NodeList
|
|
29
32
|
let simulator: Simulator
|
|
30
33
|
let mockTransports: SimulatorTransport[]
|
|
31
34
|
|
|
32
|
-
const createRemoteGraphNode = (peerDescriptor: PeerDescriptor) => {
|
|
35
|
+
const createRemoteGraphNode = async (peerDescriptor: PeerDescriptor) => {
|
|
33
36
|
const mockTransport = new SimulatorTransport(peerDescriptor, simulator)
|
|
34
|
-
|
|
37
|
+
await mockTransport.start()
|
|
38
|
+
const mockCommunicator = new ListeningRpcCommunicator(formStreamPartDeliveryServiceId(streamPartId), mockTransport)
|
|
35
39
|
const mockClient = mockCommunicator.getRpcClientTransport()
|
|
36
40
|
|
|
37
41
|
mockTransports.push(mockTransport)
|
|
38
|
-
return new
|
|
42
|
+
return new DeliveryRpcRemote(
|
|
43
|
+
createMockPeerDescriptor(),
|
|
44
|
+
peerDescriptor,
|
|
45
|
+
streamPartId,
|
|
46
|
+
toProtoRpcClient(new DeliveryRpcClient(mockClient))
|
|
47
|
+
)
|
|
39
48
|
}
|
|
40
49
|
|
|
41
|
-
beforeEach(() => {
|
|
50
|
+
beforeEach(async () => {
|
|
42
51
|
simulator = new Simulator()
|
|
43
52
|
mockTransports = []
|
|
44
53
|
nodeList = new NodeList(ownId, 6)
|
|
45
|
-
|
|
54
|
+
for (const id of ids) {
|
|
46
55
|
const peerDescriptor: PeerDescriptor = {
|
|
47
56
|
kademliaId: id,
|
|
48
57
|
type: NodeType.NODEJS
|
|
49
58
|
}
|
|
50
|
-
nodeList.add(createRemoteGraphNode(peerDescriptor))
|
|
51
|
-
}
|
|
59
|
+
nodeList.add(await createRemoteGraphNode(peerDescriptor))
|
|
60
|
+
}
|
|
52
61
|
})
|
|
53
62
|
|
|
54
63
|
afterEach(async ()=> {
|
|
@@ -59,12 +68,12 @@ describe('NodeList', () => {
|
|
|
59
68
|
simulator.stop()
|
|
60
69
|
})
|
|
61
70
|
|
|
62
|
-
it('add', () => {
|
|
71
|
+
it('add', async () => {
|
|
63
72
|
const newDescriptor = {
|
|
64
73
|
kademliaId: new Uint8Array([1, 2, 3]),
|
|
65
74
|
type: NodeType.NODEJS
|
|
66
75
|
}
|
|
67
|
-
const newNode = createRemoteGraphNode(newDescriptor)
|
|
76
|
+
const newNode = await createRemoteGraphNode(newDescriptor)
|
|
68
77
|
nodeList.add(newNode)
|
|
69
78
|
expect(nodeList.hasNode(newDescriptor)).toEqual(true)
|
|
70
79
|
|
|
@@ -72,7 +81,7 @@ describe('NodeList', () => {
|
|
|
72
81
|
kademliaId: new Uint8Array([1, 2, 4]),
|
|
73
82
|
type: NodeType.NODEJS
|
|
74
83
|
}
|
|
75
|
-
const newNode2 = createRemoteGraphNode(newDescriptor2)
|
|
84
|
+
const newNode2 = await createRemoteGraphNode(newDescriptor2)
|
|
76
85
|
nodeList.add(newNode2)
|
|
77
86
|
expect(nodeList.hasNode(newDescriptor2)).toEqual(false)
|
|
78
87
|
})
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { StreamPartIDUtils } from '@streamr/protocol'
|
|
2
2
|
import { randomEthereumAddress } from '@streamr/test-utils'
|
|
3
3
|
import { hexToBinary } from '@streamr/utils'
|
|
4
|
-
import {
|
|
4
|
+
import { ProxyConnectionRpcRemote } from '../../src/logic/proxy/ProxyConnectionRpcRemote'
|
|
5
5
|
import { ProxyDirection } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
|
|
6
6
|
import { createMockPeerDescriptor } from '../utils/utils'
|
|
7
7
|
|
|
8
|
-
describe('
|
|
8
|
+
describe('ProxyConnectionRpcRemote', () => {
|
|
9
9
|
|
|
10
10
|
it('happy path', () => {
|
|
11
11
|
const client = {
|
|
@@ -13,14 +13,14 @@ describe('RemoteProxyServer', () => {
|
|
|
13
13
|
}
|
|
14
14
|
const clientPeerDescriptor = createMockPeerDescriptor()
|
|
15
15
|
const serverPeerDescriptor = createMockPeerDescriptor()
|
|
16
|
-
const
|
|
16
|
+
const rpcRemote = new ProxyConnectionRpcRemote(
|
|
17
17
|
clientPeerDescriptor,
|
|
18
18
|
serverPeerDescriptor,
|
|
19
19
|
StreamPartIDUtils.parse('stream#0'),
|
|
20
20
|
client
|
|
21
21
|
)
|
|
22
22
|
const userId = randomEthereumAddress()
|
|
23
|
-
|
|
23
|
+
rpcRemote.requestConnection(ProxyDirection.PUBLISH, userId)
|
|
24
24
|
expect(client.requestConnection).toBeCalledWith({
|
|
25
25
|
direction: ProxyDirection.PUBLISH,
|
|
26
26
|
userId: hexToBinary(userId)
|
|
@@ -4,11 +4,12 @@ import { NodeList } from '../../src/logic/NodeList'
|
|
|
4
4
|
import { RandomGraphNode } from '../../src/logic/RandomGraphNode'
|
|
5
5
|
import { createRandomGraphNode } from '../../src/logic/createRandomGraphNode'
|
|
6
6
|
import { MockHandshaker } from '../utils/mock/MockHandshaker'
|
|
7
|
-
import {
|
|
7
|
+
import { MockLayer1Node } from '../utils/mock/MockLayer1Node'
|
|
8
8
|
import { MockNeighborFinder } from '../utils/mock/MockNeighborFinder'
|
|
9
9
|
import { MockNeighborUpdateManager } from '../utils/mock/MockNeighborUpdateManager'
|
|
10
10
|
import { MockTransport } from '../utils/mock/Transport'
|
|
11
|
-
import { createMockPeerDescriptor,
|
|
11
|
+
import { createMockPeerDescriptor, createMockDeliveryRpcRemote, mockConnectionLocker } from '../utils/utils'
|
|
12
|
+
import { StreamPartIDUtils } from '@streamr/protocol'
|
|
12
13
|
|
|
13
14
|
describe('RandomGraphNode', () => {
|
|
14
15
|
|
|
@@ -19,27 +20,28 @@ describe('RandomGraphNode', () => {
|
|
|
19
20
|
let nearbyNodeView: NodeList
|
|
20
21
|
let randomNodeView: NodeList
|
|
21
22
|
|
|
22
|
-
let
|
|
23
|
+
let layer1Node: MockLayer1Node
|
|
24
|
+
|
|
23
25
|
beforeEach(async () => {
|
|
24
26
|
const nodeId = getNodeIdFromPeerDescriptor(peerDescriptor)
|
|
25
27
|
|
|
26
28
|
targetNeighbors = new NodeList(nodeId, 10)
|
|
27
29
|
randomNodeView = new NodeList(nodeId, 10)
|
|
28
30
|
nearbyNodeView = new NodeList(nodeId, 10)
|
|
29
|
-
|
|
31
|
+
layer1Node = new MockLayer1Node()
|
|
30
32
|
|
|
31
33
|
randomGraphNode = createRandomGraphNode({
|
|
32
34
|
targetNeighbors,
|
|
33
35
|
randomNodeView,
|
|
34
36
|
nearbyNodeView,
|
|
35
|
-
|
|
37
|
+
transport: new MockTransport(),
|
|
36
38
|
ownPeerDescriptor: peerDescriptor,
|
|
37
|
-
|
|
39
|
+
layer1Node,
|
|
38
40
|
connectionLocker: mockConnectionLocker,
|
|
39
41
|
handshaker: new MockHandshaker(),
|
|
40
42
|
neighborUpdateManager: new MockNeighborUpdateManager(),
|
|
41
43
|
neighborFinder: new MockNeighborFinder(),
|
|
42
|
-
|
|
44
|
+
streamPartId: StreamPartIDUtils.parse('stream#0')
|
|
43
45
|
})
|
|
44
46
|
await randomGraphNode.start()
|
|
45
47
|
})
|
|
@@ -49,7 +51,7 @@ describe('RandomGraphNode', () => {
|
|
|
49
51
|
})
|
|
50
52
|
|
|
51
53
|
it('getTargetNeighborIds', () => {
|
|
52
|
-
const mockRemote =
|
|
54
|
+
const mockRemote = createMockDeliveryRpcRemote()
|
|
53
55
|
targetNeighbors.add(mockRemote)
|
|
54
56
|
const ids = randomGraphNode.getTargetNeighborIds()
|
|
55
57
|
expect(ids[0]).toEqual(getNodeIdFromPeerDescriptor(mockRemote.getPeerDescriptor()))
|
|
@@ -57,7 +59,7 @@ describe('RandomGraphNode', () => {
|
|
|
57
59
|
})
|
|
58
60
|
|
|
59
61
|
it('getNearbyNodeView', () => {
|
|
60
|
-
const mockRemote =
|
|
62
|
+
const mockRemote = createMockDeliveryRpcRemote()
|
|
61
63
|
nearbyNodeView.add(mockRemote)
|
|
62
64
|
const ids = randomGraphNode.getNearbyNodeView().getIds()
|
|
63
65
|
expect(ids[0]).toEqual(getNodeIdFromPeerDescriptor(mockRemote.getPeerDescriptor()))
|
|
@@ -66,7 +68,7 @@ describe('RandomGraphNode', () => {
|
|
|
66
68
|
it('Adds Closest Nodes from layer1 newContact event to nearbyNodeView', async () => {
|
|
67
69
|
const peerDescriptor1 = createMockPeerDescriptor()
|
|
68
70
|
const peerDescriptor2 = createMockPeerDescriptor()
|
|
69
|
-
|
|
71
|
+
layer1Node.emit('newContact', peerDescriptor1, [peerDescriptor1, peerDescriptor2])
|
|
70
72
|
await waitForCondition(() => nearbyNodeView.size() === 2)
|
|
71
73
|
expect(nearbyNodeView.get(getNodeIdFromPeerDescriptor(peerDescriptor1))).toBeTruthy()
|
|
72
74
|
expect(nearbyNodeView.get(getNodeIdFromPeerDescriptor(peerDescriptor2))).toBeTruthy()
|
|
@@ -75,7 +77,7 @@ describe('RandomGraphNode', () => {
|
|
|
75
77
|
it('Adds Random Nodes from layer1 newRandomContact event to randomNodeView', async () => {
|
|
76
78
|
const peerDescriptor1 = createMockPeerDescriptor()
|
|
77
79
|
const peerDescriptor2 = createMockPeerDescriptor()
|
|
78
|
-
|
|
80
|
+
layer1Node.emit('newRandomContact', peerDescriptor1, [peerDescriptor1, peerDescriptor2])
|
|
79
81
|
await waitForCondition(() => randomNodeView.size() === 2)
|
|
80
82
|
expect(randomNodeView.get(getNodeIdFromPeerDescriptor(peerDescriptor1))).toBeTruthy()
|
|
81
83
|
expect(randomNodeView.get(getNodeIdFromPeerDescriptor(peerDescriptor2))).toBeTruthy()
|
|
@@ -84,8 +86,8 @@ describe('RandomGraphNode', () => {
|
|
|
84
86
|
it('Adds Nodes from layer1 KBucket to nearbyNodeView if its size is below nodeViewSize', async () => {
|
|
85
87
|
const peerDescriptor1 = createMockPeerDescriptor()
|
|
86
88
|
const peerDescriptor2 = createMockPeerDescriptor()
|
|
87
|
-
|
|
88
|
-
|
|
89
|
+
layer1Node.addNewRandomPeerToKBucket()
|
|
90
|
+
layer1Node.emit('newContact', peerDescriptor1, [peerDescriptor1, peerDescriptor2])
|
|
89
91
|
await waitForCondition(() => nearbyNodeView.size() === 3)
|
|
90
92
|
expect(nearbyNodeView.get(getNodeIdFromPeerDescriptor(peerDescriptor1))).toBeTruthy()
|
|
91
93
|
expect(nearbyNodeView.get(getNodeIdFromPeerDescriptor(peerDescriptor2))).toBeTruthy()
|