@streamr/trackerless-network 100.2.2 → 100.2.4-beta.0
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/README.md +1 -1
- package/dist/package.json +6 -6
- package/dist/src/NetworkStack.js +3 -5
- package/dist/src/NetworkStack.js.map +1 -1
- package/dist/src/logic/{RandomGraphNode.d.ts → ContentDeliveryLayerNode.d.ts} +6 -7
- package/dist/src/logic/{RandomGraphNode.js → ContentDeliveryLayerNode.js} +28 -42
- package/dist/src/logic/ContentDeliveryLayerNode.js.map +1 -0
- package/dist/src/logic/ContentDeliveryManager.d.ts +3 -3
- package/dist/src/logic/ContentDeliveryManager.js +4 -4
- package/dist/src/logic/ContentDeliveryManager.js.map +1 -1
- package/dist/src/logic/Layer1Node.d.ts +11 -12
- package/dist/src/logic/createContentDeliveryLayerNode.d.ts +10 -0
- package/dist/src/logic/{createRandomGraphNode.js → createContentDeliveryLayerNode.js} +6 -6
- package/dist/src/logic/createContentDeliveryLayerNode.js.map +1 -0
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +8 -0
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +4 -0
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +10 -2
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +4 -0
- package/dist/test/benchmark/first-message.js +2 -1
- 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 +6 -6
- package/dist/test/utils/utils.js.map +1 -1
- package/package.json +6 -6
- package/src/NetworkStack.ts +3 -5
- package/src/logic/{RandomGraphNode.ts → ContentDeliveryLayerNode.ts} +31 -47
- package/src/logic/ContentDeliveryManager.ts +7 -7
- package/src/logic/Layer1Node.ts +11 -21
- package/src/logic/{createRandomGraphNode.ts → createContentDeliveryLayerNode.ts} +5 -5
- package/src/proto/packages/dht/protos/DhtRpc.client.ts +8 -0
- package/src/proto/packages/dht/protos/DhtRpc.server.ts +4 -0
- package/src/proto/packages/dht/protos/DhtRpc.ts +11 -3
- package/test/benchmark/first-message.ts +3 -2
- package/test/end-to-end/{random-graph-with-real-connections.test.ts → content-delivery-layer-node-with-real-connections.test.ts} +45 -45
- package/test/end-to-end/proxy-connections.test.ts +2 -2
- package/test/integration/{RandomGraphNode-Layer1Node-Latencies.test.ts → ContentDeliveryLayerNode-Layer1Node-Latencies.test.ts} +45 -46
- package/test/integration/{RandomGraphNode-Layer1Node.test.ts → ContentDeliveryLayerNode-Layer1Node.test.ts} +46 -48
- package/test/integration/Propagation.test.ts +20 -15
- package/test/unit/{RandomGraphNode.test.ts → ContentDeliveryLayerNode.test.ts} +15 -13
- package/test/utils/mock/MockLayer0Node.ts +10 -0
- package/test/utils/mock/MockLayer1Node.ts +22 -4
- package/test/utils/mock/Transport.ts +10 -1
- package/test/utils/utils.ts +6 -6
- package/dist/src/logic/RandomGraphNode.js.map +0 -1
- package/dist/src/logic/createRandomGraphNode.d.ts +0 -10
- package/dist/src/logic/createRandomGraphNode.js.map +0 -1
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import { ConnectionManager, DhtNode, PeerDescriptor, Simulator, SimulatorTransport, getNodeIdFromPeerDescriptor, getRandomRegion } from '@streamr/dht'
|
|
2
2
|
import { Logger, waitForCondition } from '@streamr/utils'
|
|
3
3
|
import { range } from 'lodash'
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { ContentDeliveryLayerNode } from '../../src/logic/ContentDeliveryLayerNode'
|
|
5
|
+
import { createContentDeliveryLayerNode } from '../../src/logic/createContentDeliveryLayerNode'
|
|
6
6
|
import { createMockPeerDescriptor } from '../utils/utils'
|
|
7
7
|
import { StreamPartIDUtils } from '@streamr/protocol'
|
|
8
8
|
import { Layer1Node } from '../../src/logic/Layer1Node'
|
|
9
9
|
|
|
10
10
|
const logger = new Logger(module)
|
|
11
11
|
|
|
12
|
-
describe('
|
|
13
|
-
const
|
|
14
|
-
let
|
|
15
|
-
let
|
|
16
|
-
let
|
|
17
|
-
let
|
|
12
|
+
describe('ContentDeliveryLayerNode-DhtNode', () => {
|
|
13
|
+
const otherNodeCount = 64
|
|
14
|
+
let entryPointLayer1Node: Layer1Node
|
|
15
|
+
let otherLayer1Nodes: Layer1Node[]
|
|
16
|
+
let entryPointContentDeliveryLayerNode: ContentDeliveryLayerNode
|
|
17
|
+
let otherContentDeliveryLayerNodes: ContentDeliveryLayerNode[]
|
|
18
18
|
|
|
19
19
|
const streamPartId = StreamPartIDUtils.parse('stream#0')
|
|
20
20
|
const entrypointDescriptor = createMockPeerDescriptor({
|
|
21
21
|
region: getRandomRegion()
|
|
22
22
|
})
|
|
23
23
|
|
|
24
|
-
const peerDescriptors: PeerDescriptor[] = range(
|
|
24
|
+
const peerDescriptors: PeerDescriptor[] = range(otherNodeCount).map(() => {
|
|
25
25
|
return createMockPeerDescriptor({
|
|
26
26
|
region: getRandomRegion()
|
|
27
27
|
})
|
|
@@ -34,7 +34,7 @@ describe('RandomGraphNode-DhtNode', () => {
|
|
|
34
34
|
)
|
|
35
35
|
await entrypointCm.start()
|
|
36
36
|
|
|
37
|
-
const cms: ConnectionManager[] = range(
|
|
37
|
+
const cms: ConnectionManager[] = range(otherNodeCount).map((i) =>
|
|
38
38
|
new SimulatorTransport(
|
|
39
39
|
peerDescriptors[i],
|
|
40
40
|
simulator
|
|
@@ -42,21 +42,21 @@ describe('RandomGraphNode-DhtNode', () => {
|
|
|
42
42
|
)
|
|
43
43
|
await Promise.all(cms.map((cm) => cm.start()))
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
entryPointLayer1Node = new DhtNode({
|
|
46
46
|
transport: entrypointCm,
|
|
47
47
|
peerDescriptor: entrypointDescriptor,
|
|
48
48
|
serviceId: streamPartId
|
|
49
49
|
})
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
otherLayer1Nodes = range(otherNodeCount).map((i) => new DhtNode({
|
|
52
52
|
transport: cms[i],
|
|
53
53
|
peerDescriptor: peerDescriptors[i],
|
|
54
54
|
serviceId: streamPartId
|
|
55
55
|
}))
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
otherContentDeliveryLayerNodes = range(otherNodeCount).map((i) => createContentDeliveryLayerNode({
|
|
58
58
|
streamPartId,
|
|
59
|
-
layer1Node:
|
|
59
|
+
layer1Node: otherLayer1Nodes[i],
|
|
60
60
|
transport: cms[i],
|
|
61
61
|
connectionLocker: cms[i],
|
|
62
62
|
localPeerDescriptor: peerDescriptors[i],
|
|
@@ -64,9 +64,9 @@ describe('RandomGraphNode-DhtNode', () => {
|
|
|
64
64
|
isLocalNodeEntryPoint: () => false
|
|
65
65
|
}))
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
entryPointContentDeliveryLayerNode = createContentDeliveryLayerNode({
|
|
68
68
|
streamPartId,
|
|
69
|
-
layer1Node:
|
|
69
|
+
layer1Node: entryPointLayer1Node,
|
|
70
70
|
transport: entrypointCm,
|
|
71
71
|
connectionLocker: entrypointCm,
|
|
72
72
|
localPeerDescriptor: entrypointDescriptor,
|
|
@@ -74,45 +74,43 @@ describe('RandomGraphNode-DhtNode', () => {
|
|
|
74
74
|
isLocalNodeEntryPoint: () => false
|
|
75
75
|
})
|
|
76
76
|
|
|
77
|
-
await
|
|
78
|
-
await
|
|
79
|
-
await
|
|
77
|
+
await entryPointLayer1Node.start()
|
|
78
|
+
await entryPointContentDeliveryLayerNode.start()
|
|
79
|
+
await entryPointLayer1Node.joinDht([entrypointDescriptor])
|
|
80
|
+
await Promise.all(otherLayer1Nodes.map((node) => node.start()))
|
|
80
81
|
})
|
|
81
82
|
|
|
82
83
|
afterEach(async () => {
|
|
83
|
-
await
|
|
84
|
-
|
|
85
|
-
await Promise.all(
|
|
86
|
-
await Promise.all(
|
|
84
|
+
await entryPointLayer1Node.stop()
|
|
85
|
+
entryPointContentDeliveryLayerNode.stop()
|
|
86
|
+
await Promise.all(otherLayer1Nodes.map((node) => node.stop()))
|
|
87
|
+
await Promise.all(otherContentDeliveryLayerNodes.map((node) => node.stop()))
|
|
87
88
|
})
|
|
88
89
|
|
|
89
90
|
it('happy path single node ', async () => {
|
|
90
|
-
await
|
|
91
|
-
await
|
|
91
|
+
await otherContentDeliveryLayerNodes[0].start()
|
|
92
|
+
await otherLayer1Nodes[0].joinDht([entrypointDescriptor])
|
|
92
93
|
|
|
93
|
-
await
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
expect(graphNodes[0].getNearbyNodeView().getIds().length).toEqual(1)
|
|
97
|
-
expect(graphNodes[0].getNeighbors().length).toEqual(1)
|
|
94
|
+
await waitForCondition(() => otherContentDeliveryLayerNodes[0].getNeighbors().length === 1)
|
|
95
|
+
expect(otherContentDeliveryLayerNodes[0].getNearbyNodeView().getIds().length).toEqual(1)
|
|
96
|
+
expect(otherContentDeliveryLayerNodes[0].getNeighbors().length).toEqual(1)
|
|
98
97
|
})
|
|
99
98
|
|
|
100
99
|
it('happy path 4 nodes', async () => {
|
|
101
|
-
|
|
102
|
-
range(4).forEach((i) => graphNodes[i].start())
|
|
100
|
+
range(4).forEach((i) => otherContentDeliveryLayerNodes[i].start())
|
|
103
101
|
await Promise.all(range(4).map(async (i) => {
|
|
104
|
-
await
|
|
102
|
+
await otherLayer1Nodes[i].joinDht([entrypointDescriptor])
|
|
105
103
|
}))
|
|
106
104
|
|
|
107
|
-
await waitForCondition(() => range(4).every((i) =>
|
|
105
|
+
await waitForCondition(() => range(4).every((i) => otherContentDeliveryLayerNodes[i].getNeighbors().length === 4))
|
|
108
106
|
range(4).forEach((i) => {
|
|
109
|
-
expect(
|
|
110
|
-
expect(
|
|
107
|
+
expect(otherContentDeliveryLayerNodes[i].getNearbyNodeView().getIds().length).toBeGreaterThanOrEqual(4)
|
|
108
|
+
expect(otherContentDeliveryLayerNodes[i].getNeighbors().length).toBeGreaterThanOrEqual(4)
|
|
111
109
|
})
|
|
112
110
|
|
|
113
111
|
// Check bidirectionality
|
|
114
|
-
const allNodes =
|
|
115
|
-
allNodes.push(
|
|
112
|
+
const allNodes = otherContentDeliveryLayerNodes
|
|
113
|
+
allNodes.push(entryPointContentDeliveryLayerNode)
|
|
116
114
|
range(5).forEach((i) => {
|
|
117
115
|
allNodes[i].getNearbyNodeView().getIds().forEach((nodeId) => {
|
|
118
116
|
const neighbor = allNodes.find((node) => {
|
|
@@ -125,30 +123,30 @@ describe('RandomGraphNode-DhtNode', () => {
|
|
|
125
123
|
}, 10000)
|
|
126
124
|
|
|
127
125
|
it('happy path 64 nodes', async () => {
|
|
128
|
-
await Promise.all(range(
|
|
129
|
-
await Promise.all(range(
|
|
130
|
-
|
|
126
|
+
await Promise.all(range(otherNodeCount).map((i) => otherContentDeliveryLayerNodes[i].start()))
|
|
127
|
+
await Promise.all(range(otherNodeCount).map((i) => {
|
|
128
|
+
otherLayer1Nodes[i].joinDht([entrypointDescriptor])
|
|
131
129
|
}))
|
|
132
|
-
await Promise.all(
|
|
130
|
+
await Promise.all(otherContentDeliveryLayerNodes.map((node) =>
|
|
133
131
|
waitForCondition(() => node.getNeighbors().length >= 4, 10000)
|
|
134
132
|
))
|
|
135
133
|
|
|
136
|
-
const avg =
|
|
134
|
+
const avg = otherContentDeliveryLayerNodes.reduce((acc, curr) => {
|
|
137
135
|
return acc + curr.getNeighbors().length
|
|
138
|
-
}, 0) /
|
|
136
|
+
}, 0) / otherNodeCount
|
|
139
137
|
|
|
140
138
|
logger.info(`AVG Number of neighbors: ${avg}`)
|
|
141
|
-
await Promise.all(
|
|
139
|
+
await Promise.all(otherContentDeliveryLayerNodes.map((node) =>
|
|
142
140
|
waitForCondition(() => node.getOutgoingHandshakeCount() === 0)
|
|
143
141
|
))
|
|
144
142
|
await waitForCondition(() => {
|
|
145
143
|
let mismatchCounter = 0
|
|
146
|
-
|
|
144
|
+
otherContentDeliveryLayerNodes.forEach((node) => {
|
|
147
145
|
const nodeId = node.getOwnNodeId()
|
|
148
146
|
node.getNeighbors().forEach((neighbor) => {
|
|
149
147
|
const neighborId = getNodeIdFromPeerDescriptor(neighbor)
|
|
150
|
-
if (neighborId !==
|
|
151
|
-
const neighbor =
|
|
148
|
+
if (neighborId !== entryPointContentDeliveryLayerNode.getOwnNodeId()) {
|
|
149
|
+
const neighbor = otherContentDeliveryLayerNodes.find((n) => n.getOwnNodeId() === neighborId)
|
|
152
150
|
const neighborIds = neighbor!.getNeighbors().map((n) => getNodeIdFromPeerDescriptor(n))
|
|
153
151
|
if (!neighborIds.includes(nodeId)) {
|
|
154
152
|
mismatchCounter += 1
|
|
@@ -3,14 +3,14 @@ import { StreamPartIDUtils } from '@streamr/protocol'
|
|
|
3
3
|
import { randomEthereumAddress } from '@streamr/test-utils'
|
|
4
4
|
import { waitForCondition } from '@streamr/utils'
|
|
5
5
|
import { range } from 'lodash'
|
|
6
|
-
import {
|
|
7
|
-
import { createMockPeerDescriptor,
|
|
6
|
+
import { ContentDeliveryLayerNode } from '../../src/logic/ContentDeliveryLayerNode'
|
|
7
|
+
import { createMockPeerDescriptor, createMockContentDeliveryLayerNodeAndDhtNode, createStreamMessage } from '../utils/utils'
|
|
8
8
|
import { Layer1Node } from '../../src/logic/Layer1Node'
|
|
9
9
|
|
|
10
10
|
describe('Propagation', () => {
|
|
11
11
|
const entryPointDescriptor = createMockPeerDescriptor()
|
|
12
12
|
let layer1Nodes: Layer1Node[]
|
|
13
|
-
let
|
|
13
|
+
let contentDeliveryLayerNodes: ContentDeliveryLayerNode[]
|
|
14
14
|
const STREAM_PART_ID = StreamPartIDUtils.parse('testingtesting#0')
|
|
15
15
|
let totalReceived: number
|
|
16
16
|
const NUM_OF_NODES = 256
|
|
@@ -19,46 +19,51 @@ describe('Propagation', () => {
|
|
|
19
19
|
const simulator = new Simulator()
|
|
20
20
|
totalReceived = 0
|
|
21
21
|
layer1Nodes = []
|
|
22
|
-
|
|
23
|
-
const [entryPoint, node1] = await
|
|
22
|
+
contentDeliveryLayerNodes = []
|
|
23
|
+
const [entryPoint, node1] = await createMockContentDeliveryLayerNodeAndDhtNode(
|
|
24
|
+
entryPointDescriptor,
|
|
25
|
+
entryPointDescriptor,
|
|
26
|
+
STREAM_PART_ID,
|
|
27
|
+
simulator
|
|
28
|
+
)
|
|
24
29
|
await entryPoint.start()
|
|
25
30
|
await entryPoint.joinDht([entryPointDescriptor])
|
|
26
31
|
await node1.start()
|
|
27
32
|
node1.on('message', () => {totalReceived += 1})
|
|
28
33
|
layer1Nodes.push(entryPoint)
|
|
29
|
-
|
|
34
|
+
contentDeliveryLayerNodes.push(node1)
|
|
30
35
|
|
|
31
36
|
await Promise.all(range(NUM_OF_NODES).map(async (_i) => {
|
|
32
37
|
const descriptor = createMockPeerDescriptor()
|
|
33
|
-
const [layer1,
|
|
38
|
+
const [layer1, contentDeliveryLayerNode] = await createMockContentDeliveryLayerNodeAndDhtNode(
|
|
34
39
|
descriptor,
|
|
35
40
|
entryPointDescriptor,
|
|
36
41
|
STREAM_PART_ID,
|
|
37
42
|
simulator
|
|
38
43
|
)
|
|
39
44
|
await layer1.start()
|
|
40
|
-
await
|
|
45
|
+
await contentDeliveryLayerNode.start()
|
|
41
46
|
await layer1.joinDht([entryPointDescriptor]).then(() => {
|
|
42
|
-
|
|
47
|
+
contentDeliveryLayerNode.on('message', () => { totalReceived += 1 })
|
|
43
48
|
layer1Nodes.push(layer1)
|
|
44
|
-
|
|
49
|
+
contentDeliveryLayerNodes.push(contentDeliveryLayerNode)
|
|
45
50
|
})
|
|
46
51
|
}))
|
|
47
52
|
}, 45000)
|
|
48
53
|
|
|
49
54
|
afterEach(async () => {
|
|
50
|
-
await Promise.all(
|
|
55
|
+
await Promise.all(contentDeliveryLayerNodes.map((node) => node.stop()))
|
|
51
56
|
await Promise.all(layer1Nodes.map((node) => node.stop()))
|
|
52
57
|
})
|
|
53
58
|
|
|
54
59
|
it('All nodes receive messages', async () => {
|
|
55
60
|
await waitForCondition(
|
|
56
|
-
() =>
|
|
61
|
+
() => contentDeliveryLayerNodes.every((node) => node.getNeighbors().length >= 3), 30000
|
|
57
62
|
)
|
|
58
63
|
await waitForCondition(() => {
|
|
59
|
-
const avg =
|
|
64
|
+
const avg = contentDeliveryLayerNodes.reduce((acc, curr) => {
|
|
60
65
|
return acc + curr.getNeighbors().length
|
|
61
|
-
}, 0) /
|
|
66
|
+
}, 0) / contentDeliveryLayerNodes.length
|
|
62
67
|
return avg >= 4
|
|
63
68
|
}, 20000)
|
|
64
69
|
const msg = createStreamMessage(
|
|
@@ -66,7 +71,7 @@ describe('Propagation', () => {
|
|
|
66
71
|
STREAM_PART_ID,
|
|
67
72
|
randomEthereumAddress()
|
|
68
73
|
)
|
|
69
|
-
|
|
74
|
+
contentDeliveryLayerNodes[0].broadcast(msg)
|
|
70
75
|
await waitForCondition(() => totalReceived >= NUM_OF_NODES, 10000)
|
|
71
76
|
}, 45000)
|
|
72
77
|
})
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { waitForCondition } from '@streamr/utils'
|
|
2
2
|
import { NodeList } from '../../src/logic/NodeList'
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { ContentDeliveryLayerNode } from '../../src/logic/ContentDeliveryLayerNode'
|
|
4
|
+
import { createContentDeliveryLayerNode } from '../../src/logic/createContentDeliveryLayerNode'
|
|
5
5
|
import { MockHandshaker } from '../utils/mock/MockHandshaker'
|
|
6
6
|
import { MockLayer1Node } from '../utils/mock/MockLayer1Node'
|
|
7
7
|
import { MockNeighborFinder } from '../utils/mock/MockNeighborFinder'
|
|
@@ -11,9 +11,9 @@ import { createMockPeerDescriptor, createMockContentDeliveryRpcRemote, mockConne
|
|
|
11
11
|
import { StreamPartIDUtils } from '@streamr/protocol'
|
|
12
12
|
import { getNodeIdFromPeerDescriptor } from '@streamr/dht'
|
|
13
13
|
|
|
14
|
-
describe('
|
|
14
|
+
describe('ContentDeliveryLayerNode', () => {
|
|
15
15
|
|
|
16
|
-
let
|
|
16
|
+
let contentDeliveryLayerNode: ContentDeliveryLayerNode
|
|
17
17
|
const peerDescriptor = createMockPeerDescriptor()
|
|
18
18
|
|
|
19
19
|
let neighbors: NodeList
|
|
@@ -30,7 +30,7 @@ describe('RandomGraphNode', () => {
|
|
|
30
30
|
nearbyNodeView = new NodeList(nodeId, 10)
|
|
31
31
|
layer1Node = new MockLayer1Node()
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
contentDeliveryLayerNode = createContentDeliveryLayerNode({
|
|
34
34
|
neighbors,
|
|
35
35
|
randomNodeView,
|
|
36
36
|
nearbyNodeView,
|
|
@@ -43,33 +43,33 @@ describe('RandomGraphNode', () => {
|
|
|
43
43
|
neighborFinder: new MockNeighborFinder() as any,
|
|
44
44
|
streamPartId: StreamPartIDUtils.parse('stream#0'),
|
|
45
45
|
isLocalNodeEntryPoint: () => false
|
|
46
|
-
|
|
47
46
|
})
|
|
48
|
-
await
|
|
47
|
+
await contentDeliveryLayerNode.start()
|
|
49
48
|
})
|
|
50
49
|
|
|
51
50
|
afterEach(() => {
|
|
52
|
-
|
|
51
|
+
contentDeliveryLayerNode.stop()
|
|
53
52
|
})
|
|
54
53
|
|
|
55
54
|
it('getNeighbors', () => {
|
|
56
55
|
const mockRemote = createMockContentDeliveryRpcRemote()
|
|
57
56
|
neighbors.add(mockRemote)
|
|
58
|
-
const result =
|
|
57
|
+
const result = contentDeliveryLayerNode.getNeighbors()
|
|
59
58
|
expect(getNodeIdFromPeerDescriptor(result[0])).toEqual(getNodeIdFromPeerDescriptor(mockRemote.getPeerDescriptor()))
|
|
60
59
|
})
|
|
61
60
|
|
|
62
61
|
it('getNearbyNodeView', () => {
|
|
63
62
|
const mockRemote = createMockContentDeliveryRpcRemote()
|
|
64
63
|
nearbyNodeView.add(mockRemote)
|
|
65
|
-
const ids =
|
|
64
|
+
const ids = contentDeliveryLayerNode.getNearbyNodeView().getIds()
|
|
66
65
|
expect(ids[0]).toEqual(getNodeIdFromPeerDescriptor(mockRemote.getPeerDescriptor()))
|
|
67
66
|
})
|
|
68
67
|
|
|
69
68
|
it('Adds Closest Nodes from layer1 contactAdded event to nearbyNodeView', async () => {
|
|
70
69
|
const peerDescriptor1 = createMockPeerDescriptor()
|
|
71
70
|
const peerDescriptor2 = createMockPeerDescriptor()
|
|
72
|
-
layer1Node.
|
|
71
|
+
layer1Node.setClosestContacts([peerDescriptor1, peerDescriptor2])
|
|
72
|
+
layer1Node.emit('closestContactAdded', peerDescriptor1)
|
|
73
73
|
await waitForCondition(() => nearbyNodeView.size() === 2)
|
|
74
74
|
expect(nearbyNodeView.get(getNodeIdFromPeerDescriptor(peerDescriptor1))).toBeTruthy()
|
|
75
75
|
expect(nearbyNodeView.get(getNodeIdFromPeerDescriptor(peerDescriptor2))).toBeTruthy()
|
|
@@ -78,7 +78,8 @@ describe('RandomGraphNode', () => {
|
|
|
78
78
|
it('Adds Random Nodes from layer1 randomContactAdded event to randomNodeView', async () => {
|
|
79
79
|
const peerDescriptor1 = createMockPeerDescriptor()
|
|
80
80
|
const peerDescriptor2 = createMockPeerDescriptor()
|
|
81
|
-
layer1Node.
|
|
81
|
+
layer1Node.setRandomContacts([peerDescriptor1, peerDescriptor2])
|
|
82
|
+
layer1Node.emit('randomContactAdded', peerDescriptor1)
|
|
82
83
|
await waitForCondition(() => randomNodeView.size() === 2)
|
|
83
84
|
expect(randomNodeView.get(getNodeIdFromPeerDescriptor(peerDescriptor1))).toBeTruthy()
|
|
84
85
|
expect(randomNodeView.get(getNodeIdFromPeerDescriptor(peerDescriptor2))).toBeTruthy()
|
|
@@ -88,7 +89,8 @@ describe('RandomGraphNode', () => {
|
|
|
88
89
|
const peerDescriptor1 = createMockPeerDescriptor()
|
|
89
90
|
const peerDescriptor2 = createMockPeerDescriptor()
|
|
90
91
|
layer1Node.addNewRandomPeerToKBucket()
|
|
91
|
-
layer1Node.
|
|
92
|
+
layer1Node.setClosestContacts([peerDescriptor1, peerDescriptor2])
|
|
93
|
+
layer1Node.emit('closestContactAdded', peerDescriptor1)
|
|
92
94
|
await waitForCondition(() => {
|
|
93
95
|
return nearbyNodeView.size() === 3
|
|
94
96
|
}, 20000)
|
|
@@ -48,6 +48,16 @@ export class MockLayer0Node extends EventEmitter implements Layer0Node {
|
|
|
48
48
|
return []
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
+
// eslint-disable-next-line class-methods-use-this
|
|
52
|
+
getConnectionCount(): number {
|
|
53
|
+
return 0
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// eslint-disable-next-line class-methods-use-this
|
|
57
|
+
hasConnection(): boolean {
|
|
58
|
+
return false
|
|
59
|
+
}
|
|
60
|
+
|
|
51
61
|
// eslint-disable-next-line class-methods-use-this
|
|
52
62
|
getNeighbors(): PeerDescriptor[] {
|
|
53
63
|
return []
|
|
@@ -1,19 +1,37 @@
|
|
|
1
|
-
import { PeerDescriptor } from '@streamr/dht'
|
|
1
|
+
import { PeerDescriptor, RingContacts } from '@streamr/dht'
|
|
2
2
|
import { EventEmitter } from 'eventemitter3'
|
|
3
3
|
import { Layer1Node } from '../../../src/logic/Layer1Node'
|
|
4
4
|
import { createMockPeerDescriptor } from '../utils'
|
|
5
5
|
|
|
6
6
|
export class MockLayer1Node extends EventEmitter implements Layer1Node {
|
|
7
|
-
|
|
7
|
+
|
|
8
8
|
private readonly kbucketPeers: PeerDescriptor[] = []
|
|
9
|
+
private closestContacts: PeerDescriptor[] = []
|
|
10
|
+
private randomContacts: PeerDescriptor[] = []
|
|
9
11
|
|
|
10
12
|
// eslint-disable-next-line class-methods-use-this
|
|
11
13
|
removeContact(): void {
|
|
12
14
|
}
|
|
13
15
|
|
|
14
|
-
// eslint-disable-next-line class-methods-use-this
|
|
15
16
|
getClosestContacts(): PeerDescriptor[] {
|
|
16
|
-
return
|
|
17
|
+
return this.closestContacts
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
setClosestContacts(contacts: PeerDescriptor[]): void {
|
|
21
|
+
this.closestContacts = contacts
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
getRandomContacts(): PeerDescriptor[] {
|
|
25
|
+
return this.randomContacts
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
setRandomContacts(contacts: PeerDescriptor[]): void {
|
|
29
|
+
this.randomContacts = contacts
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// eslint-disable-next-line class-methods-use-this
|
|
33
|
+
getRingContacts(): RingContacts {
|
|
34
|
+
return { left: [], right: [] }
|
|
17
35
|
}
|
|
18
36
|
|
|
19
37
|
getNeighbors(): PeerDescriptor[] {
|
|
@@ -19,7 +19,16 @@ export class MockTransport extends EventEmitter implements ITransport {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
// eslint-disable-next-line class-methods-use-this
|
|
22
|
-
|
|
22
|
+
getConnectionCount(): number {
|
|
23
|
+
return 0
|
|
24
|
+
}
|
|
23
25
|
|
|
26
|
+
// eslint-disable-next-line class-methods-use-this
|
|
27
|
+
hasConnection(): boolean {
|
|
28
|
+
return false
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// eslint-disable-next-line class-methods-use-this
|
|
32
|
+
stop(): void {
|
|
24
33
|
}
|
|
25
34
|
}
|
package/test/utils/utils.ts
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
getRandomRegion,
|
|
10
10
|
getRawFromDhtAddress
|
|
11
11
|
} from '@streamr/dht'
|
|
12
|
-
import {
|
|
12
|
+
import { ContentDeliveryLayerNode } from '../../src/logic/ContentDeliveryLayerNode'
|
|
13
13
|
import {
|
|
14
14
|
ContentType,
|
|
15
15
|
EncryptionType,
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
StreamMessage
|
|
19
19
|
} from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
|
|
20
20
|
import { ContentDeliveryRpcRemote } from '../../src/logic/ContentDeliveryRpcRemote'
|
|
21
|
-
import {
|
|
21
|
+
import { createContentDeliveryLayerNode } from '../../src/logic/createContentDeliveryLayerNode'
|
|
22
22
|
import { HandshakeRpcRemote } from '../../src/logic/neighbor-discovery/HandshakeRpcRemote'
|
|
23
23
|
import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
|
|
24
24
|
import { EthereumAddress, hexToBinary, utf8ToBinary } from '@streamr/utils'
|
|
@@ -37,12 +37,12 @@ export const mockConnectionLocker: ConnectionLocker = {
|
|
|
37
37
|
getWeakLockedConnectionCount: () => 0,
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
export const
|
|
40
|
+
export const createMockContentDeliveryLayerNodeAndDhtNode = async (
|
|
41
41
|
localPeerDescriptor: PeerDescriptor,
|
|
42
42
|
entryPointDescriptor: PeerDescriptor,
|
|
43
43
|
streamPartId: StreamPartID,
|
|
44
44
|
simulator: Simulator
|
|
45
|
-
): Promise<[ Layer1Node,
|
|
45
|
+
): Promise<[ Layer1Node, ContentDeliveryLayerNode ]> => {
|
|
46
46
|
const mockCm = new SimulatorTransport(localPeerDescriptor, simulator)
|
|
47
47
|
await mockCm.start()
|
|
48
48
|
const layer1Node = new DhtNode({
|
|
@@ -52,7 +52,7 @@ export const createMockRandomGraphNodeAndDhtNode = async (
|
|
|
52
52
|
entryPoints: [entryPointDescriptor],
|
|
53
53
|
rpcRequestTimeout: 5000
|
|
54
54
|
})
|
|
55
|
-
const
|
|
55
|
+
const contentDeliveryLayerNode = createContentDeliveryLayerNode({
|
|
56
56
|
streamPartId,
|
|
57
57
|
transport: mockCm,
|
|
58
58
|
layer1Node,
|
|
@@ -61,7 +61,7 @@ export const createMockRandomGraphNodeAndDhtNode = async (
|
|
|
61
61
|
rpcRequestTimeout: 5000,
|
|
62
62
|
isLocalNodeEntryPoint: () => false
|
|
63
63
|
})
|
|
64
|
-
return [layer1Node,
|
|
64
|
+
return [layer1Node, contentDeliveryLayerNode]
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
export const createStreamMessage = (
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RandomGraphNode.js","sourceRoot":"","sources":["../../../src/logic/RandomGraphNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { StrictRandomGraphNodeConfig, RandomGraphNode } from './RandomGraphNode';
|
|
2
|
-
import { MarkOptional } from 'ts-essentials';
|
|
3
|
-
type RandomGraphNodeConfig = MarkOptional<StrictRandomGraphNodeConfig, 'nearbyNodeView' | 'randomNodeView' | 'neighbors' | 'leftNodeView' | 'rightNodeView' | 'propagation' | 'handshaker' | 'neighborFinder' | 'neighborUpdateManager' | 'neighborTargetCount' | 'rpcCommunicator' | 'nodeViewSize' | 'inspector' | 'temporaryConnectionRpcLocal'> & {
|
|
4
|
-
maxContactCount?: number;
|
|
5
|
-
minPropagationTargets?: number;
|
|
6
|
-
acceptProxyConnections?: boolean;
|
|
7
|
-
neighborUpdateInterval?: number;
|
|
8
|
-
};
|
|
9
|
-
export declare const createRandomGraphNode: (config: RandomGraphNodeConfig) => RandomGraphNode;
|
|
10
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createRandomGraphNode.js","sourceRoot":"","sources":["../../../src/logic/createRandomGraphNode.ts"],"names":[],"mappings":"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"}
|