@streamr/dht 100.0.0-pretestnet.6 → 100.0.0-testnet-one.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/dist/src/connection/ConnectionLockHandler.js +2 -2
- package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
- package/dist/src/connection/ConnectionLockRpcRemote.d.ts +2 -2
- package/dist/src/connection/ConnectionLockRpcRemote.js +2 -2
- package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -1
- package/dist/src/connection/ConnectionManager.js +4 -1
- package/dist/src/connection/ConnectionManager.js.map +1 -1
- package/dist/src/connection/ConnectorFacade.js.map +1 -1
- package/dist/src/connection/ManagedConnection.js +1 -0
- package/dist/src/connection/ManagedConnection.js.map +1 -1
- package/dist/src/connection/connectivityChecker.d.ts +9 -0
- package/dist/src/connection/connectivityChecker.js +121 -0
- package/dist/src/connection/connectivityChecker.js.map +1 -0
- package/dist/src/connection/connectivityRequestHandler.d.ts +2 -0
- package/dist/src/connection/connectivityRequestHandler.js +79 -0
- package/dist/src/connection/connectivityRequestHandler.js.map +1 -0
- package/dist/src/connection/simulator/Simulator.js +3 -2
- package/dist/src/connection/simulator/Simulator.js.map +1 -1
- package/dist/src/connection/simulator/SimulatorConnection.js +1 -1
- package/dist/src/connection/simulator/SimulatorConnection.js.map +1 -1
- package/dist/src/connection/webrtc/NodeWebrtcConnection.js +1 -1
- package/dist/src/connection/webrtc/NodeWebrtcConnection.js.map +1 -1
- package/dist/src/connection/webrtc/WebrtcConnector.js +1 -1
- package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -1
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +1 -1
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +1 -1
- package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.d.ts +2 -2
- package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.js +2 -2
- package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.js.map +1 -1
- package/dist/src/connection/webrtc/iceServerAsString.js +1 -1
- package/dist/src/connection/webrtc/iceServerAsString.js.map +1 -1
- package/dist/src/connection/websocket/ClientWebsocket.js +1 -0
- package/dist/src/connection/websocket/ClientWebsocket.js.map +1 -1
- package/dist/src/connection/websocket/WebsocketConnector.d.ts +0 -1
- package/dist/src/connection/websocket/WebsocketConnector.js +41 -7
- package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -1
- package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.d.ts +2 -2
- package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js +2 -2
- package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js.map +1 -1
- package/dist/src/dht/DhtNode.d.ts +9 -19
- package/dist/src/dht/DhtNode.js +76 -216
- package/dist/src/dht/DhtNode.js.map +1 -1
- package/dist/src/dht/DhtNodeRpcLocal.js +3 -3
- package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -1
- package/dist/src/dht/DhtNodeRpcRemote.d.ts +3 -3
- package/dist/src/dht/DhtNodeRpcRemote.js +4 -4
- package/dist/src/dht/DhtNodeRpcRemote.js.map +1 -1
- package/dist/src/dht/ExternalApiRpcLocal.d.ts +4 -4
- package/dist/src/dht/ExternalApiRpcLocal.js +5 -12
- package/dist/src/dht/ExternalApiRpcLocal.js.map +1 -1
- package/dist/src/dht/ExternalApiRpcRemote.d.ts +3 -3
- package/dist/src/dht/ExternalApiRpcRemote.js +5 -5
- package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -1
- package/dist/src/dht/PeerManager.d.ts +48 -0
- package/dist/src/dht/PeerManager.js +208 -0
- package/dist/src/dht/PeerManager.js.map +1 -0
- package/dist/src/dht/contact/ContactList.d.ts +1 -1
- package/dist/src/dht/contact/ContactList.js +1 -0
- package/dist/src/dht/contact/ContactList.js.map +1 -1
- package/dist/src/dht/contact/{Remote.d.ts → RpcRemote.d.ts} +3 -3
- package/dist/src/dht/contact/{Remote.js → RpcRemote.js} +8 -8
- package/dist/src/dht/contact/RpcRemote.js.map +1 -0
- package/dist/src/dht/discovery/DiscoverySession.d.ts +2 -9
- package/dist/src/dht/discovery/DiscoverySession.js +12 -26
- package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
- package/dist/src/dht/discovery/PeerDiscovery.d.ts +2 -9
- package/dist/src/dht/discovery/PeerDiscovery.js +13 -15
- package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
- package/dist/src/dht/find/FindRpcLocal.js +2 -1
- package/dist/src/dht/find/FindRpcLocal.js.map +1 -1
- package/dist/src/dht/find/FindSession.d.ts +6 -6
- package/dist/src/dht/find/FindSession.js +13 -13
- package/dist/src/dht/find/FindSession.js.map +1 -1
- package/dist/src/dht/find/FindSessionRpcLocal.d.ts +1 -1
- package/dist/src/dht/find/FindSessionRpcRemote.d.ts +2 -2
- package/dist/src/dht/find/FindSessionRpcRemote.js +2 -2
- package/dist/src/dht/find/FindSessionRpcRemote.js.map +1 -1
- package/dist/src/dht/find/Finder.d.ts +4 -4
- package/dist/src/dht/find/Finder.js +50 -42
- package/dist/src/dht/find/Finder.js.map +1 -1
- package/dist/src/dht/routing/FindRpcRemote.d.ts +2 -2
- package/dist/src/dht/routing/FindRpcRemote.js +7 -5
- package/dist/src/dht/routing/FindRpcRemote.js.map +1 -1
- package/dist/src/dht/routing/Router.d.ts +2 -6
- package/dist/src/dht/routing/Router.js +21 -18
- package/dist/src/dht/routing/Router.js.map +1 -1
- package/dist/src/dht/routing/RouterRpcLocal.d.ts +2 -2
- package/dist/src/dht/routing/RouterRpcLocal.js +4 -3
- package/dist/src/dht/routing/RouterRpcLocal.js.map +1 -1
- package/dist/src/dht/routing/RouterRpcRemote.d.ts +2 -2
- package/dist/src/dht/routing/RouterRpcRemote.js +13 -8
- package/dist/src/dht/routing/RouterRpcRemote.js.map +1 -1
- package/dist/src/dht/routing/RoutingSession.d.ts +1 -1
- package/dist/src/dht/routing/RoutingSession.js +16 -11
- package/dist/src/dht/routing/RoutingSession.js.map +1 -1
- package/dist/src/dht/routing/getPreviousPeer.js.map +1 -1
- package/dist/src/dht/store/LocalDataStore.d.ts +3 -3
- package/dist/src/dht/store/LocalDataStore.js +18 -17
- package/dist/src/dht/store/LocalDataStore.js.map +1 -1
- package/dist/src/dht/store/StoreRpcLocal.d.ts +10 -9
- package/dist/src/dht/store/StoreRpcLocal.js +91 -99
- package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
- package/dist/src/dht/store/StoreRpcRemote.d.ts +4 -5
- package/dist/src/dht/store/StoreRpcRemote.js +6 -15
- package/dist/src/dht/store/StoreRpcRemote.js.map +1 -1
- package/dist/src/exports.d.ts +1 -1
- package/dist/src/exports.js +4 -4
- package/dist/src/exports.js.map +1 -1
- package/dist/src/helpers/PeerID.js +2 -2
- package/dist/src/helpers/PeerID.js.map +1 -1
- package/dist/src/helpers/UUID.js +1 -1
- package/dist/src/helpers/UUID.js.map +1 -1
- package/dist/src/helpers/nodeId.d.ts +1 -0
- package/dist/src/helpers/{kademliaId.js → nodeId.js} +4 -4
- package/dist/src/helpers/nodeId.js.map +1 -0
- package/dist/src/helpers/peerIdFromPeerDescriptor.js +3 -3
- package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +5 -16
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +2 -9
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +80 -95
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +67 -66
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +3 -10
- package/dist/src/transport/RoutingRpcCommunicator.js +2 -0
- package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
- package/karma.config.js +2 -2
- package/package.json +5 -5
- package/protos/DhtRpc.proto +36 -36
- package/src/connection/ConnectionLockHandler.ts +2 -2
- package/src/connection/ConnectionLockRpcRemote.ts +2 -2
- package/src/connection/ConnectionManager.ts +4 -1
- package/src/connection/ConnectorFacade.ts +5 -4
- package/src/connection/ManagedConnection.ts +1 -0
- package/src/connection/connectivityChecker.ts +101 -0
- package/src/connection/connectivityRequestHandler.ts +79 -0
- package/src/connection/simulator/Simulator.ts +3 -2
- package/src/connection/simulator/SimulatorConnection.ts +1 -1
- package/src/connection/webrtc/BrowserWebrtcConnection.ts +10 -10
- package/src/connection/webrtc/NodeWebrtcConnection.ts +1 -1
- package/src/connection/webrtc/WebrtcConnector.ts +1 -1
- package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +1 -1
- package/src/connection/webrtc/WebrtcConnectorRpcRemote.ts +2 -2
- package/src/connection/webrtc/iceServerAsString.ts +1 -1
- package/src/connection/websocket/ClientWebsocket.ts +1 -0
- package/src/connection/websocket/WebsocketConnector.ts +22 -12
- package/src/connection/websocket/WebsocketConnectorRpcRemote.ts +2 -2
- package/src/dht/DhtNode.ts +102 -269
- package/src/dht/DhtNodeRpcLocal.ts +3 -3
- package/src/dht/DhtNodeRpcRemote.ts +4 -4
- package/src/dht/ExternalApiRpcLocal.ts +8 -13
- package/src/dht/ExternalApiRpcRemote.ts +5 -5
- package/src/dht/PeerManager.ts +256 -0
- package/src/dht/contact/ContactList.ts +3 -2
- package/src/dht/contact/{Remote.ts → RpcRemote.ts} +7 -6
- package/src/dht/discovery/DiscoverySession.ts +15 -40
- package/src/dht/discovery/PeerDiscovery.ts +18 -23
- package/src/dht/find/FindRpcLocal.ts +2 -2
- package/src/dht/find/FindSession.ts +20 -20
- package/src/dht/find/FindSessionRpcLocal.ts +1 -1
- package/src/dht/find/FindSessionRpcRemote.ts +2 -2
- package/src/dht/find/Finder.ts +79 -58
- package/src/dht/routing/FindRpcRemote.ts +7 -5
- package/src/dht/routing/Router.ts +22 -21
- package/src/dht/routing/RouterRpcLocal.ts +5 -5
- package/src/dht/routing/RouterRpcRemote.ts +13 -10
- package/src/dht/routing/RoutingSession.ts +15 -10
- package/src/dht/routing/getPreviousPeer.ts +1 -1
- package/src/dht/store/LocalDataStore.ts +18 -17
- package/src/dht/store/StoreRpcLocal.ts +101 -108
- package/src/dht/store/StoreRpcRemote.ts +7 -23
- package/src/exports.ts +1 -1
- package/src/helpers/PeerID.ts +2 -2
- package/src/helpers/UUID.ts +1 -1
- package/src/helpers/{kademliaId.ts → nodeId.ts} +1 -1
- package/src/helpers/peerIdFromPeerDescriptor.ts +3 -3
- package/src/proto/packages/dht/protos/DhtRpc.client.ts +6 -20
- package/src/proto/packages/dht/protos/DhtRpc.server.ts +3 -10
- package/src/proto/packages/dht/protos/DhtRpc.ts +103 -135
- package/src/transport/RoutingRpcCommunicator.ts +2 -0
- package/test/benchmark/Find.test.ts +4 -4
- package/test/benchmark/KademliaCorrectness.test.ts +2 -2
- package/test/benchmark/kademlia-simulation/Contact.ts +1 -1
- package/test/benchmark/kademlia-simulation/KademliaSimulation.ts +1 -1
- package/test/end-to-end/Layer0-Layer1.test.ts +1 -1
- package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +1 -1
- package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +2 -2
- package/test/end-to-end/Layer0Webrtc.test.ts +2 -2
- package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +1 -1
- package/test/end-to-end/Layer1-Scale-Webrtc.test.ts +1 -1
- package/test/end-to-end/WebsocketConnectionRequest.test.ts +1 -1
- package/test/end-to-end/memory-leak.test.ts +8 -12
- package/test/integration/ConnectionLocking.test.ts +2 -2
- package/test/integration/ConnectionManager.test.ts +14 -14
- package/test/integration/DhtJoinPeerDiscovery.test.ts +1 -1
- package/test/integration/DhtNodeExternalAPI.test.ts +10 -7
- package/test/integration/DhtNodeRpcRemote.test.ts +4 -4
- package/test/integration/DhtRpc.test.ts +6 -6
- package/test/integration/Find.test.ts +3 -3
- package/test/integration/Layer1-scale.test.ts +2 -2
- package/test/integration/Mock-Layer1-Layer0.test.ts +1 -1
- package/test/integration/{MigrateData.test.ts → ReplicateData.test.ts} +9 -9
- package/test/integration/RouteMessage.test.ts +2 -2
- package/test/integration/RouterRpcRemote.test.ts +2 -2
- package/test/integration/RpcErrors.test.ts +2 -2
- package/test/integration/ScaleDownDht.test.ts +4 -2
- package/test/integration/SimultaneousConnections.test.ts +8 -8
- package/test/integration/Store.test.ts +33 -13
- package/test/integration/StoreAndDelete.test.ts +19 -17
- package/test/integration/StoreOnDhtWithTwoNodes.test.ts +20 -20
- package/test/integration/StoreRpcRemote.test.ts +3 -3
- package/test/integration/WebrtcConnectionManagement.test.ts +2 -2
- package/test/integration/WebrtcConnectorRpc.test.ts +1 -1
- package/test/integration/WebsocketConnectionManagement.test.ts +2 -2
- package/test/integration/WebsocketConnectorRpc.test.ts +2 -2
- package/test/unit/ConnectivityHelpers.test.ts +4 -4
- package/test/unit/Finder.test.ts +69 -23
- package/test/unit/LocalDataStore.test.ts +60 -43
- package/test/unit/RandomContactList.test.ts +2 -2
- package/test/unit/Router.test.ts +19 -11
- package/test/unit/RoutingSession.test.ts +76 -0
- package/test/unit/SortedContactList.test.ts +2 -2
- package/test/unit/WebsocketConnector.test.ts +1 -1
- package/test/unit/connectivityRequestHandler.test.ts +71 -0
- package/test/utils/mock/Router.ts +1 -1
- package/test/utils/utils.ts +24 -22
- package/dist/src/connection/ConnectivityChecker.d.ts +0 -17
- package/dist/src/connection/ConnectivityChecker.js +0 -208
- package/dist/src/connection/ConnectivityChecker.js.map +0 -1
- package/dist/src/dht/contact/Remote.js.map +0 -1
- package/dist/src/helpers/kademliaId.d.ts +0 -1
- package/dist/src/helpers/kademliaId.js.map +0 -1
- package/src/connection/ConnectivityChecker.ts +0 -199
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { LatencyType, Simulator } from '../../src/connection/simulator/Simulator'
|
|
2
2
|
import { DhtNode } from '../../src/dht/DhtNode'
|
|
3
3
|
import { PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
4
|
-
import { createMockConnectionDhtNode, waitConnectionManagersReadyForTesting } from '../utils/utils'
|
|
5
|
-
import { PeerID } from '../../src/helpers/PeerID'
|
|
4
|
+
import { createMockConnectionDhtNode, createMockPeerDescriptor, waitConnectionManagersReadyForTesting } from '../utils/utils'
|
|
6
5
|
import { areEqualPeerDescriptors } from '../../src/helpers/peerIdFromPeerDescriptor'
|
|
7
6
|
import { Any } from '../../src/proto/google/protobuf/any'
|
|
7
|
+
import { createRandomNodeId } from '../../src/helpers/nodeId'
|
|
8
8
|
|
|
9
9
|
describe('Storing data in DHT', () => {
|
|
10
10
|
let entryPoint: DhtNode
|
|
@@ -46,45 +46,47 @@ describe('Storing data in DHT', () => {
|
|
|
46
46
|
|
|
47
47
|
it('Data can be deleted', async () => {
|
|
48
48
|
const storingNode = getRandomNode()
|
|
49
|
-
const dataKey =
|
|
50
|
-
const
|
|
51
|
-
const
|
|
49
|
+
const dataKey = createRandomNodeId()
|
|
50
|
+
const storedData = createMockPeerDescriptor()
|
|
51
|
+
const data = Any.pack(storedData, PeerDescriptor)
|
|
52
|
+
const successfulStorers = await storingNode.storeDataToDht(dataKey, data)
|
|
52
53
|
expect(successfulStorers.length).toBeGreaterThan(4)
|
|
53
|
-
await storingNode.deleteDataFromDht(dataKey
|
|
54
|
+
await storingNode.deleteDataFromDht(dataKey, true)
|
|
54
55
|
|
|
55
56
|
const fetchingNode = getRandomNode()
|
|
56
|
-
const results = await fetchingNode.getDataFromDht(dataKey
|
|
57
|
+
const results = await fetchingNode.getDataFromDht(dataKey)
|
|
57
58
|
results.forEach((entry) => {
|
|
58
59
|
const fetchedDescriptor = Any.unpack(entry.data!, PeerDescriptor)
|
|
59
60
|
expect(entry.deleted).toBeTrue()
|
|
60
|
-
expect(areEqualPeerDescriptors(fetchedDescriptor,
|
|
61
|
+
expect(areEqualPeerDescriptors(fetchedDescriptor, storedData)).toBeTrue()
|
|
61
62
|
})
|
|
62
63
|
}, 90000)
|
|
63
64
|
|
|
64
65
|
it('Data can be deleted and re-stored', async () => {
|
|
65
66
|
const storingNode = getRandomNode()
|
|
66
|
-
const dataKey =
|
|
67
|
-
const
|
|
68
|
-
const
|
|
67
|
+
const dataKey = createRandomNodeId()
|
|
68
|
+
const storedData = createMockPeerDescriptor()
|
|
69
|
+
const data = Any.pack(storedData, PeerDescriptor)
|
|
70
|
+
const successfulStorers1 = await storingNode.storeDataToDht(dataKey, data)
|
|
69
71
|
expect(successfulStorers1.length).toBeGreaterThan(4)
|
|
70
|
-
await storingNode.deleteDataFromDht(dataKey
|
|
72
|
+
await storingNode.deleteDataFromDht(dataKey, true)
|
|
71
73
|
|
|
72
74
|
const fetchingNode = getRandomNode()
|
|
73
|
-
const results1 = await fetchingNode.getDataFromDht(dataKey
|
|
75
|
+
const results1 = await fetchingNode.getDataFromDht(dataKey)
|
|
74
76
|
results1.forEach((entry) => {
|
|
75
77
|
const fetchedDescriptor = Any.unpack(entry.data!, PeerDescriptor)
|
|
76
78
|
expect(entry.deleted).toBeTrue()
|
|
77
|
-
expect(areEqualPeerDescriptors(fetchedDescriptor,
|
|
79
|
+
expect(areEqualPeerDescriptors(fetchedDescriptor, storedData)).toBeTrue()
|
|
78
80
|
})
|
|
79
81
|
|
|
80
|
-
const successfulStorers2 = await storingNode.storeDataToDht(dataKey
|
|
82
|
+
const successfulStorers2 = await storingNode.storeDataToDht(dataKey, data)
|
|
81
83
|
expect(successfulStorers2.length).toBeGreaterThan(4)
|
|
82
84
|
|
|
83
|
-
const results2 = await fetchingNode.getDataFromDht(dataKey
|
|
85
|
+
const results2 = await fetchingNode.getDataFromDht(dataKey)
|
|
84
86
|
results2.forEach((entry) => {
|
|
85
87
|
const fetchedDescriptor = Any.unpack(entry.data!, PeerDescriptor)
|
|
86
88
|
expect(entry.deleted).toBeFalse()
|
|
87
|
-
expect(areEqualPeerDescriptors(fetchedDescriptor,
|
|
89
|
+
expect(areEqualPeerDescriptors(fetchedDescriptor, storedData)).toBeTrue()
|
|
88
90
|
})
|
|
89
91
|
}, 90000)
|
|
90
92
|
})
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { createMockConnectionDhtNode } from '../utils/utils'
|
|
1
|
+
import { createMockConnectionDhtNode, createMockPeerDescriptor } from '../utils/utils'
|
|
2
2
|
import { DhtNode } from '../../src/dht/DhtNode'
|
|
3
3
|
import { Simulator } from '../../src/connection/simulator/Simulator'
|
|
4
|
-
import { PeerID } from '../../src/helpers/PeerID'
|
|
5
4
|
import { Any } from '../../src/proto/google/protobuf/any'
|
|
6
5
|
import { PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
7
6
|
import { areEqualPeerDescriptors } from '../../src/helpers/peerIdFromPeerDescriptor'
|
|
8
7
|
import { waitForCondition } from '@streamr/utils'
|
|
8
|
+
import { createRandomNodeId } from '../../src/helpers/nodeId'
|
|
9
9
|
|
|
10
10
|
describe('Storing data in DHT with two peers', () => {
|
|
11
11
|
|
|
@@ -41,31 +41,31 @@ describe('Storing data in DHT with two peers', () => {
|
|
|
41
41
|
})
|
|
42
42
|
|
|
43
43
|
it('Node can store on two peer DHT', async () => {
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
const
|
|
44
|
+
const storedData1 = createMockPeerDescriptor()
|
|
45
|
+
const storedData2 = createMockPeerDescriptor()
|
|
46
|
+
const dataKey1 = createRandomNodeId()
|
|
47
|
+
const dataKey2 = createRandomNodeId()
|
|
48
|
+
const data1 = Any.pack(storedData1, PeerDescriptor)
|
|
49
|
+
const data2 = Any.pack(storedData2, PeerDescriptor)
|
|
48
50
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
expect(successfulStorers1[0].kademliaId).toStrictEqual(entryPoint.getLocalPeerDescriptor().kademliaId)
|
|
52
|
-
expect(successfulStorers2[0].kademliaId).toStrictEqual(otherNode.getLocalPeerDescriptor().kademliaId)
|
|
51
|
+
await otherNode.storeDataToDht(dataKey1, data1)
|
|
52
|
+
await entryPoint.storeDataToDht(dataKey2, data2)
|
|
53
53
|
|
|
54
|
-
const foundData1 = await otherNode.getDataFromDht(dataKey1
|
|
55
|
-
const foundData2 = await entryPoint.getDataFromDht(dataKey2
|
|
56
|
-
expect(areEqualPeerDescriptors(
|
|
57
|
-
expect(areEqualPeerDescriptors(
|
|
54
|
+
const foundData1 = await otherNode.getDataFromDht(dataKey1)
|
|
55
|
+
const foundData2 = await entryPoint.getDataFromDht(dataKey2)
|
|
56
|
+
expect(areEqualPeerDescriptors(storedData1, Any.unpack(foundData1[0]!.data!, PeerDescriptor))).toBeTrue()
|
|
57
|
+
expect(areEqualPeerDescriptors(storedData2, Any.unpack(foundData2[0]!.data!, PeerDescriptor))).toBeTrue()
|
|
58
58
|
})
|
|
59
59
|
|
|
60
60
|
it('Can store on one peer DHT', async () => {
|
|
61
61
|
await otherNode.stop()
|
|
62
62
|
await waitForCondition(() => entryPoint.getBucketSize() === 0)
|
|
63
|
-
const dataKey =
|
|
64
|
-
const
|
|
65
|
-
const
|
|
66
|
-
|
|
63
|
+
const dataKey = createRandomNodeId()
|
|
64
|
+
const storedData = createMockPeerDescriptor()
|
|
65
|
+
const data = Any.pack(storedData, PeerDescriptor)
|
|
66
|
+
await entryPoint.storeDataToDht(dataKey, data)
|
|
67
67
|
|
|
68
|
-
const foundData = await entryPoint.getDataFromDht(dataKey
|
|
69
|
-
expect(areEqualPeerDescriptors(
|
|
68
|
+
const foundData = await entryPoint.getDataFromDht(dataKey)
|
|
69
|
+
expect(areEqualPeerDescriptors(storedData, Any.unpack(foundData[0]!.data!, PeerDescriptor))).toBeTrue()
|
|
70
70
|
}, 60000)
|
|
71
71
|
})
|
|
@@ -18,16 +18,16 @@ describe('StoreRpcRemote', () => {
|
|
|
18
18
|
let serverRpcCommunicator: RpcCommunicator
|
|
19
19
|
const serviceId = 'test'
|
|
20
20
|
const clientPeerDescriptor: PeerDescriptor = {
|
|
21
|
-
|
|
21
|
+
nodeId: generateId('client'),
|
|
22
22
|
type: NodeType.NODEJS
|
|
23
23
|
}
|
|
24
24
|
const serverPeerDescriptor: PeerDescriptor = {
|
|
25
|
-
|
|
25
|
+
nodeId: generateId('server'),
|
|
26
26
|
type: NodeType.NODEJS
|
|
27
27
|
}
|
|
28
28
|
const data = Any.pack(clientPeerDescriptor, PeerDescriptor)
|
|
29
29
|
const request: StoreDataRequest = {
|
|
30
|
-
|
|
30
|
+
key: clientPeerDescriptor.nodeId,
|
|
31
31
|
data,
|
|
32
32
|
ttl: 10
|
|
33
33
|
}
|
|
@@ -28,12 +28,12 @@ describe('WebRTC Connection Management', () => {
|
|
|
28
28
|
let simulator: Simulator
|
|
29
29
|
|
|
30
30
|
const peerDescriptor1: PeerDescriptor = {
|
|
31
|
-
|
|
31
|
+
nodeId: PeerID.fromString('peer1').value,
|
|
32
32
|
type: NodeType.NODEJS,
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
const peerDescriptor2: PeerDescriptor = {
|
|
36
|
-
|
|
36
|
+
nodeId: PeerID.fromString('peer2').value,
|
|
37
37
|
type: NodeType.NODEJS,
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -30,7 +30,7 @@ describe('Websocket Connection Management', () => {
|
|
|
30
30
|
const simulator = new Simulator()
|
|
31
31
|
|
|
32
32
|
const wsServerConnectorPeerDescriptor: PeerDescriptor = {
|
|
33
|
-
|
|
33
|
+
nodeId: PeerID.fromString('peerWithServer').value,
|
|
34
34
|
type: NodeType.NODEJS,
|
|
35
35
|
websocket: {
|
|
36
36
|
host: '127.0.0.1',
|
|
@@ -40,7 +40,7 @@ describe('Websocket Connection Management', () => {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
const noWsServerConnectorPeerDescriptor: PeerDescriptor = {
|
|
43
|
-
|
|
43
|
+
nodeId: PeerID.fromString('peerWithoutServer').value,
|
|
44
44
|
type: NodeType.NODEJS,
|
|
45
45
|
}
|
|
46
46
|
|
|
@@ -17,12 +17,12 @@ describe('WebsocketConnectorRpc', () => {
|
|
|
17
17
|
let client2: ProtoRpcClient<WebsocketConnectorRpcClient>
|
|
18
18
|
|
|
19
19
|
const peerDescriptor1: PeerDescriptor = {
|
|
20
|
-
|
|
20
|
+
nodeId: generateId('peer1'),
|
|
21
21
|
type: NodeType.NODEJS
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
const peerDescriptor2: PeerDescriptor = {
|
|
25
|
-
|
|
25
|
+
nodeId: generateId('peer2'),
|
|
26
26
|
type: NodeType.NODEJS
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -5,7 +5,7 @@ import { ConnectionType } from '../../src/connection/IConnection'
|
|
|
5
5
|
describe('Connectivity helpers', () => {
|
|
6
6
|
|
|
7
7
|
const tlsServerPeerDescriptor = {
|
|
8
|
-
|
|
8
|
+
nodeId: new Uint8Array(1),
|
|
9
9
|
type: NodeType.NODEJS,
|
|
10
10
|
websocket: {
|
|
11
11
|
host: 'mock',
|
|
@@ -15,7 +15,7 @@ describe('Connectivity helpers', () => {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
const noTlsServerPeerDescriptor = {
|
|
18
|
-
|
|
18
|
+
nodeId: new Uint8Array(1),
|
|
19
19
|
type: NodeType.NODEJS,
|
|
20
20
|
websocket: {
|
|
21
21
|
host: 'mock',
|
|
@@ -25,12 +25,12 @@ describe('Connectivity helpers', () => {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
const browserPeerDescriptor = {
|
|
28
|
-
|
|
28
|
+
nodeId: new Uint8Array(2),
|
|
29
29
|
type: NodeType.BROWSER
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
const noServerPeerDescriptor = {
|
|
33
|
-
|
|
33
|
+
nodeId: new Uint8Array(3),
|
|
34
34
|
type: NodeType.NODEJS
|
|
35
35
|
}
|
|
36
36
|
|
package/test/unit/Finder.test.ts
CHANGED
|
@@ -1,39 +1,51 @@
|
|
|
1
1
|
import {
|
|
2
|
+
FindAction,
|
|
2
3
|
Message,
|
|
3
4
|
MessageType,
|
|
4
5
|
NodeType,
|
|
5
6
|
PeerDescriptor,
|
|
6
7
|
RouteMessageAck,
|
|
8
|
+
RouteMessageError,
|
|
7
9
|
RouteMessageWrapper
|
|
8
10
|
} from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
9
|
-
import { PeerID
|
|
11
|
+
import { PeerID } from '../../src/helpers/PeerID'
|
|
10
12
|
import {
|
|
11
13
|
createWrappedClosestPeersRequest,
|
|
12
14
|
createFindRequest
|
|
13
15
|
} from '../utils/utils'
|
|
14
16
|
import { Finder } from '../../src/dht/find/Finder'
|
|
15
|
-
import { DhtNodeRpcRemote } from '../../src/dht/DhtNodeRpcRemote'
|
|
16
17
|
import { LocalDataStore } from '../../src/dht/store/LocalDataStore'
|
|
17
18
|
import { v4 } from 'uuid'
|
|
18
19
|
import { MockRouter } from '../utils/mock/Router'
|
|
19
20
|
import { MockTransport } from '../utils/mock/Transport'
|
|
20
21
|
import { areEqualPeerDescriptors } from '../../src/helpers/peerIdFromPeerDescriptor'
|
|
21
22
|
import { FakeRpcCommunicator } from '../utils/FakeRpcCommunicator'
|
|
23
|
+
import { IRouter } from '../../src/dht/routing/Router'
|
|
24
|
+
import { ITransport } from '../../src/exports'
|
|
22
25
|
|
|
26
|
+
const createMockRouter = (error?: RouteMessageError): Partial<IRouter> => {
|
|
27
|
+
return {
|
|
28
|
+
doRouteMessage: (routedMessage: RouteMessageWrapper) => {
|
|
29
|
+
return {
|
|
30
|
+
requestId: routedMessage.requestId,
|
|
31
|
+
error
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
isMostLikelyDuplicate: () => false,
|
|
35
|
+
addToDuplicateDetector: () => {}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
23
38
|
describe('Finder', () => {
|
|
24
39
|
|
|
25
|
-
let finder: Finder
|
|
26
|
-
let connections: Map<PeerIDKey, DhtNodeRpcRemote>
|
|
27
|
-
|
|
28
40
|
const peerDescriptor1: PeerDescriptor = {
|
|
29
|
-
|
|
41
|
+
nodeId: PeerID.fromString('peerid').value,
|
|
30
42
|
type: NodeType.NODEJS
|
|
31
43
|
}
|
|
32
44
|
const peerDescriptor2: PeerDescriptor = {
|
|
33
|
-
|
|
45
|
+
nodeId: PeerID.fromString('destination').value,
|
|
34
46
|
type: NodeType.NODEJS
|
|
35
47
|
}
|
|
36
|
-
const findRequest = createFindRequest(
|
|
48
|
+
const findRequest = createFindRequest(FindAction.NODE)
|
|
37
49
|
const message: Message = {
|
|
38
50
|
serviceId: 'unknown',
|
|
39
51
|
messageId: v4(),
|
|
@@ -50,41 +62,41 @@ describe('Finder', () => {
|
|
|
50
62
|
requestId: 'REQ',
|
|
51
63
|
routingPath: [],
|
|
52
64
|
reachableThrough: [],
|
|
53
|
-
|
|
54
|
-
|
|
65
|
+
sourcePeer: peerDescriptor1,
|
|
66
|
+
destinationPeer: peerDescriptor2
|
|
55
67
|
}
|
|
56
68
|
const rpcCommunicator = new FakeRpcCommunicator()
|
|
57
69
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
finder = new Finder({
|
|
70
|
+
const createFinder = (router: IRouter = new MockRouter(), transport: ITransport = new MockTransport()): Finder => {
|
|
71
|
+
return new Finder({
|
|
61
72
|
localPeerDescriptor: peerDescriptor1,
|
|
62
|
-
router
|
|
63
|
-
connections,
|
|
73
|
+
router,
|
|
74
|
+
connections: new Map(),
|
|
64
75
|
serviceId: 'Finder',
|
|
65
76
|
localDataStore: new LocalDataStore(),
|
|
66
|
-
sessionTransport:
|
|
67
|
-
addContact: (
|
|
77
|
+
sessionTransport: transport,
|
|
78
|
+
addContact: () => {},
|
|
68
79
|
isPeerCloserToIdThanSelf: (_peer1, _compareToId) => true,
|
|
69
80
|
rpcCommunicator: rpcCommunicator as any
|
|
70
81
|
})
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
afterEach(() => {
|
|
74
|
-
finder.stop()
|
|
75
|
-
})
|
|
82
|
+
}
|
|
76
83
|
|
|
77
84
|
it('Finder server', async () => {
|
|
85
|
+
const finder = createFinder()
|
|
78
86
|
const res = await rpcCommunicator.callRpcMethod('routeFindRequest', routedMessage) as RouteMessageAck
|
|
79
|
-
expect(res.error).
|
|
87
|
+
expect(res.error).toBeUndefined()
|
|
88
|
+
finder.stop()
|
|
80
89
|
})
|
|
81
90
|
|
|
82
91
|
it('startFind with mode Node returns self if no peers', async () => {
|
|
92
|
+
const finder = createFinder()
|
|
83
93
|
const res = await finder.startFind(PeerID.fromString('find').value)
|
|
84
94
|
expect(areEqualPeerDescriptors(res.closestNodes[0], peerDescriptor1)).toEqual(true)
|
|
95
|
+
finder.stop()
|
|
85
96
|
})
|
|
86
97
|
|
|
87
98
|
it('Finder server throws if payload is not FindRequest', async () => {
|
|
99
|
+
const finder = createFinder(new MockRouter())
|
|
88
100
|
const rpcWrapper = createWrappedClosestPeersRequest(peerDescriptor1)
|
|
89
101
|
const badMessage: Message = {
|
|
90
102
|
serviceId: 'unknown',
|
|
@@ -105,6 +117,40 @@ describe('Finder', () => {
|
|
|
105
117
|
destinationPeer: peerDescriptor1,
|
|
106
118
|
sourcePeer: peerDescriptor2
|
|
107
119
|
})).rejects.toThrow()
|
|
120
|
+
finder.stop()
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
it('no targets', async () => {
|
|
124
|
+
const router = createMockRouter(RouteMessageError.NO_TARGETS)
|
|
125
|
+
const send = jest.fn()
|
|
126
|
+
const transport = {
|
|
127
|
+
send,
|
|
128
|
+
on: () => {},
|
|
129
|
+
off: () => {}
|
|
130
|
+
}
|
|
131
|
+
const finder = createFinder(router as any, transport as any)
|
|
132
|
+
const ack = await rpcCommunicator.callRpcMethod('routeFindRequest', routedMessage)
|
|
133
|
+
expect(ack).toEqual({
|
|
134
|
+
requestId: routedMessage.requestId,
|
|
135
|
+
error: RouteMessageError.NO_TARGETS
|
|
136
|
+
})
|
|
137
|
+
expect(send).toHaveBeenCalledTimes(1)
|
|
138
|
+
finder.stop()
|
|
108
139
|
})
|
|
109
140
|
|
|
141
|
+
it('error', async () => {
|
|
142
|
+
const router = createMockRouter(RouteMessageError.DUPLICATE)
|
|
143
|
+
const send = jest.fn()
|
|
144
|
+
const transport = {
|
|
145
|
+
send
|
|
146
|
+
}
|
|
147
|
+
const finder = createFinder(router as any, transport as any)
|
|
148
|
+
const ack = await rpcCommunicator.callRpcMethod('routeFindRequest', routedMessage)
|
|
149
|
+
expect(ack).toEqual({
|
|
150
|
+
requestId: routedMessage.requestId,
|
|
151
|
+
error: RouteMessageError.DUPLICATE
|
|
152
|
+
})
|
|
153
|
+
expect(send).not.toHaveBeenCalled()
|
|
154
|
+
finder.stop()
|
|
155
|
+
})
|
|
110
156
|
})
|
|
@@ -11,16 +11,16 @@ import { Timestamp } from '../../src/proto/google/protobuf/timestamp'
|
|
|
11
11
|
|
|
12
12
|
describe('LocalDataStore', () => {
|
|
13
13
|
let localDataStore: LocalDataStore
|
|
14
|
-
const
|
|
15
|
-
|
|
14
|
+
const creator1: PeerDescriptor = {
|
|
15
|
+
nodeId: new Uint8Array([1, 2, 3]),
|
|
16
16
|
type: NodeType.NODEJS
|
|
17
17
|
}
|
|
18
|
-
const
|
|
19
|
-
|
|
18
|
+
const creator2: PeerDescriptor = {
|
|
19
|
+
nodeId: new Uint8Array([3, 2, 1]),
|
|
20
20
|
type: NodeType.NODEJS
|
|
21
21
|
}
|
|
22
|
-
const data1 = Any.pack(
|
|
23
|
-
const data2 = Any.pack(
|
|
22
|
+
const data1 = Any.pack(creator1, PeerDescriptor)
|
|
23
|
+
const data2 = Any.pack(creator2, PeerDescriptor)
|
|
24
24
|
|
|
25
25
|
beforeEach(() => {
|
|
26
26
|
localDataStore = new LocalDataStore()
|
|
@@ -31,59 +31,59 @@ describe('LocalDataStore', () => {
|
|
|
31
31
|
})
|
|
32
32
|
|
|
33
33
|
it('can store', () => {
|
|
34
|
-
const dataKey = peerIdFromPeerDescriptor(
|
|
35
|
-
localDataStore.storeEntry({
|
|
36
|
-
ttl: 10000, stale: false, deleted: false,
|
|
34
|
+
const dataKey = peerIdFromPeerDescriptor(creator1)
|
|
35
|
+
localDataStore.storeEntry({ creator: creator1, key: dataKey.value, data: data1,
|
|
36
|
+
ttl: 10000, stale: false, deleted: false, createdAt: Timestamp.now() })
|
|
37
37
|
const fetchedData = localDataStore.getEntry(dataKey)
|
|
38
38
|
fetchedData.forEach((entry) => {
|
|
39
39
|
const fetchedDescriptor = Any.unpack(entry.data!, PeerDescriptor)
|
|
40
|
-
expect(areEqualPeerDescriptors(fetchedDescriptor,
|
|
40
|
+
expect(areEqualPeerDescriptors(fetchedDescriptor, creator1)).toBeTrue()
|
|
41
41
|
})
|
|
42
42
|
})
|
|
43
43
|
|
|
44
44
|
it('multiple storers behind one key', () => {
|
|
45
|
-
const dataKey = peerIdFromPeerDescriptor(
|
|
46
|
-
localDataStore.storeEntry({
|
|
47
|
-
ttl: 10000, stale: false, deleted: false,
|
|
48
|
-
localDataStore.storeEntry({
|
|
49
|
-
data: data1, ttl: 10000, stale: false, deleted: false,
|
|
45
|
+
const dataKey = peerIdFromPeerDescriptor(creator1)
|
|
46
|
+
localDataStore.storeEntry({ creator: creator1, key: dataKey.value, data: data1,
|
|
47
|
+
ttl: 10000, stale: false, deleted: false, createdAt: Timestamp.now() })
|
|
48
|
+
localDataStore.storeEntry({ creator: creator2, key: dataKey.value,
|
|
49
|
+
data: data1, ttl: 10000, stale: false, deleted: false, createdAt: Timestamp.now() })
|
|
50
50
|
const fetchedData = localDataStore.getEntry(dataKey)
|
|
51
51
|
fetchedData.forEach((entry) => {
|
|
52
52
|
const fetchedDescriptor = Any.unpack(entry.data!, PeerDescriptor)
|
|
53
|
-
expect(areEqualPeerDescriptors(fetchedDescriptor,
|
|
53
|
+
expect(areEqualPeerDescriptors(fetchedDescriptor, creator1)).toBeTrue()
|
|
54
54
|
})
|
|
55
55
|
})
|
|
56
56
|
|
|
57
57
|
it('can remove data entries', () => {
|
|
58
|
-
const dataKey = peerIdFromPeerDescriptor(
|
|
59
|
-
localDataStore.storeEntry({
|
|
60
|
-
ttl: 10000, stale: false, deleted: false,
|
|
61
|
-
localDataStore.storeEntry({
|
|
62
|
-
ttl: 10000, stale: false, deleted: false,
|
|
63
|
-
localDataStore.deleteEntry(dataKey,
|
|
58
|
+
const dataKey = peerIdFromPeerDescriptor(creator1)
|
|
59
|
+
localDataStore.storeEntry({ creator: creator1, key: dataKey.value, data: data1,
|
|
60
|
+
ttl: 10000, stale: false, deleted: false, createdAt: Timestamp.now() })
|
|
61
|
+
localDataStore.storeEntry({ creator: creator2, key: dataKey.value, data: data2,
|
|
62
|
+
ttl: 10000, stale: false, deleted: false, createdAt: Timestamp.now() })
|
|
63
|
+
localDataStore.deleteEntry(dataKey, creator1)
|
|
64
64
|
const fetchedData = localDataStore.getEntry(dataKey)
|
|
65
65
|
fetchedData.forEach((entry) => {
|
|
66
66
|
const fetchedDescriptor = Any.unpack(entry.data!, PeerDescriptor)
|
|
67
|
-
expect(areEqualPeerDescriptors(fetchedDescriptor,
|
|
67
|
+
expect(areEqualPeerDescriptors(fetchedDescriptor, creator2)).toBeTrue()
|
|
68
68
|
})
|
|
69
69
|
})
|
|
70
70
|
|
|
71
71
|
it('can remove all data entries', () => {
|
|
72
|
-
const dataKey = peerIdFromPeerDescriptor(
|
|
73
|
-
localDataStore.storeEntry({
|
|
74
|
-
ttl: 10000, stale: false, deleted: false,
|
|
75
|
-
localDataStore.storeEntry({
|
|
76
|
-
ttl: 10000, stale: false, deleted: false,
|
|
77
|
-
localDataStore.deleteEntry(dataKey,
|
|
78
|
-
localDataStore.deleteEntry(dataKey,
|
|
72
|
+
const dataKey = peerIdFromPeerDescriptor(creator1)
|
|
73
|
+
localDataStore.storeEntry({ creator: creator1, key: dataKey.value, data: data1,
|
|
74
|
+
ttl: 10000, stale: false, deleted: false, createdAt: Timestamp.now() })
|
|
75
|
+
localDataStore.storeEntry({ creator: creator2, key: dataKey.value, data: data2,
|
|
76
|
+
ttl: 10000, stale: false, deleted: false, createdAt: Timestamp.now() })
|
|
77
|
+
localDataStore.deleteEntry(dataKey, creator1)
|
|
78
|
+
localDataStore.deleteEntry(dataKey, creator2)
|
|
79
79
|
const fetchedData = localDataStore.getEntry(dataKey)
|
|
80
80
|
expect(fetchedData.size).toBe(0)
|
|
81
81
|
})
|
|
82
82
|
|
|
83
83
|
it('data is deleted after TTL', async () => {
|
|
84
|
-
const dataKey = peerIdFromPeerDescriptor(
|
|
85
|
-
localDataStore.storeEntry({
|
|
86
|
-
ttl: 1000, stale: false, deleted: false,
|
|
84
|
+
const dataKey = peerIdFromPeerDescriptor(creator1)
|
|
85
|
+
localDataStore.storeEntry({ creator: creator1, key: dataKey.value, data: data1,
|
|
86
|
+
ttl: 1000, stale: false, deleted: false, createdAt: Timestamp.now() })
|
|
87
87
|
const intitialStore = localDataStore.getEntry(dataKey)
|
|
88
88
|
expect(intitialStore.size).toBe(1)
|
|
89
89
|
await wait(1100)
|
|
@@ -91,15 +91,32 @@ describe('LocalDataStore', () => {
|
|
|
91
91
|
expect(fetchedData.size).toBe(0)
|
|
92
92
|
})
|
|
93
93
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
94
|
+
describe('mark data as deleted', () => {
|
|
95
|
+
|
|
96
|
+
it('happy path', () => {
|
|
97
|
+
const dataKey = peerIdFromPeerDescriptor(creator1)
|
|
98
|
+
localDataStore.storeEntry({ creator: creator1, key: dataKey.value, data: data1,
|
|
99
|
+
ttl: 10000, stale: false, deleted: false, createdAt: Timestamp.now() })
|
|
100
|
+
const notDeletedData = localDataStore.getEntry(dataKey)
|
|
101
|
+
expect(notDeletedData.get(keyFromPeerDescriptor(creator1))!.deleted).toBeFalse()
|
|
102
|
+
const returnValue = localDataStore.markAsDeleted(dataKey.value, peerIdFromPeerDescriptor(creator1))
|
|
103
|
+
expect(returnValue).toBe(true)
|
|
104
|
+
const deletedData = localDataStore.getEntry(dataKey)
|
|
105
|
+
expect(deletedData.get(keyFromPeerDescriptor(creator1))!.deleted).toBeTrue()
|
|
106
|
+
})
|
|
104
107
|
|
|
108
|
+
it('data not stored', () => {
|
|
109
|
+
const dataKey = peerIdFromPeerDescriptor(creator1)
|
|
110
|
+
const returnValue = localDataStore.markAsDeleted(dataKey.value, peerIdFromPeerDescriptor(creator2))
|
|
111
|
+
expect(returnValue).toBe(false)
|
|
112
|
+
})
|
|
113
|
+
|
|
114
|
+
it('data not stored by the given creator', () => {
|
|
115
|
+
const dataKey = peerIdFromPeerDescriptor(creator1)
|
|
116
|
+
localDataStore.storeEntry({ creator: creator1, key: dataKey.value, data: data1,
|
|
117
|
+
ttl: 10000, stale: false, deleted: false, createdAt: Timestamp.now() })
|
|
118
|
+
const returnValue = localDataStore.markAsDeleted(dataKey.value, peerIdFromPeerDescriptor(creator2))
|
|
119
|
+
expect(returnValue).toBe(false)
|
|
120
|
+
})
|
|
121
|
+
})
|
|
105
122
|
})
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { RandomContactList } from '../../src/dht/contact/RandomContactList'
|
|
2
2
|
import { PeerID } from '../../src/helpers/PeerID'
|
|
3
3
|
|
|
4
|
-
const createItem = (
|
|
5
|
-
return { getPeerId: () => PeerID.fromValue(
|
|
4
|
+
const createItem = (nodeId: Uint8Array): { getPeerId: () => PeerID } => {
|
|
5
|
+
return { getPeerId: () => PeerID.fromValue(nodeId) }
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
describe('RandomContactList', () => {
|