@streamr/dht 0.0.1-tatum.6 → 0.0.1-tatum.8
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.d.ts +1 -1
- package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
- package/dist/src/connection/ConnectionLockRpcRemote.d.ts +10 -0
- package/dist/src/connection/{RemoteConnectionLocker.js → ConnectionLockRpcRemote.js} +21 -35
- package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -0
- package/dist/src/connection/ConnectionManager.d.ts +17 -41
- package/dist/src/connection/ConnectionManager.js +148 -212
- package/dist/src/connection/ConnectionManager.js.map +1 -1
- package/dist/src/connection/ConnectivityChecker.js +16 -13
- package/dist/src/connection/ConnectivityChecker.js.map +1 -1
- package/dist/src/connection/ConnectorFacade.d.ts +49 -0
- package/dist/src/connection/ConnectorFacade.js +83 -0
- package/dist/src/connection/ConnectorFacade.js.map +1 -0
- package/dist/src/connection/Handshaker.d.ts +1 -2
- package/dist/src/connection/Handshaker.js +1 -4
- package/dist/src/connection/Handshaker.js.map +1 -1
- package/dist/src/connection/ManagedConnection.d.ts +2 -6
- package/dist/src/connection/ManagedConnection.js +27 -36
- package/dist/src/connection/ManagedConnection.js.map +1 -1
- package/dist/src/connection/ManagedWebRtcConnection.d.ts +1 -1
- package/dist/src/connection/ManagedWebRtcConnection.js +2 -2
- package/dist/src/connection/ManagedWebRtcConnection.js.map +1 -1
- package/dist/src/connection/Simulator/Simulator.d.ts +0 -2
- package/dist/src/connection/Simulator/Simulator.js +0 -5
- package/dist/src/connection/Simulator/Simulator.js.map +1 -1
- package/dist/src/connection/Simulator/SimulatorConnection.js +16 -13
- package/dist/src/connection/Simulator/SimulatorConnection.js.map +1 -1
- package/dist/src/connection/Simulator/SimulatorConnector.d.ts +2 -3
- package/dist/src/connection/Simulator/SimulatorConnector.js +12 -14
- package/dist/src/connection/Simulator/SimulatorConnector.js.map +1 -1
- package/dist/src/connection/Simulator/SimulatorTransport.js +6 -1
- package/dist/src/connection/Simulator/SimulatorTransport.js.map +1 -1
- package/dist/src/connection/WebRTC/NodeWebRtcConnection.d.ts +3 -1
- package/dist/src/connection/WebRTC/NodeWebRtcConnection.js +12 -12
- package/dist/src/connection/WebRTC/NodeWebRtcConnection.js.map +1 -1
- package/dist/src/connection/WebRTC/{WebRtcConnector.d.ts → WebRtcConnectorRpcLocal.d.ts} +13 -13
- package/dist/src/connection/WebRTC/{WebRtcConnector.js → WebRtcConnectorRpcLocal.js} +46 -38
- package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.js.map +1 -0
- package/dist/src/connection/WebRTC/WebRtcConnectorRpcRemote.d.ts +11 -0
- package/dist/src/connection/WebRTC/WebRtcConnectorRpcRemote.js +55 -0
- package/dist/src/connection/WebRTC/WebRtcConnectorRpcRemote.js.map +1 -0
- package/dist/src/connection/WebRTC/iceServerAsString.d.ts +1 -1
- package/dist/src/connection/WebSocket/{WebSocketConnector.d.ts → WebSocketConnectorRpcLocal.d.ts} +21 -11
- package/dist/src/connection/WebSocket/{WebSocketConnector.js → WebSocketConnectorRpcLocal.js} +80 -59
- package/dist/src/connection/WebSocket/WebSocketConnectorRpcLocal.js.map +1 -0
- package/dist/src/connection/WebSocket/WebSocketConnectorRpcRemote.d.ts +8 -0
- package/dist/src/connection/WebSocket/{RemoteWebSocketConnector.js → WebSocketConnectorRpcRemote.js} +12 -16
- package/dist/src/connection/WebSocket/WebSocketConnectorRpcRemote.js.map +1 -0
- package/dist/src/connection/WebSocket/WebSocketServer.d.ts +11 -1
- package/dist/src/connection/WebSocket/WebSocketServer.js +15 -10
- package/dist/src/connection/WebSocket/WebSocketServer.js.map +1 -1
- package/dist/src/dht/DhtNode.d.ts +18 -55
- package/dist/src/dht/DhtNode.js +122 -145
- package/dist/src/dht/DhtNode.js.map +1 -1
- package/dist/src/dht/{RemoteExternalApi.d.ts → ExternalApiRpcRemote.d.ts} +2 -2
- package/dist/src/dht/{RemoteExternalApi.js → ExternalApiRpcRemote.js} +5 -6
- package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -0
- package/dist/src/dht/{DhtPeer.d.ts → RemoteDhtNode.d.ts} +2 -3
- package/dist/src/dht/{DhtPeer.js → RemoteDhtNode.js} +21 -19
- package/dist/src/dht/RemoteDhtNode.js.map +1 -0
- package/dist/src/dht/contact/ContactList.d.ts +0 -1
- package/dist/src/dht/contact/ContactList.js +0 -3
- package/dist/src/dht/contact/ContactList.js.map +1 -1
- package/dist/src/dht/contact/RandomContactList.d.ts +0 -1
- package/dist/src/dht/contact/RandomContactList.js +0 -3
- package/dist/src/dht/contact/RandomContactList.js.map +1 -1
- package/dist/src/dht/contact/SortedContactList.d.ts +0 -3
- package/dist/src/dht/contact/SortedContactList.js +0 -9
- package/dist/src/dht/contact/SortedContactList.js.map +1 -1
- package/dist/src/dht/discovery/DiscoverySession.d.ts +5 -7
- package/dist/src/dht/discovery/DiscoverySession.js +9 -10
- package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
- package/dist/src/dht/discovery/PeerDiscovery.d.ts +12 -11
- package/dist/src/dht/discovery/PeerDiscovery.js +33 -37
- package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
- package/dist/src/dht/find/RecursiveFindSession.d.ts +9 -10
- package/dist/src/dht/find/RecursiveFindSession.js +13 -13
- package/dist/src/dht/find/RecursiveFindSession.js.map +1 -1
- package/dist/src/dht/find/RecursiveFinder.d.ts +9 -11
- package/dist/src/dht/find/RecursiveFinder.js +35 -36
- package/dist/src/dht/find/RecursiveFinder.js.map +1 -1
- package/dist/src/dht/find/RemoteRecursiveFindSession.d.ts +1 -1
- package/dist/src/dht/find/RemoteRecursiveFindSession.js +4 -4
- package/dist/src/dht/find/RemoteRecursiveFindSession.js.map +1 -1
- package/dist/src/dht/registerExternalApiRpcMethods.d.ts +1 -1
- package/dist/src/dht/registerExternalApiRpcMethods.js +4 -3
- package/dist/src/dht/registerExternalApiRpcMethods.js.map +1 -1
- package/dist/src/dht/routing/DuplicateDetector.d.ts +1 -2
- package/dist/src/dht/routing/DuplicateDetector.js +2 -7
- package/dist/src/dht/routing/DuplicateDetector.js.map +1 -1
- package/dist/src/dht/routing/Router.d.ts +12 -15
- package/dist/src/dht/routing/Router.js +30 -33
- package/dist/src/dht/routing/Router.js.map +1 -1
- package/dist/src/dht/routing/{RemoteRouter.d.ts → RouterRpcRemote.d.ts} +2 -2
- package/dist/src/dht/routing/{RemoteRouter.js → RouterRpcRemote.js} +5 -5
- package/dist/src/dht/routing/RouterRpcRemote.js.map +1 -0
- package/dist/src/dht/routing/RoutingSession.d.ts +3 -4
- package/dist/src/dht/routing/RoutingSession.js +6 -5
- package/dist/src/dht/routing/RoutingSession.js.map +1 -1
- package/dist/src/dht/store/{DataStore.d.ts → StoreRpcLocal.d.ts} +6 -6
- package/dist/src/dht/store/{DataStore.js → StoreRpcLocal.js} +34 -34
- package/dist/src/dht/store/StoreRpcLocal.js.map +1 -0
- package/dist/src/dht/store/{RemoteStore.d.ts → StoreRpcRemote.d.ts} +2 -2
- package/dist/src/dht/store/{RemoteStore.js → StoreRpcRemote.js} +4 -4
- package/dist/src/dht/store/StoreRpcRemote.js.map +1 -0
- package/dist/src/exports.d.ts +2 -8
- package/dist/src/exports.js +2 -14
- package/dist/src/exports.js.map +1 -1
- package/dist/src/helpers/PeerID.d.ts +0 -1
- package/dist/src/helpers/PeerID.js +0 -6
- package/dist/src/helpers/PeerID.js.map +1 -1
- package/dist/src/helpers/browser/isBrowserEnvironment.d.ts +1 -0
- package/dist/src/helpers/browser/isBrowserEnvironment.js +6 -0
- package/dist/src/helpers/browser/isBrowserEnvironment.js.map +1 -0
- package/dist/src/helpers/browser/isBrowserEnvironment_override.d.ts +1 -0
- package/dist/src/helpers/browser/isBrowserEnvironment_override.js +7 -0
- package/dist/src/helpers/browser/isBrowserEnvironment_override.js.map +1 -0
- package/dist/src/helpers/kademliaId.d.ts +1 -0
- package/dist/src/helpers/kademliaId.js +14 -0
- package/dist/src/helpers/kademliaId.js.map +1 -0
- package/dist/src/helpers/peerIdFromPeerDescriptor.d.ts +1 -1
- package/dist/src/helpers/peerIdFromPeerDescriptor.js +3 -3
- package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
- package/dist/src/helpers/protoClasses.js +2 -2
- package/dist/src/helpers/protoClasses.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +29 -29
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +39 -39
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +49 -162
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +47 -88
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +15 -15
- package/dist/src/transport/RoutingRpcCommunicator.js +1 -0
- package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
- package/package.json +10 -9
- package/protos/DhtRpc.proto +30 -60
- package/src/connection/ConnectionLockHandler.ts +1 -1
- package/src/connection/ConnectionLockRpcRemote.ts +62 -0
- package/src/connection/ConnectionManager.ts +178 -274
- package/src/connection/ConnectivityChecker.ts +15 -12
- package/src/connection/ConnectorFacade.ts +140 -0
- package/src/connection/Handshaker.ts +0 -5
- package/src/connection/ManagedConnection.ts +26 -40
- package/src/connection/ManagedWebRtcConnection.ts +0 -2
- package/src/connection/Simulator/Simulator.ts +0 -7
- package/src/connection/Simulator/SimulatorConnection.ts +16 -13
- package/src/connection/Simulator/SimulatorConnector.ts +13 -19
- package/src/connection/Simulator/SimulatorTransport.ts +6 -1
- package/src/connection/WebRTC/NodeWebRtcConnection.ts +15 -14
- package/src/connection/WebRTC/{WebRtcConnector.ts → WebRtcConnectorRpcLocal.ts} +68 -56
- package/src/connection/WebRTC/WebRtcConnectorRpcRemote.ts +71 -0
- package/src/connection/WebRTC/iceServerAsString.ts +1 -1
- package/src/connection/WebSocket/{WebSocketConnector.ts → WebSocketConnectorRpcLocal.ts} +102 -79
- package/src/connection/WebSocket/WebSocketConnectorRpcRemote.ts +45 -0
- package/src/connection/WebSocket/WebSocketServer.ts +26 -8
- package/src/dht/DhtNode.ts +176 -203
- package/src/dht/{RemoteExternalApi.ts → ExternalApiRpcRemote.ts} +3 -4
- package/src/dht/{DhtPeer.ts → RemoteDhtNode.ts} +11 -9
- package/src/dht/contact/ContactList.ts +0 -4
- package/src/dht/contact/RandomContactList.ts +0 -4
- package/src/dht/contact/SortedContactList.ts +0 -12
- package/src/dht/discovery/DiscoverySession.ts +20 -23
- package/src/dht/discovery/PeerDiscovery.ts +47 -45
- package/src/dht/find/RecursiveFindSession.ts +21 -22
- package/src/dht/find/RecursiveFinder.ts +45 -49
- package/src/dht/find/RemoteRecursiveFindSession.ts +6 -6
- package/src/dht/registerExternalApiRpcMethods.ts +8 -5
- package/src/dht/routing/DuplicateDetector.ts +3 -10
- package/src/dht/routing/Router.ts +39 -45
- package/src/dht/routing/{RemoteRouter.ts → RouterRpcRemote.ts} +4 -4
- package/src/dht/routing/RoutingSession.ts +15 -15
- package/src/dht/store/{DataStore.ts → StoreRpcLocal.ts} +42 -42
- package/src/dht/store/{RemoteStore.ts → StoreRpcRemote.ts} +2 -2
- package/src/exports.ts +2 -8
- package/src/helpers/PeerID.ts +0 -7
- package/src/helpers/browser/isBrowserEnvironment.ts +1 -0
- package/src/helpers/browser/isBrowserEnvironment_override.ts +3 -0
- package/src/helpers/kademliaId.ts +8 -0
- package/src/helpers/peerIdFromPeerDescriptor.ts +1 -1
- package/src/helpers/protoClasses.ts +4 -4
- package/src/proto/packages/dht/protos/DhtRpc.client.ts +54 -54
- package/src/proto/packages/dht/protos/DhtRpc.server.ts +15 -15
- package/src/proto/packages/dht/protos/DhtRpc.ts +77 -216
- package/src/transport/RoutingRpcCommunicator.ts +1 -0
- package/test/benchmark/KademliaCorrectness.test.ts +4 -2
- package/test/benchmark/RecursiveFind.test.ts +6 -6
- package/test/end-to-end/Layer0-Layer1.test.ts +9 -9
- package/test/end-to-end/Layer0WebRTC-Layer1.test.ts +5 -5
- package/test/end-to-end/Layer0WebRTC.test.ts +5 -6
- package/test/end-to-end/Layer1-Scale-WebRTC.test.ts +13 -8
- package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +15 -10
- package/test/end-to-end/WebSocketConnectionRequest.test.ts +5 -5
- package/test/integration/ConnectionLocking.test.ts +32 -26
- package/test/integration/ConnectionManager.test.ts +90 -93
- package/test/integration/DhtJoinPeerDiscovery.test.ts +53 -0
- package/test/integration/DhtRpc.test.ts +4 -6
- package/test/integration/Layer1-scale.test.ts +8 -8
- package/test/integration/MigrateData.test.ts +9 -9
- package/test/integration/Mock-Layer1-Layer0.test.ts +1 -2
- package/test/integration/RecursiveFind.test.ts +5 -5
- package/test/integration/{DhtPeer.test.ts → RemoteDhtNode.test.ts} +11 -12
- package/test/integration/RouteMessage.test.ts +7 -9
- package/test/integration/{RemoteRouter.test.ts → RouterRpcRemote.test.ts} +13 -14
- package/test/integration/RpcErrors.test.ts +25 -10
- package/test/integration/ScaleDownDht.test.ts +8 -8
- package/test/integration/SimultaneousConnections.test.ts +35 -36
- package/test/integration/Store.test.ts +8 -9
- package/test/integration/StoreAndDelete.test.ts +11 -11
- package/test/integration/StoreOnDhtWithTwoNodes.test.ts +7 -7
- package/test/integration/{RemoteStore.test.ts → StoreRpcRemote.test.ts} +17 -18
- package/test/integration/WebRtcConnectionManagement.test.ts +26 -19
- package/test/integration/WebRtcConnectorRpc.test.ts +17 -32
- package/test/integration/WebSocket.test.ts +4 -2
- package/test/integration/WebSocketConnectionManagement.test.ts +30 -17
- package/test/integration/WebSocketConnectorRpc.test.ts +10 -15
- package/test/unit/DuplicateDetector.test.ts +3 -4
- package/test/unit/LocalDataStore.test.ts +6 -8
- package/test/unit/RandomContactList.test.ts +1 -1
- package/test/unit/RecursiveFinder.test.ts +13 -18
- package/test/unit/Router.test.ts +18 -21
- package/test/unit/WebSocketConnectorRpcLocal.test.ts +64 -0
- package/test/unit/WebSocketServer.test.ts +24 -12
- package/test/unit/{webrtcReplaceInternalIpWithExternalIp.ts → webrtcReplaceInternalIpWithExternalIp.test.ts} +1 -1
- package/test/utils/mock/RecursiveFinder.ts +2 -2
- package/test/utils/mock/Router.ts +9 -11
- package/test/utils/mock/Transport.ts +2 -2
- package/test/utils/utils.ts +55 -74
- package/dist/src/connection/RemoteConnectionLocker.d.ts +0 -13
- package/dist/src/connection/RemoteConnectionLocker.js.map +0 -1
- package/dist/src/connection/WebRTC/RemoteWebrtcConnector.d.ts +0 -12
- package/dist/src/connection/WebRTC/RemoteWebrtcConnector.js +0 -74
- package/dist/src/connection/WebRTC/RemoteWebrtcConnector.js.map +0 -1
- package/dist/src/connection/WebRTC/WebRtcConnector.js.map +0 -1
- package/dist/src/connection/WebSocket/RemoteWebSocketConnector.d.ts +0 -9
- package/dist/src/connection/WebSocket/RemoteWebSocketConnector.js.map +0 -1
- package/dist/src/connection/WebSocket/WebSocketConnector.js.map +0 -1
- package/dist/src/dht/DhtPeer.js.map +0 -1
- package/dist/src/dht/RemoteExternalApi.js.map +0 -1
- package/dist/src/dht/routing/RemoteRouter.js.map +0 -1
- package/dist/src/dht/store/DataStore.js.map +0 -1
- package/dist/src/dht/store/RemoteStore.js.map +0 -1
- package/dist/src/helpers/browser/isBrowser.d.ts +0 -1
- package/dist/src/helpers/browser/isBrowser.js +0 -6
- package/dist/src/helpers/browser/isBrowser.js.map +0 -1
- package/dist/src/helpers/browser/isNodeJS.d.ts +0 -1
- package/dist/src/helpers/browser/isNodeJS.js +0 -6
- package/dist/src/helpers/browser/isNodeJS.js.map +0 -1
- package/src/connection/RemoteConnectionLocker.ts +0 -84
- package/src/connection/WebRTC/RemoteWebrtcConnector.ts +0 -93
- package/src/connection/WebSocket/RemoteWebSocketConnector.ts +0 -49
- package/src/helpers/browser/isBrowser.ts +0 -1
- package/src/helpers/browser/isNodeJS.ts +0 -1
- package/test/integration/DhtWithMockConnectionLatencies.test.ts +0 -46
- package/test/integration/DhtWithMockConnections.test.ts +0 -46
- package/test/integration/DhtWithRealConnectionLatencies.test.ts +0 -47
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RemoteDhtNode } from '../../src/dht/RemoteDhtNode'
|
|
2
2
|
import { RpcCommunicator, toProtoRpcClient } from '@streamr/proto-rpc'
|
|
3
3
|
import { getMockPeers, MockDhtRpc } from '../utils/utils'
|
|
4
4
|
import {
|
|
@@ -12,16 +12,15 @@ import {
|
|
|
12
12
|
import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
|
|
13
13
|
import { DhtRpcServiceClient } from '../../src/proto/packages/dht/protos/DhtRpc.client'
|
|
14
14
|
import { generateId } from '../utils/utils'
|
|
15
|
-
import { DhtCallContext } from '../../src/rpc-protocol/DhtCallContext'
|
|
16
15
|
|
|
17
|
-
describe('
|
|
16
|
+
describe('RemoteDhtNode', () => {
|
|
18
17
|
|
|
19
|
-
let
|
|
18
|
+
let remoteDhtNode: RemoteDhtNode
|
|
20
19
|
let clientRpcCommunicator: RpcCommunicator
|
|
21
20
|
let serverRpcCommunicator: RpcCommunicator
|
|
22
21
|
const serviceId = 'test'
|
|
23
22
|
const clientPeerDescriptor: PeerDescriptor = {
|
|
24
|
-
kademliaId: generateId('
|
|
23
|
+
kademliaId: generateId('client'),
|
|
25
24
|
type: NodeType.NODEJS
|
|
26
25
|
}
|
|
27
26
|
const serverPeerDescriptor: PeerDescriptor = {
|
|
@@ -34,14 +33,14 @@ describe('DhtPeer', () => {
|
|
|
34
33
|
serverRpcCommunicator = new RpcCommunicator()
|
|
35
34
|
serverRpcCommunicator.registerRpcMethod(ClosestPeersRequest, ClosestPeersResponse, 'getClosestPeers', MockDhtRpc.getClosestPeers)
|
|
36
35
|
serverRpcCommunicator.registerRpcMethod(PingRequest, PingResponse, 'ping', MockDhtRpc.ping)
|
|
37
|
-
clientRpcCommunicator.on('outgoingMessage', (message: RpcMessage
|
|
36
|
+
clientRpcCommunicator.on('outgoingMessage', (message: RpcMessage) => {
|
|
38
37
|
serverRpcCommunicator.handleIncomingMessage(message)
|
|
39
38
|
})
|
|
40
|
-
serverRpcCommunicator.on('outgoingMessage', (message: RpcMessage
|
|
39
|
+
serverRpcCommunicator.on('outgoingMessage', (message: RpcMessage) => {
|
|
41
40
|
clientRpcCommunicator.handleIncomingMessage(message)
|
|
42
41
|
})
|
|
43
42
|
const client = toProtoRpcClient(new DhtRpcServiceClient(clientRpcCommunicator.getRpcClientTransport()))
|
|
44
|
-
|
|
43
|
+
remoteDhtNode = new RemoteDhtNode(clientPeerDescriptor, serverPeerDescriptor, client, serviceId)
|
|
45
44
|
})
|
|
46
45
|
|
|
47
46
|
afterEach(() => {
|
|
@@ -50,24 +49,24 @@ describe('DhtPeer', () => {
|
|
|
50
49
|
})
|
|
51
50
|
|
|
52
51
|
it('Ping happy path', async () => {
|
|
53
|
-
const active = await
|
|
52
|
+
const active = await remoteDhtNode.ping()
|
|
54
53
|
expect(active).toEqual(true)
|
|
55
54
|
})
|
|
56
55
|
|
|
57
56
|
it('getClosestPeers happy path', async () => {
|
|
58
|
-
const neighbors = await
|
|
57
|
+
const neighbors = await remoteDhtNode.getClosestPeers(clientPeerDescriptor.kademliaId)
|
|
59
58
|
expect(neighbors.length).toEqual(getMockPeers().length)
|
|
60
59
|
})
|
|
61
60
|
|
|
62
61
|
it('ping error path', async () => {
|
|
63
62
|
serverRpcCommunicator.registerRpcMethod(PingRequest, PingResponse, 'ping', MockDhtRpc.throwPingError)
|
|
64
|
-
const active = await
|
|
63
|
+
const active = await remoteDhtNode.ping()
|
|
65
64
|
expect(active).toEqual(false)
|
|
66
65
|
})
|
|
67
66
|
|
|
68
67
|
it('getClosestPeers error path', async () => {
|
|
69
68
|
serverRpcCommunicator.registerRpcMethod(ClosestPeersRequest, ClosestPeersResponse, 'getClosestPeers', MockDhtRpc.throwGetClosestPeersError)
|
|
70
|
-
await expect(
|
|
69
|
+
await expect(remoteDhtNode.getClosestPeers(clientPeerDescriptor.kademliaId))
|
|
71
70
|
.rejects.toThrow('Closest peers error')
|
|
72
71
|
})
|
|
73
72
|
|
|
@@ -6,7 +6,6 @@ import { createMockConnectionDhtNode, createWrappedClosestPeersRequest } from '.
|
|
|
6
6
|
import { PeerID } from '../../src/helpers/PeerID'
|
|
7
7
|
import { Simulator } from '../../src/connection/Simulator/Simulator'
|
|
8
8
|
import { v4 } from 'uuid'
|
|
9
|
-
import { UUID } from '../../src/helpers/UUID'
|
|
10
9
|
import { Any } from '../../src/proto/google/protobuf/any'
|
|
11
10
|
import { RoutingMode } from '../../src/dht/routing/RoutingSession'
|
|
12
11
|
|
|
@@ -34,7 +33,6 @@ describe('Route Message With Mock Connections', () => {
|
|
|
34
33
|
|
|
35
34
|
entryPointDescriptor = {
|
|
36
35
|
kademliaId: entryPoint.getNodeId().value,
|
|
37
|
-
nodeName: 'entrypoint',
|
|
38
36
|
type: NodeType.NODEJS
|
|
39
37
|
}
|
|
40
38
|
|
|
@@ -67,7 +65,7 @@ describe('Route Message With Mock Connections', () => {
|
|
|
67
65
|
}, 10000)
|
|
68
66
|
|
|
69
67
|
it('Happy path', async () => {
|
|
70
|
-
const rpcWrapper = createWrappedClosestPeersRequest(sourceNode.getPeerDescriptor()
|
|
68
|
+
const rpcWrapper = createWrappedClosestPeersRequest(sourceNode.getPeerDescriptor())
|
|
71
69
|
const message: Message = {
|
|
72
70
|
serviceId: 'unknown',
|
|
73
71
|
messageId: v4(),
|
|
@@ -96,10 +94,10 @@ describe('Route Message With Mock Connections', () => {
|
|
|
96
94
|
it('Receives multiple messages', async () => {
|
|
97
95
|
const numOfMessages = 20
|
|
98
96
|
let receivedMessages = 0
|
|
99
|
-
destinationNode.on('message', (
|
|
97
|
+
destinationNode.on('message', () => {
|
|
100
98
|
receivedMessages += 1
|
|
101
99
|
})
|
|
102
|
-
const rpcWrapper = createWrappedClosestPeersRequest(sourceNode.getPeerDescriptor()
|
|
100
|
+
const rpcWrapper = createWrappedClosestPeersRequest(sourceNode.getPeerDescriptor())
|
|
103
101
|
|
|
104
102
|
for (let i = 0; i < numOfMessages; i++) {
|
|
105
103
|
const message: Message = {
|
|
@@ -137,7 +135,7 @@ describe('Route Message With Mock Connections', () => {
|
|
|
137
135
|
}
|
|
138
136
|
|
|
139
137
|
const numsOfReceivedMessages: Record<string, number> = {}
|
|
140
|
-
routerNodes.
|
|
138
|
+
routerNodes.forEach((node) => {
|
|
141
139
|
numsOfReceivedMessages[node.getNodeId().toKey()] = 0
|
|
142
140
|
node.on('message', (msg: Message) => {
|
|
143
141
|
numsOfReceivedMessages[node.getNodeId().toKey()] = numsOfReceivedMessages[node.getNodeId().toKey()] + 1
|
|
@@ -157,7 +155,7 @@ describe('Route Message With Mock Connections', () => {
|
|
|
157
155
|
routerNodes.map(async (node) =>
|
|
158
156
|
Promise.all(routerNodes.map(async (receiver) => {
|
|
159
157
|
if (!node.getNodeId().equals(receiver.getNodeId())) {
|
|
160
|
-
const rpcWrapper = createWrappedClosestPeersRequest(sourceNode.getPeerDescriptor()
|
|
158
|
+
const rpcWrapper = createWrappedClosestPeersRequest(sourceNode.getPeerDescriptor())
|
|
161
159
|
const message: Message = {
|
|
162
160
|
serviceId: 'nonexisting_service',
|
|
163
161
|
messageId: v4(),
|
|
@@ -192,7 +190,7 @@ describe('Route Message With Mock Connections', () => {
|
|
|
192
190
|
}, 90000)
|
|
193
191
|
|
|
194
192
|
it('Destination receives forwarded message', async () => {
|
|
195
|
-
const closestPeersRequest = createWrappedClosestPeersRequest(sourceNode.getPeerDescriptor()
|
|
193
|
+
const closestPeersRequest = createWrappedClosestPeersRequest(sourceNode.getPeerDescriptor())
|
|
196
194
|
const closestPeersRequestMessage: Message = {
|
|
197
195
|
serviceId: 'unknown',
|
|
198
196
|
messageId: v4(),
|
|
@@ -208,7 +206,7 @@ describe('Route Message With Mock Connections', () => {
|
|
|
208
206
|
const routeMessageWrapper: RouteMessageWrapper = {
|
|
209
207
|
message: closestPeersRequestMessage,
|
|
210
208
|
destinationPeer: destinationNode.getPeerDescriptor(),
|
|
211
|
-
requestId:
|
|
209
|
+
requestId: v4(),
|
|
212
210
|
sourcePeer: sourceNode.getPeerDescriptor(),
|
|
213
211
|
reachableThrough: [entryPointDescriptor],
|
|
214
212
|
routingPath: []
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import { RpcCommunicator, toProtoRpcClient } from '@streamr/proto-rpc'
|
|
2
|
-
import {
|
|
2
|
+
import { RouterRpcRemote } from '../../src/dht/routing/RouterRpcRemote'
|
|
3
3
|
import { Message, MessageType, NodeType, PeerDescriptor, RouteMessageAck, RouteMessageWrapper } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
4
|
-
import {
|
|
4
|
+
import { RouterRpcClient } from '../../src/proto/packages/dht/protos/DhtRpc.client'
|
|
5
5
|
import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
|
|
6
|
-
import {
|
|
7
|
-
import { createWrappedClosestPeersRequest, generateId, MockRoutingService } from '../utils/utils'
|
|
6
|
+
import { createWrappedClosestPeersRequest, generateId, mockRouterRpc } from '../utils/utils'
|
|
8
7
|
|
|
9
8
|
describe('RemoteRouter', () => {
|
|
10
9
|
|
|
11
|
-
let remoteRouter:
|
|
10
|
+
let remoteRouter: RouterRpcRemote
|
|
12
11
|
let clientRpcCommunicator: RpcCommunicator
|
|
13
12
|
let serverRpcCommunicator: RpcCommunicator
|
|
14
13
|
const serviceId = 'test'
|
|
15
14
|
const clientPeerDescriptor: PeerDescriptor = {
|
|
16
|
-
kademliaId: generateId('
|
|
15
|
+
kademliaId: generateId('client'),
|
|
17
16
|
type: NodeType.NODEJS
|
|
18
17
|
}
|
|
19
18
|
const serverPeerDescriptor: PeerDescriptor = {
|
|
@@ -24,19 +23,19 @@ describe('RemoteRouter', () => {
|
|
|
24
23
|
beforeEach(() => {
|
|
25
24
|
clientRpcCommunicator = new RpcCommunicator()
|
|
26
25
|
serverRpcCommunicator = new RpcCommunicator()
|
|
27
|
-
serverRpcCommunicator.registerRpcMethod(RouteMessageWrapper, RouteMessageAck, 'routeMessage',
|
|
28
|
-
clientRpcCommunicator.on('outgoingMessage', (message: RpcMessage
|
|
26
|
+
serverRpcCommunicator.registerRpcMethod(RouteMessageWrapper, RouteMessageAck, 'routeMessage', mockRouterRpc.routeMessage)
|
|
27
|
+
clientRpcCommunicator.on('outgoingMessage', (message: RpcMessage) => {
|
|
29
28
|
serverRpcCommunicator.handleIncomingMessage(message)
|
|
30
29
|
})
|
|
31
|
-
serverRpcCommunicator.on('outgoingMessage', (message: RpcMessage
|
|
30
|
+
serverRpcCommunicator.on('outgoingMessage', (message: RpcMessage) => {
|
|
32
31
|
clientRpcCommunicator.handleIncomingMessage(message)
|
|
33
32
|
})
|
|
34
|
-
const client = toProtoRpcClient(new
|
|
35
|
-
remoteRouter = new
|
|
33
|
+
const client = toProtoRpcClient(new RouterRpcClient(clientRpcCommunicator.getRpcClientTransport()))
|
|
34
|
+
remoteRouter = new RouterRpcRemote(clientPeerDescriptor, serverPeerDescriptor, serviceId, client)
|
|
36
35
|
})
|
|
37
36
|
|
|
38
37
|
it('routeMessage happy path', async () => {
|
|
39
|
-
const rpcWrapper = createWrappedClosestPeersRequest(clientPeerDescriptor
|
|
38
|
+
const rpcWrapper = createWrappedClosestPeersRequest(clientPeerDescriptor)
|
|
40
39
|
const routed: Message = {
|
|
41
40
|
serviceId,
|
|
42
41
|
messageId: 'routed',
|
|
@@ -58,8 +57,8 @@ describe('RemoteRouter', () => {
|
|
|
58
57
|
})
|
|
59
58
|
|
|
60
59
|
it('routeMessage error path', async () => {
|
|
61
|
-
serverRpcCommunicator.registerRpcMethod(RouteMessageWrapper, RouteMessageAck, 'routeMessage',
|
|
62
|
-
const rpcWrapper = createWrappedClosestPeersRequest(clientPeerDescriptor
|
|
60
|
+
serverRpcCommunicator.registerRpcMethod(RouteMessageWrapper, RouteMessageAck, 'routeMessage', mockRouterRpc.throwRouteMessageError)
|
|
61
|
+
const rpcWrapper = createWrappedClosestPeersRequest(clientPeerDescriptor)
|
|
63
62
|
const routed: Message = {
|
|
64
63
|
serviceId,
|
|
65
64
|
messageId: 'routed',
|
|
@@ -3,11 +3,24 @@ import { LatencyType, Simulator } from '../../src/connection/Simulator/Simulator
|
|
|
3
3
|
import { PeerID } from '../../src/helpers/PeerID'
|
|
4
4
|
import { ITransport } from '../../src/transport/ITransport'
|
|
5
5
|
import { v4 } from 'uuid'
|
|
6
|
-
import {
|
|
6
|
+
import { SimulatorTransport } from '../../src/connection/Simulator/SimulatorTransport'
|
|
7
|
+
import { DhtRpcOptions } from '../../src/rpc-protocol/DhtRpcOptions'
|
|
8
|
+
import { ListeningRpcCommunicator } from '../../src/transport/ListeningRpcCommunicator'
|
|
7
9
|
import { ProtoRpcClient, toProtoRpcClient } from '@streamr/proto-rpc'
|
|
8
10
|
import { DhtRpcServiceClient } from '../../src/proto/packages/dht/protos/DhtRpc.client'
|
|
9
|
-
import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
|
|
10
11
|
import { NodeType, PeerDescriptor, PingRequest, PingResponse } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
12
|
+
import { DefaultConnectorFacade } from '../../src/connection/ConnectorFacade'
|
|
13
|
+
import { MetricsContext } from '@streamr/utils'
|
|
14
|
+
|
|
15
|
+
const createConnectionManager = (ownPeerDescriptor: PeerDescriptor, transport: ITransport) => {
|
|
16
|
+
return new ConnectionManager({
|
|
17
|
+
createConnectorFacade: () => new DefaultConnectorFacade({
|
|
18
|
+
transport,
|
|
19
|
+
createOwnPeerDescriptor: () => ownPeerDescriptor
|
|
20
|
+
}),
|
|
21
|
+
metricsContext: new MetricsContext()
|
|
22
|
+
})
|
|
23
|
+
}
|
|
11
24
|
|
|
12
25
|
describe('RPC errors', () => {
|
|
13
26
|
|
|
@@ -32,8 +45,8 @@ describe('RPC errors', () => {
|
|
|
32
45
|
type: NodeType.NODEJS,
|
|
33
46
|
}
|
|
34
47
|
|
|
35
|
-
let connectorTransport1:
|
|
36
|
-
let connectorTransport2:
|
|
48
|
+
let connectorTransport1: SimulatorTransport
|
|
49
|
+
let connectorTransport2: SimulatorTransport
|
|
37
50
|
|
|
38
51
|
const serviceId = 'test'
|
|
39
52
|
|
|
@@ -41,17 +54,19 @@ describe('RPC errors', () => {
|
|
|
41
54
|
|
|
42
55
|
simulator = new Simulator(LatencyType.FIXED, 50)
|
|
43
56
|
connectorTransport1 = new SimulatorTransport(peerDescriptor1, simulator)
|
|
44
|
-
|
|
57
|
+
await connectorTransport1.start()
|
|
58
|
+
manager1 = createConnectionManager(peerDescriptor1, connectorTransport1)
|
|
45
59
|
rpcCommunicator1 = new ListeningRpcCommunicator(serviceId, manager1)
|
|
46
60
|
client1 = toProtoRpcClient(new DhtRpcServiceClient(rpcCommunicator1.getRpcClientTransport()))
|
|
47
61
|
|
|
48
62
|
connectorTransport2 = new SimulatorTransport(peerDescriptor2, simulator)
|
|
49
|
-
|
|
63
|
+
await connectorTransport2.start()
|
|
64
|
+
manager2 = createConnectionManager(peerDescriptor2, connectorTransport2)
|
|
50
65
|
rpcCommunicator2 = new ListeningRpcCommunicator(serviceId, manager2)
|
|
51
66
|
//client2 = toProtoRpcClient(new DhtRpcServiceClient(rpcCommunicator2.getRpcClientTransport()))
|
|
52
67
|
|
|
53
|
-
await manager1.start(
|
|
54
|
-
await manager2.start(
|
|
68
|
+
await manager1.start()
|
|
69
|
+
await manager2.start()
|
|
55
70
|
|
|
56
71
|
})
|
|
57
72
|
|
|
@@ -64,7 +79,7 @@ describe('RPC errors', () => {
|
|
|
64
79
|
})
|
|
65
80
|
|
|
66
81
|
it('Can make a RPC call over WebRTC', async () => {
|
|
67
|
-
const ping = async (request: PingRequest
|
|
82
|
+
const ping = async (request: PingRequest):
|
|
68
83
|
Promise<PingResponse> => {
|
|
69
84
|
const response: PingResponse = {
|
|
70
85
|
requestId: request.requestId
|
|
@@ -134,7 +149,7 @@ describe('RPC errors', () => {
|
|
|
134
149
|
}
|
|
135
150
|
|
|
136
151
|
const disconnectedPromise1 = new Promise<void>((resolve, _reject) => {
|
|
137
|
-
manager1.on('disconnected', (
|
|
152
|
+
manager1.on('disconnected', () => {
|
|
138
153
|
//expect(message.messageType).toBe(MessageType.RPC)
|
|
139
154
|
resolve()
|
|
140
155
|
})
|
|
@@ -2,7 +2,7 @@ import { LatencyType, Simulator } from '../../src/connection/Simulator/Simulator
|
|
|
2
2
|
import { DhtNode } from '../../src/dht/DhtNode'
|
|
3
3
|
import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
4
4
|
import { createMockConnectionDhtNode } from '../utils/utils'
|
|
5
|
-
import {
|
|
5
|
+
import { areEqualPeerDescriptors, keyFromPeerDescriptor } from '../../src/helpers/peerIdFromPeerDescriptor'
|
|
6
6
|
import { Logger } from '@streamr/utils'
|
|
7
7
|
|
|
8
8
|
const logger = new Logger(module)
|
|
@@ -20,18 +20,17 @@ describe('Scaling down a Dht network', () => {
|
|
|
20
20
|
nodes = []
|
|
21
21
|
const entryPointId = '0'
|
|
22
22
|
entryPoint = await createMockConnectionDhtNode(entryPointId, simulator,
|
|
23
|
-
undefined, K,
|
|
23
|
+
undefined, K, MAX_CONNECTIONS)
|
|
24
24
|
nodes.push(entryPoint)
|
|
25
25
|
|
|
26
26
|
entrypointDescriptor = {
|
|
27
27
|
kademliaId: entryPoint.getNodeId().value,
|
|
28
|
-
type: NodeType.NODEJS
|
|
29
|
-
nodeName: entryPointId
|
|
28
|
+
type: NodeType.NODEJS
|
|
30
29
|
}
|
|
31
30
|
|
|
32
31
|
for (let i = 1; i < NUM_NODES; i++) {
|
|
33
32
|
const nodeId = `${i}`
|
|
34
|
-
const node = await createMockConnectionDhtNode(nodeId, simulator, undefined, K,
|
|
33
|
+
const node = await createMockConnectionDhtNode(nodeId, simulator, undefined, K, MAX_CONNECTIONS)
|
|
35
34
|
nodes.push(node)
|
|
36
35
|
}
|
|
37
36
|
await Promise.all(nodes.map((node) => node.joinDht([entrypointDescriptor])))
|
|
@@ -54,10 +53,11 @@ describe('Scaling down a Dht network', () => {
|
|
|
54
53
|
await nodes[nodeIndex].stop()
|
|
55
54
|
const nodeIsCleaned = nodes.every((node) =>
|
|
56
55
|
node.getAllConnectionPeerDescriptors().every((peer) => {
|
|
57
|
-
if (
|
|
58
|
-
logger.error(
|
|
56
|
+
if (areEqualPeerDescriptors(peer, stoppingPeerDescriptor)) {
|
|
57
|
+
logger.error(keyFromPeerDescriptor(node.getPeerDescriptor()) + ', '
|
|
58
|
+
+ keyFromPeerDescriptor(stoppingPeerDescriptor) + ' cleaning up failed')
|
|
59
59
|
}
|
|
60
|
-
return !
|
|
60
|
+
return !areEqualPeerDescriptors(peer, stoppingPeerDescriptor)
|
|
61
61
|
})
|
|
62
62
|
)
|
|
63
63
|
expect(nodeIsCleaned).toEqual(true)
|
|
@@ -1,10 +1,21 @@
|
|
|
1
|
+
import { MetricsContext, waitForCondition } from '@streamr/utils'
|
|
2
|
+
import { ConnectionManager } from '../../src/connection/ConnectionManager'
|
|
3
|
+
import { DefaultConnectorFacade, DefaultConnectorFacadeConfig } from '../../src/connection/ConnectorFacade'
|
|
1
4
|
import { Simulator } from '../../src/connection/Simulator/Simulator'
|
|
2
5
|
import { SimulatorTransport } from '../../src/connection/Simulator/SimulatorTransport'
|
|
3
6
|
import { PeerID } from '../../src/helpers/PeerID'
|
|
4
7
|
import { Message, MessageType, NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
5
8
|
import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
|
|
6
|
-
|
|
7
|
-
|
|
9
|
+
|
|
10
|
+
const createConnectionManager = (ownPeerDescriptor: PeerDescriptor, opts: Omit<DefaultConnectorFacadeConfig, 'createOwnPeerDescriptor'>) => {
|
|
11
|
+
return new ConnectionManager({
|
|
12
|
+
createConnectorFacade: () => new DefaultConnectorFacade({
|
|
13
|
+
createOwnPeerDescriptor: () => ownPeerDescriptor,
|
|
14
|
+
...opts
|
|
15
|
+
}),
|
|
16
|
+
metricsContext: new MetricsContext()
|
|
17
|
+
})
|
|
18
|
+
}
|
|
8
19
|
|
|
9
20
|
describe('SimultaneousConnections', () => {
|
|
10
21
|
|
|
@@ -14,14 +25,12 @@ describe('SimultaneousConnections', () => {
|
|
|
14
25
|
|
|
15
26
|
const peerDescriptor1 = {
|
|
16
27
|
kademliaId: PeerID.fromString('mock1').value,
|
|
17
|
-
type: NodeType.NODEJS
|
|
18
|
-
nodeName: 'mock1'
|
|
28
|
+
type: NodeType.NODEJS
|
|
19
29
|
}
|
|
20
30
|
|
|
21
31
|
const peerDescriptor2 = {
|
|
22
32
|
kademliaId: PeerID.fromString('mock2').value,
|
|
23
|
-
type: NodeType.NODEJS
|
|
24
|
-
nodeName: 'mock2'
|
|
33
|
+
type: NodeType.NODEJS
|
|
25
34
|
}
|
|
26
35
|
|
|
27
36
|
const baseMsg: Message = {
|
|
@@ -37,7 +46,9 @@ describe('SimultaneousConnections', () => {
|
|
|
37
46
|
beforeEach(async () => {
|
|
38
47
|
simulator = new Simulator()
|
|
39
48
|
simulatorTransport1 = new SimulatorTransport(peerDescriptor1, simulator)
|
|
49
|
+
await simulatorTransport1.start()
|
|
40
50
|
simulatorTransport2 = new SimulatorTransport(peerDescriptor2, simulator)
|
|
51
|
+
await simulatorTransport2.start()
|
|
41
52
|
})
|
|
42
53
|
|
|
43
54
|
afterEach(async () => {
|
|
@@ -84,7 +95,6 @@ describe('SimultaneousConnections', () => {
|
|
|
84
95
|
|
|
85
96
|
const wsPeer1: PeerDescriptor = {
|
|
86
97
|
kademliaId: PeerID.fromString('mock1').value,
|
|
87
|
-
nodeName: 'mock1WebSocket',
|
|
88
98
|
type: NodeType.NODEJS,
|
|
89
99
|
websocket: {
|
|
90
100
|
host: '127.0.0.1',
|
|
@@ -95,7 +105,6 @@ describe('SimultaneousConnections', () => {
|
|
|
95
105
|
|
|
96
106
|
const wsPeer2: PeerDescriptor = {
|
|
97
107
|
kademliaId: PeerID.fromString('mock2').value,
|
|
98
|
-
nodeName: 'mock2WebSocket',
|
|
99
108
|
type: NodeType.NODEJS,
|
|
100
109
|
websocket: {
|
|
101
110
|
host: '127.0.0.1',
|
|
@@ -106,20 +115,18 @@ describe('SimultaneousConnections', () => {
|
|
|
106
115
|
|
|
107
116
|
beforeEach(async () => {
|
|
108
117
|
const websocketPortRange = { min: 43432, max: 43433 }
|
|
109
|
-
connectionManager1 =
|
|
110
|
-
|
|
111
|
-
ownPeerDescriptor: wsPeer1,
|
|
118
|
+
connectionManager1 = createConnectionManager(wsPeer1, {
|
|
119
|
+
transport: simulatorTransport1,
|
|
112
120
|
websocketPortRange,
|
|
113
121
|
entryPoints: [wsPeer1]
|
|
114
122
|
})
|
|
115
|
-
connectionManager2 =
|
|
116
|
-
|
|
117
|
-
ownPeerDescriptor: wsPeer2,
|
|
123
|
+
connectionManager2 = createConnectionManager(wsPeer2, {
|
|
124
|
+
transport: simulatorTransport2,
|
|
118
125
|
websocketPortRange,
|
|
119
126
|
entryPoints: [wsPeer1]
|
|
120
127
|
})
|
|
121
|
-
await connectionManager1.start(
|
|
122
|
-
await connectionManager2.start(
|
|
128
|
+
await connectionManager1.start()
|
|
129
|
+
await connectionManager2.start()
|
|
123
130
|
})
|
|
124
131
|
|
|
125
132
|
afterEach(async () => {
|
|
@@ -169,7 +176,6 @@ describe('SimultaneousConnections', () => {
|
|
|
169
176
|
|
|
170
177
|
const wsPeer1: PeerDescriptor = {
|
|
171
178
|
kademliaId: PeerID.fromString('mock1').value,
|
|
172
|
-
nodeName: 'mock1WebSocketServer',
|
|
173
179
|
type: NodeType.NODEJS,
|
|
174
180
|
websocket: {
|
|
175
181
|
host: '127.0.0.1',
|
|
@@ -180,23 +186,20 @@ describe('SimultaneousConnections', () => {
|
|
|
180
186
|
|
|
181
187
|
const wsPeer2: PeerDescriptor = {
|
|
182
188
|
kademliaId: PeerID.fromString('mock2').value,
|
|
183
|
-
nodeName: 'mock2WebSocketClient',
|
|
184
189
|
type: NodeType.NODEJS
|
|
185
190
|
}
|
|
186
191
|
|
|
187
192
|
beforeEach(async () => {
|
|
188
|
-
connectionManager1 =
|
|
189
|
-
|
|
190
|
-
ownPeerDescriptor: wsPeer1,
|
|
193
|
+
connectionManager1 = createConnectionManager(wsPeer1, {
|
|
194
|
+
transport: simulatorTransport1,
|
|
191
195
|
websocketPortRange: { min: 43432, max: 43432 },
|
|
192
196
|
entryPoints: [wsPeer1]
|
|
193
197
|
})
|
|
194
|
-
connectionManager2 =
|
|
195
|
-
|
|
196
|
-
ownPeerDescriptor: wsPeer2
|
|
198
|
+
connectionManager2 = createConnectionManager(wsPeer2, {
|
|
199
|
+
transport: simulatorTransport2
|
|
197
200
|
})
|
|
198
|
-
await connectionManager1.start(
|
|
199
|
-
await connectionManager2.start(
|
|
201
|
+
await connectionManager1.start()
|
|
202
|
+
await connectionManager2.start()
|
|
200
203
|
})
|
|
201
204
|
|
|
202
205
|
afterEach(async () => {
|
|
@@ -246,27 +249,23 @@ describe('SimultaneousConnections', () => {
|
|
|
246
249
|
|
|
247
250
|
const wrtcPeer1: PeerDescriptor = {
|
|
248
251
|
kademliaId: PeerID.fromString('mock1').value,
|
|
249
|
-
nodeName: 'mock1WebRTC',
|
|
250
252
|
type: NodeType.NODEJS
|
|
251
253
|
}
|
|
252
254
|
|
|
253
255
|
const wrtcPeer2: PeerDescriptor = {
|
|
254
256
|
kademliaId: PeerID.fromString('mock2').value,
|
|
255
|
-
nodeName: 'mock2WebRTC',
|
|
256
257
|
type: NodeType.NODEJS
|
|
257
258
|
}
|
|
258
259
|
|
|
259
260
|
beforeEach(async () => {
|
|
260
|
-
connectionManager1 =
|
|
261
|
-
|
|
262
|
-
ownPeerDescriptor: wrtcPeer1,
|
|
261
|
+
connectionManager1 = createConnectionManager(wrtcPeer1, {
|
|
262
|
+
transport: simulatorTransport1,
|
|
263
263
|
})
|
|
264
|
-
connectionManager2 =
|
|
265
|
-
|
|
266
|
-
ownPeerDescriptor: wrtcPeer1,
|
|
264
|
+
connectionManager2 = createConnectionManager(wrtcPeer2, {
|
|
265
|
+
transport: simulatorTransport2,
|
|
267
266
|
})
|
|
268
|
-
await connectionManager1.start(
|
|
269
|
-
await connectionManager2.start(
|
|
267
|
+
await connectionManager1.start()
|
|
268
|
+
await connectionManager2.start()
|
|
270
269
|
})
|
|
271
270
|
|
|
272
271
|
afterEach(async () => {
|
|
@@ -2,7 +2,8 @@ import { LatencyType, Simulator } from '../../src/connection/Simulator/Simulator
|
|
|
2
2
|
import { DhtNode } from '../../src/dht/DhtNode'
|
|
3
3
|
import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
4
4
|
import { createMockConnectionDhtNode, waitConnectionManagersReadyForTesting } from '../utils/utils'
|
|
5
|
-
import {
|
|
5
|
+
import { PeerID } from '../../src/helpers/PeerID'
|
|
6
|
+
import { areEqualPeerDescriptors } from '../../src/helpers/peerIdFromPeerDescriptor'
|
|
6
7
|
import { Any } from '../../src/proto/google/protobuf/any'
|
|
7
8
|
|
|
8
9
|
describe('Storing data in DHT', () => {
|
|
@@ -23,19 +24,18 @@ describe('Storing data in DHT', () => {
|
|
|
23
24
|
nodes = []
|
|
24
25
|
const entryPointId = '0'
|
|
25
26
|
entryPoint = await createMockConnectionDhtNode(entryPointId, simulator,
|
|
26
|
-
undefined, K,
|
|
27
|
+
undefined, K, MAX_CONNECTIONS)
|
|
27
28
|
nodes.push(entryPoint)
|
|
28
29
|
nodeIndicesById[entryPoint.getNodeId().toKey()] = 0
|
|
29
30
|
entrypointDescriptor = {
|
|
30
31
|
kademliaId: entryPoint.getNodeId().value,
|
|
31
|
-
type: NodeType.NODEJS
|
|
32
|
-
nodeName: entryPointId
|
|
32
|
+
type: NodeType.NODEJS
|
|
33
33
|
}
|
|
34
34
|
nodes.push(entryPoint)
|
|
35
35
|
for (let i = 1; i < NUM_NODES; i++) {
|
|
36
36
|
const nodeId = `${i}`
|
|
37
37
|
const node = await createMockConnectionDhtNode(nodeId, simulator,
|
|
38
|
-
undefined, K,
|
|
38
|
+
undefined, K, MAX_CONNECTIONS, 60000)
|
|
39
39
|
nodeIndicesById[node.getNodeId().toKey()] = i
|
|
40
40
|
nodes.push(node)
|
|
41
41
|
}
|
|
@@ -55,8 +55,7 @@ describe('Storing data in DHT', () => {
|
|
|
55
55
|
expect(successfulStorers.length).toBeGreaterThan(4)
|
|
56
56
|
}, 90000)
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
it.skip('Storing and getting data works', async () => {
|
|
58
|
+
it('Storing and getting data works', async () => {
|
|
60
59
|
const storingNode = getRandomNode()
|
|
61
60
|
const dataKey = PeerID.fromString('3232323e12r31r3')
|
|
62
61
|
const data = Any.pack(entrypointDescriptor, PeerDescriptor)
|
|
@@ -65,9 +64,9 @@ describe('Storing data in DHT', () => {
|
|
|
65
64
|
|
|
66
65
|
const fetchingNode = getRandomNode()
|
|
67
66
|
const results = await fetchingNode.getDataFromDht(dataKey.value)
|
|
68
|
-
results.
|
|
67
|
+
results.forEach((entry) => {
|
|
69
68
|
const fetchedDescriptor = Any.unpack(entry.data!, PeerDescriptor)
|
|
70
|
-
expect(
|
|
69
|
+
expect(areEqualPeerDescriptors(fetchedDescriptor, entrypointDescriptor)).toBeTrue()
|
|
71
70
|
})
|
|
72
71
|
}, 90000)
|
|
73
72
|
})
|
|
@@ -2,7 +2,8 @@ import { LatencyType, Simulator } from '../../src/connection/Simulator/Simulator
|
|
|
2
2
|
import { DhtNode } from '../../src/dht/DhtNode'
|
|
3
3
|
import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
4
4
|
import { createMockConnectionDhtNode, waitConnectionManagersReadyForTesting } from '../utils/utils'
|
|
5
|
-
import {
|
|
5
|
+
import { PeerID } from '../../src/helpers/PeerID'
|
|
6
|
+
import { areEqualPeerDescriptors } from '../../src/helpers/peerIdFromPeerDescriptor'
|
|
6
7
|
import { Any } from '../../src/proto/google/protobuf/any'
|
|
7
8
|
|
|
8
9
|
describe('Storing data in DHT', () => {
|
|
@@ -23,19 +24,18 @@ describe('Storing data in DHT', () => {
|
|
|
23
24
|
nodes = []
|
|
24
25
|
const entryPointId = '0'
|
|
25
26
|
entryPoint = await createMockConnectionDhtNode(entryPointId, simulator,
|
|
26
|
-
undefined, K,
|
|
27
|
+
undefined, K, MAX_CONNECTIONS)
|
|
27
28
|
nodes.push(entryPoint)
|
|
28
29
|
nodeIndicesById[entryPoint.getNodeId().toKey()] = 0
|
|
29
30
|
entrypointDescriptor = {
|
|
30
31
|
kademliaId: entryPoint.getNodeId().value,
|
|
31
|
-
type: NodeType.NODEJS
|
|
32
|
-
nodeName: entryPointId
|
|
32
|
+
type: NodeType.NODEJS
|
|
33
33
|
}
|
|
34
34
|
nodes.push(entryPoint)
|
|
35
35
|
for (let i = 1; i < NUM_NODES; i++) {
|
|
36
36
|
const nodeId = `${i}`
|
|
37
37
|
const node = await createMockConnectionDhtNode(nodeId, simulator,
|
|
38
|
-
undefined, K,
|
|
38
|
+
undefined, K, MAX_CONNECTIONS, 60000)
|
|
39
39
|
nodeIndicesById[node.getNodeId().toKey()] = i
|
|
40
40
|
nodes.push(node)
|
|
41
41
|
}
|
|
@@ -57,10 +57,10 @@ describe('Storing data in DHT', () => {
|
|
|
57
57
|
|
|
58
58
|
const fetchingNode = getRandomNode()
|
|
59
59
|
const results = await fetchingNode.getDataFromDht(dataKey.value)
|
|
60
|
-
results.
|
|
60
|
+
results.forEach((entry) => {
|
|
61
61
|
const fetchedDescriptor = Any.unpack(entry.data!, PeerDescriptor)
|
|
62
62
|
expect(entry.deleted).toBeTrue()
|
|
63
|
-
expect(
|
|
63
|
+
expect(areEqualPeerDescriptors(fetchedDescriptor, entrypointDescriptor)).toBeTrue()
|
|
64
64
|
})
|
|
65
65
|
}, 90000)
|
|
66
66
|
|
|
@@ -74,20 +74,20 @@ describe('Storing data in DHT', () => {
|
|
|
74
74
|
|
|
75
75
|
const fetchingNode = getRandomNode()
|
|
76
76
|
const results1 = await fetchingNode.getDataFromDht(dataKey.value)
|
|
77
|
-
results1.
|
|
77
|
+
results1.forEach((entry) => {
|
|
78
78
|
const fetchedDescriptor = Any.unpack(entry.data!, PeerDescriptor)
|
|
79
79
|
expect(entry.deleted).toBeTrue()
|
|
80
|
-
expect(
|
|
80
|
+
expect(areEqualPeerDescriptors(fetchedDescriptor, entrypointDescriptor)).toBeTrue()
|
|
81
81
|
})
|
|
82
82
|
|
|
83
83
|
const successfulStorers2 = await storingNode.storeDataToDht(dataKey.value, data)
|
|
84
84
|
expect(successfulStorers2.length).toBeGreaterThan(4)
|
|
85
85
|
|
|
86
86
|
const results2 = await fetchingNode.getDataFromDht(dataKey.value)
|
|
87
|
-
results2.
|
|
87
|
+
results2.forEach((entry) => {
|
|
88
88
|
const fetchedDescriptor = Any.unpack(entry.data!, PeerDescriptor)
|
|
89
89
|
expect(entry.deleted).toBeFalse()
|
|
90
|
-
expect(
|
|
90
|
+
expect(areEqualPeerDescriptors(fetchedDescriptor, entrypointDescriptor)).toBeTrue()
|
|
91
91
|
})
|
|
92
92
|
}, 90000)
|
|
93
93
|
})
|