@streamr/dht 0.0.1-tatum.5 → 0.0.1-tatum.7
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/ConnectionManager.d.ts +17 -39
- package/dist/src/connection/ConnectionManager.js +138 -192
- package/dist/src/connection/ConnectionManager.js.map +1 -1
- package/dist/src/connection/ConnectivityChecker.js +14 -11
- package/dist/src/connection/ConnectivityChecker.js.map +1 -1
- package/dist/src/connection/ConnectorFacade.d.ts +49 -0
- package/dist/src/connection/ConnectorFacade.js +86 -0
- package/dist/src/connection/ConnectorFacade.js.map +1 -0
- package/dist/src/connection/ManagedConnection.d.ts +1 -4
- package/dist/src/connection/ManagedConnection.js +23 -31
- package/dist/src/connection/ManagedConnection.js.map +1 -1
- package/dist/src/connection/RemoteConnectionLocker.js +4 -3
- package/dist/src/connection/RemoteConnectionLocker.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 -2
- package/dist/src/connection/Simulator/SimulatorConnector.js +10 -11
- 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 +2 -0
- 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 +9 -9
- package/dist/src/connection/WebRTC/WebRtcConnector.js +22 -22
- package/dist/src/connection/WebRTC/WebRtcConnector.js.map +1 -1
- package/dist/src/connection/WebSocket/RemoteWebSocketConnector.js +2 -1
- package/dist/src/connection/WebSocket/RemoteWebSocketConnector.js.map +1 -1
- package/dist/src/connection/WebSocket/WebSocketConnector.d.ts +19 -8
- package/dist/src/connection/WebSocket/WebSocketConnector.js +67 -46
- package/dist/src/connection/WebSocket/WebSocketConnector.js.map +1 -1
- 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 +16 -54
- package/dist/src/dht/DhtNode.js +116 -137
- package/dist/src/dht/DhtNode.js.map +1 -1
- package/dist/src/dht/{DhtPeer.d.ts → RemoteDhtNode.d.ts} +3 -2
- package/dist/src/dht/{DhtPeer.js → RemoteDhtNode.js} +22 -16
- package/dist/src/dht/RemoteDhtNode.js.map +1 -0
- package/dist/src/dht/contact/Contact.d.ts +1 -15
- package/dist/src/dht/contact/Contact.js +1 -9
- package/dist/src/dht/contact/Contact.js.map +1 -1
- package/dist/src/dht/contact/ContactList.d.ts +13 -3
- package/dist/src/dht/contact/ContactList.js +9 -4
- package/dist/src/dht/contact/ContactList.js.map +1 -1
- package/dist/src/dht/contact/RandomContactList.d.ts +3 -3
- package/dist/src/dht/contact/RandomContactList.js +4 -8
- package/dist/src/dht/contact/RandomContactList.js.map +1 -1
- package/dist/src/dht/contact/Remote.d.ts +1 -5
- package/dist/src/dht/contact/Remote.js +0 -5
- package/dist/src/dht/contact/Remote.js.map +1 -1
- package/dist/src/dht/contact/SortedContactList.d.ts +3 -5
- package/dist/src/dht/contact/SortedContactList.js +9 -19
- 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 +11 -10
- package/dist/src/dht/discovery/PeerDiscovery.js +32 -37
- package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
- package/dist/src/dht/find/RecursiveFindSession.d.ts +5 -6
- package/dist/src/dht/find/RecursiveFindSession.js +8 -8
- package/dist/src/dht/find/RecursiveFindSession.js.map +1 -1
- package/dist/src/dht/find/RecursiveFinder.d.ts +2 -4
- package/dist/src/dht/find/RecursiveFinder.js +11 -12
- package/dist/src/dht/find/RecursiveFinder.js.map +1 -1
- package/dist/src/dht/registerExternalApiRpcMethods.d.ts +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/RemoteRouter.js +4 -4
- package/dist/src/dht/routing/RemoteRouter.js.map +1 -1
- package/dist/src/dht/routing/Router.d.ts +10 -13
- package/dist/src/dht/routing/Router.js +28 -29
- package/dist/src/dht/routing/Router.js.map +1 -1
- package/dist/src/dht/routing/RoutingSession.d.ts +3 -5
- package/dist/src/dht/routing/RoutingSession.js +19 -13
- package/dist/src/dht/routing/RoutingSession.js.map +1 -1
- package/dist/src/dht/store/DataStore.d.ts +2 -2
- package/dist/src/dht/store/DataStore.js +7 -7
- package/dist/src/dht/store/DataStore.js.map +1 -1
- package/dist/src/exports.d.ts +1 -8
- package/dist/src/exports.js +2 -16
- 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/proto/packages/dht/protos/DhtRpc.d.ts +0 -4
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +1 -2
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- package/package.json +10 -9
- package/protos/DhtRpc.proto +0 -1
- package/src/connection/ConnectionLockHandler.ts +1 -1
- package/src/connection/ConnectionManager.ts +156 -240
- package/src/connection/ConnectivityChecker.ts +14 -11
- package/src/connection/ConnectorFacade.ts +143 -0
- package/src/connection/ManagedConnection.ts +23 -34
- package/src/connection/RemoteConnectionLocker.ts +4 -3
- package/src/connection/Simulator/Simulator.ts +0 -7
- package/src/connection/Simulator/SimulatorConnection.ts +16 -13
- package/src/connection/Simulator/SimulatorConnector.ts +11 -12
- package/src/connection/Simulator/SimulatorTransport.ts +6 -1
- package/src/connection/WebRTC/NodeWebRtcConnection.ts +14 -13
- package/src/connection/WebRTC/WebRtcConnector.ts +31 -31
- package/src/connection/WebSocket/RemoteWebSocketConnector.ts +2 -1
- package/src/connection/WebSocket/WebSocketConnector.ts +85 -62
- package/src/connection/WebSocket/WebSocketServer.ts +26 -8
- package/src/dht/DhtNode.ts +164 -189
- package/src/dht/{DhtPeer.ts → RemoteDhtNode.ts} +14 -7
- package/src/dht/contact/Contact.ts +1 -18
- package/src/dht/contact/ContactList.ts +16 -6
- package/src/dht/contact/RandomContactList.ts +6 -11
- package/src/dht/contact/Remote.ts +1 -10
- package/src/dht/contact/SortedContactList.ts +12 -25
- package/src/dht/discovery/DiscoverySession.ts +20 -23
- package/src/dht/discovery/PeerDiscovery.ts +45 -44
- package/src/dht/find/RecursiveFindSession.ts +12 -13
- package/src/dht/find/RecursiveFinder.ts +16 -19
- package/src/dht/registerExternalApiRpcMethods.ts +1 -1
- package/src/dht/routing/DuplicateDetector.ts +3 -10
- package/src/dht/routing/RemoteRouter.ts +5 -5
- package/src/dht/routing/Router.ts +35 -39
- package/src/dht/routing/RoutingSession.ts +37 -28
- package/src/dht/store/DataStore.ts +11 -11
- package/src/exports.ts +1 -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/proto/packages/dht/protos/DhtRpc.ts +1 -6
- package/test/benchmark/KademliaCorrectness.test.ts +5 -2
- package/test/benchmark/RecursiveFind.test.ts +6 -6
- package/test/end-to-end/Layer0-Layer1.test.ts +14 -14
- 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/RemoteRouter.test.ts +5 -6
- package/test/integration/RemoteStore.test.ts +4 -5
- package/test/integration/RouteMessage.test.ts +7 -9
- 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/WebRtcConnectionManagement.test.ts +26 -19
- package/test/integration/WebRtcConnectorRpc.test.ts +6 -8
- package/test/integration/WebSocket.test.ts +4 -2
- package/test/integration/WebSocketConnectionManagement.test.ts +30 -17
- package/test/integration/WebSocketConnectorRpc.test.ts +2 -3
- package/test/unit/DuplicateDetector.test.ts +3 -4
- package/test/unit/LocalDataStore.test.ts +6 -8
- package/test/unit/RandomContactList.test.ts +25 -74
- package/test/unit/RecursiveFinder.test.ts +8 -12
- package/test/unit/Router.test.ts +18 -21
- package/test/unit/SortedContactList.test.ts +62 -112
- package/test/unit/WebSocketConnector.test.ts +64 -0
- package/test/unit/WebSocketServer.test.ts +24 -12
- 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 +40 -49
- package/dist/src/dht/DhtPeer.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/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
- /package/test/unit/{webrtcReplaceInternalIpWithExternalIp.ts → webrtcReplaceInternalIpWithExternalIp.test.ts} +0 -0
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { ConnectionManager } from '../../src/connection/ConnectionManager'
|
|
2
|
-
import { Message, MessageType, NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
2
|
+
import { ConnectivityResponse, Message, MessageType, NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
3
3
|
import { PeerID } from '../../src/helpers/PeerID'
|
|
4
4
|
import { Simulator } from '../../src/connection/Simulator/Simulator'
|
|
5
5
|
import { createPeerDescriptor } from '../../src/dht/DhtNode'
|
|
6
6
|
import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
|
|
7
|
-
import { Logger } from '@streamr/utils'
|
|
7
|
+
import { Logger, MetricsContext } from '@streamr/utils'
|
|
8
|
+
import { SimulatorTransport } from '../../src/exports'
|
|
9
|
+
import { DefaultConnectorFacade, DefaultConnectorFacadeConfig } from '../../src/connection/ConnectorFacade'
|
|
8
10
|
|
|
9
11
|
const logger = new Logger(module)
|
|
10
12
|
|
|
@@ -14,30 +16,48 @@ describe('ConnectionManager', () => {
|
|
|
14
16
|
|
|
15
17
|
const mockPeerDescriptor1: PeerDescriptor = {
|
|
16
18
|
kademliaId: PeerID.fromString('tester1').value,
|
|
17
|
-
nodeName: 'tester1',
|
|
18
19
|
type: NodeType.NODEJS
|
|
19
20
|
}
|
|
20
21
|
const mockPeerDescriptor2: PeerDescriptor = {
|
|
21
22
|
kademliaId: PeerID.fromString('tester2').value,
|
|
22
|
-
nodeName: 'tester2',
|
|
23
23
|
type: NodeType.NODEJS
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
const mockPeerDescriptor3: PeerDescriptor = {
|
|
27
27
|
kademliaId: PeerID.fromString('tester3').value,
|
|
28
|
-
nodeName: 'tester3',
|
|
29
28
|
type: NodeType.NODEJS
|
|
30
29
|
}
|
|
31
30
|
const mockPeerDescriptor4: PeerDescriptor = {
|
|
32
31
|
kademliaId: PeerID.fromString('tester4').value,
|
|
33
|
-
nodeName: 'tester4',
|
|
34
32
|
type: NodeType.NODEJS
|
|
35
33
|
}
|
|
36
34
|
const simulator = new Simulator()
|
|
37
35
|
|
|
38
|
-
const mockTransport = new
|
|
39
|
-
const mockConnectorTransport1 = new
|
|
40
|
-
const mockConnectorTransport2 = new
|
|
36
|
+
const mockTransport = new SimulatorTransport(mockPeerDescriptor1, simulator)
|
|
37
|
+
const mockConnectorTransport1 = new SimulatorTransport(mockPeerDescriptor1, simulator)
|
|
38
|
+
const mockConnectorTransport2 = new SimulatorTransport(mockPeerDescriptor2, simulator)
|
|
39
|
+
|
|
40
|
+
let createOwnPeerDescriptor: jest.Mock<PeerDescriptor, [ConnectivityResponse]>
|
|
41
|
+
|
|
42
|
+
const createConnectionManager = (opts: Omit<DefaultConnectorFacadeConfig, 'createOwnPeerDescriptor'>) => {
|
|
43
|
+
return new ConnectionManager({
|
|
44
|
+
createConnectorFacade: () => new DefaultConnectorFacade({
|
|
45
|
+
createOwnPeerDescriptor,
|
|
46
|
+
...opts
|
|
47
|
+
}),
|
|
48
|
+
metricsContext: new MetricsContext()
|
|
49
|
+
})
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
beforeEach(() => {
|
|
53
|
+
createOwnPeerDescriptor = jest.fn().mockImplementation((response) => createPeerDescriptor(response))
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
beforeAll(async () => {
|
|
57
|
+
await mockTransport.start()
|
|
58
|
+
await mockConnectorTransport1.start()
|
|
59
|
+
await mockConnectorTransport2.start()
|
|
60
|
+
})
|
|
41
61
|
|
|
42
62
|
afterAll(async ()=> {
|
|
43
63
|
await mockTransport.stop()
|
|
@@ -46,100 +66,84 @@ describe('ConnectionManager', () => {
|
|
|
46
66
|
})
|
|
47
67
|
|
|
48
68
|
it('Can start alone', async () => {
|
|
49
|
-
|
|
50
|
-
|
|
69
|
+
|
|
70
|
+
const connectionManager = createConnectionManager({
|
|
71
|
+
transport: mockTransport,
|
|
51
72
|
websocketHost: '127.0.0.1',
|
|
52
|
-
websocketPortRange: { min: 9991, max: 9991 }
|
|
73
|
+
websocketPortRange: { min: 9991, max: 9991 },
|
|
53
74
|
})
|
|
54
75
|
|
|
55
|
-
await connectionManager.start(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
return createPeerDescriptor(report)
|
|
59
|
-
})
|
|
76
|
+
await connectionManager.start()
|
|
77
|
+
expect(createOwnPeerDescriptor.mock.calls[0][0].host).toEqual('127.0.0.1')
|
|
78
|
+
expect(createOwnPeerDescriptor.mock.calls[0][0].openInternet).toEqual(true)
|
|
60
79
|
|
|
61
80
|
await connectionManager.stop()
|
|
62
81
|
})
|
|
63
82
|
|
|
64
83
|
it('Throws an async exception if fails to connect to entrypoints', async () => {
|
|
65
84
|
|
|
66
|
-
const connectionManager =
|
|
67
|
-
|
|
85
|
+
const connectionManager = createConnectionManager({
|
|
86
|
+
transport: mockTransport,
|
|
68
87
|
websocketPortRange: { min: 9992, max: 9992 },
|
|
69
88
|
entryPoints: [
|
|
70
89
|
{ kademliaId: Uint8Array.from([1, 2, 3]), type: NodeType.NODEJS, websocket: { host: '127.0.0.1', port: 12345, tls: false } }
|
|
71
90
|
]
|
|
72
91
|
})
|
|
73
92
|
|
|
74
|
-
await expect(connectionManager.start((
|
|
75
|
-
return createPeerDescriptor(report)
|
|
76
|
-
})).rejects.toThrow('Failed to connect to the entrypoints')
|
|
93
|
+
await expect(connectionManager.start()).rejects.toThrow('Failed to connect to the entrypoints')
|
|
77
94
|
|
|
78
95
|
await connectionManager.stop()
|
|
79
96
|
}, 15000)
|
|
80
97
|
|
|
81
98
|
it('Can probe connectivity in open internet', async () => {
|
|
82
|
-
const connectionManager1 =
|
|
83
|
-
|
|
99
|
+
const connectionManager1 = createConnectionManager({
|
|
100
|
+
transport: mockTransport,
|
|
84
101
|
websocketHost: '127.0.0.1',
|
|
85
102
|
websocketPortRange: { min: 9993, max: 9993 }
|
|
86
103
|
})
|
|
87
104
|
|
|
88
|
-
await connectionManager1.start(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
return createPeerDescriptor(report)
|
|
92
|
-
})
|
|
105
|
+
await connectionManager1.start()
|
|
106
|
+
expect(createOwnPeerDescriptor.mock.calls[0][0].host).toEqual('127.0.0.1')
|
|
107
|
+
expect(createOwnPeerDescriptor.mock.calls[0][0].openInternet).toEqual(true)
|
|
93
108
|
|
|
94
|
-
const connectionManager2 =
|
|
95
|
-
|
|
109
|
+
const connectionManager2 = createConnectionManager({
|
|
110
|
+
transport: mockConnectorTransport2,
|
|
96
111
|
websocketPortRange: { min: 9994, max: 9994 },
|
|
97
112
|
entryPoints: [
|
|
98
113
|
{ kademliaId: Uint8Array.from([1, 2, 3]), type: NodeType.NODEJS, websocket: { host: '127.0.0.1', port: 9993, tls: false } }
|
|
99
114
|
]
|
|
100
115
|
})
|
|
101
116
|
|
|
102
|
-
await connectionManager2.start(
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
return createPeerDescriptor(report)
|
|
106
|
-
})
|
|
117
|
+
await connectionManager2.start()
|
|
118
|
+
expect(createOwnPeerDescriptor.mock.calls[1][0].host).toEqual('127.0.0.1')
|
|
119
|
+
expect(createOwnPeerDescriptor.mock.calls[1][0].openInternet).toEqual(true)
|
|
107
120
|
|
|
108
121
|
await connectionManager1.stop()
|
|
109
122
|
await connectionManager2.stop()
|
|
110
123
|
})
|
|
111
124
|
|
|
112
125
|
it('Can send data to other connectionmanager over websocket', async () => {
|
|
113
|
-
const connectionManager1 =
|
|
114
|
-
|
|
126
|
+
const connectionManager1 = createConnectionManager({
|
|
127
|
+
transport: mockConnectorTransport1,
|
|
115
128
|
websocketHost: '127.0.0.1',
|
|
116
129
|
websocketPortRange: { min: 9995, max: 9995 }
|
|
117
130
|
})
|
|
118
131
|
|
|
119
|
-
|
|
132
|
+
await connectionManager1.start()
|
|
133
|
+
expect(createOwnPeerDescriptor.mock.calls[0][0].host).toEqual('127.0.0.1')
|
|
134
|
+
expect(createOwnPeerDescriptor.mock.calls[0][0].openInternet).toEqual(true)
|
|
120
135
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
expect(report.openInternet).toEqual(true)
|
|
124
|
-
peerDescriptor = createPeerDescriptor(report)
|
|
125
|
-
return peerDescriptor
|
|
126
|
-
})
|
|
127
|
-
|
|
128
|
-
const connectionManager2 = new ConnectionManager({
|
|
129
|
-
transportLayer: mockConnectorTransport2,
|
|
136
|
+
const connectionManager2 = createConnectionManager({
|
|
137
|
+
transport: mockConnectorTransport2,
|
|
130
138
|
websocketPortRange: { min: 9996, max: 9996 },
|
|
131
139
|
entryPoints: [
|
|
132
|
-
|
|
140
|
+
connectionManager1.getPeerDescriptor()
|
|
133
141
|
]
|
|
134
142
|
})
|
|
135
143
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
expect(report2.openInternet).toEqual(true)
|
|
140
|
-
peerDescriptor2 = createPeerDescriptor(report2)
|
|
141
|
-
return peerDescriptor2
|
|
142
|
-
})
|
|
144
|
+
await connectionManager2.start()
|
|
145
|
+
expect(createOwnPeerDescriptor.mock.calls[1][0].host).toEqual('127.0.0.1')
|
|
146
|
+
expect(createOwnPeerDescriptor.mock.calls[1][0].openInternet).toEqual(true)
|
|
143
147
|
|
|
144
148
|
const msg: Message = {
|
|
145
149
|
serviceId,
|
|
@@ -159,18 +163,18 @@ describe('ConnectionManager', () => {
|
|
|
159
163
|
})
|
|
160
164
|
|
|
161
165
|
const connectedPromise1 = new Promise<void>((resolve, _reject) => {
|
|
162
|
-
connectionManager1.on('connected', (
|
|
166
|
+
connectionManager1.on('connected', () => {
|
|
163
167
|
resolve()
|
|
164
168
|
})
|
|
165
169
|
})
|
|
166
170
|
|
|
167
171
|
const connectedPromise2 = new Promise<void>((resolve, _reject) => {
|
|
168
|
-
connectionManager2.on('connected', (
|
|
172
|
+
connectionManager2.on('connected', () => {
|
|
169
173
|
resolve()
|
|
170
174
|
})
|
|
171
175
|
})
|
|
172
176
|
|
|
173
|
-
msg.targetDescriptor =
|
|
177
|
+
msg.targetDescriptor = connectionManager2.getPeerDescriptor()
|
|
174
178
|
connectionManager1.send(msg)
|
|
175
179
|
|
|
176
180
|
await Promise.all([promise, connectedPromise1, connectedPromise2])
|
|
@@ -180,33 +184,25 @@ describe('ConnectionManager', () => {
|
|
|
180
184
|
})
|
|
181
185
|
|
|
182
186
|
it('Can disconnect websockets', async () => {
|
|
183
|
-
const connectionManager1 =
|
|
184
|
-
|
|
187
|
+
const connectionManager1 = createConnectionManager({
|
|
188
|
+
transport: mockConnectorTransport1,
|
|
185
189
|
websocketHost: '127.0.0.1',
|
|
186
190
|
websocketPortRange: { min: 9997, max: 9997 }
|
|
187
191
|
})
|
|
188
192
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
expect(report.openInternet).toEqual(true)
|
|
193
|
-
peerDescriptor = createPeerDescriptor(report)
|
|
194
|
-
return peerDescriptor
|
|
195
|
-
})
|
|
193
|
+
await connectionManager1.start()
|
|
194
|
+
expect(createOwnPeerDescriptor.mock.calls[0][0].host).toEqual('127.0.0.1')
|
|
195
|
+
expect(createOwnPeerDescriptor.mock.calls[0][0].openInternet).toEqual(true)
|
|
196
196
|
|
|
197
|
-
const connectionManager2 =
|
|
198
|
-
|
|
197
|
+
const connectionManager2 = createConnectionManager({
|
|
198
|
+
transport: mockConnectorTransport2,
|
|
199
199
|
websocketPortRange: { min: 9999, max: 9999 },
|
|
200
200
|
entryPoints: [
|
|
201
|
-
|
|
201
|
+
connectionManager1.getPeerDescriptor()
|
|
202
202
|
]
|
|
203
203
|
})
|
|
204
204
|
|
|
205
|
-
|
|
206
|
-
await connectionManager2.start((report2) => {
|
|
207
|
-
peerDescriptor2 = createPeerDescriptor(report2)
|
|
208
|
-
return peerDescriptor2
|
|
209
|
-
})
|
|
205
|
+
await connectionManager2.start()
|
|
210
206
|
|
|
211
207
|
const msg: Message = {
|
|
212
208
|
serviceId,
|
|
@@ -219,14 +215,14 @@ describe('ConnectionManager', () => {
|
|
|
219
215
|
}
|
|
220
216
|
|
|
221
217
|
const disconnectedPromise1 = new Promise<void>((resolve, _reject) => {
|
|
222
|
-
connectionManager1.on('disconnected', (
|
|
218
|
+
connectionManager1.on('disconnected', () => {
|
|
223
219
|
logger.info('disconnectedPromise1')
|
|
224
220
|
resolve()
|
|
225
221
|
})
|
|
226
222
|
})
|
|
227
223
|
|
|
228
224
|
const disconnectedPromise2 = new Promise<void>((resolve, _reject) => {
|
|
229
|
-
connectionManager2.on('disconnected', (
|
|
225
|
+
connectionManager2.on('disconnected', () => {
|
|
230
226
|
logger.info('disconnectedPromise2')
|
|
231
227
|
resolve()
|
|
232
228
|
})
|
|
@@ -238,13 +234,13 @@ describe('ConnectionManager', () => {
|
|
|
238
234
|
resolve()
|
|
239
235
|
})
|
|
240
236
|
})
|
|
241
|
-
msg.targetDescriptor =
|
|
237
|
+
msg.targetDescriptor = connectionManager2.getPeerDescriptor()
|
|
242
238
|
connectionManager1.send(msg)
|
|
243
239
|
|
|
244
240
|
await promise
|
|
245
241
|
|
|
246
242
|
// @ts-expect-error private field
|
|
247
|
-
connectionManager1.closeConnection(
|
|
243
|
+
connectionManager1.closeConnection(connectionManager2.getPeerDescriptor())
|
|
248
244
|
|
|
249
245
|
await Promise.all([disconnectedPromise1, disconnectedPromise2])
|
|
250
246
|
|
|
@@ -254,8 +250,10 @@ describe('ConnectionManager', () => {
|
|
|
254
250
|
|
|
255
251
|
it('Connects and disconnects over simulated connections', async () => {
|
|
256
252
|
const simulator2 = new Simulator()
|
|
257
|
-
const connectionManager3 = new
|
|
258
|
-
|
|
253
|
+
const connectionManager3 = new SimulatorTransport(mockPeerDescriptor3, simulator2)
|
|
254
|
+
await connectionManager3.start()
|
|
255
|
+
const connectionManager4 = new SimulatorTransport(mockPeerDescriptor4, simulator2)
|
|
256
|
+
await connectionManager4.start()
|
|
259
257
|
|
|
260
258
|
const msg: Message = {
|
|
261
259
|
serviceId,
|
|
@@ -275,25 +273,25 @@ describe('ConnectionManager', () => {
|
|
|
275
273
|
})
|
|
276
274
|
|
|
277
275
|
const connectedPromise1 = new Promise<void>((resolve, _reject) => {
|
|
278
|
-
connectionManager4.on('connected', (
|
|
276
|
+
connectionManager4.on('connected', () => {
|
|
279
277
|
resolve()
|
|
280
278
|
})
|
|
281
279
|
})
|
|
282
280
|
|
|
283
281
|
const connectedPromise2 = new Promise<void>((resolve, _reject) => {
|
|
284
|
-
connectionManager3.on('connected', (
|
|
282
|
+
connectionManager3.on('connected', () => {
|
|
285
283
|
resolve()
|
|
286
284
|
})
|
|
287
285
|
})
|
|
288
286
|
|
|
289
287
|
const disconnectedPromise1 = new Promise<void>((resolve, _reject) => {
|
|
290
|
-
connectionManager4.on('disconnected', (
|
|
288
|
+
connectionManager4.on('disconnected', () => {
|
|
291
289
|
resolve()
|
|
292
290
|
})
|
|
293
291
|
})
|
|
294
292
|
|
|
295
293
|
const disconnectedPromise2 = new Promise<void>((resolve, _reject) => {
|
|
296
|
-
connectionManager3.on('disconnected', (
|
|
294
|
+
connectionManager3.on('disconnected', () => {
|
|
297
295
|
resolve()
|
|
298
296
|
})
|
|
299
297
|
})
|
|
@@ -310,17 +308,16 @@ describe('ConnectionManager', () => {
|
|
|
310
308
|
})
|
|
311
309
|
|
|
312
310
|
it('Cannot send to own WebSocketServer if kademliaIds do not match', async () => {
|
|
313
|
-
const connectionManager1 =
|
|
314
|
-
|
|
311
|
+
const connectionManager1 = createConnectionManager({
|
|
312
|
+
transport: mockTransport,
|
|
315
313
|
websocketHost: '127.0.0.1',
|
|
316
314
|
websocketPortRange: { min: 10001, max: 10001 }
|
|
317
315
|
})
|
|
318
316
|
|
|
319
|
-
await connectionManager1.start(
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
})
|
|
317
|
+
await connectionManager1.start()
|
|
318
|
+
expect(createOwnPeerDescriptor.mock.calls[0][0].host).toEqual('127.0.0.1')
|
|
319
|
+
expect(createOwnPeerDescriptor.mock.calls[0][0].openInternet).toEqual(true)
|
|
320
|
+
|
|
324
321
|
const peerDescriptor = connectionManager1.getPeerDescriptor()
|
|
325
322
|
peerDescriptor.kademliaId = new Uint8Array([12, 12, 12, 12])
|
|
326
323
|
const msg: Message = {
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { LatencyType, Simulator } from '../../src/connection/Simulator/Simulator'
|
|
2
|
+
import { getRandomRegion } from '../../src/connection/Simulator/pings'
|
|
3
|
+
import { DhtNode } from '../../src/dht/DhtNode'
|
|
4
|
+
import { NodeType } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
5
|
+
import { createMockConnectionDhtNode } from '../utils/utils'
|
|
6
|
+
|
|
7
|
+
const NUM_OF_NODES_PER_KBUCKET = 8
|
|
8
|
+
|
|
9
|
+
const runTest = async (latencyType: LatencyType) => {
|
|
10
|
+
const simulator = new Simulator(latencyType)
|
|
11
|
+
const entryPointId = '0'
|
|
12
|
+
const entryPoint = await createMockConnectionDhtNode(entryPointId, simulator, undefined, NUM_OF_NODES_PER_KBUCKET)
|
|
13
|
+
const entrypointDescriptor = {
|
|
14
|
+
kademliaId: entryPoint.getNodeId().value,
|
|
15
|
+
type: NodeType.NODEJS,
|
|
16
|
+
region: getRandomRegion()
|
|
17
|
+
}
|
|
18
|
+
const nodes: DhtNode[] = []
|
|
19
|
+
for (let i = 1; i < 100; i++) {
|
|
20
|
+
const nodeId = `${i}`
|
|
21
|
+
const node = await createMockConnectionDhtNode(nodeId, simulator, undefined, NUM_OF_NODES_PER_KBUCKET)
|
|
22
|
+
nodes.push(node)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
await entryPoint.joinDht([entrypointDescriptor])
|
|
26
|
+
await Promise.all(nodes.map((node) => node.joinDht([entrypointDescriptor])))
|
|
27
|
+
nodes.forEach((node) => {
|
|
28
|
+
expect(node.getBucketSize()).toBeGreaterThanOrEqual(NUM_OF_NODES_PER_KBUCKET / 2)
|
|
29
|
+
expect(node.getClosestContacts().length).toBeGreaterThanOrEqual(NUM_OF_NODES_PER_KBUCKET / 2)
|
|
30
|
+
})
|
|
31
|
+
expect(entryPoint.getBucketSize()).toBeGreaterThanOrEqual(NUM_OF_NODES_PER_KBUCKET / 2)
|
|
32
|
+
|
|
33
|
+
await Promise.all([
|
|
34
|
+
entryPoint.stop(),
|
|
35
|
+
...nodes.map((node) => node.stop())
|
|
36
|
+
])
|
|
37
|
+
simulator.stop()
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
describe('DhtJoinPeerDiscovery', () => {
|
|
41
|
+
|
|
42
|
+
it('latency: none', async () => {
|
|
43
|
+
await runTest(LatencyType.NONE)
|
|
44
|
+
}, 60 * 1000)
|
|
45
|
+
|
|
46
|
+
it('latency: random', async () => {
|
|
47
|
+
await runTest(LatencyType.RANDOM)
|
|
48
|
+
}, 60 * 1000)
|
|
49
|
+
|
|
50
|
+
it('latency: real', async () => {
|
|
51
|
+
await runTest(LatencyType.REAL)
|
|
52
|
+
}, 60 * 1000)
|
|
53
|
+
})
|
|
@@ -4,8 +4,6 @@ import { DhtRpcServiceClient } from '../../src/proto/packages/dht/protos/DhtRpc.
|
|
|
4
4
|
import { generateId } from '../utils/utils'
|
|
5
5
|
import { ClosestPeersRequest, ClosestPeersResponse, NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
6
6
|
import { wait } from '@streamr/utils'
|
|
7
|
-
import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
|
|
8
|
-
import { DhtCallContext } from '../../src/rpc-protocol/DhtCallContext'
|
|
9
7
|
import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
|
|
10
8
|
|
|
11
9
|
describe('DhtRpc', () => {
|
|
@@ -24,7 +22,7 @@ describe('DhtRpc', () => {
|
|
|
24
22
|
type: NodeType.NODEJS
|
|
25
23
|
}
|
|
26
24
|
|
|
27
|
-
const outgoingListener2 = (message: RpcMessage
|
|
25
|
+
const outgoingListener2 = (message: RpcMessage) => {
|
|
28
26
|
rpcCommunicator1.handleIncomingMessage(message)
|
|
29
27
|
}
|
|
30
28
|
|
|
@@ -35,7 +33,7 @@ describe('DhtRpc', () => {
|
|
|
35
33
|
rpcCommunicator2 = new RpcCommunicator()
|
|
36
34
|
rpcCommunicator2.registerRpcMethod(ClosestPeersRequest, ClosestPeersResponse, 'getClosestPeers', MockDhtRpc.getClosestPeers)
|
|
37
35
|
|
|
38
|
-
rpcCommunicator1.on('outgoingMessage', (message: RpcMessage
|
|
36
|
+
rpcCommunicator1.on('outgoingMessage', (message: RpcMessage) => {
|
|
39
37
|
rpcCommunicator2.handleIncomingMessage(message)
|
|
40
38
|
})
|
|
41
39
|
|
|
@@ -74,7 +72,7 @@ describe('DhtRpc', () => {
|
|
|
74
72
|
|
|
75
73
|
it('Default RPC timeout, client side', async () => {
|
|
76
74
|
rpcCommunicator2.off('outgoingMessage', outgoingListener2)
|
|
77
|
-
rpcCommunicator2.on('outgoingMessage', async (
|
|
75
|
+
rpcCommunicator2.on('outgoingMessage', async () => {
|
|
78
76
|
await wait(3000)
|
|
79
77
|
})
|
|
80
78
|
const response2 = client2.getClosestPeers(
|
|
@@ -92,7 +90,7 @@ describe('DhtRpc', () => {
|
|
|
92
90
|
it('Server side timeout', async () => {
|
|
93
91
|
let timeout: NodeJS.Timeout
|
|
94
92
|
|
|
95
|
-
async function respondGetClosestPeersWithTimeout(
|
|
93
|
+
async function respondGetClosestPeersWithTimeout(): Promise<ClosestPeersResponse> {
|
|
96
94
|
const neighbors = getMockPeers()
|
|
97
95
|
const response: ClosestPeersResponse = {
|
|
98
96
|
peers: neighbors,
|
|
@@ -3,7 +3,9 @@ import { PeerID } from '../../src/helpers/PeerID'
|
|
|
3
3
|
import { DhtNode } from '../../src/dht/DhtNode'
|
|
4
4
|
import { createMockConnectionDhtNode, createMockConnectionLayer1Node } from '../utils/utils'
|
|
5
5
|
import { UUID } from '../../src/helpers/UUID'
|
|
6
|
-
import { NodeType } from '../../src/
|
|
6
|
+
import { NodeType } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
7
|
+
|
|
8
|
+
const NUM_OF_NODES_PER_KBUCKET = 8
|
|
7
9
|
|
|
8
10
|
describe('Layer1', () => {
|
|
9
11
|
|
|
@@ -12,8 +14,7 @@ describe('Layer1', () => {
|
|
|
12
14
|
|
|
13
15
|
const entryPoint0Descriptor = {
|
|
14
16
|
kademliaId: PeerID.fromString(layer0EntryPointId).value,
|
|
15
|
-
type: NodeType.NODEJS
|
|
16
|
-
nodeName: layer0EntryPointId
|
|
17
|
+
type: NodeType.NODEJS
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
let layer0EntryPoint: DhtNode
|
|
@@ -38,7 +39,6 @@ describe('Layer1', () => {
|
|
|
38
39
|
undefined,
|
|
39
40
|
undefined,
|
|
40
41
|
undefined,
|
|
41
|
-
undefined,
|
|
42
42
|
60000
|
|
43
43
|
)
|
|
44
44
|
nodes.push(node)
|
|
@@ -63,7 +63,7 @@ describe('Layer1', () => {
|
|
|
63
63
|
const layer1Nodes: DhtNode[] = []
|
|
64
64
|
for (let i = 0; i < NODE_COUNT; i++) {
|
|
65
65
|
const layer0 = nodes[i]
|
|
66
|
-
const layer1 = await createMockConnectionLayer1Node(layer0.getNodeId().toString(), layer0)
|
|
66
|
+
const layer1 = await createMockConnectionLayer1Node(layer0.getNodeId().toString(), layer0, undefined, NUM_OF_NODES_PER_KBUCKET)
|
|
67
67
|
layer1Nodes.push(layer1)
|
|
68
68
|
layer1CleanUp.push(layer1)
|
|
69
69
|
}
|
|
@@ -75,7 +75,7 @@ describe('Layer1', () => {
|
|
|
75
75
|
const layer1Node = layer1Nodes[i]
|
|
76
76
|
expect(layer1Node.getNodeId().equals(layer0Node.getNodeId())).toEqual(true)
|
|
77
77
|
expect(layer1Node.getNumberOfConnections()).toEqual(layer0Node.getNumberOfConnections())
|
|
78
|
-
expect(layer1Node.getBucketSize()).toBeGreaterThanOrEqual(
|
|
78
|
+
expect(layer1Node.getBucketSize()).toBeGreaterThanOrEqual(NUM_OF_NODES_PER_KBUCKET / 2)
|
|
79
79
|
expect(layer1Node.getAllConnectionPeerDescriptors()).toEqual(layer0Node.getAllConnectionPeerDescriptors())
|
|
80
80
|
}
|
|
81
81
|
}, 120000)
|
|
@@ -163,8 +163,8 @@ describe('Layer1', () => {
|
|
|
163
163
|
//
|
|
164
164
|
// await Promise.all(layer1Nodes.map((node) => node.joinDht(entryPoint0Descriptor)))
|
|
165
165
|
//
|
|
166
|
-
// layer1Nodes.
|
|
167
|
-
// layer1Nodes.
|
|
166
|
+
// layer1Nodes.forEach((sender) => {
|
|
167
|
+
// layer1Nodes.forEach(async (receiver) => {
|
|
168
168
|
// if (!sender.getNodeId().equals(receiver.getNodeId())) {
|
|
169
169
|
// const rpcWrapper = createWrappedClosestPeersRequest(sender.getPeerDescriptor(), receiver.getPeerDescriptor())
|
|
170
170
|
// const message: Message = {
|
|
@@ -6,7 +6,8 @@ import { createMockConnectionDhtNode, waitNodesReadyForTesting } from '../utils/
|
|
|
6
6
|
import { execSync } from 'child_process'
|
|
7
7
|
import fs from 'fs'
|
|
8
8
|
import { Logger } from '@streamr/utils'
|
|
9
|
-
import { PeerID } from '../../src/
|
|
9
|
+
import { PeerID } from '../../src/helpers/PeerID'
|
|
10
|
+
import { keyFromPeerDescriptor } from '../../src/helpers/peerIdFromPeerDescriptor'
|
|
10
11
|
import { Any } from '../../src/proto/google/protobuf/any'
|
|
11
12
|
import { SortedContactList } from '../../src/dht/contact/SortedContactList'
|
|
12
13
|
import { Contact } from '../../src/dht/contact/Contact'
|
|
@@ -41,14 +42,13 @@ describe('Migrating data from node to node in DHT', () => {
|
|
|
41
42
|
nodes = []
|
|
42
43
|
const entryPointId = '0'
|
|
43
44
|
entryPoint = await createMockConnectionDhtNode(entryPointId, simulator,
|
|
44
|
-
Uint8Array.from(dhtIds[0].data), K,
|
|
45
|
+
Uint8Array.from(dhtIds[0].data), K, MAX_CONNECTIONS)
|
|
45
46
|
nodes.push(entryPoint)
|
|
46
47
|
nodesById.set(entryPoint.getNodeId().toKey(), entryPoint)
|
|
47
48
|
|
|
48
49
|
entrypointDescriptor = {
|
|
49
50
|
kademliaId: entryPoint.getNodeId().value,
|
|
50
|
-
type: NodeType.NODEJS
|
|
51
|
-
nodeName: entryPointId
|
|
51
|
+
type: NodeType.NODEJS
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
nodes.push(entryPoint)
|
|
@@ -57,7 +57,7 @@ describe('Migrating data from node to node in DHT', () => {
|
|
|
57
57
|
const nodeId = `${i}`
|
|
58
58
|
|
|
59
59
|
const node = await createMockConnectionDhtNode(nodeId, simulator,
|
|
60
|
-
Uint8Array.from(dhtIds[i].data), K,
|
|
60
|
+
Uint8Array.from(dhtIds[i].data), K, MAX_CONNECTIONS)
|
|
61
61
|
nodesById.set(node.getNodeId().toKey(), node)
|
|
62
62
|
nodes.push(node)
|
|
63
63
|
}
|
|
@@ -91,7 +91,7 @@ describe('Migrating data from node to node in DHT', () => {
|
|
|
91
91
|
|
|
92
92
|
logger.info('Nodes sorted according to distance to data are: ')
|
|
93
93
|
closest.forEach((contact) => {
|
|
94
|
-
logger.info(
|
|
94
|
+
logger.info(keyFromPeerDescriptor(contact.getPeerDescriptor()))
|
|
95
95
|
})
|
|
96
96
|
|
|
97
97
|
logger.info('node 0 joining to the DHT')
|
|
@@ -114,13 +114,13 @@ describe('Migrating data from node to node in DHT', () => {
|
|
|
114
114
|
hasDataMarker = '<-'
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
-
logger.info(contact.getPeerDescriptor()
|
|
117
|
+
logger.info(keyFromPeerDescriptor(contact.getPeerDescriptor()) + ' ' + keyFromPeerDescriptor(node.getPeerDescriptor()) + hasDataMarker)
|
|
118
118
|
})
|
|
119
119
|
|
|
120
120
|
logger.info(NUM_NODES + ' nodes joining layer0 DHT')
|
|
121
121
|
await Promise.all(
|
|
122
122
|
nodes.map((node) => {
|
|
123
|
-
if (node.getPeerDescriptor()
|
|
123
|
+
if (keyFromPeerDescriptor(node.getPeerDescriptor()) != '0') {
|
|
124
124
|
node.joinDht([entrypointDescriptor])
|
|
125
125
|
}
|
|
126
126
|
})
|
|
@@ -142,7 +142,7 @@ describe('Migrating data from node to node in DHT', () => {
|
|
|
142
142
|
hasDataMarker = '<-'
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
-
logger.info(
|
|
145
|
+
logger.info(keyFromPeerDescriptor(node.getPeerDescriptor()) + hasDataMarker)
|
|
146
146
|
})
|
|
147
147
|
|
|
148
148
|
const closestNode = nodesById.get(PeerID.fromValue(closest[0].getPeerDescriptor().kademliaId).toKey())!
|
|
@@ -52,8 +52,7 @@ describe('Layer 1 on Layer 0 with mocked connections', () => {
|
|
|
52
52
|
|
|
53
53
|
entryPointDescriptor = {
|
|
54
54
|
kademliaId: layer0EntryPoint.getNodeId().value,
|
|
55
|
-
type: NodeType.NODEJS
|
|
56
|
-
nodeName: layer0EntryPointId
|
|
55
|
+
type: NodeType.NODEJS
|
|
57
56
|
}
|
|
58
57
|
|
|
59
58
|
await layer0EntryPoint.joinDht([entryPointDescriptor])
|
|
@@ -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 { PeerID
|
|
5
|
+
import { PeerID } from '../../src/helpers/PeerID'
|
|
6
|
+
import { peerIdFromPeerDescriptor } from '../../src/helpers/peerIdFromPeerDescriptor'
|
|
6
7
|
|
|
7
8
|
describe('Recursive find correctness', () => {
|
|
8
9
|
|
|
@@ -16,16 +17,15 @@ describe('Recursive find correctness', () => {
|
|
|
16
17
|
beforeEach(async () => {
|
|
17
18
|
nodes = []
|
|
18
19
|
const entryPointId = '0'
|
|
19
|
-
entryPoint = await createMockConnectionDhtNode(entryPointId, simulator, undefined, K
|
|
20
|
+
entryPoint = await createMockConnectionDhtNode(entryPointId, simulator, undefined, K)
|
|
20
21
|
nodes.push(entryPoint)
|
|
21
22
|
entrypointDescriptor = {
|
|
22
23
|
kademliaId: entryPoint.getNodeId().value,
|
|
23
|
-
type: NodeType.NODEJS
|
|
24
|
-
nodeName: entryPointId
|
|
24
|
+
type: NodeType.NODEJS
|
|
25
25
|
}
|
|
26
26
|
for (let i = 1; i < NUM_NODES; i++) {
|
|
27
27
|
const nodeId = `${i}`
|
|
28
|
-
const node = await createMockConnectionDhtNode(nodeId, simulator, undefined, K,
|
|
28
|
+
const node = await createMockConnectionDhtNode(nodeId, simulator, undefined, K, 20, 60000)
|
|
29
29
|
nodes.push(node)
|
|
30
30
|
}
|
|
31
31
|
await entryPoint.joinDht([entrypointDescriptor])
|