@streamr/dht 100.0.0-pretestnet.4 → 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
|
@@ -6,7 +6,7 @@ const NUM_OF_NODES_PER_KBUCKET = 8
|
|
|
6
6
|
|
|
7
7
|
describe('Layer1 Scale', () => {
|
|
8
8
|
const epPeerDescriptor: PeerDescriptor = {
|
|
9
|
-
|
|
9
|
+
nodeId: PeerID.fromString('entrypoint').value,
|
|
10
10
|
type: NodeType.NODEJS,
|
|
11
11
|
websocket: { host: '127.0.0.1', port: 43225, tls: false }
|
|
12
12
|
}
|
|
@@ -6,7 +6,7 @@ const NUM_OF_NODES_PER_KBUCKET = 8
|
|
|
6
6
|
|
|
7
7
|
describe('Layer1 Scale', () => {
|
|
8
8
|
const epPeerDescriptor: PeerDescriptor = {
|
|
9
|
-
|
|
9
|
+
nodeId: PeerID.fromString('0').value,
|
|
10
10
|
type: NodeType.NODEJS,
|
|
11
11
|
websocket: { host: '127.0.0.1', port: 43228, tls: false }
|
|
12
12
|
}
|
|
@@ -7,7 +7,7 @@ import { areEqualPeerDescriptors } from '../../src/helpers/peerIdFromPeerDescrip
|
|
|
7
7
|
|
|
8
8
|
describe('Websocket IConnection Requests', () => {
|
|
9
9
|
const epPeerDescriptor: PeerDescriptor = {
|
|
10
|
-
|
|
10
|
+
nodeId: PeerID.fromString('3').value,
|
|
11
11
|
type: NodeType.NODEJS,
|
|
12
12
|
websocket: { host: '127.0.0.1', port: 10021, tls: false }
|
|
13
13
|
}
|
|
@@ -11,7 +11,7 @@ describe('memory leak', () => {
|
|
|
11
11
|
|
|
12
12
|
it('send message', async () => {
|
|
13
13
|
const entryPointDescriptor = {
|
|
14
|
-
|
|
14
|
+
nodeId: randomBytes(10),
|
|
15
15
|
type: NodeType.NODEJS,
|
|
16
16
|
websocket: {
|
|
17
17
|
host: '127.0.0.1',
|
|
@@ -20,7 +20,7 @@ describe('memory leak', () => {
|
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
let entryPoint: DhtNode | undefined = new DhtNode({
|
|
23
|
-
peerId: binaryToHex(entryPointDescriptor.
|
|
23
|
+
peerId: binaryToHex(entryPointDescriptor.nodeId),
|
|
24
24
|
websocketHost: entryPointDescriptor.websocket!.host,
|
|
25
25
|
websocketPortRange: {
|
|
26
26
|
min: entryPointDescriptor.websocket.port,
|
|
@@ -33,20 +33,16 @@ describe('memory leak', () => {
|
|
|
33
33
|
await entryPoint.joinDht([entryPointDescriptor])
|
|
34
34
|
let sender: DhtNode | undefined = new DhtNode({})
|
|
35
35
|
let receiver: DhtNode | undefined = new DhtNode({})
|
|
36
|
-
|
|
37
|
-
async () => {
|
|
36
|
+
await Promise.all([
|
|
37
|
+
(async () => {
|
|
38
38
|
await sender.start()
|
|
39
39
|
await sender.joinDht([entryPointDescriptor])
|
|
40
|
-
},
|
|
41
|
-
async () => {
|
|
40
|
+
})(),
|
|
41
|
+
(async () => {
|
|
42
42
|
await receiver.start()
|
|
43
43
|
await receiver.joinDht([entryPointDescriptor])
|
|
44
|
-
}
|
|
45
|
-
])
|
|
46
|
-
await sender.start()
|
|
47
|
-
await sender.joinDht([entryPointDescriptor])
|
|
48
|
-
await receiver.start()
|
|
49
|
-
await receiver.joinDht([entryPointDescriptor])
|
|
44
|
+
})()
|
|
45
|
+
])
|
|
50
46
|
|
|
51
47
|
let receivedMessage: Message | undefined = undefined
|
|
52
48
|
receiver.on('message', (msg: Message) => receivedMessage = msg)
|
|
@@ -21,12 +21,12 @@ const createConnectionManager = (localPeerDescriptor: PeerDescriptor, transport:
|
|
|
21
21
|
describe('Connection Locking', () => {
|
|
22
22
|
|
|
23
23
|
const mockPeerDescriptor1: PeerDescriptor = {
|
|
24
|
-
|
|
24
|
+
nodeId: PeerID.fromString('mock1').value,
|
|
25
25
|
type: NodeType.NODEJS,
|
|
26
26
|
region: getRandomRegion()
|
|
27
27
|
}
|
|
28
28
|
const mockPeerDescriptor2: PeerDescriptor = {
|
|
29
|
-
|
|
29
|
+
nodeId: PeerID.fromString('mock2').value,
|
|
30
30
|
type: NodeType.NODEJS,
|
|
31
31
|
region: getRandomRegion()
|
|
32
32
|
}
|
|
@@ -8,7 +8,7 @@ import { Logger, MetricsContext, waitForEvent3 } from '@streamr/utils'
|
|
|
8
8
|
import { SimulatorTransport } from '../../src/exports'
|
|
9
9
|
import { DefaultConnectorFacade, DefaultConnectorFacadeConfig } from '../../src/connection/ConnectorFacade'
|
|
10
10
|
import { MarkOptional } from 'ts-essentials'
|
|
11
|
-
import {
|
|
11
|
+
import { createRandomNodeId } from '../../src/helpers/nodeId'
|
|
12
12
|
import { TransportEvents } from '../../src/transport/ITransport'
|
|
13
13
|
|
|
14
14
|
const logger = new Logger(module)
|
|
@@ -18,20 +18,20 @@ describe('ConnectionManager', () => {
|
|
|
18
18
|
const serviceId = 'demo'
|
|
19
19
|
|
|
20
20
|
const mockPeerDescriptor1: PeerDescriptor = {
|
|
21
|
-
|
|
21
|
+
nodeId: PeerID.fromString('tester1').value,
|
|
22
22
|
type: NodeType.NODEJS
|
|
23
23
|
}
|
|
24
24
|
const mockPeerDescriptor2: PeerDescriptor = {
|
|
25
|
-
|
|
25
|
+
nodeId: PeerID.fromString('tester2').value,
|
|
26
26
|
type: NodeType.NODEJS
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
const mockPeerDescriptor3: PeerDescriptor = {
|
|
30
|
-
|
|
30
|
+
nodeId: PeerID.fromString('tester3').value,
|
|
31
31
|
type: NodeType.NODEJS
|
|
32
32
|
}
|
|
33
33
|
const mockPeerDescriptor4: PeerDescriptor = {
|
|
34
|
-
|
|
34
|
+
nodeId: PeerID.fromString('tester4').value,
|
|
35
35
|
type: NodeType.NODEJS
|
|
36
36
|
}
|
|
37
37
|
const simulator = new Simulator()
|
|
@@ -89,7 +89,7 @@ describe('ConnectionManager', () => {
|
|
|
89
89
|
transport: mockTransport,
|
|
90
90
|
websocketPortRange: { min: 9992, max: 9992 },
|
|
91
91
|
entryPoints: [
|
|
92
|
-
{
|
|
92
|
+
{ nodeId: Uint8Array.from([1, 2, 3]), type: NodeType.NODEJS, websocket: { host: '127.0.0.1', port: 12345, tls: false } }
|
|
93
93
|
]
|
|
94
94
|
})
|
|
95
95
|
|
|
@@ -112,7 +112,7 @@ describe('ConnectionManager', () => {
|
|
|
112
112
|
transport: mockConnectorTransport2,
|
|
113
113
|
websocketPortRange: { min: 9994, max: 9994 },
|
|
114
114
|
entryPoints: [
|
|
115
|
-
{
|
|
115
|
+
{ nodeId: Uint8Array.from([1, 2, 3]), type: NodeType.NODEJS, websocket: { host: '127.0.0.1', port: 9993, tls: false } }
|
|
116
116
|
]
|
|
117
117
|
})
|
|
118
118
|
|
|
@@ -306,7 +306,7 @@ describe('ConnectionManager', () => {
|
|
|
306
306
|
await connectionManager4.stop()
|
|
307
307
|
})
|
|
308
308
|
|
|
309
|
-
it('Cannot send to own WebsocketServer if
|
|
309
|
+
it('Cannot send to own WebsocketServer if nodeIds do not match', async () => {
|
|
310
310
|
const connectionManager1 = createConnectionManager({
|
|
311
311
|
transport: mockTransport,
|
|
312
312
|
websocketHost: '127.0.0.1',
|
|
@@ -317,7 +317,7 @@ describe('ConnectionManager', () => {
|
|
|
317
317
|
expect(createLocalPeerDescriptor.mock.calls[0][0].host).toEqual('127.0.0.1')
|
|
318
318
|
|
|
319
319
|
const peerDescriptor = connectionManager1.getLocalPeerDescriptor()
|
|
320
|
-
peerDescriptor.
|
|
320
|
+
peerDescriptor.nodeId = new Uint8Array([12, 12, 12, 12])
|
|
321
321
|
const msg: Message = {
|
|
322
322
|
serviceId,
|
|
323
323
|
messageType: MessageType.RPC,
|
|
@@ -335,10 +335,10 @@ describe('ConnectionManager', () => {
|
|
|
335
335
|
await connectionManager1.stop()
|
|
336
336
|
})
|
|
337
337
|
|
|
338
|
-
it('Cannot send to a WebSocketServer if
|
|
338
|
+
it('Cannot send to a WebSocketServer if nodeIds do not match', async () => {
|
|
339
339
|
|
|
340
340
|
const peerDescriptor1 = {
|
|
341
|
-
|
|
341
|
+
nodeId: createRandomNodeId(),
|
|
342
342
|
type: NodeType.NODEJS,
|
|
343
343
|
websocket: {
|
|
344
344
|
host: '127.0.0.1',
|
|
@@ -348,7 +348,7 @@ describe('ConnectionManager', () => {
|
|
|
348
348
|
}
|
|
349
349
|
|
|
350
350
|
const peerDescriptor2 = {
|
|
351
|
-
|
|
351
|
+
nodeId: createRandomNodeId(),
|
|
352
352
|
type: NodeType.NODEJS,
|
|
353
353
|
websocket: {
|
|
354
354
|
host: '127.0.0.1',
|
|
@@ -379,8 +379,8 @@ describe('ConnectionManager', () => {
|
|
|
379
379
|
messageType: MessageType.RPC,
|
|
380
380
|
messageId: '1',
|
|
381
381
|
targetDescriptor: {
|
|
382
|
-
// This is not the correct
|
|
383
|
-
|
|
382
|
+
// This is not the correct nodeId of peerDescriptor2
|
|
383
|
+
nodeId: new Uint8Array([1, 2, 3, 4]),
|
|
384
384
|
type: NodeType.NODEJS,
|
|
385
385
|
websocket: peerDescriptor2.websocket
|
|
386
386
|
},
|
|
@@ -11,7 +11,7 @@ const runTest = async (latencyType: LatencyType) => {
|
|
|
11
11
|
const entryPointId = '0'
|
|
12
12
|
const entryPoint = await createMockConnectionDhtNode(entryPointId, simulator, undefined, NUM_OF_NODES_PER_KBUCKET)
|
|
13
13
|
const entrypointDescriptor = {
|
|
14
|
-
|
|
14
|
+
nodeId: entryPoint.getNodeId().value,
|
|
15
15
|
type: NodeType.NODEJS,
|
|
16
16
|
region: getRandomRegion()
|
|
17
17
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { DhtNode } from '../../src/dht/DhtNode'
|
|
2
2
|
import { LatencyType, Simulator } from '../../src/connection/simulator/Simulator'
|
|
3
|
-
import { createMockConnectionDhtNode } from '../utils/utils'
|
|
3
|
+
import { createMockConnectionDhtNode, createMockPeerDescriptor } from '../utils/utils'
|
|
4
4
|
import { Any } from '../../src/proto/google/protobuf/any'
|
|
5
5
|
import { PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
6
|
-
import {
|
|
6
|
+
import { areEqualPeerDescriptors } from '../../src/helpers/peerIdFromPeerDescriptor'
|
|
7
|
+
import { createRandomNodeId } from '../../src/helpers/nodeId'
|
|
7
8
|
|
|
8
9
|
describe('DhtNodeExternalApi', () => {
|
|
9
10
|
|
|
@@ -28,7 +29,7 @@ describe('DhtNodeExternalApi', () => {
|
|
|
28
29
|
|
|
29
30
|
it('findData happy path', async () => {
|
|
30
31
|
const data = Any.pack(dhtNode1.getLocalPeerDescriptor(), PeerDescriptor)
|
|
31
|
-
const key =
|
|
32
|
+
const key = createRandomNodeId()
|
|
32
33
|
await dhtNode1.storeDataToDht(key, data)
|
|
33
34
|
|
|
34
35
|
const foundData = await remote.findDataViaPeer(key, dhtNode1.getLocalPeerDescriptor())
|
|
@@ -36,17 +37,19 @@ describe('DhtNodeExternalApi', () => {
|
|
|
36
37
|
})
|
|
37
38
|
|
|
38
39
|
it('findData returns empty array if no data found', async () => {
|
|
39
|
-
const foundData = await remote.findDataViaPeer(
|
|
40
|
+
const foundData = await remote.findDataViaPeer(createRandomNodeId(), dhtNode1.getLocalPeerDescriptor())
|
|
40
41
|
expect(foundData).toEqual([])
|
|
41
42
|
})
|
|
42
43
|
|
|
43
44
|
it('external store data happy path', async () => {
|
|
44
|
-
const
|
|
45
|
-
const
|
|
45
|
+
const storedPeerDescriptor = createMockPeerDescriptor()
|
|
46
|
+
const data = Any.pack(storedPeerDescriptor, PeerDescriptor)
|
|
47
|
+
const key = createRandomNodeId()
|
|
46
48
|
|
|
47
49
|
await remote.storeDataViaPeer(key, data, dhtNode1.getLocalPeerDescriptor())
|
|
48
50
|
const foundData = await remote.findDataViaPeer(key, dhtNode1.getLocalPeerDescriptor())
|
|
49
|
-
expect(Any.unpack(foundData[0].data!, PeerDescriptor)).toEqual(
|
|
51
|
+
expect(areEqualPeerDescriptors(Any.unpack(foundData[0].data!, PeerDescriptor), storedPeerDescriptor)).toEqual(true)
|
|
52
|
+
expect(areEqualPeerDescriptors(foundData[0].creator!, remote.getLocalPeerDescriptor())).toEqual(true)
|
|
50
53
|
})
|
|
51
54
|
|
|
52
55
|
})
|
|
@@ -20,11 +20,11 @@ describe('DhtNodeRpcRemote', () => {
|
|
|
20
20
|
let serverRpcCommunicator: RpcCommunicator
|
|
21
21
|
const serviceId = 'test'
|
|
22
22
|
const clientPeerDescriptor: PeerDescriptor = {
|
|
23
|
-
|
|
23
|
+
nodeId: generateId('client'),
|
|
24
24
|
type: NodeType.NODEJS
|
|
25
25
|
}
|
|
26
26
|
const serverPeerDescriptor: PeerDescriptor = {
|
|
27
|
-
|
|
27
|
+
nodeId: generateId('server'),
|
|
28
28
|
type: NodeType.NODEJS
|
|
29
29
|
}
|
|
30
30
|
|
|
@@ -54,7 +54,7 @@ describe('DhtNodeRpcRemote', () => {
|
|
|
54
54
|
})
|
|
55
55
|
|
|
56
56
|
it('getClosestPeers happy path', async () => {
|
|
57
|
-
const neighbors = await rpcRemote.getClosestPeers(clientPeerDescriptor.
|
|
57
|
+
const neighbors = await rpcRemote.getClosestPeers(clientPeerDescriptor.nodeId)
|
|
58
58
|
expect(neighbors.length).toEqual(getMockPeers().length)
|
|
59
59
|
})
|
|
60
60
|
|
|
@@ -66,7 +66,7 @@ describe('DhtNodeRpcRemote', () => {
|
|
|
66
66
|
|
|
67
67
|
it('getClosestPeers error path', async () => {
|
|
68
68
|
serverRpcCommunicator.registerRpcMethod(ClosestPeersRequest, ClosestPeersResponse, 'getClosestPeers', MockDhtRpc.throwGetClosestPeersError)
|
|
69
|
-
await expect(rpcRemote.getClosestPeers(clientPeerDescriptor.
|
|
69
|
+
await expect(rpcRemote.getClosestPeers(clientPeerDescriptor.nodeId))
|
|
70
70
|
.rejects.toThrow('Closest peers error')
|
|
71
71
|
})
|
|
72
72
|
|
|
@@ -13,12 +13,12 @@ describe('DhtRpc', () => {
|
|
|
13
13
|
let client2: ProtoRpcClient<DhtNodeRpcClient>
|
|
14
14
|
|
|
15
15
|
const peerDescriptor1: PeerDescriptor = {
|
|
16
|
-
|
|
16
|
+
nodeId: generateId('peer1'),
|
|
17
17
|
type: NodeType.NODEJS
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
const peerDescriptor2: PeerDescriptor = {
|
|
21
|
-
|
|
21
|
+
nodeId: generateId('peer2'),
|
|
22
22
|
type: NodeType.NODEJS
|
|
23
23
|
}
|
|
24
24
|
|
|
@@ -50,7 +50,7 @@ describe('DhtRpc', () => {
|
|
|
50
50
|
|
|
51
51
|
it('Happy path', async () => {
|
|
52
52
|
const response1 = client1.getClosestPeers(
|
|
53
|
-
{
|
|
53
|
+
{ nodeId: peerDescriptor1.nodeId, requestId: '1' },
|
|
54
54
|
{
|
|
55
55
|
sourceDescriptor: peerDescriptor1,
|
|
56
56
|
targetDescriptor: peerDescriptor2,
|
|
@@ -60,7 +60,7 @@ describe('DhtRpc', () => {
|
|
|
60
60
|
expect(res1.peers).toEqual(getMockPeers())
|
|
61
61
|
|
|
62
62
|
const response2 = client2.getClosestPeers(
|
|
63
|
-
{
|
|
63
|
+
{ nodeId: peerDescriptor2.nodeId, requestId: '1' },
|
|
64
64
|
{
|
|
65
65
|
sourceDescriptor: peerDescriptor2,
|
|
66
66
|
targetDescriptor: peerDescriptor1
|
|
@@ -76,7 +76,7 @@ describe('DhtRpc', () => {
|
|
|
76
76
|
await wait(3000)
|
|
77
77
|
})
|
|
78
78
|
const response2 = client2.getClosestPeers(
|
|
79
|
-
{
|
|
79
|
+
{ nodeId: peerDescriptor2.nodeId, requestId: '1' },
|
|
80
80
|
{
|
|
81
81
|
sourceDescriptor: peerDescriptor2,
|
|
82
82
|
targetDescriptor: peerDescriptor1
|
|
@@ -102,7 +102,7 @@ describe('DhtRpc', () => {
|
|
|
102
102
|
|
|
103
103
|
rpcCommunicator2.registerRpcMethod(ClosestPeersRequest, ClosestPeersResponse, 'getClosestPeers', respondGetClosestPeersWithTimeout)
|
|
104
104
|
const response = client2.getClosestPeers(
|
|
105
|
-
{
|
|
105
|
+
{ nodeId: peerDescriptor2.nodeId, requestId: '1' },
|
|
106
106
|
{
|
|
107
107
|
sourceDescriptor: peerDescriptor2,
|
|
108
108
|
targetDescriptor: peerDescriptor1
|
|
@@ -38,10 +38,10 @@ describe('Find correctness', () => {
|
|
|
38
38
|
})
|
|
39
39
|
|
|
40
40
|
it('Entrypoint can find a node from the network (exact match)', async () => {
|
|
41
|
-
const
|
|
42
|
-
const results = await entryPoint.startFind(
|
|
41
|
+
const nodeIdToFind = nodes[45].getNodeId().value
|
|
42
|
+
const results = await entryPoint.startFind(nodeIdToFind)
|
|
43
43
|
expect(results.closestNodes.length).toBeGreaterThanOrEqual(5)
|
|
44
|
-
expect(PeerID.fromValue(
|
|
44
|
+
expect(PeerID.fromValue(nodeIdToFind).equals(peerIdFromPeerDescriptor(results.closestNodes[0])))
|
|
45
45
|
}, 30000)
|
|
46
46
|
|
|
47
47
|
})
|
|
@@ -13,7 +13,7 @@ describe('Layer1', () => {
|
|
|
13
13
|
const layer0EntryPointId = new UUID().toString()
|
|
14
14
|
|
|
15
15
|
const entryPoint0Descriptor = {
|
|
16
|
-
|
|
16
|
+
nodeId: PeerID.fromString(layer0EntryPointId).value,
|
|
17
17
|
type: NodeType.NODEJS
|
|
18
18
|
}
|
|
19
19
|
|
|
@@ -155,7 +155,7 @@ describe('Layer1', () => {
|
|
|
155
155
|
// layer1CleanUp.push(layer1)
|
|
156
156
|
// receivedMessages.set(layer0.getNodeId().toKey(), new Set())
|
|
157
157
|
// layer1.on('message', (msg: Message) => {
|
|
158
|
-
// const peerId = PeerID.fromValue(msg.sourceDescriptor!.
|
|
158
|
+
// const peerId = PeerID.fromValue(msg.sourceDescriptor!.nodeId)
|
|
159
159
|
// receivedMessages.get(layer0.getNodeId().toKey())!.add(peerId.toKey())
|
|
160
160
|
// })
|
|
161
161
|
// }
|
|
@@ -51,7 +51,7 @@ describe('Layer 1 on Layer 0 with mocked connections', () => {
|
|
|
51
51
|
layer1Node4 = await createMockConnectionLayer1Node(layer0Node4Id, layer0Node4)
|
|
52
52
|
|
|
53
53
|
entryPointDescriptor = {
|
|
54
|
-
|
|
54
|
+
nodeId: layer0EntryPoint.getNodeId().value,
|
|
55
55
|
type: NodeType.NODEJS
|
|
56
56
|
}
|
|
57
57
|
|
|
@@ -16,7 +16,7 @@ const logger = new Logger(module)
|
|
|
16
16
|
|
|
17
17
|
jest.setTimeout(60000)
|
|
18
18
|
|
|
19
|
-
describe('
|
|
19
|
+
describe('Replicate data from node to node in DHT', () => {
|
|
20
20
|
let entryPoint: DhtNode
|
|
21
21
|
let nodes: DhtNode[]
|
|
22
22
|
let entrypointDescriptor: PeerDescriptor
|
|
@@ -47,7 +47,7 @@ describe('Migrating data from node to node in DHT', () => {
|
|
|
47
47
|
nodesById.set(entryPoint.getNodeId().toKey(), entryPoint)
|
|
48
48
|
|
|
49
49
|
entrypointDescriptor = {
|
|
50
|
-
|
|
50
|
+
nodeId: entryPoint.getNodeId().value,
|
|
51
51
|
type: NodeType.NODEJS
|
|
52
52
|
}
|
|
53
53
|
|
|
@@ -74,7 +74,7 @@ describe('Migrating data from node to node in DHT', () => {
|
|
|
74
74
|
simulator.stop()
|
|
75
75
|
})
|
|
76
76
|
|
|
77
|
-
it('Data
|
|
77
|
+
it('Data replicates to the closest node no matter where it is stored', async () => {
|
|
78
78
|
const dataKey = PeerID.fromString('3232323e12r31r3')
|
|
79
79
|
const data = Any.pack(entrypointDescriptor, PeerDescriptor)
|
|
80
80
|
|
|
@@ -106,7 +106,7 @@ describe('Migrating data from node to node in DHT', () => {
|
|
|
106
106
|
logger.info('Nodes sorted according to distance to data with storing nodes marked are: ')
|
|
107
107
|
|
|
108
108
|
closest.forEach((contact) => {
|
|
109
|
-
const node = nodesById.get(PeerID.fromValue(contact.getPeerDescriptor().
|
|
109
|
+
const node = nodesById.get(PeerID.fromValue(contact.getPeerDescriptor().nodeId).toKey())!
|
|
110
110
|
let hasDataMarker = ''
|
|
111
111
|
|
|
112
112
|
// @ts-expect-error private field
|
|
@@ -134,7 +134,7 @@ describe('Migrating data from node to node in DHT', () => {
|
|
|
134
134
|
logger.info('After join of 99 nodes: nodes sorted according to distance to data with storing nodes marked are: ')
|
|
135
135
|
|
|
136
136
|
closest.forEach((contact) => {
|
|
137
|
-
const node = nodesById.get(PeerID.fromValue(contact.getPeerDescriptor().
|
|
137
|
+
const node = nodesById.get(PeerID.fromValue(contact.getPeerDescriptor().nodeId).toKey())!
|
|
138
138
|
let hasDataMarker = ''
|
|
139
139
|
|
|
140
140
|
// @ts-expect-error private field
|
|
@@ -146,13 +146,13 @@ describe('Migrating data from node to node in DHT', () => {
|
|
|
146
146
|
logger.info(getNodeIdFromPeerDescriptor(node.getLocalPeerDescriptor()) + hasDataMarker)
|
|
147
147
|
})
|
|
148
148
|
|
|
149
|
-
const closestNode = nodesById.get(PeerID.fromValue(closest[0].getPeerDescriptor().
|
|
149
|
+
const closestNode = nodesById.get(PeerID.fromValue(closest[0].getPeerDescriptor().nodeId).toKey())!
|
|
150
150
|
|
|
151
151
|
// @ts-expect-error private field
|
|
152
|
-
expect(closestNode.localDataStore.getEntry(dataKey)).
|
|
152
|
+
expect(closestNode.localDataStore.getEntry(dataKey).size).toBeGreaterThanOrEqual(1)
|
|
153
153
|
}, 180000)
|
|
154
154
|
|
|
155
|
-
it('Data
|
|
155
|
+
it('Data replicates to the last remaining node if all other nodes leave gracefully', async () => {
|
|
156
156
|
const dataKey = PeerID.fromString('3232323e12r31r3')
|
|
157
157
|
const data = Any.pack(entrypointDescriptor, PeerDescriptor)
|
|
158
158
|
|
|
@@ -198,7 +198,7 @@ describe('Migrating data from node to node in DHT', () => {
|
|
|
198
198
|
logger.info('data of ' + randomIndices[0] + ' was ' + nodes[randomIndices[0]].localDataStore.getEntry(dataKey))
|
|
199
199
|
|
|
200
200
|
// @ts-expect-error private field
|
|
201
|
-
expect(nodes[randomIndices[0]].localDataStore.getEntry(dataKey)).
|
|
201
|
+
expect(nodes[randomIndices[0]].localDataStore.getEntry(dataKey).size).toBeGreaterThanOrEqual(1)
|
|
202
202
|
|
|
203
203
|
}, 180000)
|
|
204
204
|
})
|
|
@@ -32,7 +32,7 @@ describe('Route Message With Mock Connections', () => {
|
|
|
32
32
|
entryPoint = await createMockConnectionDhtNode(entryPointId, simulator)
|
|
33
33
|
|
|
34
34
|
entryPointDescriptor = {
|
|
35
|
-
|
|
35
|
+
nodeId: entryPoint.getNodeId().value,
|
|
36
36
|
type: NodeType.NODEJS
|
|
37
37
|
}
|
|
38
38
|
|
|
@@ -141,7 +141,7 @@ describe('Route Message With Mock Connections', () => {
|
|
|
141
141
|
numsOfReceivedMessages[node.getNodeId().toKey()] = numsOfReceivedMessages[node.getNodeId().toKey()] + 1
|
|
142
142
|
try {
|
|
143
143
|
const target = receiveMatrix[parseInt(node.getNodeId().toString()) - 1]
|
|
144
|
-
target[parseInt(PeerID.fromValue(msg.sourceDescriptor!.
|
|
144
|
+
target[parseInt(PeerID.fromValue(msg.sourceDescriptor!.nodeId).toString()) - 1]++
|
|
145
145
|
} catch (e) {
|
|
146
146
|
console.error(e)
|
|
147
147
|
}
|
|
@@ -12,11 +12,11 @@ describe('RemoteRouter', () => {
|
|
|
12
12
|
let serverRpcCommunicator: RpcCommunicator
|
|
13
13
|
const serviceId = 'test'
|
|
14
14
|
const clientPeerDescriptor: PeerDescriptor = {
|
|
15
|
-
|
|
15
|
+
nodeId: generateId('client'),
|
|
16
16
|
type: NodeType.NODEJS
|
|
17
17
|
}
|
|
18
18
|
const serverPeerDescriptor: PeerDescriptor = {
|
|
19
|
-
|
|
19
|
+
nodeId: generateId('server'),
|
|
20
20
|
type: NodeType.NODEJS
|
|
21
21
|
}
|
|
22
22
|
|
|
@@ -36,12 +36,12 @@ describe('RPC errors', () => {
|
|
|
36
36
|
let simulator: Simulator
|
|
37
37
|
|
|
38
38
|
const peerDescriptor1: PeerDescriptor = {
|
|
39
|
-
|
|
39
|
+
nodeId: PeerID.fromString('peer1').value,
|
|
40
40
|
type: NodeType.NODEJS,
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
const peerDescriptor2: PeerDescriptor = {
|
|
44
|
-
|
|
44
|
+
nodeId: PeerID.fromString('peer2').value,
|
|
45
45
|
type: NodeType.NODEJS,
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -4,6 +4,7 @@ import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/Dh
|
|
|
4
4
|
import { createMockConnectionDhtNode } from '../utils/utils'
|
|
5
5
|
import { areEqualPeerDescriptors, getNodeIdFromPeerDescriptor } from '../../src/helpers/peerIdFromPeerDescriptor'
|
|
6
6
|
import { Logger } from '@streamr/utils'
|
|
7
|
+
import { getRandomRegion } from '../../src/connection/simulator/pings'
|
|
7
8
|
|
|
8
9
|
const logger = new Logger(module)
|
|
9
10
|
|
|
@@ -24,8 +25,9 @@ describe('Scaling down a Dht network', () => {
|
|
|
24
25
|
nodes.push(entryPoint)
|
|
25
26
|
|
|
26
27
|
entrypointDescriptor = {
|
|
27
|
-
|
|
28
|
-
type: NodeType.NODEJS
|
|
28
|
+
nodeId: entryPoint.getNodeId().value,
|
|
29
|
+
type: NodeType.NODEJS,
|
|
30
|
+
region: getRandomRegion()
|
|
29
31
|
}
|
|
30
32
|
|
|
31
33
|
for (let i = 1; i < NUM_NODES; i++) {
|
|
@@ -24,12 +24,12 @@ describe('SimultaneousConnections', () => {
|
|
|
24
24
|
let simulatorTransport2: SimulatorTransport
|
|
25
25
|
|
|
26
26
|
const peerDescriptor1 = {
|
|
27
|
-
|
|
27
|
+
nodeId: PeerID.fromString('mock1').value,
|
|
28
28
|
type: NodeType.NODEJS
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const peerDescriptor2 = {
|
|
32
|
-
|
|
32
|
+
nodeId: PeerID.fromString('mock2').value,
|
|
33
33
|
type: NodeType.NODEJS
|
|
34
34
|
}
|
|
35
35
|
|
|
@@ -94,7 +94,7 @@ describe('SimultaneousConnections', () => {
|
|
|
94
94
|
let connectionManager2: ConnectionManager
|
|
95
95
|
|
|
96
96
|
const wsPeer1: PeerDescriptor = {
|
|
97
|
-
|
|
97
|
+
nodeId: PeerID.fromString('mock1').value,
|
|
98
98
|
type: NodeType.NODEJS,
|
|
99
99
|
websocket: {
|
|
100
100
|
host: '127.0.0.1',
|
|
@@ -104,7 +104,7 @@ describe('SimultaneousConnections', () => {
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
const wsPeer2: PeerDescriptor = {
|
|
107
|
-
|
|
107
|
+
nodeId: PeerID.fromString('mock2').value,
|
|
108
108
|
type: NodeType.NODEJS,
|
|
109
109
|
websocket: {
|
|
110
110
|
host: '127.0.0.1',
|
|
@@ -177,7 +177,7 @@ describe('SimultaneousConnections', () => {
|
|
|
177
177
|
let connectionManager2: ConnectionManager
|
|
178
178
|
|
|
179
179
|
const wsPeer1: PeerDescriptor = {
|
|
180
|
-
|
|
180
|
+
nodeId: PeerID.fromString('mock1').value,
|
|
181
181
|
type: NodeType.NODEJS,
|
|
182
182
|
websocket: {
|
|
183
183
|
host: '127.0.0.1',
|
|
@@ -187,7 +187,7 @@ describe('SimultaneousConnections', () => {
|
|
|
187
187
|
}
|
|
188
188
|
|
|
189
189
|
const wsPeer2: PeerDescriptor = {
|
|
190
|
-
|
|
190
|
+
nodeId: PeerID.fromString('mock2').value,
|
|
191
191
|
type: NodeType.NODEJS
|
|
192
192
|
}
|
|
193
193
|
|
|
@@ -251,12 +251,12 @@ describe('SimultaneousConnections', () => {
|
|
|
251
251
|
let connectionManager2: ConnectionManager
|
|
252
252
|
|
|
253
253
|
const wrtcPeer1: PeerDescriptor = {
|
|
254
|
-
|
|
254
|
+
nodeId: PeerID.fromString('mock1').value,
|
|
255
255
|
type: NodeType.NODEJS
|
|
256
256
|
}
|
|
257
257
|
|
|
258
258
|
const wrtcPeer2: PeerDescriptor = {
|
|
259
|
-
|
|
259
|
+
nodeId: PeerID.fromString('mock2').value,
|
|
260
260
|
type: NodeType.NODEJS
|
|
261
261
|
}
|
|
262
262
|
|
|
@@ -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,24 +46,44 @@ describe('Storing data in DHT', () => {
|
|
|
46
46
|
|
|
47
47
|
it('Storing data works', async () => {
|
|
48
48
|
const storingNodeIndex = 34
|
|
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 nodes[storingNodeIndex].storeDataToDht(dataKey, data)
|
|
52
53
|
expect(successfulStorers.length).toBeGreaterThan(4)
|
|
53
|
-
},
|
|
54
|
+
}, 30000)
|
|
54
55
|
|
|
55
56
|
it('Storing and getting data works', async () => {
|
|
56
57
|
const storingNode = getRandomNode()
|
|
57
|
-
const dataKey =
|
|
58
|
-
const
|
|
59
|
-
const
|
|
58
|
+
const dataKey = createRandomNodeId()
|
|
59
|
+
const storedData = createMockPeerDescriptor()
|
|
60
|
+
const data = Any.pack(storedData, PeerDescriptor)
|
|
61
|
+
const successfulStorers = await storingNode.storeDataToDht(dataKey, data)
|
|
60
62
|
expect(successfulStorers.length).toBeGreaterThan(4)
|
|
61
63
|
|
|
62
64
|
const fetchingNode = getRandomNode()
|
|
63
|
-
const results = await fetchingNode.getDataFromDht(dataKey
|
|
65
|
+
const results = await fetchingNode.getDataFromDht(dataKey)
|
|
64
66
|
results.forEach((entry) => {
|
|
65
|
-
const
|
|
66
|
-
expect(areEqualPeerDescriptors(
|
|
67
|
+
const foundData = Any.unpack(entry.data!, PeerDescriptor)
|
|
68
|
+
expect(areEqualPeerDescriptors(foundData, storedData)).toBeTrue()
|
|
67
69
|
})
|
|
68
|
-
},
|
|
70
|
+
}, 30000)
|
|
71
|
+
|
|
72
|
+
it('storing with explicit creator', async () => {
|
|
73
|
+
const storingNode = getRandomNode()
|
|
74
|
+
const dataKey = createRandomNodeId()
|
|
75
|
+
const storedData = createMockPeerDescriptor()
|
|
76
|
+
const data = Any.pack(storedData, PeerDescriptor)
|
|
77
|
+
const requestor = createMockPeerDescriptor()
|
|
78
|
+
const successfulStorers = await storingNode.storeDataToDht(dataKey, data, requestor)
|
|
79
|
+
expect(successfulStorers.length).toBeGreaterThan(4)
|
|
80
|
+
|
|
81
|
+
const fetchingNode = getRandomNode()
|
|
82
|
+
const results = await fetchingNode.getDataFromDht(dataKey)
|
|
83
|
+
results.forEach((entry) => {
|
|
84
|
+
const foundData = Any.unpack(entry.data!, PeerDescriptor)
|
|
85
|
+
expect(areEqualPeerDescriptors(foundData, storedData)).toBeTrue()
|
|
86
|
+
expect(areEqualPeerDescriptors(entry.creator!, requestor)).toBeTrue()
|
|
87
|
+
})
|
|
88
|
+
}, 30000)
|
|
69
89
|
})
|