@streamr/trackerless-network 0.0.1-tatum.5 → 0.0.1-tatum.6
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 +6 -6
- package/dist/src/NetworkStack.d.ts +1 -1
- package/dist/src/NetworkStack.js.map +1 -1
- package/dist/src/logic/ILayer1.d.ts +2 -2
- package/dist/src/logic/NodeList.d.ts +2 -2
- package/dist/src/logic/NodeList.js +2 -2
- package/dist/src/logic/NodeList.js.map +1 -1
- package/dist/src/logic/RandomGraphNode.js +6 -6
- package/dist/src/logic/RandomGraphNode.js.map +1 -1
- package/dist/src/logic/StreamPartEntryPointDiscovery.d.ts +7 -9
- package/dist/src/logic/StreamPartEntryPointDiscovery.js +46 -73
- package/dist/src/logic/StreamPartEntryPointDiscovery.js.map +1 -1
- package/dist/src/logic/StreamrNode.d.ts +2 -1
- package/dist/src/logic/StreamrNode.js +22 -15
- package/dist/src/logic/StreamrNode.js.map +1 -1
- package/dist/src/logic/createRandomGraphNode.js +1 -1
- package/dist/src/logic/createRandomGraphNode.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborFinder.js +4 -4
- package/dist/src/logic/neighbor-discovery/NeighborFinder.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/NeighborUpdateManagerServer.js +2 -2
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManagerServer.js.map +1 -1
- package/dist/src/logic/proxy/ProxyStreamConnectionClient.d.ts +2 -3
- package/dist/src/logic/proxy/ProxyStreamConnectionClient.js +5 -8
- package/dist/src/logic/proxy/ProxyStreamConnectionClient.js.map +1 -1
- package/dist/src/logic/proxy/ProxyStreamConnectionServer.d.ts +0 -2
- package/dist/src/logic/proxy/ProxyStreamConnectionServer.js +0 -6
- package/dist/src/logic/proxy/ProxyStreamConnectionServer.js.map +1 -1
- package/dist/test/utils/utils.js +0 -1
- package/dist/test/utils/utils.js.map +1 -1
- package/package.json +6 -6
- package/src/NetworkStack.ts +1 -1
- package/src/logic/ILayer1.ts +2 -5
- package/src/logic/NodeList.ts +2 -2
- package/src/logic/RandomGraphNode.ts +6 -7
- package/src/logic/StreamPartEntryPointDiscovery.ts +51 -86
- package/src/logic/StreamrNode.ts +23 -21
- package/src/logic/createRandomGraphNode.ts +1 -1
- package/src/logic/neighbor-discovery/NeighborFinder.ts +4 -4
- package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +2 -2
- package/src/logic/neighbor-discovery/NeighborUpdateManagerServer.ts +2 -2
- package/src/logic/proxy/ProxyStreamConnectionClient.ts +6 -10
- package/src/logic/proxy/ProxyStreamConnectionServer.ts +0 -8
- package/test/end-to-end/proxy-connections.test.ts +1 -1
- package/test/end-to-end/websocket-full-node-network.test.ts +1 -1
- package/test/unit/RandomGraphNode.test.ts +6 -6
- package/test/unit/StreamPartEntrypointDiscovery.test.ts +15 -30
- package/test/utils/mock/MockLayer1.ts +5 -7
- package/test/utils/utils.ts +0 -1
|
@@ -4,18 +4,18 @@ import { wait } from '@streamr/utils'
|
|
|
4
4
|
import { range } from 'lodash'
|
|
5
5
|
import { getNodeIdFromPeerDescriptor } from '../../src/identifiers'
|
|
6
6
|
import { StreamPartEntryPointDiscovery } from '../../src/logic/StreamPartEntryPointDiscovery'
|
|
7
|
-
import { StreamPartDelivery } from '../../src/logic/StreamrNode'
|
|
8
7
|
import { Any } from '../../src/proto/google/protobuf/any'
|
|
9
8
|
import { DataEntry } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
10
9
|
import { MockLayer1 } from '../utils/mock/MockLayer1'
|
|
11
10
|
import { createMockPeerDescriptor } from '../utils/utils'
|
|
12
11
|
|
|
12
|
+
const STREAM_PART_ID = StreamPartIDUtils.parse('stream#0')
|
|
13
|
+
|
|
13
14
|
describe('StreamPartEntryPointDiscovery', () => {
|
|
14
15
|
|
|
15
16
|
let entryPointDiscoveryWithData: StreamPartEntryPointDiscovery
|
|
16
17
|
let entryPointDiscoveryWithoutData: StreamPartEntryPointDiscovery
|
|
17
18
|
let storeCalled: number
|
|
18
|
-
let streamParts = new Map<string, StreamPartDelivery>()
|
|
19
19
|
|
|
20
20
|
const peerDescriptor = createMockPeerDescriptor({
|
|
21
21
|
nodeName: 'fake'
|
|
@@ -42,8 +42,6 @@ describe('StreamPartEntryPointDiscovery', () => {
|
|
|
42
42
|
deleted: true
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
const streamPartId = StreamPartIDUtils.parse('stream#0')
|
|
46
|
-
|
|
47
45
|
const fakeGetEntryPointData = async (_key: Uint8Array): Promise<RecursiveFindResult> => {
|
|
48
46
|
return {
|
|
49
47
|
closestNodes: [peerDescriptor],
|
|
@@ -82,12 +80,11 @@ describe('StreamPartEntryPointDiscovery', () => {
|
|
|
82
80
|
|
|
83
81
|
beforeEach(() => {
|
|
84
82
|
storeCalled = 0
|
|
85
|
-
streamParts = new Map()
|
|
86
83
|
layer1 = new MockLayer1(getNodeIdFromPeerDescriptor(peerDescriptor))
|
|
87
|
-
streamParts.set(streamPartId, { layer1 } as any)
|
|
88
84
|
entryPointDiscoveryWithData = new StreamPartEntryPointDiscovery({
|
|
89
85
|
ownPeerDescriptor: peerDescriptor,
|
|
90
|
-
|
|
86
|
+
streamPartId: STREAM_PART_ID,
|
|
87
|
+
layer1,
|
|
91
88
|
getEntryPointData: fakeGetEntryPointData,
|
|
92
89
|
getEntryPointDataViaNode: fakegetEntryPointDataViaNode,
|
|
93
90
|
storeEntryPointData: fakeStoreEntryPointData,
|
|
@@ -96,7 +93,8 @@ describe('StreamPartEntryPointDiscovery', () => {
|
|
|
96
93
|
})
|
|
97
94
|
entryPointDiscoveryWithoutData = new StreamPartEntryPointDiscovery({
|
|
98
95
|
ownPeerDescriptor: peerDescriptor,
|
|
99
|
-
|
|
96
|
+
streamPartId: STREAM_PART_ID,
|
|
97
|
+
layer1,
|
|
100
98
|
getEntryPointData: fakeEmptyGetEntryPointData,
|
|
101
99
|
getEntryPointDataViaNode: fakegetEntryPointDataViaNode,
|
|
102
100
|
storeEntryPointData: fakeStoreEntryPointData,
|
|
@@ -110,55 +108,42 @@ describe('StreamPartEntryPointDiscovery', () => {
|
|
|
110
108
|
})
|
|
111
109
|
|
|
112
110
|
it('discoverEntryPointsFromDht has known entrypoints', async () => {
|
|
113
|
-
const res = await entryPointDiscoveryWithData.discoverEntryPointsFromDht(
|
|
111
|
+
const res = await entryPointDiscoveryWithData.discoverEntryPointsFromDht(1)
|
|
114
112
|
expect(res.entryPointsFromDht).toEqual(false)
|
|
115
113
|
expect(res.discoveredEntryPoints).toEqual([])
|
|
116
114
|
})
|
|
117
115
|
|
|
118
116
|
it('discoverEntryPointsFromDht does not have known entrypoints', async () => {
|
|
119
|
-
const res = await entryPointDiscoveryWithData.discoverEntryPointsFromDht(
|
|
117
|
+
const res = await entryPointDiscoveryWithData.discoverEntryPointsFromDht(0)
|
|
120
118
|
expect(res.discoveredEntryPoints.length).toBe(1)
|
|
121
119
|
expect(isSamePeerDescriptor(res.discoveredEntryPoints[0], peerDescriptor)).toBe(true)
|
|
122
120
|
})
|
|
123
121
|
|
|
124
122
|
it('discoverEntryPointsfromDht on an empty stream', async () => {
|
|
125
|
-
const res = await entryPointDiscoveryWithoutData.discoverEntryPointsFromDht(
|
|
123
|
+
const res = await entryPointDiscoveryWithoutData.discoverEntryPointsFromDht(0)
|
|
126
124
|
expect(res.entryPointsFromDht).toEqual(true)
|
|
127
125
|
expect(res.discoveredEntryPoints.length).toBe(1)
|
|
128
126
|
expect(isSamePeerDescriptor(res.discoveredEntryPoints[0], peerDescriptor)).toBe(true) // ownPeerDescriptor
|
|
129
127
|
})
|
|
130
128
|
|
|
131
129
|
it('store on empty stream', async () => {
|
|
132
|
-
await entryPointDiscoveryWithData.storeSelfAsEntryPointIfNecessary(
|
|
130
|
+
await entryPointDiscoveryWithData.storeSelfAsEntryPointIfNecessary(0)
|
|
133
131
|
expect(storeCalled).toEqual(1)
|
|
134
132
|
})
|
|
135
133
|
|
|
136
|
-
it('store on non-empty stream without known entry points', async () => {
|
|
137
|
-
addNodesToStream(layer1, 4)
|
|
138
|
-
await entryPointDiscoveryWithData.storeSelfAsEntryPointIfNecessary(streamPartId, false, 0)
|
|
139
|
-
expect(storeCalled).toEqual(0)
|
|
140
|
-
})
|
|
141
|
-
|
|
142
134
|
it('store on stream without saturated entrypoint count', async () => {
|
|
143
135
|
addNodesToStream(layer1, 4)
|
|
144
|
-
await entryPointDiscoveryWithData.storeSelfAsEntryPointIfNecessary(
|
|
136
|
+
await entryPointDiscoveryWithData.storeSelfAsEntryPointIfNecessary(0)
|
|
145
137
|
expect(storeCalled).toEqual(1)
|
|
146
138
|
})
|
|
147
139
|
|
|
148
|
-
it('will keep
|
|
149
|
-
await entryPointDiscoveryWithData.storeSelfAsEntryPointIfNecessary(
|
|
140
|
+
it('will keep stored until destroyed', async () => {
|
|
141
|
+
await entryPointDiscoveryWithData.storeSelfAsEntryPointIfNecessary(0)
|
|
150
142
|
expect(storeCalled).toEqual(1)
|
|
151
143
|
await wait(4500)
|
|
152
|
-
entryPointDiscoveryWithData.
|
|
144
|
+
await entryPointDiscoveryWithData.destroy()
|
|
145
|
+
// we have configured cacheInterval to 2 seconds, i.e. after 4.5 seconds it should have been called 2 more items
|
|
153
146
|
expect(storeCalled).toEqual(3)
|
|
154
147
|
})
|
|
155
148
|
|
|
156
|
-
it('will stop recaching is stream is left', async () => {
|
|
157
|
-
await entryPointDiscoveryWithData.storeSelfAsEntryPointIfNecessary(streamPartId, true, 0)
|
|
158
|
-
expect(storeCalled).toEqual(1)
|
|
159
|
-
streamParts.delete(streamPartId)
|
|
160
|
-
await wait(4500)
|
|
161
|
-
expect(storeCalled).toEqual(1)
|
|
162
|
-
})
|
|
163
|
-
|
|
164
149
|
})
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PeerDescriptor } from '@streamr/dht'
|
|
2
2
|
import { EventEmitter } from 'eventemitter3'
|
|
3
3
|
import { NodeID } from '../../../src/identifiers'
|
|
4
4
|
import { ILayer1 } from '../../../src/logic/ILayer1'
|
|
@@ -7,20 +7,18 @@ import { createMockPeerDescriptor } from '../utils'
|
|
|
7
7
|
export class MockLayer1 extends EventEmitter implements ILayer1 {
|
|
8
8
|
|
|
9
9
|
private readonly kbucketPeers: PeerDescriptor[] = []
|
|
10
|
-
private readonly neighborList: SortedContactList<DhtPeer>
|
|
11
10
|
|
|
12
|
-
constructor(
|
|
11
|
+
constructor(_nodeId: NodeID) {
|
|
13
12
|
super()
|
|
14
|
-
this.neighborList = new SortedContactList(PeerID.fromKey(nodeId as string as PeerIDKey), 10)
|
|
15
13
|
}
|
|
16
14
|
|
|
17
15
|
// eslint-disable-next-line class-methods-use-this
|
|
18
16
|
removeContact(_peerDescriptor: PeerDescriptor, _removeFromOpenInternetPeers?: boolean): void {
|
|
19
|
-
|
|
20
17
|
}
|
|
21
18
|
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
// eslint-disable-next-line class-methods-use-this
|
|
20
|
+
getClosestContacts(_maxCount?: number): PeerDescriptor[] {
|
|
21
|
+
return []
|
|
24
22
|
}
|
|
25
23
|
|
|
26
24
|
getKBucketPeers(): PeerDescriptor[] {
|
package/test/utils/utils.ts
CHANGED
|
@@ -76,7 +76,6 @@ export const createRandomNodeId = (): NodeID => {
|
|
|
76
76
|
return randomBytes(10).toString('hex') as NodeID
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
// TODO use this in tests
|
|
80
79
|
export const createMockPeerDescriptor = (opts?: Omit<Partial<PeerDescriptor>, 'kademliaId' | 'type'>): PeerDescriptor => {
|
|
81
80
|
return {
|
|
82
81
|
...opts,
|