@streamr/dht 100.0.0-pretestnet.6 → 100.0.0-rc.1
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/README.md +90 -8
- package/dist/package.json +70 -0
- package/dist/src/connection/Connection.d.ts +1 -0
- package/dist/src/connection/Connection.js +10 -3
- package/dist/src/connection/Connection.js.map +1 -1
- package/dist/src/connection/ConnectionLockHandler.d.ts +14 -14
- package/dist/src/connection/ConnectionLockHandler.js +22 -16
- package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
- package/dist/src/connection/ConnectionLockRpcLocal.d.ts +3 -3
- package/dist/src/connection/ConnectionLockRpcLocal.js +7 -6
- package/dist/src/connection/ConnectionLockRpcLocal.js.map +1 -1
- package/dist/src/connection/ConnectionLockRpcRemote.d.ts +4 -6
- package/dist/src/connection/ConnectionLockRpcRemote.js +10 -37
- package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -1
- package/dist/src/connection/ConnectionManager.d.ts +19 -20
- package/dist/src/connection/ConnectionManager.js +132 -117
- package/dist/src/connection/ConnectionManager.js.map +1 -1
- package/dist/src/connection/ConnectorFacade.d.ts +3 -2
- package/dist/src/connection/ConnectorFacade.js +10 -3
- package/dist/src/connection/ConnectorFacade.js.map +1 -1
- package/dist/src/connection/Handshaker.d.ts +3 -1
- package/dist/src/connection/Handshaker.js +19 -10
- package/dist/src/connection/Handshaker.js.map +1 -1
- package/dist/src/connection/IConnection.d.ts +2 -7
- package/dist/src/connection/IConnection.js +1 -8
- package/dist/src/connection/IConnection.js.map +1 -1
- package/dist/src/connection/ManagedConnection.d.ts +5 -7
- package/dist/src/connection/ManagedConnection.js +42 -26
- package/dist/src/connection/ManagedConnection.js.map +1 -1
- package/dist/src/connection/ManagedWebrtcConnection.js.map +1 -1
- package/dist/src/connection/connectivityChecker.d.ts +9 -0
- package/dist/src/connection/connectivityChecker.js +130 -0
- package/dist/src/connection/connectivityChecker.js.map +1 -0
- package/dist/src/connection/connectivityRequestHandler.d.ts +3 -0
- package/dist/src/connection/connectivityRequestHandler.js +101 -0
- package/dist/src/connection/connectivityRequestHandler.js.map +1 -0
- package/dist/src/connection/simulator/Simulator.d.ts +0 -3
- package/dist/src/connection/simulator/Simulator.js +34 -69
- package/dist/src/connection/simulator/Simulator.js.map +1 -1
- package/dist/src/connection/simulator/SimulatorConnection.js +27 -25
- package/dist/src/connection/simulator/SimulatorConnection.js.map +1 -1
- package/dist/src/connection/simulator/SimulatorConnector.js +16 -12
- package/dist/src/connection/simulator/SimulatorConnector.js.map +1 -1
- package/dist/src/connection/simulator/pings.js.map +1 -1
- package/dist/src/connection/webrtc/NodeWebrtcConnection.d.ts +2 -3
- package/dist/src/connection/webrtc/NodeWebrtcConnection.js +40 -27
- package/dist/src/connection/webrtc/NodeWebrtcConnection.js.map +1 -1
- package/dist/src/connection/webrtc/WebrtcConnector.d.ts +1 -2
- package/dist/src/connection/webrtc/WebrtcConnector.js +36 -32
- package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -1
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.d.ts +4 -2
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +28 -22
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +1 -1
- package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.d.ts +3 -6
- package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.js +2 -5
- package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.js.map +1 -1
- package/dist/src/connection/webrtc/iceServerAsString.js +1 -1
- package/dist/src/connection/webrtc/iceServerAsString.js.map +1 -1
- package/dist/src/connection/websocket/AutoCertifierClientFacade.d.ts +1 -2
- package/dist/src/connection/websocket/AutoCertifierClientFacade.js +6 -4
- package/dist/src/connection/websocket/AutoCertifierClientFacade.js.map +1 -1
- package/dist/src/connection/websocket/ClientWebsocket.d.ts +1 -0
- package/dist/src/connection/websocket/ClientWebsocket.js +14 -7
- package/dist/src/connection/websocket/ClientWebsocket.js.map +1 -1
- package/dist/src/connection/websocket/WebsocketConnector.d.ts +3 -9
- package/dist/src/connection/websocket/WebsocketConnector.js +142 -74
- package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -1
- package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.d.ts +5 -3
- package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js +9 -12
- package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js.map +1 -1
- package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.d.ts +4 -7
- package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js +7 -44
- package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js.map +1 -1
- package/dist/src/connection/websocket/WebsocketServer.d.ts +1 -4
- package/dist/src/connection/websocket/WebsocketServer.js +49 -40
- package/dist/src/connection/websocket/WebsocketServer.js.map +1 -1
- package/dist/src/connection/websocket/{ServerWebsocket.d.ts → WebsocketServerConnection.d.ts} +8 -4
- package/dist/src/connection/websocket/WebsocketServerConnection.js +97 -0
- package/dist/src/connection/websocket/WebsocketServerConnection.js.map +1 -0
- package/dist/src/dht/DhtNode.d.ts +45 -49
- package/dist/src/dht/DhtNode.js +229 -317
- package/dist/src/dht/DhtNode.js.map +1 -1
- package/dist/src/dht/DhtNodeRpcLocal.d.ts +10 -9
- package/dist/src/dht/DhtNodeRpcLocal.js +19 -11
- package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -1
- package/dist/src/dht/DhtNodeRpcRemote.d.ts +15 -10
- package/dist/src/dht/DhtNodeRpcRemote.js +38 -21
- package/dist/src/dht/DhtNodeRpcRemote.js.map +1 -1
- package/dist/src/dht/ExternalApiRpcLocal.d.ts +7 -6
- package/dist/src/dht/ExternalApiRpcLocal.js +9 -13
- package/dist/src/dht/ExternalApiRpcLocal.js.map +1 -1
- package/dist/src/dht/ExternalApiRpcRemote.d.ts +6 -5
- package/dist/src/dht/ExternalApiRpcRemote.js +10 -7
- package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -1
- package/dist/src/dht/PeerManager.d.ts +61 -0
- package/dist/src/dht/PeerManager.js +288 -0
- package/dist/src/dht/PeerManager.js.map +1 -0
- package/dist/src/dht/contact/Contact.d.ts +2 -2
- package/dist/src/dht/contact/Contact.js +4 -3
- package/dist/src/dht/contact/Contact.js.map +1 -1
- package/dist/src/dht/contact/ContactList.d.ts +8 -8
- package/dist/src/dht/contact/ContactList.js +12 -7
- package/dist/src/dht/contact/ContactList.js.map +1 -1
- package/dist/src/dht/contact/RandomContactList.d.ts +4 -4
- package/dist/src/dht/contact/RandomContactList.js +13 -12
- package/dist/src/dht/contact/RandomContactList.js.map +1 -1
- package/dist/src/dht/contact/RingContactList.d.ts +31 -0
- package/dist/src/dht/contact/RingContactList.js +133 -0
- package/dist/src/dht/contact/RingContactList.js.map +1 -0
- package/dist/src/dht/contact/{Remote.d.ts → RpcRemote.d.ts} +8 -7
- package/dist/src/dht/contact/{Remote.js → RpcRemote.js} +16 -13
- package/dist/src/dht/contact/RpcRemote.js.map +1 -0
- package/dist/src/dht/contact/SortedContactList.d.ts +29 -15
- package/dist/src/dht/contact/SortedContactList.js +79 -42
- package/dist/src/dht/contact/SortedContactList.js.map +1 -1
- package/dist/src/dht/contact/ringIdentifiers.d.ts +16 -0
- package/dist/src/dht/contact/ringIdentifiers.js +54 -0
- package/dist/src/dht/contact/ringIdentifiers.js.map +1 -0
- package/dist/src/dht/discovery/DiscoverySession.d.ts +8 -18
- package/dist/src/dht/discovery/DiscoverySession.js +32 -48
- package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
- package/dist/src/dht/discovery/PeerDiscovery.d.ts +16 -12
- package/dist/src/dht/discovery/PeerDiscovery.js +82 -39
- package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
- package/dist/src/dht/discovery/RingDiscoverySession.d.ts +29 -0
- package/dist/src/dht/discovery/RingDiscoverySession.js +123 -0
- package/dist/src/dht/discovery/RingDiscoverySession.js.map +1 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationManager.d.ts +36 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationManager.js +166 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationManager.js.map +1 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationRpcLocal.d.ts +14 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationRpcLocal.js +26 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationRpcLocal.js.map +1 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationRpcRemote.d.ts +6 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationRpcRemote.js +44 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationRpcRemote.js.map +1 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSession.d.ts +44 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSession.js +187 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSession.js.map +1 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.d.ts +14 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.js +20 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.js.map +1 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.d.ts +6 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.js +21 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.js.map +1 -0
- package/dist/src/dht/routing/DuplicateDetector.d.ts +2 -4
- package/dist/src/dht/routing/DuplicateDetector.js +10 -15
- package/dist/src/dht/routing/DuplicateDetector.js.map +1 -1
- package/dist/src/dht/routing/Router.d.ts +11 -27
- package/dist/src/dht/routing/Router.js +92 -58
- package/dist/src/dht/routing/Router.js.map +1 -1
- package/dist/src/dht/routing/RouterRpcLocal.d.ts +3 -4
- package/dist/src/dht/routing/RouterRpcLocal.js +17 -16
- package/dist/src/dht/routing/RouterRpcLocal.js.map +1 -1
- package/dist/src/dht/routing/RouterRpcRemote.d.ts +3 -3
- package/dist/src/dht/routing/RouterRpcRemote.js +29 -20
- package/dist/src/dht/routing/RouterRpcRemote.js.map +1 -1
- package/dist/src/dht/routing/RoutingSession.d.ts +29 -21
- package/dist/src/dht/routing/RoutingSession.js +93 -68
- package/dist/src/dht/routing/RoutingSession.js.map +1 -1
- package/dist/src/dht/routing/RoutingTablesCache.d.ts +24 -0
- package/dist/src/dht/routing/RoutingTablesCache.js +46 -0
- package/dist/src/dht/routing/RoutingTablesCache.js.map +1 -0
- package/dist/src/dht/routing/getPreviousPeer.js.map +1 -1
- package/dist/src/dht/store/LocalDataStore.d.ts +9 -14
- package/dist/src/dht/store/LocalDataStore.js +46 -72
- package/dist/src/dht/store/LocalDataStore.js.map +1 -1
- package/dist/src/dht/store/StoreManager.d.ts +33 -0
- package/dist/src/dht/store/StoreManager.js +182 -0
- package/dist/src/dht/store/StoreManager.js.map +1 -0
- package/dist/src/dht/store/StoreRpcLocal.d.ts +11 -41
- package/dist/src/dht/store/StoreRpcLocal.js +27 -234
- package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
- package/dist/src/dht/store/StoreRpcRemote.d.ts +6 -7
- package/dist/src/dht/store/StoreRpcRemote.js +10 -20
- package/dist/src/dht/store/StoreRpcRemote.js.map +1 -1
- package/dist/src/exports.d.ts +5 -3
- package/dist/src/exports.js +10 -8
- package/dist/src/exports.js.map +1 -1
- package/dist/src/helpers/AddressTools.js +2 -0
- package/dist/src/helpers/AddressTools.js.map +1 -1
- package/dist/src/helpers/Connectivity.js.map +1 -1
- package/dist/src/helpers/MapWithTtl.d.ts +14 -0
- package/dist/src/helpers/MapWithTtl.js +60 -0
- package/dist/src/helpers/MapWithTtl.js.map +1 -0
- package/dist/src/helpers/createPeerDescriptor.d.ts +3 -0
- package/dist/src/helpers/createPeerDescriptor.js +57 -0
- package/dist/src/helpers/createPeerDescriptor.js.map +1 -0
- package/dist/src/helpers/createPeerDescriptorSignaturePayload.d.ts +2 -0
- package/dist/src/helpers/createPeerDescriptorSignaturePayload.js +30 -0
- package/dist/src/helpers/createPeerDescriptorSignaturePayload.js.map +1 -0
- package/dist/src/helpers/debugHelpers.js.map +1 -1
- package/dist/src/helpers/errors.js +2 -0
- package/dist/src/helpers/errors.js.map +1 -1
- package/dist/src/helpers/offering.d.ts +4 -0
- package/dist/src/helpers/offering.js +18 -0
- package/dist/src/helpers/offering.js.map +1 -0
- package/dist/src/helpers/protoClasses.js +2 -3
- package/dist/src/helpers/protoClasses.js.map +1 -1
- package/dist/src/helpers/protoToString.js.map +1 -1
- package/dist/src/helpers/version.d.ts +6 -0
- package/dist/src/helpers/version.js +38 -0
- package/dist/src/helpers/version.js.map +1 -0
- package/dist/src/identifiers.d.ts +10 -0
- package/dist/src/identifiers.js +31 -0
- package/dist/src/identifiers.js.map +1 -0
- package/dist/src/proto/google/protobuf/any.js +8 -8
- package/dist/src/proto/google/protobuf/any.js.map +1 -1
- package/dist/src/proto/google/protobuf/empty.js +2 -4
- package/dist/src/proto/google/protobuf/empty.js.map +1 -1
- package/dist/src/proto/google/protobuf/timestamp.js +10 -10
- package/dist/src/proto/google/protobuf/timestamp.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +46 -49
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +63 -54
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +226 -232
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +146 -168
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +26 -29
- package/dist/src/proto/packages/proto-rpc/protos/ProtoRpc.js +1 -1
- package/dist/src/rpc-protocol/DhtCallContext.d.ts +2 -2
- package/dist/src/rpc-protocol/DhtCallContext.js +8 -0
- package/dist/src/rpc-protocol/DhtCallContext.js.map +1 -1
- package/dist/src/rpc-protocol/DhtRpcOptions.d.ts +2 -1
- package/dist/src/transport/ITransport.d.ts +10 -2
- package/dist/src/transport/ITransport.js +5 -0
- package/dist/src/transport/ITransport.js.map +1 -1
- package/dist/src/transport/ListeningRpcCommunicator.js +3 -1
- package/dist/src/transport/ListeningRpcCommunicator.js.map +1 -1
- package/dist/src/transport/RoutingRpcCommunicator.d.ts +4 -2
- package/dist/src/transport/RoutingRpcCommunicator.js +19 -12
- package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
- package/jest.config.js +4 -1
- package/karma-setup.js +2 -0
- package/karma.config.js +13 -9
- package/package.json +17 -14
- package/protos/DhtRpc.proto +76 -76
- package/src/connection/Connection.ts +6 -1
- package/src/connection/ConnectionLockHandler.ts +30 -22
- package/src/connection/ConnectionLockRpcLocal.ts +7 -12
- package/src/connection/ConnectionLockRpcRemote.ts +9 -19
- package/src/connection/ConnectionManager.ts +132 -138
- package/src/connection/ConnectorFacade.ts +10 -9
- package/src/connection/Handshaker.ts +24 -12
- package/src/connection/IConnection.ts +2 -8
- package/src/connection/ManagedConnection.ts +34 -35
- package/src/connection/connectivityChecker.ts +109 -0
- package/src/connection/connectivityRequestHandler.ts +103 -0
- package/src/connection/simulator/Simulator.ts +6 -37
- package/src/connection/simulator/SimulatorConnection.ts +23 -25
- package/src/connection/simulator/SimulatorConnector.ts +11 -11
- package/src/connection/webrtc/BrowserWebrtcConnection.ts +17 -25
- package/src/connection/webrtc/NodeWebrtcConnection.ts +25 -27
- package/src/connection/webrtc/WebrtcConnector.ts +31 -36
- package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +31 -25
- package/src/connection/webrtc/WebrtcConnectorRpcRemote.ts +4 -14
- package/src/connection/webrtc/iceServerAsString.ts +1 -1
- package/src/connection/websocket/AutoCertifierClientFacade.ts +4 -6
- package/src/connection/websocket/ClientWebsocket.ts +10 -4
- package/src/connection/websocket/WebsocketConnector.ts +120 -97
- package/src/connection/websocket/WebsocketConnectorRpcLocal.ts +13 -15
- package/src/connection/websocket/WebsocketConnectorRpcRemote.ts +7 -27
- package/src/connection/websocket/WebsocketServer.ts +50 -53
- package/src/connection/websocket/WebsocketServerConnection.ts +104 -0
- package/src/dht/DhtNode.ts +289 -410
- package/src/dht/DhtNodeRpcLocal.ts +25 -17
- package/src/dht/DhtNodeRpcRemote.ts +43 -27
- package/src/dht/ExternalApiRpcLocal.ts +30 -17
- package/src/dht/ExternalApiRpcRemote.ts +14 -11
- package/src/dht/PeerManager.ts +339 -0
- package/src/dht/contact/Contact.ts +4 -4
- package/src/dht/contact/ContactList.ts +11 -10
- package/src/dht/contact/RandomContactList.ts +15 -15
- package/src/dht/contact/RingContactList.ts +151 -0
- package/src/dht/contact/{Remote.ts → RpcRemote.ts} +16 -19
- package/src/dht/contact/SortedContactList.ts +120 -72
- package/src/dht/contact/ringIdentifiers.ts +62 -0
- package/src/dht/discovery/DiscoverySession.ts +36 -61
- package/src/dht/discovery/PeerDiscovery.ts +98 -43
- package/src/dht/discovery/RingDiscoverySession.ts +160 -0
- package/src/dht/recursive-operation/RecursiveOperationManager.ts +246 -0
- package/src/dht/recursive-operation/RecursiveOperationRpcLocal.ts +34 -0
- package/src/dht/recursive-operation/RecursiveOperationRpcRemote.ts +43 -0
- package/src/dht/recursive-operation/RecursiveOperationSession.ts +232 -0
- package/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.ts +35 -0
- package/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.ts +30 -0
- package/src/dht/routing/DuplicateDetector.ts +9 -21
- package/src/dht/routing/Router.ts +95 -92
- package/src/dht/routing/RouterRpcLocal.ts +16 -18
- package/src/dht/routing/RouterRpcRemote.ts +26 -24
- package/src/dht/routing/RoutingSession.ts +119 -98
- package/src/dht/routing/RoutingTablesCache.ts +58 -0
- package/src/dht/routing/getPreviousPeer.ts +1 -1
- package/src/dht/store/LocalDataStore.ts +47 -77
- package/src/dht/store/StoreManager.ts +209 -0
- package/src/dht/store/StoreRpcLocal.ts +39 -308
- package/src/dht/store/StoreRpcRemote.ts +13 -31
- package/src/exports.ts +13 -3
- package/src/helpers/AddressTools.ts +2 -0
- package/src/helpers/MapWithTtl.ts +71 -0
- package/src/helpers/createPeerDescriptor.ts +57 -0
- package/src/helpers/createPeerDescriptorSignaturePayload.ts +28 -0
- package/src/helpers/offering.ts +15 -0
- package/src/helpers/protoClasses.ts +4 -6
- package/src/helpers/version.ts +32 -0
- package/src/identifiers.ts +29 -0
- package/src/proto/google/protobuf/any.ts +4 -4
- package/src/proto/google/protobuf/empty.ts +2 -4
- package/src/proto/google/protobuf/timestamp.ts +4 -4
- package/src/proto/packages/dht/protos/DhtRpc.client.ts +65 -68
- package/src/proto/packages/dht/protos/DhtRpc.server.ts +27 -30
- package/src/proto/packages/dht/protos/DhtRpc.ts +297 -313
- package/src/proto/packages/proto-rpc/protos/ProtoRpc.ts +1 -1
- package/src/rpc-protocol/DhtCallContext.ts +2 -2
- package/src/rpc-protocol/DhtRpcOptions.ts +2 -1
- package/src/transport/ITransport.ts +11 -2
- package/src/transport/ListeningRpcCommunicator.ts +1 -1
- package/src/transport/RoutingRpcCommunicator.ts +21 -14
- package/test/RandomGraphSimulation.ts +3 -2
- package/test/benchmark/Find.test.ts +13 -28
- package/test/benchmark/KademliaCorrectness.test.ts +24 -28
- package/test/benchmark/RingCorrectness.test.ts +157 -0
- package/test/benchmark/SortedContactListBenchmark.test.ts +151 -0
- package/test/benchmark/WebsocketServerMemoryLeak.test.ts +41 -0
- package/test/benchmark/hybrid-network-simulation/RingContactList.test.ts +72 -0
- package/test/benchmark/kademlia-simulation/Contact.ts +9 -9
- package/test/benchmark/kademlia-simulation/KademliaSimulation.ts +11 -11
- package/test/benchmark/kademlia-simulation/SimulationNode.ts +29 -25
- package/test/data/generateGroundTruthData.ts +7 -6
- package/test/end-to-end/Layer0-Layer1.test.ts +11 -15
- package/test/end-to-end/Layer0.test.ts +19 -22
- package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +19 -21
- package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +26 -28
- package/test/end-to-end/Layer0Webrtc.test.ts +19 -19
- package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +10 -18
- package/test/end-to-end/Layer1-Scale-Webrtc.test.ts +8 -15
- package/test/end-to-end/RecoveryFromFailedAutoCertification.test.ts +2 -2
- package/test/end-to-end/WebsocketConnectionRequest.test.ts +8 -9
- package/test/end-to-end/memory-leak.test.ts +19 -24
- package/test/integration/ConnectionLocking.test.ts +66 -60
- package/test/integration/ConnectionManager.test.ts +43 -63
- package/test/integration/ConnectivityChecking.test.ts +52 -0
- package/test/integration/DhtJoinPeerDiscovery.test.ts +8 -12
- package/test/integration/DhtNodeExternalAPI.test.ts +17 -21
- package/test/integration/DhtNodeRpcRemote.test.ts +19 -26
- package/test/integration/DhtRpc.test.ts +20 -24
- package/test/integration/Find.test.ts +10 -12
- package/test/integration/Layer1-scale.test.ts +25 -37
- package/test/integration/Mock-Layer1-Layer0.test.ts +39 -59
- package/test/integration/MultipleEntryPointJoining.test.ts +14 -14
- package/test/integration/ReplicateData.test.ts +106 -0
- package/test/integration/RouteMessage.test.ts +42 -68
- package/test/integration/RouterRpcRemote.test.ts +19 -24
- package/test/integration/ScaleDownDht.test.ts +14 -12
- package/test/integration/SimultaneousConnections.test.ts +112 -111
- package/test/integration/Store.test.ts +43 -27
- package/test/integration/StoreAndDelete.test.ts +36 -48
- package/test/integration/StoreOnDhtWithThreeNodes.test.ts +59 -0
- package/test/integration/StoreOnDhtWithTwoNodes.test.ts +17 -37
- package/test/integration/StoreRpcRemote.test.ts +20 -32
- package/test/integration/WebrtcConnectionManagement.test.ts +39 -25
- package/test/integration/WebrtcConnectorRpc.test.ts +6 -11
- package/test/integration/WebsocketConnectionManagement.test.ts +87 -22
- package/test/integration/WebsocketConnectorRpc.test.ts +14 -24
- package/test/integration/{RpcErrors.test.ts → rpc-connections-over-webrpc.test.ts} +15 -26
- package/test/unit/AddressTools.test.ts +4 -0
- package/test/unit/ConnectivityHelpers.test.ts +9 -17
- package/test/unit/DuplicateDetector.test.ts +8 -5
- package/test/unit/LocalDataStore.test.ts +78 -75
- package/test/unit/PeerManager.test.ts +33 -0
- package/test/unit/RandomContactList.test.ts +12 -9
- package/test/unit/RecursiveOperationManager.test.ts +157 -0
- package/test/unit/RecursiveOperationSession.test.ts +68 -0
- package/test/unit/Router.test.ts +52 -35
- package/test/unit/RoutingSession.test.ts +79 -0
- package/test/unit/SortedContactList.test.ts +61 -30
- package/test/unit/StoreManager.test.ts +138 -0
- package/test/unit/WebsocketConnector.test.ts +27 -35
- package/test/unit/connectivityRequestHandler.test.ts +104 -0
- package/test/unit/createPeerDescriptor.test.ts +69 -0
- package/test/unit/customMatchers.test.ts +16 -0
- package/test/unit/version.test.ts +18 -0
- package/test/utils/FakeTransport.ts +47 -0
- package/test/utils/customMatchers.ts +71 -0
- package/test/utils/mock/MockRpcCommunicator.ts +7 -0
- package/test/utils/mock/Router.ts +13 -3
- package/test/utils/mock/Transport.ts +1 -1
- package/test/utils/mock/mockDataEntry.ts +38 -0
- package/test/utils/utils.ts +104 -107
- package/tsconfig.browser.json +2 -1
- package/tsconfig.jest.json +4 -2
- package/tsconfig.node.json +4 -2
- package/dist/src/connection/ConnectivityChecker.d.ts +0 -17
- package/dist/src/connection/ConnectivityChecker.js +0 -208
- package/dist/src/connection/ConnectivityChecker.js.map +0 -1
- package/dist/src/connection/websocket/ServerWebsocket.js +0 -100
- package/dist/src/connection/websocket/ServerWebsocket.js.map +0 -1
- package/dist/src/dht/contact/Remote.js.map +0 -1
- package/dist/src/dht/find/FindRpcLocal.d.ts +0 -14
- package/dist/src/dht/find/FindRpcLocal.js +0 -25
- package/dist/src/dht/find/FindRpcLocal.js.map +0 -1
- package/dist/src/dht/find/FindSession.d.ts +0 -44
- package/dist/src/dht/find/FindSession.js +0 -145
- package/dist/src/dht/find/FindSession.js.map +0 -1
- package/dist/src/dht/find/FindSessionRpcLocal.d.ts +0 -12
- package/dist/src/dht/find/FindSessionRpcLocal.js +0 -17
- package/dist/src/dht/find/FindSessionRpcLocal.js.map +0 -1
- package/dist/src/dht/find/FindSessionRpcRemote.d.ts +0 -6
- package/dist/src/dht/find/FindSessionRpcRemote.js +0 -21
- package/dist/src/dht/find/FindSessionRpcRemote.js.map +0 -1
- package/dist/src/dht/find/Finder.d.ts +0 -49
- package/dist/src/dht/find/Finder.js +0 -184
- package/dist/src/dht/find/Finder.js.map +0 -1
- package/dist/src/dht/routing/FindRpcRemote.d.ts +0 -6
- package/dist/src/dht/routing/FindRpcRemote.js +0 -41
- package/dist/src/dht/routing/FindRpcRemote.js.map +0 -1
- package/dist/src/helpers/PeerID.d.ts +0 -24
- package/dist/src/helpers/PeerID.js +0 -78
- package/dist/src/helpers/PeerID.js.map +0 -1
- package/dist/src/helpers/UUID.d.ts +0 -8
- package/dist/src/helpers/UUID.js +0 -36
- package/dist/src/helpers/UUID.js.map +0 -1
- package/dist/src/helpers/kademliaId.d.ts +0 -1
- package/dist/src/helpers/kademliaId.js +0 -14
- package/dist/src/helpers/kademliaId.js.map +0 -1
- package/dist/src/helpers/peerIdFromPeerDescriptor.d.ts +0 -6
- package/dist/src/helpers/peerIdFromPeerDescriptor.js +0 -23
- package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +0 -1
- package/src/connection/ConnectivityChecker.ts +0 -199
- package/src/connection/websocket/ServerWebsocket.ts +0 -114
- package/src/dht/find/FindRpcLocal.ts +0 -35
- package/src/dht/find/FindSession.ts +0 -178
- package/src/dht/find/FindSessionRpcLocal.ts +0 -25
- package/src/dht/find/FindSessionRpcRemote.ts +0 -30
- package/src/dht/find/Finder.ts +0 -275
- package/src/dht/routing/FindRpcRemote.ts +0 -40
- package/src/helpers/PeerID.ts +0 -88
- package/src/helpers/UUID.ts +0 -35
- package/src/helpers/kademliaId.ts +0 -8
- package/src/helpers/peerIdFromPeerDescriptor.ts +0 -20
- package/test/integration/MigrateData.test.ts +0 -204
- package/test/unit/Finder.test.ts +0 -110
- package/test/unit/PeerID.test.ts +0 -22
- package/test/unit/UUID.test.ts +0 -55
|
@@ -1,46 +1,39 @@
|
|
|
1
1
|
import { DhtNodeRpcRemote } from '../../src/dht/DhtNodeRpcRemote'
|
|
2
|
-
import { RpcCommunicator
|
|
3
|
-
import {
|
|
2
|
+
import { RpcCommunicator } from '@streamr/proto-rpc'
|
|
3
|
+
import { createMockDhtRpc, createMockPeerDescriptor, createMockPeers } from '../utils/utils'
|
|
4
4
|
import {
|
|
5
5
|
ClosestPeersRequest,
|
|
6
6
|
ClosestPeersResponse,
|
|
7
|
-
NodeType,
|
|
8
|
-
PeerDescriptor,
|
|
9
7
|
PingRequest,
|
|
10
8
|
PingResponse
|
|
11
9
|
} from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
12
10
|
import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
11
|
+
import { DhtCallContext } from '../../src/rpc-protocol/DhtCallContext'
|
|
12
|
+
import { getNodeIdFromPeerDescriptor } from '../../src/identifiers'
|
|
13
|
+
|
|
14
|
+
const SERVICE_ID = 'test'
|
|
15
15
|
|
|
16
16
|
describe('DhtNodeRpcRemote', () => {
|
|
17
17
|
|
|
18
18
|
let rpcRemote: DhtNodeRpcRemote
|
|
19
|
-
let clientRpcCommunicator: RpcCommunicator
|
|
20
|
-
let serverRpcCommunicator: RpcCommunicator
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
type: NodeType.NODEJS
|
|
25
|
-
}
|
|
26
|
-
const serverPeerDescriptor: PeerDescriptor = {
|
|
27
|
-
kademliaId: generateId('server'),
|
|
28
|
-
type: NodeType.NODEJS
|
|
29
|
-
}
|
|
19
|
+
let clientRpcCommunicator: RpcCommunicator<DhtCallContext>
|
|
20
|
+
let serverRpcCommunicator: RpcCommunicator<DhtCallContext>
|
|
21
|
+
const clientPeerDescriptor = createMockPeerDescriptor()
|
|
22
|
+
const serverPeerDescriptor = createMockPeerDescriptor()
|
|
23
|
+
const mockDhtRpc = createMockDhtRpc(createMockPeers())
|
|
30
24
|
|
|
31
25
|
beforeEach(() => {
|
|
32
26
|
clientRpcCommunicator = new RpcCommunicator()
|
|
33
27
|
serverRpcCommunicator = new RpcCommunicator()
|
|
34
|
-
serverRpcCommunicator.registerRpcMethod(ClosestPeersRequest, ClosestPeersResponse, 'getClosestPeers',
|
|
35
|
-
serverRpcCommunicator.registerRpcMethod(PingRequest, PingResponse, 'ping',
|
|
28
|
+
serverRpcCommunicator.registerRpcMethod(ClosestPeersRequest, ClosestPeersResponse, 'getClosestPeers', mockDhtRpc.getClosestPeers)
|
|
29
|
+
serverRpcCommunicator.registerRpcMethod(PingRequest, PingResponse, 'ping', mockDhtRpc.ping)
|
|
36
30
|
clientRpcCommunicator.on('outgoingMessage', (message: RpcMessage) => {
|
|
37
31
|
serverRpcCommunicator.handleIncomingMessage(message)
|
|
38
32
|
})
|
|
39
33
|
serverRpcCommunicator.on('outgoingMessage', (message: RpcMessage) => {
|
|
40
34
|
clientRpcCommunicator.handleIncomingMessage(message)
|
|
41
35
|
})
|
|
42
|
-
|
|
43
|
-
rpcRemote = new DhtNodeRpcRemote(clientPeerDescriptor, serverPeerDescriptor, client, serviceId)
|
|
36
|
+
rpcRemote = new DhtNodeRpcRemote(clientPeerDescriptor, serverPeerDescriptor, SERVICE_ID, clientRpcCommunicator)
|
|
44
37
|
})
|
|
45
38
|
|
|
46
39
|
afterEach(() => {
|
|
@@ -54,19 +47,19 @@ describe('DhtNodeRpcRemote', () => {
|
|
|
54
47
|
})
|
|
55
48
|
|
|
56
49
|
it('getClosestPeers happy path', async () => {
|
|
57
|
-
const neighbors = await rpcRemote.getClosestPeers(clientPeerDescriptor
|
|
58
|
-
expect(neighbors.length).toEqual(
|
|
50
|
+
const neighbors = await rpcRemote.getClosestPeers(getNodeIdFromPeerDescriptor(clientPeerDescriptor))
|
|
51
|
+
expect(neighbors.length).toEqual(createMockPeers().length)
|
|
59
52
|
})
|
|
60
53
|
|
|
61
54
|
it('ping error path', async () => {
|
|
62
|
-
serverRpcCommunicator.registerRpcMethod(PingRequest, PingResponse, 'ping',
|
|
55
|
+
serverRpcCommunicator.registerRpcMethod(PingRequest, PingResponse, 'ping', mockDhtRpc.throwPingError)
|
|
63
56
|
const active = await rpcRemote.ping()
|
|
64
57
|
expect(active).toEqual(false)
|
|
65
58
|
})
|
|
66
59
|
|
|
67
60
|
it('getClosestPeers error path', async () => {
|
|
68
|
-
serverRpcCommunicator.registerRpcMethod(ClosestPeersRequest, ClosestPeersResponse, 'getClosestPeers',
|
|
69
|
-
await expect(rpcRemote.getClosestPeers(clientPeerDescriptor
|
|
61
|
+
serverRpcCommunicator.registerRpcMethod(ClosestPeersRequest, ClosestPeersResponse, 'getClosestPeers', mockDhtRpc.throwGetClosestPeersError)
|
|
62
|
+
await expect(rpcRemote.getClosestPeers(getNodeIdFromPeerDescriptor(clientPeerDescriptor)))
|
|
70
63
|
.rejects.toThrow('Closest peers error')
|
|
71
64
|
})
|
|
72
65
|
|
|
@@ -1,26 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createMockDhtRpc, createMockPeerDescriptor, createMockPeers } from '../utils/utils'
|
|
2
2
|
import { ProtoRpcClient, RpcCommunicator, RpcError, toProtoRpcClient } from '@streamr/proto-rpc'
|
|
3
3
|
import { DhtNodeRpcClient } from '../../src/proto/packages/dht/protos/DhtRpc.client'
|
|
4
|
-
import {
|
|
5
|
-
import { ClosestPeersRequest, ClosestPeersResponse, NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
4
|
+
import { ClosestPeersRequest, ClosestPeersResponse } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
6
5
|
import { wait } from '@streamr/utils'
|
|
7
6
|
import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
|
|
7
|
+
import { getNodeIdFromPeerDescriptor } from '../../src/identifiers'
|
|
8
|
+
import { DhtCallContext } from '../../src/rpc-protocol/DhtCallContext'
|
|
8
9
|
|
|
9
10
|
describe('DhtRpc', () => {
|
|
10
|
-
|
|
11
|
-
let
|
|
11
|
+
|
|
12
|
+
let rpcCommunicator1: RpcCommunicator<DhtCallContext>
|
|
13
|
+
let rpcCommunicator2: RpcCommunicator<DhtCallContext>
|
|
12
14
|
let client1: ProtoRpcClient<DhtNodeRpcClient>
|
|
13
15
|
let client2: ProtoRpcClient<DhtNodeRpcClient>
|
|
14
|
-
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const peerDescriptor2: PeerDescriptor = {
|
|
21
|
-
kademliaId: generateId('peer2'),
|
|
22
|
-
type: NodeType.NODEJS
|
|
23
|
-
}
|
|
16
|
+
const peerDescriptor1 = createMockPeerDescriptor()
|
|
17
|
+
const peerDescriptor2 = createMockPeerDescriptor()
|
|
18
|
+
const neighbors = createMockPeers()
|
|
19
|
+
const mockDhtRpc = createMockDhtRpc(neighbors)
|
|
24
20
|
|
|
25
21
|
const outgoingListener2 = (message: RpcMessage) => {
|
|
26
22
|
rpcCommunicator1.handleIncomingMessage(message)
|
|
@@ -28,10 +24,10 @@ describe('DhtRpc', () => {
|
|
|
28
24
|
|
|
29
25
|
beforeEach(() => {
|
|
30
26
|
rpcCommunicator1 = new RpcCommunicator()
|
|
31
|
-
rpcCommunicator1.registerRpcMethod(ClosestPeersRequest, ClosestPeersResponse, 'getClosestPeers',
|
|
27
|
+
rpcCommunicator1.registerRpcMethod(ClosestPeersRequest, ClosestPeersResponse, 'getClosestPeers', mockDhtRpc.getClosestPeers)
|
|
32
28
|
|
|
33
29
|
rpcCommunicator2 = new RpcCommunicator()
|
|
34
|
-
rpcCommunicator2.registerRpcMethod(ClosestPeersRequest, ClosestPeersResponse, 'getClosestPeers',
|
|
30
|
+
rpcCommunicator2.registerRpcMethod(ClosestPeersRequest, ClosestPeersResponse, 'getClosestPeers', mockDhtRpc.getClosestPeers)
|
|
35
31
|
|
|
36
32
|
rpcCommunicator1.on('outgoingMessage', (message: RpcMessage) => {
|
|
37
33
|
rpcCommunicator2.handleIncomingMessage(message)
|
|
@@ -50,24 +46,24 @@ describe('DhtRpc', () => {
|
|
|
50
46
|
|
|
51
47
|
it('Happy path', async () => {
|
|
52
48
|
const response1 = client1.getClosestPeers(
|
|
53
|
-
{
|
|
49
|
+
{ nodeId: peerDescriptor1.nodeId, requestId: '1' },
|
|
54
50
|
{
|
|
55
51
|
sourceDescriptor: peerDescriptor1,
|
|
56
52
|
targetDescriptor: peerDescriptor2,
|
|
57
53
|
}
|
|
58
54
|
)
|
|
59
55
|
const res1 = await response1
|
|
60
|
-
expect(res1.peers).toEqual(
|
|
56
|
+
expect(res1.peers.map((p) => getNodeIdFromPeerDescriptor(p))).toEqual(neighbors.map((n) => getNodeIdFromPeerDescriptor(n)))
|
|
61
57
|
|
|
62
58
|
const response2 = client2.getClosestPeers(
|
|
63
|
-
{
|
|
59
|
+
{ nodeId: peerDescriptor2.nodeId, requestId: '1' },
|
|
64
60
|
{
|
|
65
61
|
sourceDescriptor: peerDescriptor2,
|
|
66
62
|
targetDescriptor: peerDescriptor1
|
|
67
63
|
}
|
|
68
64
|
)
|
|
69
65
|
const res2 = await response2
|
|
70
|
-
expect(res2.peers).toEqual(
|
|
66
|
+
expect(res2.peers.map((p) => getNodeIdFromPeerDescriptor(p))).toEqual(neighbors.map((n) => getNodeIdFromPeerDescriptor(n)))
|
|
71
67
|
})
|
|
72
68
|
|
|
73
69
|
it('Default RPC timeout, client side', async () => {
|
|
@@ -76,7 +72,7 @@ describe('DhtRpc', () => {
|
|
|
76
72
|
await wait(3000)
|
|
77
73
|
})
|
|
78
74
|
const response2 = client2.getClosestPeers(
|
|
79
|
-
{
|
|
75
|
+
{ nodeId: peerDescriptor2.nodeId, requestId: '1' },
|
|
80
76
|
{
|
|
81
77
|
sourceDescriptor: peerDescriptor2,
|
|
82
78
|
targetDescriptor: peerDescriptor1
|
|
@@ -91,7 +87,7 @@ describe('DhtRpc', () => {
|
|
|
91
87
|
let timeout: NodeJS.Timeout
|
|
92
88
|
|
|
93
89
|
async function respondGetClosestPeersWithTimeout(): Promise<ClosestPeersResponse> {
|
|
94
|
-
const neighbors =
|
|
90
|
+
const neighbors = createMockPeers()
|
|
95
91
|
const response: ClosestPeersResponse = {
|
|
96
92
|
peers: neighbors,
|
|
97
93
|
requestId: 'why am i still here'
|
|
@@ -102,7 +98,7 @@ describe('DhtRpc', () => {
|
|
|
102
98
|
|
|
103
99
|
rpcCommunicator2.registerRpcMethod(ClosestPeersRequest, ClosestPeersResponse, 'getClosestPeers', respondGetClosestPeersWithTimeout)
|
|
104
100
|
const response = client2.getClosestPeers(
|
|
105
|
-
{
|
|
101
|
+
{ nodeId: peerDescriptor2.nodeId, requestId: '1' },
|
|
106
102
|
{
|
|
107
103
|
sourceDescriptor: peerDescriptor2,
|
|
108
104
|
targetDescriptor: peerDescriptor1
|
|
@@ -2,8 +2,10 @@ import { LatencyType, Simulator } from '../../src/connection/simulator/Simulator
|
|
|
2
2
|
import { DhtNode } from '../../src/dht/DhtNode'
|
|
3
3
|
import { PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
4
4
|
import { createMockConnectionDhtNode, waitConnectionManagersReadyForTesting } from '../utils/utils'
|
|
5
|
-
import {
|
|
6
|
-
|
|
5
|
+
import { getDhtAddressFromRaw, getNodeIdFromPeerDescriptor, getRawFromDhtAddress } from '../../src/identifiers'
|
|
6
|
+
|
|
7
|
+
const NUM_NODES = 100
|
|
8
|
+
const K = 8
|
|
7
9
|
|
|
8
10
|
describe('Find correctness', () => {
|
|
9
11
|
|
|
@@ -11,18 +13,14 @@ describe('Find correctness', () => {
|
|
|
11
13
|
let nodes: DhtNode[]
|
|
12
14
|
let entrypointDescriptor: PeerDescriptor
|
|
13
15
|
const simulator = new Simulator(LatencyType.REAL)
|
|
14
|
-
const NUM_NODES = 100
|
|
15
|
-
const K = 2
|
|
16
16
|
|
|
17
17
|
beforeEach(async () => {
|
|
18
18
|
nodes = []
|
|
19
|
-
|
|
20
|
-
entryPoint = await createMockConnectionDhtNode(entryPointId, simulator, undefined, K)
|
|
19
|
+
entryPoint = await createMockConnectionDhtNode(simulator, undefined, K)
|
|
21
20
|
nodes.push(entryPoint)
|
|
22
21
|
entrypointDescriptor = entryPoint.getLocalPeerDescriptor()
|
|
23
22
|
for (let i = 1; i < NUM_NODES; i++) {
|
|
24
|
-
const
|
|
25
|
-
const node = await createMockConnectionDhtNode(nodeId, simulator, undefined, K, 20, 60000)
|
|
23
|
+
const node = await createMockConnectionDhtNode(simulator, undefined, K, 40, 60000)
|
|
26
24
|
nodes.push(node)
|
|
27
25
|
}
|
|
28
26
|
await entryPoint.joinDht([entrypointDescriptor])
|
|
@@ -38,10 +36,10 @@ describe('Find correctness', () => {
|
|
|
38
36
|
})
|
|
39
37
|
|
|
40
38
|
it('Entrypoint can find a node from the network (exact match)', async () => {
|
|
41
|
-
const
|
|
42
|
-
const
|
|
43
|
-
expect(
|
|
44
|
-
expect(
|
|
39
|
+
const targetId = getRawFromDhtAddress(nodes[45].getNodeId())
|
|
40
|
+
const closestNodes = await entryPoint.findClosestNodesFromDht(getDhtAddressFromRaw(targetId))
|
|
41
|
+
expect(closestNodes.length).toBeGreaterThanOrEqual(5)
|
|
42
|
+
expect(getDhtAddressFromRaw(targetId)).toEqual(getNodeIdFromPeerDescriptor(closestNodes[0]))
|
|
45
43
|
}, 30000)
|
|
46
44
|
|
|
47
45
|
})
|
|
@@ -1,32 +1,22 @@
|
|
|
1
1
|
import { Simulator } from '../../src/connection/simulator/Simulator'
|
|
2
|
-
import { PeerID } from '../../src/helpers/PeerID'
|
|
3
2
|
import { DhtNode } from '../../src/dht/DhtNode'
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { NodeType } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
3
|
+
import { getDhtAddressFromRaw } from '../../src/identifiers'
|
|
4
|
+
import { createMockConnectionDhtNode, createMockConnectionLayer1Node, createMockPeerDescriptor } from '../utils/utils'
|
|
7
5
|
|
|
6
|
+
const NODE_COUNT = 48
|
|
8
7
|
const NUM_OF_NODES_PER_KBUCKET = 8
|
|
9
8
|
|
|
10
9
|
describe('Layer1', () => {
|
|
11
10
|
|
|
12
11
|
let simulator: Simulator
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
const entryPoint0Descriptor = {
|
|
16
|
-
kademliaId: PeerID.fromString(layer0EntryPointId).value,
|
|
17
|
-
type: NodeType.NODEJS
|
|
18
|
-
}
|
|
19
|
-
|
|
12
|
+
const entryPoint0Descriptor = createMockPeerDescriptor()
|
|
20
13
|
let layer0EntryPoint: DhtNode
|
|
21
|
-
|
|
22
|
-
const NODE_COUNT = 48
|
|
23
14
|
let nodes: DhtNode[]
|
|
24
|
-
|
|
25
15
|
let layer1CleanUp: DhtNode[]
|
|
26
16
|
|
|
27
17
|
beforeEach(async () => {
|
|
28
18
|
simulator = new Simulator()
|
|
29
|
-
layer0EntryPoint = await createMockConnectionDhtNode(
|
|
19
|
+
layer0EntryPoint = await createMockConnectionDhtNode(simulator, getDhtAddressFromRaw(entryPoint0Descriptor.nodeId))
|
|
30
20
|
await layer0EntryPoint.joinDht([entryPoint0Descriptor])
|
|
31
21
|
|
|
32
22
|
nodes = []
|
|
@@ -34,7 +24,6 @@ describe('Layer1', () => {
|
|
|
34
24
|
|
|
35
25
|
for (let i = 0; i < NODE_COUNT; i++) {
|
|
36
26
|
const node = await createMockConnectionDhtNode(
|
|
37
|
-
new UUID().toString(),
|
|
38
27
|
simulator,
|
|
39
28
|
undefined,
|
|
40
29
|
undefined,
|
|
@@ -56,14 +45,14 @@ describe('Layer1', () => {
|
|
|
56
45
|
})
|
|
57
46
|
|
|
58
47
|
it('single layer1 dht', async () => {
|
|
59
|
-
const layer1EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint
|
|
48
|
+
const layer1EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint)
|
|
60
49
|
await layer1EntryPoint.joinDht([entryPoint0Descriptor])
|
|
61
50
|
layer1CleanUp.push(layer1EntryPoint)
|
|
62
51
|
|
|
63
52
|
const layer1Nodes: DhtNode[] = []
|
|
64
53
|
for (let i = 0; i < NODE_COUNT; i++) {
|
|
65
54
|
const layer0 = nodes[i]
|
|
66
|
-
const layer1 = await createMockConnectionLayer1Node(layer0
|
|
55
|
+
const layer1 = await createMockConnectionLayer1Node(layer0, undefined, NUM_OF_NODES_PER_KBUCKET)
|
|
67
56
|
layer1Nodes.push(layer1)
|
|
68
57
|
layer1CleanUp.push(layer1)
|
|
69
58
|
}
|
|
@@ -73,24 +62,24 @@ describe('Layer1', () => {
|
|
|
73
62
|
for (let i = 0; i < NODE_COUNT; i++) {
|
|
74
63
|
const layer0Node = nodes[i]
|
|
75
64
|
const layer1Node = layer1Nodes[i]
|
|
76
|
-
expect(layer1Node.getNodeId().
|
|
77
|
-
expect(layer1Node.
|
|
78
|
-
expect(layer1Node.
|
|
79
|
-
expect(layer1Node.
|
|
65
|
+
expect(layer1Node.getNodeId()).toEqual(layer0Node.getNodeId())
|
|
66
|
+
expect(layer1Node.getConnectionCount()).toEqual(layer0Node.getConnectionCount())
|
|
67
|
+
expect(layer1Node.getNeighborCount()).toBeGreaterThanOrEqual(NUM_OF_NODES_PER_KBUCKET / 2)
|
|
68
|
+
expect(layer1Node.getConnections()).toEqual(layer0Node.getConnections())
|
|
80
69
|
}
|
|
81
70
|
}, 120000)
|
|
82
71
|
|
|
83
72
|
it('multiple layer1 dht', async () => {
|
|
84
|
-
const stream1EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint
|
|
73
|
+
const stream1EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint, 'one')
|
|
85
74
|
await stream1EntryPoint.joinDht([entryPoint0Descriptor])
|
|
86
75
|
|
|
87
|
-
const stream2EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint
|
|
76
|
+
const stream2EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint, 'two')
|
|
88
77
|
await stream2EntryPoint.joinDht([entryPoint0Descriptor])
|
|
89
78
|
|
|
90
|
-
const stream3EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint
|
|
79
|
+
const stream3EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint, 'three')
|
|
91
80
|
await stream3EntryPoint.joinDht([entryPoint0Descriptor])
|
|
92
81
|
|
|
93
|
-
const stream4EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint
|
|
82
|
+
const stream4EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint, 'four')
|
|
94
83
|
await stream4EntryPoint.joinDht([entryPoint0Descriptor])
|
|
95
84
|
|
|
96
85
|
layer1CleanUp.push(stream1EntryPoint)
|
|
@@ -105,10 +94,10 @@ describe('Layer1', () => {
|
|
|
105
94
|
|
|
106
95
|
for (let i = 0; i < NODE_COUNT; i++) {
|
|
107
96
|
const layer0 = nodes[i]
|
|
108
|
-
const one = await createMockConnectionLayer1Node(layer0
|
|
109
|
-
const two = await createMockConnectionLayer1Node(layer0
|
|
110
|
-
const three = await createMockConnectionLayer1Node(layer0
|
|
111
|
-
const four = await createMockConnectionLayer1Node(layer0
|
|
97
|
+
const one = await createMockConnectionLayer1Node(layer0, 'one')
|
|
98
|
+
const two = await createMockConnectionLayer1Node(layer0, 'two')
|
|
99
|
+
const three = await createMockConnectionLayer1Node(layer0, 'three')
|
|
100
|
+
const four = await createMockConnectionLayer1Node(layer0, 'four')
|
|
112
101
|
|
|
113
102
|
stream1.push(one)
|
|
114
103
|
stream2.push(two)
|
|
@@ -130,10 +119,10 @@ describe('Layer1', () => {
|
|
|
130
119
|
const stream3Node = stream3[i]
|
|
131
120
|
const stream4Node = stream4[i]
|
|
132
121
|
|
|
133
|
-
expect(layer0Node.
|
|
134
|
-
expect(layer0Node.
|
|
135
|
-
expect(layer0Node.
|
|
136
|
-
expect(layer0Node.
|
|
122
|
+
expect(layer0Node.getConnectionCount()).toEqual(stream1Node.getConnectionCount())
|
|
123
|
+
expect(layer0Node.getConnectionCount()).toEqual(stream2Node.getConnectionCount())
|
|
124
|
+
expect(layer0Node.getConnectionCount()).toEqual(stream3Node.getConnectionCount())
|
|
125
|
+
expect(layer0Node.getConnectionCount()).toEqual(stream4Node.getConnectionCount())
|
|
137
126
|
|
|
138
127
|
}
|
|
139
128
|
}, 120000)
|
|
@@ -155,7 +144,7 @@ describe('Layer1', () => {
|
|
|
155
144
|
// layer1CleanUp.push(layer1)
|
|
156
145
|
// receivedMessages.set(layer0.getNodeId().toKey(), new Set())
|
|
157
146
|
// layer1.on('message', (msg: Message) => {
|
|
158
|
-
// const peerId = PeerID.fromValue(msg.sourceDescriptor!.
|
|
147
|
+
// const peerId = PeerID.fromValue(msg.sourceDescriptor!.nodeId)
|
|
159
148
|
// receivedMessages.get(layer0.getNodeId().toKey())!.add(peerId.toKey())
|
|
160
149
|
// })
|
|
161
150
|
// }
|
|
@@ -170,7 +159,6 @@ describe('Layer1', () => {
|
|
|
170
159
|
// const message: Message = {
|
|
171
160
|
// serviceId: 'service',
|
|
172
161
|
// messageId: v4(),
|
|
173
|
-
// messageType: MessageType.RPC,
|
|
174
162
|
// body: {
|
|
175
163
|
// oneofKind: 'rpcMessage',
|
|
176
164
|
// rpcMessage: rpcWrapper
|
|
@@ -180,7 +168,7 @@ describe('Layer1', () => {
|
|
|
180
168
|
// }
|
|
181
169
|
// await sender.doRouteMessage({
|
|
182
170
|
// message,
|
|
183
|
-
//
|
|
171
|
+
// target: receiver.getPeerDescriptor().nodeId,
|
|
184
172
|
// sourcePeer: sender.getPeerDescriptor(),
|
|
185
173
|
// requestId: v4(),
|
|
186
174
|
// reachableThrough: [],
|
|
@@ -1,62 +1,42 @@
|
|
|
1
1
|
import { Logger } from '@streamr/utils'
|
|
2
2
|
import { Simulator } from '../../src/connection/simulator/Simulator'
|
|
3
3
|
import { DhtNode } from '../../src/dht/DhtNode'
|
|
4
|
-
import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
5
4
|
import { createMockConnectionDhtNode, createMockConnectionLayer1Node } from '../utils/utils'
|
|
5
|
+
import { createRandomDhtAddress } from '../../src/identifiers'
|
|
6
6
|
|
|
7
7
|
const logger = new Logger(module)
|
|
8
8
|
|
|
9
9
|
describe('Layer 1 on Layer 0 with mocked connections', () => {
|
|
10
|
-
const simulator = new Simulator()
|
|
11
|
-
const layer0EntryPointId = 'layer0entrypoint'
|
|
12
10
|
|
|
11
|
+
const simulator = new Simulator()
|
|
13
12
|
let layer0EntryPoint: DhtNode
|
|
14
13
|
let layer1Node1: DhtNode
|
|
15
|
-
|
|
16
14
|
let layer0Node1: DhtNode
|
|
17
15
|
let layer1EntryPoint: DhtNode
|
|
18
|
-
|
|
19
16
|
let layer0Node2: DhtNode
|
|
20
17
|
let layer1Node2: DhtNode
|
|
21
|
-
|
|
22
18
|
let layer0Node3: DhtNode
|
|
23
19
|
let layer1Node3: DhtNode
|
|
24
|
-
|
|
25
20
|
let layer0Node4: DhtNode
|
|
26
21
|
let layer1Node4: DhtNode
|
|
27
22
|
|
|
28
|
-
let entryPointDescriptor: PeerDescriptor
|
|
29
|
-
|
|
30
23
|
beforeEach(async () => {
|
|
31
24
|
|
|
32
|
-
layer0EntryPoint = await createMockConnectionDhtNode(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
25
|
+
layer0EntryPoint = await createMockConnectionDhtNode(simulator, createRandomDhtAddress())
|
|
26
|
+
layer0Node1 = await createMockConnectionDhtNode(simulator, createRandomDhtAddress())
|
|
27
|
+
layer0Node2 = await createMockConnectionDhtNode(simulator, createRandomDhtAddress())
|
|
28
|
+
layer0Node3 = await createMockConnectionDhtNode(simulator, createRandomDhtAddress())
|
|
29
|
+
layer0Node4 = await createMockConnectionDhtNode(simulator, createRandomDhtAddress())
|
|
36
30
|
|
|
37
|
-
|
|
38
|
-
layer0Node2 = await createMockConnectionDhtNode(layer0Node2Id, simulator)
|
|
31
|
+
layer1EntryPoint = await createMockConnectionLayer1Node(layer0EntryPoint)
|
|
39
32
|
|
|
40
|
-
|
|
41
|
-
|
|
33
|
+
layer1Node1 = await createMockConnectionLayer1Node(layer0Node1)
|
|
34
|
+
layer1Node2 = await createMockConnectionLayer1Node(layer0Node2)
|
|
35
|
+
layer1Node3 = await createMockConnectionLayer1Node(layer0Node3)
|
|
36
|
+
layer1Node4 = await createMockConnectionLayer1Node(layer0Node4)
|
|
42
37
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
layer1EntryPoint = await createMockConnectionLayer1Node(layer0EntryPointId, layer0EntryPoint)
|
|
47
|
-
|
|
48
|
-
layer1Node1 = await createMockConnectionLayer1Node(layer0Node1Id, layer0Node1)
|
|
49
|
-
layer1Node2 = await createMockConnectionLayer1Node(layer0Node2Id, layer0Node2)
|
|
50
|
-
layer1Node3 = await createMockConnectionLayer1Node(layer0Node3Id, layer0Node3)
|
|
51
|
-
layer1Node4 = await createMockConnectionLayer1Node(layer0Node4Id, layer0Node4)
|
|
52
|
-
|
|
53
|
-
entryPointDescriptor = {
|
|
54
|
-
kademliaId: layer0EntryPoint.getNodeId().value,
|
|
55
|
-
type: NodeType.NODEJS
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
await layer0EntryPoint.joinDht([entryPointDescriptor])
|
|
59
|
-
await layer1EntryPoint.joinDht([entryPointDescriptor])
|
|
38
|
+
await layer0EntryPoint.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
|
|
39
|
+
await layer1EntryPoint.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
|
|
60
40
|
})
|
|
61
41
|
|
|
62
42
|
afterEach(async () => {
|
|
@@ -75,31 +55,31 @@ describe('Layer 1 on Layer 0 with mocked connections', () => {
|
|
|
75
55
|
})
|
|
76
56
|
|
|
77
57
|
it('Happy Path', async () => {
|
|
78
|
-
await layer0Node1.joinDht([
|
|
79
|
-
await layer0Node2.joinDht([
|
|
80
|
-
await layer0Node3.joinDht([
|
|
81
|
-
await layer0Node4.joinDht([
|
|
82
|
-
|
|
83
|
-
await layer1Node1.joinDht([
|
|
84
|
-
await layer1Node2.joinDht([
|
|
85
|
-
await layer1Node3.joinDht([
|
|
86
|
-
await layer1Node4.joinDht([
|
|
87
|
-
|
|
88
|
-
logger.info('layer1EntryPoint.
|
|
89
|
-
logger.info('layer1Node1.
|
|
90
|
-
logger.info('layer1Node2.
|
|
91
|
-
logger.info('layer1Node3.
|
|
92
|
-
logger.info('layer1Node4.
|
|
93
|
-
|
|
94
|
-
expect(layer1Node1.
|
|
95
|
-
expect(layer1Node2.
|
|
96
|
-
expect(layer1Node3.
|
|
97
|
-
expect(layer1Node4.
|
|
98
|
-
|
|
99
|
-
expect(layer1Node1.
|
|
100
|
-
expect(layer1Node2.
|
|
101
|
-
expect(layer1Node3.
|
|
102
|
-
expect(layer1Node4.
|
|
58
|
+
await layer0Node1.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
|
|
59
|
+
await layer0Node2.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
|
|
60
|
+
await layer0Node3.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
|
|
61
|
+
await layer0Node4.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
|
|
62
|
+
|
|
63
|
+
await layer1Node1.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
|
|
64
|
+
await layer1Node2.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
|
|
65
|
+
await layer1Node3.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
|
|
66
|
+
await layer1Node4.joinDht([layer0EntryPoint.getLocalPeerDescriptor()])
|
|
67
|
+
|
|
68
|
+
logger.info('layer1EntryPoint.getNeighborCount() ' + layer1EntryPoint.getNeighborCount())
|
|
69
|
+
logger.info('layer1Node1.getNeighborCount()' + layer1Node1.getNeighborCount())
|
|
70
|
+
logger.info('layer1Node2.getNeighborCount()' + layer1Node2.getNeighborCount())
|
|
71
|
+
logger.info('layer1Node3.getNeighborCount()' + layer1Node3.getNeighborCount())
|
|
72
|
+
logger.info('layer1Node4.getNeighborCount()' + layer1Node4.getNeighborCount())
|
|
73
|
+
|
|
74
|
+
expect(layer1Node1.getNeighborCount()).toEqual(layer0Node1.getNeighborCount())
|
|
75
|
+
expect(layer1Node2.getNeighborCount()).toEqual(layer0Node2.getNeighborCount())
|
|
76
|
+
expect(layer1Node3.getNeighborCount()).toEqual(layer0Node3.getNeighborCount())
|
|
77
|
+
expect(layer1Node4.getNeighborCount()).toEqual(layer0Node4.getNeighborCount())
|
|
78
|
+
|
|
79
|
+
expect(layer1Node1.getNeighbors()).toContainValues(layer0Node1.getNeighbors())
|
|
80
|
+
expect(layer1Node2.getNeighbors()).toContainValues(layer0Node2.getNeighbors())
|
|
81
|
+
expect(layer1Node3.getNeighbors()).toContainValues(layer0Node3.getNeighbors())
|
|
82
|
+
expect(layer1Node4.getNeighbors()).toContainValues(layer0Node4.getNeighbors())
|
|
103
83
|
|
|
104
84
|
}, 60000)
|
|
105
85
|
})
|
|
@@ -16,9 +16,9 @@ describe('multiple entry point joining', () => {
|
|
|
16
16
|
beforeEach(async () => {
|
|
17
17
|
simulator = new Simulator(LatencyType.REAL)
|
|
18
18
|
|
|
19
|
-
node1 = await createMockConnectionDhtNode(
|
|
20
|
-
node2 = await createMockConnectionDhtNode(
|
|
21
|
-
node3 = await createMockConnectionDhtNode(
|
|
19
|
+
node1 = await createMockConnectionDhtNode(simulator)
|
|
20
|
+
node2 = await createMockConnectionDhtNode(simulator)
|
|
21
|
+
node3 = await createMockConnectionDhtNode(simulator)
|
|
22
22
|
|
|
23
23
|
entryPoints = [
|
|
24
24
|
node1.getLocalPeerDescriptor(),
|
|
@@ -42,9 +42,9 @@ describe('multiple entry point joining', () => {
|
|
|
42
42
|
node2.joinDht(entryPoints),
|
|
43
43
|
node3.joinDht(entryPoints)
|
|
44
44
|
])
|
|
45
|
-
expect(node1.
|
|
46
|
-
expect(node2.
|
|
47
|
-
expect(node3.
|
|
45
|
+
expect(node1.getNeighborCount()).toEqual(2)
|
|
46
|
+
expect(node2.getNeighborCount()).toEqual(2)
|
|
47
|
+
expect(node3.getNeighborCount()).toEqual(2)
|
|
48
48
|
})
|
|
49
49
|
|
|
50
50
|
it('can join even if a node is offline', async () => {
|
|
@@ -53,8 +53,8 @@ describe('multiple entry point joining', () => {
|
|
|
53
53
|
node1.joinDht(entryPoints),
|
|
54
54
|
node2.joinDht(entryPoints)
|
|
55
55
|
])
|
|
56
|
-
expect(node1.
|
|
57
|
-
expect(node2.
|
|
56
|
+
expect(node1.getNeighborCount()).toEqual(1)
|
|
57
|
+
expect(node2.getNeighborCount()).toEqual(1)
|
|
58
58
|
}, 10000)
|
|
59
59
|
})
|
|
60
60
|
|
|
@@ -69,11 +69,11 @@ describe('multiple entry point joining', () => {
|
|
|
69
69
|
beforeEach(async () => {
|
|
70
70
|
simulator = new Simulator(LatencyType.REAL)
|
|
71
71
|
|
|
72
|
-
entryPoint1 = await createMockConnectionDhtNode(
|
|
73
|
-
entryPoint2 = await createMockConnectionDhtNode(
|
|
72
|
+
entryPoint1 = await createMockConnectionDhtNode(simulator)
|
|
73
|
+
entryPoint2 = await createMockConnectionDhtNode(simulator)
|
|
74
74
|
|
|
75
|
-
node1 = await createMockConnectionDhtNode(
|
|
76
|
-
node2 = await createMockConnectionDhtNode(
|
|
75
|
+
node1 = await createMockConnectionDhtNode(simulator)
|
|
76
|
+
node2 = await createMockConnectionDhtNode(simulator)
|
|
77
77
|
|
|
78
78
|
entryPoints = [
|
|
79
79
|
entryPoint1.getLocalPeerDescriptor(),
|
|
@@ -96,9 +96,9 @@ describe('multiple entry point joining', () => {
|
|
|
96
96
|
|
|
97
97
|
it('non-entry point nodes can join', async () => {
|
|
98
98
|
await node1.joinDht(entryPoints)
|
|
99
|
-
expect(node1.
|
|
99
|
+
expect(node1.getNeighborCount()).toEqual(2)
|
|
100
100
|
await node2.joinDht(entryPoints)
|
|
101
|
-
expect(node2.
|
|
101
|
+
expect(node2.getNeighborCount()).toEqual(3)
|
|
102
102
|
})
|
|
103
103
|
|
|
104
104
|
})
|