@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.
Files changed (50) hide show
  1. package/dist/package.json +6 -6
  2. package/dist/src/NetworkStack.d.ts +1 -1
  3. package/dist/src/NetworkStack.js.map +1 -1
  4. package/dist/src/logic/ILayer1.d.ts +2 -2
  5. package/dist/src/logic/NodeList.d.ts +2 -2
  6. package/dist/src/logic/NodeList.js +2 -2
  7. package/dist/src/logic/NodeList.js.map +1 -1
  8. package/dist/src/logic/RandomGraphNode.js +6 -6
  9. package/dist/src/logic/RandomGraphNode.js.map +1 -1
  10. package/dist/src/logic/StreamPartEntryPointDiscovery.d.ts +7 -9
  11. package/dist/src/logic/StreamPartEntryPointDiscovery.js +46 -73
  12. package/dist/src/logic/StreamPartEntryPointDiscovery.js.map +1 -1
  13. package/dist/src/logic/StreamrNode.d.ts +2 -1
  14. package/dist/src/logic/StreamrNode.js +22 -15
  15. package/dist/src/logic/StreamrNode.js.map +1 -1
  16. package/dist/src/logic/createRandomGraphNode.js +1 -1
  17. package/dist/src/logic/createRandomGraphNode.js.map +1 -1
  18. package/dist/src/logic/neighbor-discovery/NeighborFinder.js +4 -4
  19. package/dist/src/logic/neighbor-discovery/NeighborFinder.js.map +1 -1
  20. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js +2 -2
  21. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js.map +1 -1
  22. package/dist/src/logic/neighbor-discovery/NeighborUpdateManagerServer.js +2 -2
  23. package/dist/src/logic/neighbor-discovery/NeighborUpdateManagerServer.js.map +1 -1
  24. package/dist/src/logic/proxy/ProxyStreamConnectionClient.d.ts +2 -3
  25. package/dist/src/logic/proxy/ProxyStreamConnectionClient.js +5 -8
  26. package/dist/src/logic/proxy/ProxyStreamConnectionClient.js.map +1 -1
  27. package/dist/src/logic/proxy/ProxyStreamConnectionServer.d.ts +0 -2
  28. package/dist/src/logic/proxy/ProxyStreamConnectionServer.js +0 -6
  29. package/dist/src/logic/proxy/ProxyStreamConnectionServer.js.map +1 -1
  30. package/dist/test/utils/utils.js +0 -1
  31. package/dist/test/utils/utils.js.map +1 -1
  32. package/package.json +6 -6
  33. package/src/NetworkStack.ts +1 -1
  34. package/src/logic/ILayer1.ts +2 -5
  35. package/src/logic/NodeList.ts +2 -2
  36. package/src/logic/RandomGraphNode.ts +6 -7
  37. package/src/logic/StreamPartEntryPointDiscovery.ts +51 -86
  38. package/src/logic/StreamrNode.ts +23 -21
  39. package/src/logic/createRandomGraphNode.ts +1 -1
  40. package/src/logic/neighbor-discovery/NeighborFinder.ts +4 -4
  41. package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +2 -2
  42. package/src/logic/neighbor-discovery/NeighborUpdateManagerServer.ts +2 -2
  43. package/src/logic/proxy/ProxyStreamConnectionClient.ts +6 -10
  44. package/src/logic/proxy/ProxyStreamConnectionServer.ts +0 -8
  45. package/test/end-to-end/proxy-connections.test.ts +1 -1
  46. package/test/end-to-end/websocket-full-node-network.test.ts +1 -1
  47. package/test/unit/RandomGraphNode.test.ts +6 -6
  48. package/test/unit/StreamPartEntrypointDiscovery.test.ts +15 -30
  49. package/test/utils/mock/MockLayer1.ts +5 -7
  50. 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
- streamParts: streamParts,
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
- streamParts: new Map<string, StreamPartDelivery>(),
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(streamPartId, 1)
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(streamPartId, 0)
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(streamPartId, 0)
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(streamPartId, true, 0)
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(streamPartId, true, 0)
136
+ await entryPointDiscoveryWithData.storeSelfAsEntryPointIfNecessary(0)
145
137
  expect(storeCalled).toEqual(1)
146
138
  })
147
139
 
148
- it('will keep recaching until stream stopped', async () => {
149
- await entryPointDiscoveryWithData.storeSelfAsEntryPointIfNecessary(streamPartId, true, 0)
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.removeSelfAsEntryPoint(streamPartId)
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 { DhtPeer, PeerDescriptor, PeerID, PeerIDKey, SortedContactList } from '@streamr/dht'
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(nodeId: NodeID) {
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
- getNeighborList(): SortedContactList<DhtPeer> {
23
- return this.neighborList
19
+ // eslint-disable-next-line class-methods-use-this
20
+ getClosestContacts(_maxCount?: number): PeerDescriptor[] {
21
+ return []
24
22
  }
25
23
 
26
24
  getKBucketPeers(): PeerDescriptor[] {
@@ -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,