@streamr/dht 102.0.0-beta.0 → 102.0.0-beta.2
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/generated/packages/dht/protos/DhtRpc.d.ts +16 -8
- package/dist/generated/packages/dht/protos/DhtRpc.js +7 -5
- package/dist/generated/packages/dht/protos/DhtRpc.js.map +1 -1
- package/dist/package.json +15 -16
- package/dist/src/connection/ConnectionManager.js +18 -8
- package/dist/src/connection/ConnectionManager.js.map +1 -1
- package/dist/src/connection/Handshaker.d.ts +1 -1
- package/dist/src/connection/Handshaker.js +9 -5
- package/dist/src/connection/Handshaker.js.map +1 -1
- package/dist/src/connection/ManagedConnection.js +17 -7
- package/dist/src/connection/ManagedConnection.js.map +1 -1
- package/dist/src/connection/connectivityChecker.js +20 -10
- package/dist/src/connection/connectivityChecker.js.map +1 -1
- package/dist/src/connection/connectivityRequestHandler.js +3 -3
- package/dist/src/connection/connectivityRequestHandler.js.map +1 -1
- package/dist/src/connection/simulator/Simulator.js +3 -2
- package/dist/src/connection/simulator/Simulator.js.map +1 -1
- package/dist/src/connection/simulator/pings.d.ts +1 -1
- package/dist/src/connection/simulator/pings.js +3 -3
- package/dist/src/connection/simulator/pings.js.map +1 -1
- package/dist/src/connection/webrtc/NodeWebrtcConnection.js +0 -2
- package/dist/src/connection/webrtc/NodeWebrtcConnection.js.map +1 -1
- package/dist/src/connection/webrtc/WebrtcConnector.js +19 -9
- package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -1
- package/dist/src/connection/webrtc/iceServerAsString.js +1 -2
- package/dist/src/connection/webrtc/iceServerAsString.js.map +1 -1
- package/dist/src/connection/websocket/AbstractWebsocketClientConnection.d.ts +0 -2
- package/dist/src/connection/websocket/WebsocketClientConnectorRpcLocal.d.ts +0 -1
- package/dist/src/connection/websocket/WebsocketServerConnection.d.ts +0 -1
- package/dist/src/connection/websocket/WebsocketServerConnector.js +28 -18
- package/dist/src/connection/websocket/WebsocketServerConnector.js.map +1 -1
- package/dist/src/dht/DhtNode.d.ts +1 -0
- package/dist/src/dht/DhtNode.js +3 -2
- package/dist/src/dht/DhtNode.js.map +1 -1
- package/dist/src/dht/DhtNodeRpcLocal.d.ts +1 -1
- package/dist/src/dht/PeerManager.d.ts +2 -1
- package/dist/src/dht/PeerManager.js +2 -1
- package/dist/src/dht/PeerManager.js.map +1 -1
- package/dist/src/dht/contact/SortedContactList.js +1 -1
- package/dist/src/dht/contact/SortedContactList.js.map +1 -1
- package/dist/src/dht/discovery/DiscoverySession.d.ts +0 -1
- package/dist/src/dht/discovery/PeerDiscovery.d.ts +0 -1
- package/dist/src/dht/discovery/RingDiscoverySession.d.ts +0 -1
- package/dist/src/dht/recursive-operation/RecursiveOperationManager.d.ts +2 -2
- package/dist/src/dht/routing/DuplicateDetector.js.map +1 -1
- package/dist/src/dht/routing/RoutingSession.js +2 -2
- package/dist/src/dht/routing/RoutingSession.js.map +1 -1
- package/dist/src/dht/routing/RoutingTablesCache.d.ts +1 -1
- package/dist/src/dht/store/LocalDataStore.js +1 -1
- package/dist/src/dht/store/LocalDataStore.js.map +1 -1
- package/dist/src/dht/store/StoreManager.d.ts +1 -1
- package/dist/src/dht/store/StoreRpcLocal.d.ts +1 -1
- package/dist/src/helpers/AddressTools.js +2 -3
- package/dist/src/helpers/AddressTools.js.map +1 -1
- package/dist/src/helpers/debugHelpers.js +2 -2
- package/dist/src/helpers/debugHelpers.js.map +1 -1
- package/dist/src/helpers/protoClasses.d.ts +1 -1
- package/dist/src/helpers/protoClasses.js.map +1 -1
- package/dist/src/helpers/protoToString.js +1 -2
- package/dist/src/helpers/protoToString.js.map +1 -1
- package/dist/src/helpers/version.d.ts +1 -1
- package/dist/src/helpers/version.js +4 -4
- package/dist/src/helpers/version.js.map +1 -1
- package/eslint.config.mjs +12 -0
- package/jest.config.ts +12 -0
- package/package.json +15 -16
- package/protos/DhtRpc.proto +6 -4
- package/.eslintignore +0 -5
- package/.eslintrc +0 -3
- package/generated/google/protobuf/any.ts +0 -326
- package/generated/google/protobuf/empty.ts +0 -81
- package/generated/google/protobuf/timestamp.ts +0 -287
- package/generated/packages/dht/protos/DhtRpc.client.ts +0 -419
- package/generated/packages/dht/protos/DhtRpc.server.ts +0 -165
- package/generated/packages/dht/protos/DhtRpc.ts +0 -1266
- package/generated/packages/proto-rpc/protos/ProtoRpc.ts +0 -108
- package/jest.config.js +0 -5
- package/src/connection/Connection.ts +0 -28
- package/src/connection/ConnectionLockRpcLocal.ts +0 -78
- package/src/connection/ConnectionLockRpcRemote.ts +0 -64
- package/src/connection/ConnectionLockStates.ts +0 -131
- package/src/connection/ConnectionManager.ts +0 -661
- package/src/connection/ConnectionsView.ts +0 -8
- package/src/connection/ConnectorFacade.ts +0 -217
- package/src/connection/Handshaker.ts +0 -205
- package/src/connection/IConnection.ts +0 -40
- package/src/connection/ManagedConnection.ts +0 -113
- package/src/connection/OutputBuffer.ts +0 -28
- package/src/connection/PendingConnection.ts +0 -68
- package/src/connection/connectivityChecker.ts +0 -108
- package/src/connection/connectivityRequestHandler.ts +0 -116
- package/src/connection/simulator/Simulator.ts +0 -368
- package/src/connection/simulator/SimulatorConnection.ts +0 -137
- package/src/connection/simulator/SimulatorConnector.ts +0 -98
- package/src/connection/simulator/SimulatorTransport.ts +0 -15
- package/src/connection/simulator/pings.ts +0 -42
- package/src/connection/webrtc/BrowserWebrtcConnection.ts +0 -242
- package/src/connection/webrtc/IWebrtcConnection.ts +0 -24
- package/src/connection/webrtc/NodeWebrtcConnection.ts +0 -247
- package/src/connection/webrtc/WebrtcConnector.ts +0 -234
- package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +0 -108
- package/src/connection/webrtc/WebrtcConnectorRpcRemote.ts +0 -60
- package/src/connection/webrtc/iceServerAsString.ts +0 -15
- package/src/connection/websocket/AbstractWebsocketClientConnection.ts +0 -122
- package/src/connection/websocket/AutoCertifierClientFacade.ts +0 -89
- package/src/connection/websocket/BrowserWebsocketClientConnection.ts +0 -44
- package/src/connection/websocket/NodeWebsocketClientConnection.ts +0 -39
- package/src/connection/websocket/WebsocketClientConnector.ts +0 -119
- package/src/connection/websocket/WebsocketClientConnectorRpcLocal.ts +0 -38
- package/src/connection/websocket/WebsocketClientConnectorRpcRemote.ts +0 -19
- package/src/connection/websocket/WebsocketServer.ts +0 -164
- package/src/connection/websocket/WebsocketServerConnection.ts +0 -109
- package/src/connection/websocket/WebsocketServerConnector.ts +0 -286
- package/src/dht/DhtNode.ts +0 -678
- package/src/dht/DhtNodeRpcLocal.ts +0 -84
- package/src/dht/DhtNodeRpcRemote.ts +0 -107
- package/src/dht/ExternalApiRpcLocal.ts +0 -58
- package/src/dht/ExternalApiRpcRemote.ts +0 -41
- package/src/dht/PeerManager.ts +0 -303
- package/src/dht/contact/Contact.ts +0 -19
- package/src/dht/contact/ContactList.ts +0 -43
- package/src/dht/contact/RandomContactList.ts +0 -56
- package/src/dht/contact/RingContactList.ts +0 -143
- package/src/dht/contact/RpcRemote.ts +0 -72
- package/src/dht/contact/SortedContactList.ts +0 -173
- package/src/dht/contact/getClosestNodes.ts +0 -24
- package/src/dht/contact/ringIdentifiers.ts +0 -62
- package/src/dht/discovery/DiscoverySession.ts +0 -129
- package/src/dht/discovery/PeerDiscovery.ts +0 -244
- package/src/dht/discovery/RingDiscoverySession.ts +0 -148
- package/src/dht/recursive-operation/RecursiveOperationManager.ts +0 -251
- package/src/dht/recursive-operation/RecursiveOperationRpcLocal.ts +0 -34
- package/src/dht/recursive-operation/RecursiveOperationRpcRemote.ts +0 -43
- package/src/dht/recursive-operation/RecursiveOperationSession.ts +0 -231
- package/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.ts +0 -35
- package/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.ts +0 -30
- package/src/dht/routing/DuplicateDetector.ts +0 -34
- package/src/dht/routing/Router.ts +0 -246
- package/src/dht/routing/RouterRpcLocal.ts +0 -78
- package/src/dht/routing/RouterRpcRemote.ts +0 -80
- package/src/dht/routing/RoutingSession.ts +0 -243
- package/src/dht/routing/RoutingTablesCache.ts +0 -60
- package/src/dht/routing/getPreviousPeer.ts +0 -6
- package/src/dht/store/LocalDataStore.ts +0 -84
- package/src/dht/store/StoreManager.ts +0 -170
- package/src/dht/store/StoreRpcLocal.ts +0 -89
- package/src/dht/store/StoreRpcRemote.ts +0 -32
- package/src/exports.ts +0 -33
- package/src/helpers/AddressTools.ts +0 -28
- package/src/helpers/Connectivity.ts +0 -19
- package/src/helpers/browser/isBrowserEnvironment.ts +0 -1
- package/src/helpers/browser/isBrowserEnvironment_override.ts +0 -3
- package/src/helpers/createPeerDescriptor.ts +0 -57
- package/src/helpers/createPeerDescriptorSignaturePayload.ts +0 -28
- package/src/helpers/debugHelpers.ts +0 -9
- package/src/helpers/errors.ts +0 -49
- package/src/helpers/offering.ts +0 -15
- package/src/helpers/protoClasses.ts +0 -57
- package/src/helpers/protoToString.ts +0 -21
- package/src/helpers/version.ts +0 -32
- package/src/identifiers.ts +0 -29
- package/src/rpc-protocol/DhtCallContext.ts +0 -14
- package/src/rpc-protocol/DhtRpcOptions.ts +0 -10
- package/src/transport/ITransport.ts +0 -37
- package/src/transport/ListeningRpcCommunicator.ts +0 -32
- package/src/transport/RoutingRpcCommunicator.ts +0 -66
- package/src/types/ServiceID.ts +0 -1
- package/src/types/textencoding.d.ts +0 -6
- package/test/benchmark/Find.test.ts +0 -72
- package/test/benchmark/KademliaCorrectness.test.ts +0 -114
- package/test/benchmark/RingCorrectness.test.ts +0 -157
- package/test/benchmark/SortedContactListBenchmark.test.ts +0 -108
- package/test/benchmark/WebsocketServerMemoryLeak.test.ts +0 -41
- package/test/benchmark/hybrid-network-simulation/RingContactList.test.ts +0 -71
- package/test/end-to-end/GeoIpLayer0.test.ts +0 -55
- package/test/end-to-end/Layer0-Layer1.test.ts +0 -93
- package/test/end-to-end/Layer0.test.ts +0 -76
- package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +0 -110
- package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +0 -137
- package/test/end-to-end/Layer0Webrtc.test.ts +0 -85
- package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +0 -82
- package/test/end-to-end/Layer1-Scale-Webrtc.test.ts +0 -76
- package/test/end-to-end/RecoveryFromFailedAutoCertification.test.ts +0 -52
- package/test/end-to-end/WebsocketConnectionRequest.test.ts +0 -69
- package/test/end-to-end/memory-leak.test.ts +0 -80
- package/test/integration/ConnectionLocking.test.ts +0 -182
- package/test/integration/ConnectionManager.test.ts +0 -528
- package/test/integration/ConnectivityChecking.test.ts +0 -53
- package/test/integration/DhtJoinPeerDiscovery.test.ts +0 -49
- package/test/integration/DhtNode.test.ts +0 -66
- package/test/integration/DhtNodeExternalAPI.test.ts +0 -48
- package/test/integration/DhtNodeRpcRemote.test.ts +0 -66
- package/test/integration/DhtRpc.test.ts +0 -121
- package/test/integration/Find.test.ts +0 -45
- package/test/integration/GeoIpConnectivityChecking.test.ts +0 -72
- package/test/integration/Layer1-scale.test.ts +0 -189
- package/test/integration/Mock-Layer1-Layer0.test.ts +0 -85
- package/test/integration/MultipleEntryPointJoining.test.ts +0 -105
- package/test/integration/ReplicateData.test.ts +0 -104
- package/test/integration/RouteMessage.test.ts +0 -230
- package/test/integration/RouterRpcRemote.test.ts +0 -77
- package/test/integration/SimultaneousConnections.test.ts +0 -316
- package/test/integration/Store.test.ts +0 -85
- package/test/integration/StoreAndDelete.test.ts +0 -77
- package/test/integration/StoreOnDhtWithThreeNodes.test.ts +0 -59
- package/test/integration/StoreOnDhtWithTwoNodes.test.ts +0 -51
- package/test/integration/StoreRpcRemote.test.ts +0 -54
- package/test/integration/WebrtcConnectionManagement.test.ts +0 -219
- package/test/integration/WebrtcConnectorRpc.test.ts +0 -125
- package/test/integration/Websocket.test.ts +0 -65
- package/test/integration/WebsocketClientConnectorRpc.test.ts +0 -69
- package/test/integration/WebsocketConnectionManagement.test.ts +0 -191
- package/test/integration/rpc-connections-over-webrtc.test.ts +0 -158
- package/test/kademlia-simulation/data/nodeids.json +0 -13002
- package/test/kademlia-simulation/data/orderedneighbors.json +0 -1001
- package/test/types/global.d.ts +0 -1
- package/test/unit/AddressTools.test.ts +0 -44
- package/test/unit/AutoCertifierClientFacade.test.ts +0 -58
- package/test/unit/ConnectionManager.test.ts +0 -65
- package/test/unit/ConnectivityHelpers.test.ts +0 -61
- package/test/unit/DiscoverySession.test.ts +0 -87
- package/test/unit/DuplicateDetector.test.ts +0 -31
- package/test/unit/Handshaker.test.ts +0 -169
- package/test/unit/ListeningRpcCommunicator.test.ts +0 -52
- package/test/unit/LocalDataStore.test.ts +0 -108
- package/test/unit/ManagedConnection.test.ts +0 -58
- package/test/unit/PeerManager.test.ts +0 -93
- package/test/unit/PendingConnection.test.ts +0 -57
- package/test/unit/ProtobufMessage.test.ts +0 -21
- package/test/unit/RandomContactList.test.ts +0 -58
- package/test/unit/RecursiveOperationManager.test.ts +0 -161
- package/test/unit/RecursiveOperationSession.test.ts +0 -68
- package/test/unit/Router.test.ts +0 -137
- package/test/unit/RoutingSession.test.ts +0 -79
- package/test/unit/SortedContactList.test.ts +0 -115
- package/test/unit/StoreManager.test.ts +0 -146
- package/test/unit/StoreRpcLocal.test.ts +0 -167
- package/test/unit/WebrtcConnection.test.ts +0 -29
- package/test/unit/WebrtcConnector.test.ts +0 -56
- package/test/unit/WebsocketClientConnector.test.ts +0 -101
- package/test/unit/WebsocketServer.test.ts +0 -66
- package/test/unit/WebsocketServerConnector.test.ts +0 -102
- package/test/unit/connectivityRequestHandler.test.ts +0 -104
- package/test/unit/createPeerDescriptor.test.ts +0 -69
- package/test/unit/customMatchers.test.ts +0 -16
- package/test/unit/getClosestNodes.test.ts +0 -30
- package/test/unit/version.test.ts +0 -18
- package/test/unit/webrtcReplaceInternalIpWithExternalIp.test.ts +0 -18
- package/test/utils/FakeConnectorFacade.ts +0 -41
- package/test/utils/FakeRpcCommunicator.ts +0 -23
- package/test/utils/FakeTransport.ts +0 -79
- package/test/utils/customMatchers.ts +0 -71
- package/test/utils/mock/MockConnection.ts +0 -26
- package/test/utils/mock/MockConnectionsView.ts +0 -18
- package/test/utils/mock/MockRouter.ts +0 -62
- package/test/utils/mock/MockRpcCommunicator.ts +0 -7
- package/test/utils/mock/MockTransport.ts +0 -26
- package/test/utils/mock/mockDataEntry.ts +0 -38
- package/test/utils/topology.ts +0 -80
- package/test/utils/utils.ts +0 -268
- package/tsconfig.browser.json +0 -17
- package/tsconfig.jest.json +0 -25
- package/tsconfig.json +0 -3
- package/tsconfig.node.json +0 -24
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
import { ConnectionManager } from '../../src/connection/ConnectionManager'
|
|
2
|
-
import { LatencyType, Simulator } from '../../src/connection/simulator/Simulator'
|
|
3
|
-
import { Message, NodeType, PeerDescriptor } from '../../generated/packages/dht/protos/DhtRpc'
|
|
4
|
-
import { RpcMessage } from '../../generated/packages/proto-rpc/protos/ProtoRpc'
|
|
5
|
-
import { ITransport } from '../../src/transport/ITransport'
|
|
6
|
-
import * as Err from '../../src/helpers/errors'
|
|
7
|
-
import { SimulatorTransport } from '../../src/connection/simulator/SimulatorTransport'
|
|
8
|
-
import { DefaultConnectorFacade } from '../../src/connection/ConnectorFacade'
|
|
9
|
-
import { MetricsContext } from '@streamr/utils'
|
|
10
|
-
import { createMockPeerDescriptor } from '../utils/utils'
|
|
11
|
-
|
|
12
|
-
const createConnectionManager = (localPeerDescriptor: PeerDescriptor, transport: ITransport) => {
|
|
13
|
-
return new ConnectionManager({
|
|
14
|
-
createConnectorFacade: () => new DefaultConnectorFacade({
|
|
15
|
-
transport,
|
|
16
|
-
createLocalPeerDescriptor: async () => localPeerDescriptor
|
|
17
|
-
}),
|
|
18
|
-
metricsContext: new MetricsContext(),
|
|
19
|
-
allowIncomingPrivateConnections: false
|
|
20
|
-
})
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
describe('WebRTC Connection Management', () => {
|
|
24
|
-
|
|
25
|
-
let manager1: ConnectionManager
|
|
26
|
-
let manager2: ConnectionManager
|
|
27
|
-
let simulator: Simulator
|
|
28
|
-
const peerDescriptor1 = createMockPeerDescriptor()
|
|
29
|
-
const peerDescriptor2 = createMockPeerDescriptor()
|
|
30
|
-
let connectorTransport1: SimulatorTransport
|
|
31
|
-
let connectorTransport2: SimulatorTransport
|
|
32
|
-
|
|
33
|
-
beforeEach(async () => {
|
|
34
|
-
simulator = new Simulator(LatencyType.FIXED, 20)
|
|
35
|
-
connectorTransport1 = new SimulatorTransport(peerDescriptor1, simulator)
|
|
36
|
-
await connectorTransport1.start()
|
|
37
|
-
manager1 = createConnectionManager(peerDescriptor1, connectorTransport1)
|
|
38
|
-
connectorTransport2 = new SimulatorTransport(peerDescriptor2, simulator)
|
|
39
|
-
await connectorTransport2.start()
|
|
40
|
-
manager2 = createConnectionManager(peerDescriptor2, connectorTransport2)
|
|
41
|
-
await manager1.start()
|
|
42
|
-
await manager2.start()
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
afterEach(async () => {
|
|
46
|
-
await Promise.all([
|
|
47
|
-
manager1.stop(),
|
|
48
|
-
manager2.stop(),
|
|
49
|
-
connectorTransport1.stop(),
|
|
50
|
-
connectorTransport2.stop()
|
|
51
|
-
])
|
|
52
|
-
simulator.stop()
|
|
53
|
-
})
|
|
54
|
-
|
|
55
|
-
const serviceId = 'dummy'
|
|
56
|
-
|
|
57
|
-
// TODO: fix flaky test, ticket NET-911
|
|
58
|
-
it('Peer1 can open WebRTC Datachannels', (done) => {
|
|
59
|
-
const dummyMessage: Message = {
|
|
60
|
-
serviceId: 'unknown',
|
|
61
|
-
body: {
|
|
62
|
-
oneofKind: 'rpcMessage',
|
|
63
|
-
rpcMessage: RpcMessage.create()
|
|
64
|
-
},
|
|
65
|
-
messageId: 'mockerer'
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
manager2.on('message', (message: Message) => {
|
|
69
|
-
expect(message.messageId).toEqual('mockerer')
|
|
70
|
-
|
|
71
|
-
done()
|
|
72
|
-
})
|
|
73
|
-
dummyMessage.targetDescriptor = peerDescriptor2
|
|
74
|
-
manager1.send(dummyMessage).catch((e) => {
|
|
75
|
-
throw e
|
|
76
|
-
})
|
|
77
|
-
}, 15000)
|
|
78
|
-
|
|
79
|
-
it('Peer2 can open WebRTC Datachannel', (done) => {
|
|
80
|
-
const dummyMessage: Message = {
|
|
81
|
-
serviceId,
|
|
82
|
-
body: {
|
|
83
|
-
oneofKind: 'rpcMessage',
|
|
84
|
-
rpcMessage: RpcMessage.create()
|
|
85
|
-
},
|
|
86
|
-
messageId: 'mockerer'
|
|
87
|
-
}
|
|
88
|
-
manager1.on('message', (message: Message) => {
|
|
89
|
-
expect(message.messageId).toEqual('mockerer')
|
|
90
|
-
done()
|
|
91
|
-
})
|
|
92
|
-
dummyMessage.targetDescriptor = peerDescriptor1
|
|
93
|
-
manager2.send(dummyMessage)
|
|
94
|
-
}, 60000)
|
|
95
|
-
|
|
96
|
-
it('Connecting to self throws', async () => {
|
|
97
|
-
const dummyMessage: Message = {
|
|
98
|
-
serviceId,
|
|
99
|
-
body: {
|
|
100
|
-
oneofKind: 'rpcMessage',
|
|
101
|
-
rpcMessage: RpcMessage.create()
|
|
102
|
-
},
|
|
103
|
-
messageId: 'mockerer'
|
|
104
|
-
}
|
|
105
|
-
dummyMessage.targetDescriptor = peerDescriptor1
|
|
106
|
-
await expect(manager1.send(dummyMessage))
|
|
107
|
-
.rejects
|
|
108
|
-
.toEqual(new Err.CannotConnectToSelf('Cannot send to self'))
|
|
109
|
-
})
|
|
110
|
-
|
|
111
|
-
it('Connects and disconnects webrtc connections', async () => {
|
|
112
|
-
const msg: Message = {
|
|
113
|
-
serviceId,
|
|
114
|
-
messageId: '1',
|
|
115
|
-
body: {
|
|
116
|
-
oneofKind: 'rpcMessage',
|
|
117
|
-
rpcMessage: RpcMessage.create()
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
const dataPromise = new Promise<void>((resolve, _reject) => {
|
|
122
|
-
manager2.on('message', async (message: Message) => {
|
|
123
|
-
expect(message.body.oneofKind).toBe('rpcMessage')
|
|
124
|
-
resolve()
|
|
125
|
-
})
|
|
126
|
-
})
|
|
127
|
-
|
|
128
|
-
const connectedPromise1 = new Promise<void>((resolve, _reject) => {
|
|
129
|
-
manager1.on('connected', () => {
|
|
130
|
-
//expect(message.body.oneofKind).toBe('rpcMessage')
|
|
131
|
-
resolve()
|
|
132
|
-
})
|
|
133
|
-
})
|
|
134
|
-
|
|
135
|
-
const connectedPromise2 = new Promise<void>((resolve, _reject) => {
|
|
136
|
-
manager2.on('connected', () => {
|
|
137
|
-
resolve()
|
|
138
|
-
})
|
|
139
|
-
})
|
|
140
|
-
|
|
141
|
-
const disconnectedPromise1 = new Promise<void>((resolve, _reject) => {
|
|
142
|
-
manager1.on('disconnected', () => {
|
|
143
|
-
resolve()
|
|
144
|
-
})
|
|
145
|
-
})
|
|
146
|
-
|
|
147
|
-
const disconnectedPromise2 = new Promise<void>((resolve, _reject) => {
|
|
148
|
-
manager2.on('disconnected', () => {
|
|
149
|
-
resolve()
|
|
150
|
-
})
|
|
151
|
-
})
|
|
152
|
-
|
|
153
|
-
msg.targetDescriptor = peerDescriptor2
|
|
154
|
-
manager1.send(msg).catch((_e) => { })
|
|
155
|
-
|
|
156
|
-
await Promise.all([dataPromise, connectedPromise1, connectedPromise2])
|
|
157
|
-
|
|
158
|
-
// @ts-expect-error private field
|
|
159
|
-
manager1.closeConnection(peerDescriptor2)
|
|
160
|
-
|
|
161
|
-
await Promise.all([disconnectedPromise1, disconnectedPromise2])
|
|
162
|
-
|
|
163
|
-
}, 20000)
|
|
164
|
-
|
|
165
|
-
it('Disconnects webrtcconnection while being connected', async () => {
|
|
166
|
-
const msg: Message = {
|
|
167
|
-
serviceId,
|
|
168
|
-
messageId: '1',
|
|
169
|
-
body: {
|
|
170
|
-
oneofKind: 'rpcMessage',
|
|
171
|
-
rpcMessage: RpcMessage.create()
|
|
172
|
-
},
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
const disconnectedPromise1 = new Promise<void>((resolve, _reject) => {
|
|
176
|
-
manager1.on('disconnected', () => {
|
|
177
|
-
resolve()
|
|
178
|
-
})
|
|
179
|
-
})
|
|
180
|
-
|
|
181
|
-
msg.targetDescriptor = peerDescriptor2
|
|
182
|
-
manager1.send(msg).catch((e) => {
|
|
183
|
-
expect(e.code).toEqual('SEND_FAILED')
|
|
184
|
-
})
|
|
185
|
-
|
|
186
|
-
// @ts-expect-error private field
|
|
187
|
-
manager1.closeConnection(peerDescriptor2)
|
|
188
|
-
|
|
189
|
-
await disconnectedPromise1
|
|
190
|
-
|
|
191
|
-
}, 20000)
|
|
192
|
-
|
|
193
|
-
it('failed connections are cleaned up', async () => {
|
|
194
|
-
const msg: Message = {
|
|
195
|
-
serviceId,
|
|
196
|
-
messageId: '1',
|
|
197
|
-
body: {
|
|
198
|
-
oneofKind: 'rpcMessage',
|
|
199
|
-
rpcMessage: RpcMessage.create()
|
|
200
|
-
},
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
const disconnectedPromise1 = new Promise<void>((resolve, _reject) => {
|
|
204
|
-
manager1.on('disconnected', () => {
|
|
205
|
-
resolve()
|
|
206
|
-
})
|
|
207
|
-
})
|
|
208
|
-
|
|
209
|
-
msg.targetDescriptor = {
|
|
210
|
-
nodeId: new Uint8Array([0, 0, 0, 0, 0]),
|
|
211
|
-
type: NodeType.NODEJS,
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
await Promise.allSettled([
|
|
215
|
-
manager1.send(msg),
|
|
216
|
-
disconnectedPromise1
|
|
217
|
-
])
|
|
218
|
-
}, 20000)
|
|
219
|
-
})
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import { ProtoRpcClient, RpcCommunicator, toProtoRpcClient } from '@streamr/proto-rpc'
|
|
2
|
-
import { WebrtcConnectorRpcClient } from '../../generated/packages/dht/protos/DhtRpc.client'
|
|
3
|
-
import {
|
|
4
|
-
IceCandidate,
|
|
5
|
-
RtcAnswer,
|
|
6
|
-
RtcOffer,
|
|
7
|
-
WebrtcConnectionRequest
|
|
8
|
-
} from '../../generated/packages/dht/protos/DhtRpc'
|
|
9
|
-
import { Empty } from '../../generated/google/protobuf/empty'
|
|
10
|
-
import { createMockPeerDescriptor } from '../utils/utils'
|
|
11
|
-
import { IWebrtcConnectorRpc } from '../../generated/packages/dht/protos/DhtRpc.server'
|
|
12
|
-
import { waitForCondition } from '@streamr/utils'
|
|
13
|
-
import { RpcMessage } from '../../generated/packages/proto-rpc/protos/ProtoRpc'
|
|
14
|
-
import { DhtCallContext } from '../../src/rpc-protocol/DhtCallContext'
|
|
15
|
-
|
|
16
|
-
describe('WebRTC rpc messages', () => {
|
|
17
|
-
|
|
18
|
-
let rpcCommunicator1: RpcCommunicator<DhtCallContext>
|
|
19
|
-
let rpcCommunicator2: RpcCommunicator<DhtCallContext>
|
|
20
|
-
let client: ProtoRpcClient<WebrtcConnectorRpcClient>
|
|
21
|
-
let requestConnectionCounter: number
|
|
22
|
-
let rtcOfferCounter: number
|
|
23
|
-
let rtcAnswerCounter: number
|
|
24
|
-
let iceCandidateCounter: number
|
|
25
|
-
const targetDescriptor = createMockPeerDescriptor()
|
|
26
|
-
|
|
27
|
-
beforeEach(() => {
|
|
28
|
-
requestConnectionCounter = 0
|
|
29
|
-
rtcOfferCounter = 0
|
|
30
|
-
rtcAnswerCounter = 0
|
|
31
|
-
iceCandidateCounter = 0
|
|
32
|
-
|
|
33
|
-
rpcCommunicator1 = new RpcCommunicator()
|
|
34
|
-
const serverFunctions: IWebrtcConnectorRpc = {
|
|
35
|
-
|
|
36
|
-
requestConnection: async (): Promise<Empty> => {
|
|
37
|
-
requestConnectionCounter += 1
|
|
38
|
-
const res: Empty = {}
|
|
39
|
-
return res
|
|
40
|
-
},
|
|
41
|
-
|
|
42
|
-
rtcOffer: async (): Promise<Empty> => {
|
|
43
|
-
rtcOfferCounter += 1
|
|
44
|
-
const res: Empty = {}
|
|
45
|
-
return res
|
|
46
|
-
},
|
|
47
|
-
|
|
48
|
-
rtcAnswer: async (): Promise<Empty> => {
|
|
49
|
-
rtcAnswerCounter += 1
|
|
50
|
-
const res: Empty = {}
|
|
51
|
-
return res
|
|
52
|
-
},
|
|
53
|
-
|
|
54
|
-
iceCandidate: async (): Promise<Empty> => {
|
|
55
|
-
iceCandidateCounter += 1
|
|
56
|
-
const res: Empty = {}
|
|
57
|
-
return res
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
rpcCommunicator2 = new RpcCommunicator()
|
|
62
|
-
rpcCommunicator2.registerRpcNotification(RtcOffer, 'rtcOffer', serverFunctions.rtcOffer)
|
|
63
|
-
rpcCommunicator2.registerRpcNotification(RtcAnswer, 'rtcAnswer', serverFunctions.rtcAnswer)
|
|
64
|
-
rpcCommunicator2.registerRpcNotification(IceCandidate, 'iceCandidate', serverFunctions.iceCandidate)
|
|
65
|
-
rpcCommunicator2.registerRpcNotification(WebrtcConnectionRequest, 'requestConnection', serverFunctions.requestConnection)
|
|
66
|
-
|
|
67
|
-
rpcCommunicator1.setOutgoingMessageListener(async (message: RpcMessage) => {
|
|
68
|
-
rpcCommunicator2.handleIncomingMessage(message, new DhtCallContext())
|
|
69
|
-
})
|
|
70
|
-
|
|
71
|
-
rpcCommunicator2.setOutgoingMessageListener(async (message: RpcMessage) => {
|
|
72
|
-
rpcCommunicator1.handleIncomingMessage(message, new DhtCallContext())
|
|
73
|
-
})
|
|
74
|
-
|
|
75
|
-
client = toProtoRpcClient(new WebrtcConnectorRpcClient(rpcCommunicator1.getRpcClientTransport()))
|
|
76
|
-
})
|
|
77
|
-
|
|
78
|
-
afterEach(async () => {
|
|
79
|
-
rpcCommunicator1.stop()
|
|
80
|
-
rpcCommunicator2.stop()
|
|
81
|
-
})
|
|
82
|
-
|
|
83
|
-
it('send connectionRequest', async () => {
|
|
84
|
-
client.requestConnection({
|
|
85
|
-
},
|
|
86
|
-
{ targetDescriptor, notification: true }
|
|
87
|
-
)
|
|
88
|
-
|
|
89
|
-
await waitForCondition(() => requestConnectionCounter === 1)
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
it('send rtcOffer', async () => {
|
|
93
|
-
client.rtcOffer({
|
|
94
|
-
connectionId: 'rtcOffer',
|
|
95
|
-
description: 'aaaaaa'
|
|
96
|
-
},
|
|
97
|
-
{ targetDescriptor, notification: true }
|
|
98
|
-
)
|
|
99
|
-
|
|
100
|
-
await waitForCondition(() => rtcOfferCounter === 1)
|
|
101
|
-
})
|
|
102
|
-
|
|
103
|
-
it('send rtcAnswer', async () => {
|
|
104
|
-
client.rtcAnswer({
|
|
105
|
-
connectionId: 'rtcOffer',
|
|
106
|
-
description: 'aaaaaa'
|
|
107
|
-
},
|
|
108
|
-
{ targetDescriptor, notification: true }
|
|
109
|
-
)
|
|
110
|
-
|
|
111
|
-
await waitForCondition(() => rtcAnswerCounter === 1)
|
|
112
|
-
})
|
|
113
|
-
|
|
114
|
-
it('send iceCandidate', async () => {
|
|
115
|
-
client.iceCandidate({
|
|
116
|
-
connectionId: 'rtcOffer',
|
|
117
|
-
candidate: 'aaaaaa',
|
|
118
|
-
mid: 'asdasdasdasdasd'
|
|
119
|
-
},
|
|
120
|
-
{ targetDescriptor, notification: true }
|
|
121
|
-
)
|
|
122
|
-
|
|
123
|
-
await waitForCondition(() => iceCandidateCounter === 1)
|
|
124
|
-
})
|
|
125
|
-
})
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { WebsocketServer } from '../../src/connection/websocket/WebsocketServer'
|
|
2
|
-
import { IConnection } from '../../src/connection/IConnection'
|
|
3
|
-
import { WebsocketClientConnection } from '../../src/connection/websocket/NodeWebsocketClientConnection'
|
|
4
|
-
import { Logger } from '@streamr/utils'
|
|
5
|
-
|
|
6
|
-
const logger = new Logger(module)
|
|
7
|
-
|
|
8
|
-
describe('Websocket', () => {
|
|
9
|
-
|
|
10
|
-
const websocketServer = new WebsocketServer({
|
|
11
|
-
portRange: { min: 9977, max: 9977 },
|
|
12
|
-
enableTls: false
|
|
13
|
-
})
|
|
14
|
-
const clientWebsocket = new WebsocketClientConnection()
|
|
15
|
-
|
|
16
|
-
beforeAll(async () => {
|
|
17
|
-
await websocketServer.start()
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
it('Happy path', (done) => {
|
|
21
|
-
|
|
22
|
-
websocketServer.on('connected', (serverConnection: IConnection) => {
|
|
23
|
-
const time = Date.now()
|
|
24
|
-
logger.info('server side sendind msg at ' + time)
|
|
25
|
-
serverConnection.send(Uint8Array.from([1, 2, 3, 4]))
|
|
26
|
-
|
|
27
|
-
const time2 = Date.now()
|
|
28
|
-
logger.info('server side setting listeners at ' + time2)
|
|
29
|
-
|
|
30
|
-
serverConnection.on('data', (bytes: Uint8Array) => {
|
|
31
|
-
const time = Date.now()
|
|
32
|
-
logger.info('server side receiving message at ' + time)
|
|
33
|
-
|
|
34
|
-
logger.info('server received:' + JSON.stringify(bytes))
|
|
35
|
-
|
|
36
|
-
expect(bytes.toString()).toBe('1,2,3,4')
|
|
37
|
-
logger.info('calling done()')
|
|
38
|
-
done()
|
|
39
|
-
})
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
clientWebsocket.on('connected', () => {
|
|
43
|
-
const time = Date.now()
|
|
44
|
-
logger.info('client side setting listeners at ' + time)
|
|
45
|
-
|
|
46
|
-
clientWebsocket.on('data', (bytes: Uint8Array) => {
|
|
47
|
-
const time = Date.now()
|
|
48
|
-
logger.info('client side receiving message at ' + time)
|
|
49
|
-
|
|
50
|
-
logger.info('client received: ' + JSON.stringify(bytes))
|
|
51
|
-
expect(bytes.toString()).toBe('1,2,3,4')
|
|
52
|
-
|
|
53
|
-
const time2 = Date.now()
|
|
54
|
-
logger.info('client side sendind msg at ' + time2)
|
|
55
|
-
clientWebsocket.send(Uint8Array.from([1, 2, 3, 4]))
|
|
56
|
-
})
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
clientWebsocket.connect('ws://127.0.0.1:9977', false)
|
|
60
|
-
})
|
|
61
|
-
|
|
62
|
-
afterAll(async () => {
|
|
63
|
-
await websocketServer.stop()
|
|
64
|
-
})
|
|
65
|
-
})
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { ProtoRpcClient, RpcCommunicator, toProtoRpcClient } from '@streamr/proto-rpc'
|
|
2
|
-
import { WebsocketClientConnectorRpcClient } from '../../generated/packages/dht/protos/DhtRpc.client'
|
|
3
|
-
import { createMockPeerDescriptor, mockWebsocketClientConnectorRpc } from '../utils/utils'
|
|
4
|
-
import { WebsocketConnectionRequest } from '../../generated/packages/dht/protos/DhtRpc'
|
|
5
|
-
import { RpcMessage } from '../../generated/packages/proto-rpc/protos/ProtoRpc'
|
|
6
|
-
import { Empty } from '../../generated/google/protobuf/empty'
|
|
7
|
-
import { DhtCallContext } from '../../src/rpc-protocol/DhtCallContext'
|
|
8
|
-
|
|
9
|
-
describe('WebsocketClientConnectorRpc', () => {
|
|
10
|
-
|
|
11
|
-
let rpcCommunicator1: RpcCommunicator<DhtCallContext>
|
|
12
|
-
let rpcCommunicator2: RpcCommunicator<DhtCallContext>
|
|
13
|
-
let client1: ProtoRpcClient<WebsocketClientConnectorRpcClient>
|
|
14
|
-
let client2: ProtoRpcClient<WebsocketClientConnectorRpcClient>
|
|
15
|
-
const peerDescriptor1 = createMockPeerDescriptor()
|
|
16
|
-
const peerDescriptor2 = createMockPeerDescriptor()
|
|
17
|
-
|
|
18
|
-
beforeEach(() => {
|
|
19
|
-
rpcCommunicator1 = new RpcCommunicator()
|
|
20
|
-
rpcCommunicator1.registerRpcMethod(
|
|
21
|
-
WebsocketConnectionRequest,
|
|
22
|
-
Empty,
|
|
23
|
-
'requestConnection',
|
|
24
|
-
mockWebsocketClientConnectorRpc.requestConnection
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
rpcCommunicator2 = new RpcCommunicator()
|
|
28
|
-
rpcCommunicator2.registerRpcMethod(
|
|
29
|
-
WebsocketConnectionRequest,
|
|
30
|
-
Empty,
|
|
31
|
-
'requestConnection',
|
|
32
|
-
mockWebsocketClientConnectorRpc.requestConnection
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
rpcCommunicator1.setOutgoingMessageListener(async (message: RpcMessage) => {
|
|
36
|
-
rpcCommunicator2.handleIncomingMessage(message, new DhtCallContext())
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
rpcCommunicator2.setOutgoingMessageListener(async (message: RpcMessage) => {
|
|
40
|
-
rpcCommunicator1.handleIncomingMessage(message, new DhtCallContext())
|
|
41
|
-
})
|
|
42
|
-
|
|
43
|
-
client1 = toProtoRpcClient(new WebsocketClientConnectorRpcClient(rpcCommunicator1.getRpcClientTransport()))
|
|
44
|
-
client2 = toProtoRpcClient(new WebsocketClientConnectorRpcClient(rpcCommunicator2.getRpcClientTransport()))
|
|
45
|
-
})
|
|
46
|
-
|
|
47
|
-
afterEach(async () => {
|
|
48
|
-
rpcCommunicator1.stop()
|
|
49
|
-
rpcCommunicator2.stop()
|
|
50
|
-
})
|
|
51
|
-
|
|
52
|
-
it('Happy path', async () => {
|
|
53
|
-
const response1 = client1.requestConnection({
|
|
54
|
-
ip: '127.0.0.1',
|
|
55
|
-
port: 9099
|
|
56
|
-
},
|
|
57
|
-
{ targetDescriptor: peerDescriptor2 },
|
|
58
|
-
)
|
|
59
|
-
await response1
|
|
60
|
-
|
|
61
|
-
const response2 = client2.requestConnection({
|
|
62
|
-
ip: '127.0.0.1',
|
|
63
|
-
port: 9111
|
|
64
|
-
},
|
|
65
|
-
{ targetDescriptor: peerDescriptor1 },
|
|
66
|
-
)
|
|
67
|
-
await response2
|
|
68
|
-
})
|
|
69
|
-
})
|
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
import { MetricsContext, waitForCondition, waitForEvent3 } from '@streamr/utils'
|
|
2
|
-
import { ConnectionManager } from '../../src/connection/ConnectionManager'
|
|
3
|
-
import { DefaultConnectorFacade, DefaultConnectorFacadeOptions } from '../../src/connection/ConnectorFacade'
|
|
4
|
-
import { Simulator } from '../../src/connection/simulator/Simulator'
|
|
5
|
-
import { SimulatorTransport } from '../../src/connection/simulator/SimulatorTransport'
|
|
6
|
-
import * as Err from '../../src/helpers/errors'
|
|
7
|
-
import { Message, NodeType, PeerDescriptor } from '../../generated/packages/dht/protos/DhtRpc'
|
|
8
|
-
import { RpcMessage } from '../../generated/packages/proto-rpc/protos/ProtoRpc'
|
|
9
|
-
import { TransportEvents } from '../../src/transport/ITransport'
|
|
10
|
-
import { toNodeId } from '../../src/identifiers'
|
|
11
|
-
|
|
12
|
-
const SERVICE_ID = 'test'
|
|
13
|
-
|
|
14
|
-
const createOptions = (localPeerDescriptor: PeerDescriptor, opts: Omit<DefaultConnectorFacadeOptions, 'createLocalPeerDescriptor'>) => {
|
|
15
|
-
return {
|
|
16
|
-
createConnectorFacade: () => new DefaultConnectorFacade({
|
|
17
|
-
createLocalPeerDescriptor: async () => localPeerDescriptor,
|
|
18
|
-
...opts
|
|
19
|
-
}),
|
|
20
|
-
metricsContext: new MetricsContext(),
|
|
21
|
-
allowIncomingPrivateConnections: false
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
describe('Websocket Connection Management', () => {
|
|
26
|
-
|
|
27
|
-
let wsServerManager: ConnectionManager
|
|
28
|
-
let noWsServerManager: ConnectionManager
|
|
29
|
-
let biggerNoWsServerManager: ConnectionManager
|
|
30
|
-
const simulator = new Simulator()
|
|
31
|
-
const wsServerConnectorPeerDescriptor: PeerDescriptor = {
|
|
32
|
-
nodeId: new Uint8Array([2]),
|
|
33
|
-
type: NodeType.NODEJS,
|
|
34
|
-
websocket: {
|
|
35
|
-
host: '127.0.0.1',
|
|
36
|
-
port: 12223,
|
|
37
|
-
tls: false
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
const noWsServerConnectorPeerDescriptor: PeerDescriptor = {
|
|
41
|
-
nodeId: new Uint8Array([1]),
|
|
42
|
-
type: NodeType.NODEJS,
|
|
43
|
-
}
|
|
44
|
-
const biggerNoWsServerConnectorPeerDescriptor: PeerDescriptor = {
|
|
45
|
-
nodeId: new Uint8Array([3]),
|
|
46
|
-
type: NodeType.NODEJS,
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
let connectorTransport1: SimulatorTransport
|
|
50
|
-
let connectorTransport2: SimulatorTransport
|
|
51
|
-
let connectorTransport3: SimulatorTransport
|
|
52
|
-
|
|
53
|
-
beforeEach(async () => {
|
|
54
|
-
|
|
55
|
-
connectorTransport1 = new SimulatorTransport(wsServerConnectorPeerDescriptor, simulator)
|
|
56
|
-
await connectorTransport1.start()
|
|
57
|
-
connectorTransport2 = new SimulatorTransport(noWsServerConnectorPeerDescriptor, simulator)
|
|
58
|
-
await connectorTransport2.start()
|
|
59
|
-
connectorTransport3 = new SimulatorTransport(biggerNoWsServerConnectorPeerDescriptor, simulator)
|
|
60
|
-
await connectorTransport3.start()
|
|
61
|
-
|
|
62
|
-
const options1 = createOptions(wsServerConnectorPeerDescriptor, {
|
|
63
|
-
transport: connectorTransport1,
|
|
64
|
-
websocketHost: '127.0.0.1',
|
|
65
|
-
websocketPortRange: { min: 12223, max: 12223 }
|
|
66
|
-
})
|
|
67
|
-
const options2 = createOptions(noWsServerConnectorPeerDescriptor, {
|
|
68
|
-
transport: connectorTransport2
|
|
69
|
-
})
|
|
70
|
-
const options3 = createOptions(biggerNoWsServerConnectorPeerDescriptor, {
|
|
71
|
-
transport: connectorTransport3
|
|
72
|
-
})
|
|
73
|
-
|
|
74
|
-
wsServerManager = new ConnectionManager(options1)
|
|
75
|
-
noWsServerManager = new ConnectionManager(options2)
|
|
76
|
-
biggerNoWsServerManager = new ConnectionManager(options3)
|
|
77
|
-
|
|
78
|
-
await wsServerManager.start()
|
|
79
|
-
await noWsServerManager.start()
|
|
80
|
-
await biggerNoWsServerManager.start()
|
|
81
|
-
})
|
|
82
|
-
|
|
83
|
-
afterEach(async () => {
|
|
84
|
-
await wsServerManager.stop()
|
|
85
|
-
await noWsServerManager.stop()
|
|
86
|
-
await biggerNoWsServerManager.stop()
|
|
87
|
-
await connectorTransport1.stop()
|
|
88
|
-
await connectorTransport2.stop()
|
|
89
|
-
await connectorTransport3.stop()
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
it('Can open connections to serverless peer with smaller nodeId', (done) => {
|
|
93
|
-
const dummyMessage: Message = {
|
|
94
|
-
serviceId: SERVICE_ID,
|
|
95
|
-
body: {
|
|
96
|
-
oneofKind: 'rpcMessage',
|
|
97
|
-
rpcMessage: RpcMessage.create()
|
|
98
|
-
},
|
|
99
|
-
messageId: 'mockerer',
|
|
100
|
-
targetDescriptor: noWsServerConnectorPeerDescriptor
|
|
101
|
-
}
|
|
102
|
-
noWsServerManager.on('message', (message: Message) => {
|
|
103
|
-
expect(message.messageId).toEqual('mockerer')
|
|
104
|
-
|
|
105
|
-
done()
|
|
106
|
-
})
|
|
107
|
-
|
|
108
|
-
wsServerManager.send(dummyMessage)
|
|
109
|
-
})
|
|
110
|
-
|
|
111
|
-
it('Can open connections to serverless peer with bigger nodeId', (done) => {
|
|
112
|
-
const dummyMessage: Message = {
|
|
113
|
-
serviceId: SERVICE_ID,
|
|
114
|
-
body: {
|
|
115
|
-
oneofKind: 'rpcMessage',
|
|
116
|
-
rpcMessage: RpcMessage.create()
|
|
117
|
-
},
|
|
118
|
-
messageId: 'mockerer',
|
|
119
|
-
targetDescriptor: biggerNoWsServerConnectorPeerDescriptor
|
|
120
|
-
}
|
|
121
|
-
biggerNoWsServerManager.on('message', (message: Message) => {
|
|
122
|
-
expect(message.messageId).toEqual('mockerer')
|
|
123
|
-
done()
|
|
124
|
-
})
|
|
125
|
-
|
|
126
|
-
wsServerManager.send(dummyMessage)
|
|
127
|
-
})
|
|
128
|
-
|
|
129
|
-
it('Failed connection requests are cleaned up', async () => {
|
|
130
|
-
const dummyMessage: Message = {
|
|
131
|
-
serviceId: SERVICE_ID,
|
|
132
|
-
body: {
|
|
133
|
-
oneofKind: 'rpcMessage',
|
|
134
|
-
rpcMessage: RpcMessage.create()
|
|
135
|
-
},
|
|
136
|
-
messageId: 'mockerer',
|
|
137
|
-
targetDescriptor: {
|
|
138
|
-
nodeId: new Uint8Array([1, 2, 4]),
|
|
139
|
-
type: NodeType.NODEJS
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
await Promise.allSettled([
|
|
144
|
-
waitForEvent3<TransportEvents>(wsServerManager, 'disconnected', 15000),
|
|
145
|
-
wsServerManager.send(dummyMessage)
|
|
146
|
-
])
|
|
147
|
-
expect(wsServerManager.hasConnection(toNodeId(dummyMessage.targetDescriptor!))).toBeFalse()
|
|
148
|
-
}, 20000)
|
|
149
|
-
|
|
150
|
-
it('Can open connections to peer with server', async () => {
|
|
151
|
-
const dummyMessage: Message = {
|
|
152
|
-
serviceId: SERVICE_ID,
|
|
153
|
-
body: {
|
|
154
|
-
oneofKind: 'rpcMessage',
|
|
155
|
-
rpcMessage: RpcMessage.create()
|
|
156
|
-
},
|
|
157
|
-
messageId: 'mockerer',
|
|
158
|
-
targetDescriptor: wsServerConnectorPeerDescriptor
|
|
159
|
-
}
|
|
160
|
-
await noWsServerManager.send(dummyMessage)
|
|
161
|
-
await waitForCondition(
|
|
162
|
-
() => {
|
|
163
|
-
const nodeId = toNodeId(noWsServerConnectorPeerDescriptor)
|
|
164
|
-
return wsServerManager.hasConnection(nodeId)
|
|
165
|
-
}
|
|
166
|
-
)
|
|
167
|
-
await waitForCondition(
|
|
168
|
-
() => noWsServerManager.hasConnection(toNodeId(wsServerConnectorPeerDescriptor))
|
|
169
|
-
)
|
|
170
|
-
})
|
|
171
|
-
|
|
172
|
-
it('Connecting to self throws', async () => {
|
|
173
|
-
const dummyMessage: Message = {
|
|
174
|
-
serviceId: SERVICE_ID,
|
|
175
|
-
body: {
|
|
176
|
-
oneofKind: 'rpcMessage',
|
|
177
|
-
rpcMessage: RpcMessage.create()
|
|
178
|
-
},
|
|
179
|
-
messageId: 'mockerer',
|
|
180
|
-
targetDescriptor: noWsServerConnectorPeerDescriptor
|
|
181
|
-
}
|
|
182
|
-
await expect(noWsServerManager.send(dummyMessage))
|
|
183
|
-
.rejects
|
|
184
|
-
.toEqual(new Err.CannotConnectToSelf('Cannot send to self'))
|
|
185
|
-
|
|
186
|
-
dummyMessage.targetDescriptor = wsServerConnectorPeerDescriptor
|
|
187
|
-
await expect(wsServerManager.send(dummyMessage))
|
|
188
|
-
.rejects
|
|
189
|
-
.toEqual(new Err.CannotConnectToSelf('Cannot send to self'))
|
|
190
|
-
})
|
|
191
|
-
})
|