@streamr/trackerless-network 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.
Files changed (231) hide show
  1. package/dist/generated/google/protobuf/any.js.map +1 -0
  2. package/dist/generated/google/protobuf/empty.js.map +1 -0
  3. package/dist/generated/google/protobuf/timestamp.js.map +1 -0
  4. package/dist/{src/proto → generated}/packages/dht/protos/DhtRpc.client.d.ts +9 -0
  5. package/dist/{src/proto → generated}/packages/dht/protos/DhtRpc.client.js +7 -0
  6. package/dist/generated/packages/dht/protos/DhtRpc.client.js.map +1 -0
  7. package/dist/{src/proto → generated}/packages/dht/protos/DhtRpc.d.ts +32 -8
  8. package/dist/{src/proto → generated}/packages/dht/protos/DhtRpc.js +23 -7
  9. package/dist/generated/packages/dht/protos/DhtRpc.js.map +1 -0
  10. package/dist/{src/proto → generated}/packages/dht/protos/DhtRpc.server.d.ts +5 -0
  11. package/dist/generated/packages/dht/protos/DhtRpc.server.js.map +1 -0
  12. package/dist/generated/packages/proto-rpc/protos/ProtoRpc.js.map +1 -0
  13. package/dist/generated/packages/trackerless-network/protos/NetworkRpc.client.js.map +1 -0
  14. package/dist/{src/proto → generated}/packages/trackerless-network/protos/NetworkRpc.d.ts +3 -3
  15. package/dist/{src/proto → generated}/packages/trackerless-network/protos/NetworkRpc.js +1 -1
  16. package/dist/generated/packages/trackerless-network/protos/NetworkRpc.js.map +1 -0
  17. package/dist/generated/packages/trackerless-network/protos/NetworkRpc.server.js.map +1 -0
  18. package/dist/package.json +9 -10
  19. package/dist/src/NetworkNode.d.ts +4 -3
  20. package/dist/src/NetworkNode.js.map +1 -1
  21. package/dist/src/NetworkStack.d.ts +2 -2
  22. package/dist/src/NetworkStack.js +4 -4
  23. package/dist/src/NetworkStack.js.map +1 -1
  24. package/dist/src/exports.d.ts +3 -2
  25. package/dist/src/exports.js +3 -2
  26. package/dist/src/exports.js.map +1 -1
  27. package/dist/src/logic/ContentDeliveryLayerNode.d.ts +2 -1
  28. package/dist/src/logic/ContentDeliveryLayerNode.js +5 -5
  29. package/dist/src/logic/ContentDeliveryLayerNode.js.map +1 -1
  30. package/dist/src/logic/ContentDeliveryManager.d.ts +2 -1
  31. package/dist/src/logic/ContentDeliveryManager.js +2 -1
  32. package/dist/src/logic/ContentDeliveryManager.js.map +1 -1
  33. package/dist/src/logic/ContentDeliveryRpcLocal.d.ts +3 -3
  34. package/dist/src/logic/ContentDeliveryRpcLocal.js +1 -1
  35. package/dist/src/logic/ContentDeliveryRpcLocal.js.map +1 -1
  36. package/dist/src/logic/ContentDeliveryRpcRemote.d.ts +2 -2
  37. package/dist/src/logic/ControlLayerNode.d.ts +1 -1
  38. package/dist/src/logic/DiscoveryLayerNode.d.ts +3 -3
  39. package/dist/src/logic/DuplicateMessageDetector.js +1 -1
  40. package/dist/src/logic/DuplicateMessageDetector.js.map +1 -1
  41. package/dist/src/logic/PeerDescriptorStoreManager.d.ts +1 -1
  42. package/dist/src/logic/PeerDescriptorStoreManager.js +1 -1
  43. package/dist/src/logic/PeerDescriptorStoreManager.js.map +1 -1
  44. package/dist/src/logic/inspect/InspectSession.d.ts +2 -2
  45. package/dist/src/logic/inspect/InspectSession.js +2 -2
  46. package/dist/src/logic/inspect/InspectSession.js.map +1 -1
  47. package/dist/src/logic/inspect/Inspector.d.ts +1 -1
  48. package/dist/src/logic/inspect/Inspector.js +1 -1
  49. package/dist/src/logic/inspect/Inspector.js.map +1 -1
  50. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.d.ts +2 -2
  51. package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.d.ts +2 -2
  52. package/dist/src/logic/neighbor-discovery/Handshaker.js +2 -2
  53. package/dist/src/logic/neighbor-discovery/Handshaker.js.map +1 -1
  54. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js +2 -2
  55. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js.map +1 -1
  56. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.d.ts +2 -2
  57. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js +1 -1
  58. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js.map +1 -1
  59. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.d.ts +1 -1
  60. package/dist/src/logic/node-info/NodeInfoClient.d.ts +1 -1
  61. package/dist/src/logic/node-info/NodeInfoClient.js +1 -1
  62. package/dist/src/logic/node-info/NodeInfoClient.js.map +1 -1
  63. package/dist/src/logic/node-info/NodeInfoRpcLocal.d.ts +2 -2
  64. package/dist/src/logic/node-info/NodeInfoRpcLocal.js +1 -1
  65. package/dist/src/logic/node-info/NodeInfoRpcLocal.js.map +1 -1
  66. package/dist/src/logic/node-info/NodeInfoRpcRemote.d.ts +2 -2
  67. package/dist/src/logic/propagation/Propagation.d.ts +1 -1
  68. package/dist/src/logic/propagation/PropagationTaskStore.d.ts +1 -1
  69. package/dist/src/logic/proxy/ProxyClient.d.ts +1 -2
  70. package/dist/src/logic/proxy/ProxyClient.js +2 -3
  71. package/dist/src/logic/proxy/ProxyClient.js.map +1 -1
  72. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.d.ts +2 -2
  73. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js +4 -4
  74. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js.map +1 -1
  75. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.d.ts +2 -2
  76. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js +1 -1
  77. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.d.ts +4 -4
  78. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js +1 -1
  79. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js.map +1 -1
  80. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.d.ts +1 -1
  81. package/dist/src/logic/utils.d.ts +1 -1
  82. package/dist/src/logic/utils.js +2 -2
  83. package/dist/src/logic/utils.js.map +1 -1
  84. package/dist/src/types.d.ts +6 -0
  85. package/dist/src/types.js +3 -0
  86. package/dist/src/types.js.map +1 -0
  87. package/dist/test/benchmark/first-message.js +2 -2
  88. package/dist/test/benchmark/first-message.js.map +1 -1
  89. package/dist/test/utils/utils.d.ts +2 -2
  90. package/dist/test/utils/utils.js +5 -4
  91. package/dist/test/utils/utils.js.map +1 -1
  92. package/jest.config.ts +13 -0
  93. package/package.json +9 -10
  94. package/proto.sh +2 -2
  95. package/protos/NetworkRpc.proto +2 -3
  96. package/.eslintignore +0 -7
  97. package/.eslintrc +0 -3
  98. package/dist/src/proto/google/protobuf/any.js.map +0 -1
  99. package/dist/src/proto/google/protobuf/empty.js.map +0 -1
  100. package/dist/src/proto/google/protobuf/timestamp.js.map +0 -1
  101. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +0 -1
  102. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +0 -1
  103. package/dist/src/proto/packages/dht/protos/DhtRpc.server.js.map +0 -1
  104. package/dist/src/proto/packages/proto-rpc/protos/ProtoRpc.js.map +0 -1
  105. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js.map +0 -1
  106. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js.map +0 -1
  107. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.server.js.map +0 -1
  108. package/jest.config.js +0 -8
  109. package/src/NetworkNode.ts +0 -141
  110. package/src/NetworkStack.ts +0 -198
  111. package/src/exports.ts +0 -16
  112. package/src/logic/ContentDeliveryLayerNode.ts +0 -424
  113. package/src/logic/ContentDeliveryManager.ts +0 -399
  114. package/src/logic/ContentDeliveryRpcLocal.ts +0 -48
  115. package/src/logic/ContentDeliveryRpcRemote.ts +0 -44
  116. package/src/logic/ControlLayerNode.ts +0 -17
  117. package/src/logic/DiscoveryLayerNode.ts +0 -30
  118. package/src/logic/DuplicateMessageDetector.ts +0 -167
  119. package/src/logic/ExternalNetworkRpc.ts +0 -42
  120. package/src/logic/NodeList.ts +0 -114
  121. package/src/logic/PeerDescriptorStoreManager.ts +0 -96
  122. package/src/logic/StreamPartNetworkSplitAvoidance.ts +0 -90
  123. package/src/logic/StreamPartReconnect.ts +0 -38
  124. package/src/logic/createContentDeliveryLayerNode.ts +0 -130
  125. package/src/logic/formStreamPartDeliveryServiceId.ts +0 -7
  126. package/src/logic/inspect/InspectSession.ts +0 -54
  127. package/src/logic/inspect/Inspector.ts +0 -100
  128. package/src/logic/neighbor-discovery/HandshakeRpcLocal.ts +0 -138
  129. package/src/logic/neighbor-discovery/HandshakeRpcRemote.ts +0 -66
  130. package/src/logic/neighbor-discovery/Handshaker.ts +0 -215
  131. package/src/logic/neighbor-discovery/NeighborFinder.ts +0 -77
  132. package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +0 -69
  133. package/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.ts +0 -75
  134. package/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.ts +0 -35
  135. package/src/logic/node-info/NodeInfoClient.ts +0 -23
  136. package/src/logic/node-info/NodeInfoRpcLocal.ts +0 -28
  137. package/src/logic/node-info/NodeInfoRpcRemote.ts +0 -11
  138. package/src/logic/propagation/FifoMapWithTTL.ts +0 -116
  139. package/src/logic/propagation/Propagation.ts +0 -84
  140. package/src/logic/propagation/PropagationTaskStore.ts +0 -41
  141. package/src/logic/proxy/ProxyClient.ts +0 -287
  142. package/src/logic/proxy/ProxyConnectionRpcLocal.ts +0 -106
  143. package/src/logic/proxy/ProxyConnectionRpcRemote.ts +0 -26
  144. package/src/logic/temporary-connection/TemporaryConnectionRpcLocal.ts +0 -73
  145. package/src/logic/temporary-connection/TemporaryConnectionRpcRemote.ts +0 -29
  146. package/src/logic/utils.ts +0 -18
  147. package/src/proto/google/protobuf/any.ts +0 -326
  148. package/src/proto/google/protobuf/empty.ts +0 -81
  149. package/src/proto/google/protobuf/timestamp.ts +0 -287
  150. package/src/proto/packages/dht/protos/DhtRpc.client.ts +0 -407
  151. package/src/proto/packages/dht/protos/DhtRpc.server.ts +0 -160
  152. package/src/proto/packages/dht/protos/DhtRpc.ts +0 -1244
  153. package/src/proto/packages/proto-rpc/protos/ProtoRpc.ts +0 -108
  154. package/src/proto/packages/trackerless-network/protos/NetworkRpc.client.ts +0 -218
  155. package/src/proto/packages/trackerless-network/protos/NetworkRpc.server.ts +0 -85
  156. package/src/proto/packages/trackerless-network/protos/NetworkRpc.ts +0 -783
  157. package/test/benchmark/StreamPartIdDataKeyDistribution.test.ts +0 -60
  158. package/test/benchmark/first-message.ts +0 -169
  159. package/test/end-to-end/content-delivery-layer-node-with-real-connections.test.ts +0 -160
  160. package/test/end-to-end/external-network-rpc.test.ts +0 -67
  161. package/test/end-to-end/inspect.test.ts +0 -124
  162. package/test/end-to-end/proxy-and-full-node.test.ts +0 -143
  163. package/test/end-to-end/proxy-connections.test.ts +0 -228
  164. package/test/end-to-end/proxy-key-exchange.test.ts +0 -126
  165. package/test/end-to-end/webrtc-full-node-network.test.ts +0 -85
  166. package/test/end-to-end/websocket-full-node-network.test.ts +0 -84
  167. package/test/integration/ContentDeliveryLayerNode-Layer1Node-Latencies.test.ts +0 -139
  168. package/test/integration/ContentDeliveryLayerNode-Layer1Node.test.ts +0 -162
  169. package/test/integration/ContentDeliveryManager.test.ts +0 -157
  170. package/test/integration/ContentDeliveryRpcRemote.test.ts +0 -100
  171. package/test/integration/HandshakeRpcRemote.test.ts +0 -79
  172. package/test/integration/Handshakes.test.ts +0 -176
  173. package/test/integration/Inspect.test.ts +0 -89
  174. package/test/integration/NeighborUpdateRpcRemote.test.ts +0 -82
  175. package/test/integration/NetworkNode.test.ts +0 -115
  176. package/test/integration/NetworkRpc.test.ts +0 -52
  177. package/test/integration/NetworkStack.test.ts +0 -72
  178. package/test/integration/NodeInfoRpc.test.ts +0 -109
  179. package/test/integration/Propagation.test.ts +0 -76
  180. package/test/integration/joining-streams-on-offline-peers.test.ts +0 -82
  181. package/test/integration/stream-without-default-entrypoints.test.ts +0 -128
  182. package/test/integration/streamEntryPointReplacing.test.ts +0 -97
  183. package/test/types/global.d.ts +0 -2
  184. package/test/unit/ContentDeliveryLayerNode.test.ts +0 -112
  185. package/test/unit/ContentDeliveryManager.test.ts +0 -95
  186. package/test/unit/ContentDeliveryRpcLocal.test.ts +0 -60
  187. package/test/unit/DuplicateMessageDetector.test.ts +0 -192
  188. package/test/unit/ExternalNetworkRpc.test.ts +0 -48
  189. package/test/unit/FifoMapWithTtl.test.ts +0 -253
  190. package/test/unit/HandshakeRpcLocal.test.ts +0 -168
  191. package/test/unit/Handshaker.test.ts +0 -69
  192. package/test/unit/InspectSession.test.ts +0 -80
  193. package/test/unit/Inspector.test.ts +0 -51
  194. package/test/unit/NeighborFinder.test.ts +0 -51
  195. package/test/unit/NeighborUpdateRpcLocal.test.ts +0 -139
  196. package/test/unit/NetworkNode.test.ts +0 -42
  197. package/test/unit/NodeList.test.ts +0 -164
  198. package/test/unit/NumberPair.test.ts +0 -22
  199. package/test/unit/PeerDescriptorStoreManager.test.ts +0 -103
  200. package/test/unit/Propagation.test.ts +0 -151
  201. package/test/unit/ProxyConnectionRpcRemote.test.ts +0 -39
  202. package/test/unit/StreamPartIDDataKey.test.ts +0 -12
  203. package/test/unit/StreamPartNetworkSplitAvoidance.test.ts +0 -31
  204. package/test/unit/StreamPartReconnect.test.ts +0 -30
  205. package/test/unit/TemporaryConnectionRpcLocal.test.ts +0 -38
  206. package/test/utils/fake/FakePeerDescriptorStoreManager.ts +0 -29
  207. package/test/utils/mock/MockConnectionsView.ts +0 -18
  208. package/test/utils/mock/MockControlLayerNode.ts +0 -78
  209. package/test/utils/mock/MockDiscoveryLayerNode.ts +0 -60
  210. package/test/utils/mock/MockHandshaker.ts +0 -17
  211. package/test/utils/mock/MockNeighborFinder.ts +0 -20
  212. package/test/utils/mock/MockNeighborUpdateManager.ts +0 -21
  213. package/test/utils/mock/MockTransport.ts +0 -30
  214. package/test/utils/utils.ts +0 -143
  215. package/tsconfig.browser.json +0 -12
  216. package/tsconfig.jest.json +0 -16
  217. package/tsconfig.json +0 -3
  218. package/tsconfig.node.json +0 -16
  219. /package/dist/{src/proto → generated}/google/protobuf/any.d.ts +0 -0
  220. /package/dist/{src/proto → generated}/google/protobuf/any.js +0 -0
  221. /package/dist/{src/proto → generated}/google/protobuf/empty.d.ts +0 -0
  222. /package/dist/{src/proto → generated}/google/protobuf/empty.js +0 -0
  223. /package/dist/{src/proto → generated}/google/protobuf/timestamp.d.ts +0 -0
  224. /package/dist/{src/proto → generated}/google/protobuf/timestamp.js +0 -0
  225. /package/dist/{src/proto → generated}/packages/dht/protos/DhtRpc.server.js +0 -0
  226. /package/dist/{src/proto → generated}/packages/proto-rpc/protos/ProtoRpc.d.ts +0 -0
  227. /package/dist/{src/proto → generated}/packages/proto-rpc/protos/ProtoRpc.js +0 -0
  228. /package/dist/{src/proto → generated}/packages/trackerless-network/protos/NetworkRpc.client.d.ts +0 -0
  229. /package/dist/{src/proto → generated}/packages/trackerless-network/protos/NetworkRpc.client.js +0 -0
  230. /package/dist/{src/proto → generated}/packages/trackerless-network/protos/NetworkRpc.server.d.ts +0 -0
  231. /package/dist/{src/proto → generated}/packages/trackerless-network/protos/NetworkRpc.server.js +0 -0
@@ -1,176 +0,0 @@
1
- import {
2
- ListeningRpcCommunicator,
3
- NodeType,
4
- PeerDescriptor,
5
- Simulator,
6
- SimulatorTransport,
7
- toNodeId
8
- } from '@streamr/dht'
9
- import { StreamPartIDUtils } from '@streamr/utils'
10
- import { NodeList } from '../../src/logic/NodeList'
11
- import { HandshakeRpcRemote } from '../../src/logic/neighbor-discovery/HandshakeRpcRemote'
12
- import { Handshaker } from '../../src/logic/neighbor-discovery/Handshaker'
13
- import { StreamPartHandshakeRequest, StreamPartHandshakeResponse } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
14
- import {
15
- HandshakeRpcClient
16
- } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc.client'
17
-
18
- describe('Handshakes', () => {
19
-
20
- const peerDescriptor1: PeerDescriptor = {
21
- nodeId: new Uint8Array([1, 1, 1]),
22
- type: NodeType.NODEJS
23
- }
24
- const peerDescriptor2: PeerDescriptor = {
25
- nodeId: new Uint8Array([2, 1, 1]),
26
- type: NodeType.NODEJS
27
- }
28
- const peerDescriptor3: PeerDescriptor = {
29
- nodeId: new Uint8Array([3, 1, 1]),
30
- type: NodeType.NODEJS
31
- }
32
- let rpcCommunicator1: ListeningRpcCommunicator
33
- let rpcCommunicator2: ListeningRpcCommunicator
34
- let rpcCommunicator3: ListeningRpcCommunicator
35
- let neighbors: NodeList
36
- let leftNodeView: NodeList
37
- let rightNodeView: NodeList
38
- let nodeView: NodeList
39
- let handshaker: Handshaker
40
- const streamPartId = StreamPartIDUtils.parse('stream#0')
41
-
42
- const acceptHandshake = async (request: StreamPartHandshakeRequest): Promise<StreamPartHandshakeResponse> => {
43
- const response: StreamPartHandshakeResponse = {
44
- requestId: request.requestId,
45
- accepted: true
46
- }
47
- return response
48
- }
49
-
50
- const rejectHandshake = async (request: StreamPartHandshakeRequest): Promise<StreamPartHandshakeResponse> => {
51
- const response: StreamPartHandshakeResponse = {
52
- requestId: request.requestId,
53
- accepted: false
54
- }
55
- return response
56
- }
57
-
58
- const interleavingHandshake = async (request: StreamPartHandshakeRequest): Promise<StreamPartHandshakeResponse> => {
59
- const response: StreamPartHandshakeResponse = {
60
- requestId: request.requestId,
61
- accepted: true,
62
- interleaveTargetDescriptor: peerDescriptor3
63
- }
64
- return response
65
- }
66
-
67
- let simulator: Simulator
68
- let simulatorTransport1: SimulatorTransport
69
- let simulatorTransport2: SimulatorTransport
70
- let simulatorTransport3: SimulatorTransport
71
-
72
- beforeEach(async () => {
73
- simulator = new Simulator()
74
- simulatorTransport1 = new SimulatorTransport(peerDescriptor1, simulator)
75
- await simulatorTransport1.start()
76
- simulatorTransport2 = new SimulatorTransport(peerDescriptor2, simulator)
77
- await simulatorTransport2.start()
78
- simulatorTransport3 = new SimulatorTransport(peerDescriptor3, simulator)
79
- await simulatorTransport3.start()
80
-
81
- rpcCommunicator1 = new ListeningRpcCommunicator(streamPartId, simulatorTransport1)
82
- rpcCommunicator2 = new ListeningRpcCommunicator(streamPartId, simulatorTransport2)
83
- rpcCommunicator3 = new ListeningRpcCommunicator(streamPartId, simulatorTransport3)
84
-
85
- const handshakerNodeId = toNodeId(peerDescriptor2)
86
- leftNodeView = new NodeList(handshakerNodeId, 10)
87
- rightNodeView = new NodeList(handshakerNodeId, 10)
88
- nodeView = new NodeList(handshakerNodeId, 10)
89
- neighbors = new NodeList(handshakerNodeId, 4)
90
- handshaker = new Handshaker({
91
- localPeerDescriptor: peerDescriptor2,
92
- streamPartId,
93
- nearbyNodeView: nodeView,
94
- randomNodeView: nodeView,
95
- leftNodeView,
96
- rightNodeView,
97
- neighbors,
98
- rpcCommunicator: rpcCommunicator2,
99
- maxNeighborCount: 4,
100
- ongoingHandshakes: new Set()
101
- })
102
-
103
- })
104
-
105
- afterEach(async () => {
106
- rpcCommunicator1.stop()
107
- rpcCommunicator2.stop()
108
- rpcCommunicator3.stop()
109
- await simulatorTransport1.stop()
110
- await simulatorTransport2.stop()
111
- await simulatorTransport3.stop()
112
- simulator.stop()
113
- })
114
-
115
- it('Two nodes can handshake', async () => {
116
- rpcCommunicator1.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', acceptHandshake)
117
- // @ts-expect-error private
118
- const res = await handshaker.handshakeWithTarget(
119
- new HandshakeRpcRemote(
120
- peerDescriptor2,
121
- peerDescriptor1,
122
- rpcCommunicator2,
123
- HandshakeRpcClient
124
- )
125
- )
126
- expect(res).toEqual(true)
127
- expect(neighbors.has(toNodeId(peerDescriptor1))).toEqual(true)
128
- })
129
-
130
- it('Handshake accepted', async () => {
131
- rpcCommunicator1.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', acceptHandshake)
132
- // @ts-expect-error private
133
- const res = await handshaker.handshakeWithTarget(
134
- new HandshakeRpcRemote(
135
- peerDescriptor2,
136
- peerDescriptor1,
137
- rpcCommunicator2,
138
- HandshakeRpcClient
139
- )
140
- )
141
- expect(res).toEqual(true)
142
- expect(neighbors.has(toNodeId(peerDescriptor1))).toEqual(true)
143
- })
144
-
145
- it('Handshake rejected', async () => {
146
- rpcCommunicator1.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', rejectHandshake)
147
- // @ts-expect-error private
148
- const res = await handshaker.handshakeWithTarget(
149
- new HandshakeRpcRemote(
150
- peerDescriptor2,
151
- peerDescriptor1,
152
- rpcCommunicator2,
153
- HandshakeRpcClient
154
- )
155
- )
156
- expect(res).toEqual(false)
157
- expect(neighbors.has(toNodeId(peerDescriptor1))).toEqual(false)
158
- })
159
-
160
- it('Handshake with Interleaving', async () => {
161
- rpcCommunicator1.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', interleavingHandshake)
162
- rpcCommunicator3.registerRpcMethod(StreamPartHandshakeRequest, StreamPartHandshakeResponse, 'handshake', acceptHandshake)
163
- // @ts-expect-error private
164
- const res = await handshaker.handshakeWithTarget(
165
- new HandshakeRpcRemote(
166
- peerDescriptor2,
167
- peerDescriptor1,
168
- rpcCommunicator2,
169
- HandshakeRpcClient
170
- )
171
- )
172
- expect(res).toEqual(true)
173
- expect(neighbors.has(toNodeId(peerDescriptor1))).toEqual(true)
174
- expect(neighbors.has(toNodeId(peerDescriptor3))).toEqual(true)
175
- })
176
- })
@@ -1,89 +0,0 @@
1
- import { LatencyType, PeerDescriptor, Simulator, SimulatorTransport } from '@streamr/dht'
2
- import { StreamPartIDUtils } from '@streamr/utils'
3
- import { range } from 'lodash'
4
- import { NetworkStack } from '../../src/NetworkStack'
5
- import { createMockPeerDescriptor, createStreamMessage } from '../utils/utils'
6
- import { randomUserId } from '@streamr/test-utils'
7
-
8
- describe('inspect', () => {
9
-
10
- let simulator: Simulator
11
-
12
- const streamPartId = StreamPartIDUtils.parse('stream#0')
13
- let sequenceNumber: number
14
-
15
- const publisherDescriptor = createMockPeerDescriptor()
16
- const inspectorPeerDescriptor = createMockPeerDescriptor()
17
-
18
- const inspectedNodeCount = 12
19
-
20
- let publisherNode: NetworkStack
21
- let inspectorNode: NetworkStack
22
- let inspectedNodes: NetworkStack[]
23
-
24
- let publishInterval: NodeJS.Timeout
25
-
26
- const initiateNode = async (peerDescriptor: PeerDescriptor, simulator: Simulator): Promise<NetworkStack> => {
27
- const transport = new SimulatorTransport(peerDescriptor, simulator)
28
- await transport.start()
29
- const node = new NetworkStack({
30
- layer0: {
31
- entryPoints: [publisherDescriptor],
32
- peerDescriptor,
33
- transport,
34
- connectionsView: transport
35
- }
36
- })
37
- await node.start()
38
- return node
39
- }
40
-
41
- beforeEach(async () => {
42
- simulator = new Simulator(LatencyType.REAL)
43
-
44
- publisherNode = await initiateNode(publisherDescriptor, simulator)
45
- inspectorNode = await initiateNode(inspectorPeerDescriptor, simulator)
46
-
47
- inspectedNodes = []
48
- await Promise.all(range(inspectedNodeCount).map(async () => {
49
- const peerDescriptor = createMockPeerDescriptor()
50
- const node = await initiateNode(peerDescriptor, simulator)
51
- inspectedNodes.push(node)
52
- }))
53
- await Promise.all([
54
- publisherNode.joinStreamPart(streamPartId, { minCount: 4, timeout: 15000 }),
55
- inspectorNode.joinStreamPart(streamPartId, { minCount: 4, timeout: 15000 }),
56
- ...inspectedNodes.map((node) => node.joinStreamPart(streamPartId, { minCount: 4, timeout: 15000 }))
57
- ])
58
- sequenceNumber = 0
59
- }, 30000)
60
-
61
- afterEach(async () => {
62
- clearInterval(publishInterval)
63
- await Promise.all([
64
- publisherNode.stop(),
65
- inspectorNode.stop(),
66
- ...inspectedNodes.map((node) => node.stop())
67
- ])
68
- })
69
-
70
- it('gets successful inspections from all suspects', async () => {
71
- publishInterval = setInterval(async () => {
72
- const msg = createStreamMessage(
73
- JSON.stringify({ hello: 'WORLD' }),
74
- streamPartId,
75
- randomUserId(),
76
- 123123,
77
- sequenceNumber
78
- )
79
- publisherNode.getContentDeliveryManager().broadcast(msg)
80
- sequenceNumber += 1
81
- }, 200)
82
-
83
- for (const node of inspectedNodes) {
84
- const result = await inspectorNode.getContentDeliveryManager().inspect(node.getControlLayerNode().getLocalPeerDescriptor(), streamPartId)
85
- expect(result).toEqual(true)
86
- }
87
- }, 25000)
88
-
89
- })
@@ -1,82 +0,0 @@
1
- import {
2
- ListeningRpcCommunicator,
3
- NodeType,
4
- PeerDescriptor,
5
- Simulator,
6
- SimulatorTransport
7
- } from '@streamr/dht'
8
- import { StreamPartIDUtils } from '@streamr/utils'
9
- import { NeighborUpdateRpcRemote } from '../../src/logic/neighbor-discovery/NeighborUpdateRpcRemote'
10
- import { NeighborUpdate } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
11
- import {
12
- NeighborUpdateRpcClient,
13
- } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc.client'
14
-
15
- describe('NeighborUpdateRpcRemote', () => {
16
- let mockServerRpc: ListeningRpcCommunicator
17
- let clientRpc: ListeningRpcCommunicator
18
- let rpcRemote: NeighborUpdateRpcRemote
19
-
20
- const clientNode: PeerDescriptor = {
21
- nodeId: new Uint8Array([1, 1, 1]),
22
- type: NodeType.NODEJS
23
- }
24
- const serverNode: PeerDescriptor = {
25
- nodeId: new Uint8Array([2, 2, 2]),
26
- type: NodeType.NODEJS
27
- }
28
-
29
- let simulator: Simulator
30
- let mockConnectionManager1: SimulatorTransport
31
- let mockConnectionManager2: SimulatorTransport
32
-
33
- beforeEach(async () => {
34
- simulator = new Simulator()
35
- mockConnectionManager1 = new SimulatorTransport(serverNode, simulator)
36
- await mockConnectionManager1.start()
37
- mockConnectionManager2 = new SimulatorTransport(clientNode, simulator)
38
- await mockConnectionManager2.start()
39
-
40
- mockServerRpc = new ListeningRpcCommunicator('test', mockConnectionManager1)
41
- clientRpc = new ListeningRpcCommunicator('test', mockConnectionManager2)
42
-
43
- mockServerRpc.registerRpcMethod(
44
- NeighborUpdate,
45
- NeighborUpdate,
46
- 'neighborUpdate',
47
- async (): Promise<NeighborUpdate> => {
48
- const node: PeerDescriptor = {
49
- nodeId: new Uint8Array([4, 2, 4]),
50
- type: NodeType.NODEJS
51
- }
52
- const update: NeighborUpdate = {
53
- streamPartId: StreamPartIDUtils.parse('stream#0'),
54
- neighborDescriptors: [
55
- node
56
- ],
57
- removeMe: false
58
- }
59
- return update
60
- }
61
- )
62
- rpcRemote = new NeighborUpdateRpcRemote(
63
- clientNode,
64
- serverNode,
65
- clientRpc,
66
- NeighborUpdateRpcClient
67
- )
68
- })
69
-
70
- afterEach(async () => {
71
- clientRpc.stop()
72
- mockServerRpc.stop()
73
- await mockConnectionManager1.stop()
74
- await mockConnectionManager2.stop()
75
- simulator.stop()
76
- })
77
-
78
- it('updateNeighbors', async () => {
79
- const res = await rpcRemote.updateNeighbors(StreamPartIDUtils.parse('test#0'), [])
80
- expect(res.peerDescriptors.length).toEqual(1)
81
- })
82
- })
@@ -1,115 +0,0 @@
1
- import { PeerDescriptor, Simulator, SimulatorTransport } from '@streamr/dht'
2
- import { StreamPartIDUtils, hexToBinary, utf8ToBinary, waitForCondition } from '@streamr/utils'
3
- import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
4
- import { ContentType, EncryptionType, SignatureType, StreamMessage } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
5
- import { createMockPeerDescriptor } from '../utils/utils'
6
- import { randomUserId } from '@streamr/test-utils'
7
-
8
- const STREAM_PART_ID = StreamPartIDUtils.parse('test#0')
9
-
10
- describe('NetworkNode', () => {
11
-
12
- let transport1: SimulatorTransport
13
- let transport2: SimulatorTransport
14
-
15
- let node1: NetworkNode
16
- let node2: NetworkNode
17
-
18
- const pd1: PeerDescriptor = createMockPeerDescriptor()
19
-
20
- const pd2: PeerDescriptor = createMockPeerDescriptor()
21
-
22
- beforeEach(async () => {
23
- const simulator = new Simulator()
24
- transport1 = new SimulatorTransport(pd1, simulator)
25
- await transport1.start()
26
- transport2 = new SimulatorTransport(pd2, simulator)
27
- await transport2.start()
28
-
29
- node1 = createNetworkNode({
30
- layer0: {
31
- entryPoints: [pd1],
32
- peerDescriptor: pd1,
33
- transport: transport1,
34
- connectionsView: transport1
35
- }
36
- })
37
- node2 = createNetworkNode({
38
- layer0: {
39
- entryPoints: [pd1],
40
- peerDescriptor: pd2,
41
- transport: transport2,
42
- connectionsView: transport2
43
- }
44
- })
45
-
46
- await node1.start()
47
- node1.setStreamPartEntryPoints(STREAM_PART_ID, [pd1])
48
- await node2.start()
49
- node2.setStreamPartEntryPoints(STREAM_PART_ID, [pd1])
50
- })
51
-
52
- afterEach(async () => {
53
- await Promise.all([
54
- node1.stop(),
55
- node2.stop()
56
- ])
57
- })
58
-
59
- it('wait for join + broadcast and subscribe', async () => {
60
- const streamMessage: StreamMessage = {
61
- messageId: {
62
- streamId: StreamPartIDUtils.getStreamID(STREAM_PART_ID),
63
- streamPartition: StreamPartIDUtils.getStreamPartition(STREAM_PART_ID),
64
- timestamp: 666,
65
- sequenceNumber: 0,
66
- publisherId: hexToBinary(randomUserId()),
67
- messageChainId: 'msgChainId'
68
- },
69
- previousMessageRef: {
70
- timestamp: 665,
71
- sequenceNumber: 0
72
- },
73
- body: {
74
- oneofKind: 'contentMessage',
75
- contentMessage: {
76
- content: utf8ToBinary(JSON.stringify({
77
- hello: 'world'
78
- })),
79
- contentType: ContentType.JSON,
80
- encryptionType: EncryptionType.NONE,
81
- }
82
- },
83
- signatureType: SignatureType.SECP256K1,
84
- signature: hexToBinary('0x1234'),
85
- }
86
-
87
- let msgCount = 0
88
- await node1.join(STREAM_PART_ID)
89
- node1.addMessageListener((msg) => {
90
- expect(msg.messageId!.timestamp).toEqual(666)
91
- expect(msg.messageId!.sequenceNumber).toEqual(0)
92
- msgCount += 1
93
- })
94
- await node2.broadcast(streamMessage)
95
- await waitForCondition(() => msgCount === 1)
96
- })
97
-
98
- it('fetchNodeInfo', async () => {
99
- await node1.join(STREAM_PART_ID)
100
- await node2.join(STREAM_PART_ID)
101
- const result1 = await node1.fetchNodeInfo(pd2)
102
- const result2 = await node2.fetchNodeInfo(pd1)
103
- const result3 = await node1.fetchNodeInfo(node1.getPeerDescriptor())
104
- expect(result1.streamPartitions.length).toEqual(1)
105
- expect(result2.streamPartitions.length).toEqual(1)
106
- expect(result3.streamPartitions.length).toEqual(1)
107
- expect(result1.controlLayer.connections.length).toEqual(1)
108
- expect(result2.controlLayer.connections.length).toEqual(1)
109
- expect(result3.controlLayer.connections.length).toEqual(1)
110
- expect(result1.controlLayer.neighbors.length).toEqual(1)
111
- expect(result2.controlLayer.neighbors.length).toEqual(1)
112
- expect(result3.controlLayer.neighbors.length).toEqual(1)
113
- })
114
-
115
- })
@@ -1,52 +0,0 @@
1
- import { DhtCallContext } from '@streamr/dht'
2
- import {
3
- ProtoRpcClient,
4
- RpcCommunicator,
5
- toProtoRpcClient
6
- } from '@streamr/proto-rpc'
7
- import { StreamPartIDUtils, waitForCondition } from '@streamr/utils'
8
- import { Empty } from '../../src/proto/google/protobuf/empty'
9
- import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
10
- import { StreamMessage } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
11
- import { ContentDeliveryRpcClient } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc.client'
12
- import { createStreamMessage } from '../utils/utils'
13
- import { randomUserId } from '@streamr/test-utils'
14
-
15
- describe('Network RPC', () => {
16
- let rpcCommunicator1: RpcCommunicator<DhtCallContext>
17
- let rpcCommunicator2: RpcCommunicator<DhtCallContext>
18
- let client: ProtoRpcClient<ContentDeliveryRpcClient>
19
- let recvCounter = 0
20
-
21
- beforeEach(() => {
22
- rpcCommunicator1 = new RpcCommunicator()
23
- rpcCommunicator2 = new RpcCommunicator()
24
- rpcCommunicator1.setOutgoingMessageListener(async (message: RpcMessage) => {
25
- rpcCommunicator2.handleIncomingMessage(message, new DhtCallContext())
26
- })
27
- client = toProtoRpcClient(new ContentDeliveryRpcClient(rpcCommunicator1.getRpcClientTransport()))
28
- rpcCommunicator2.registerRpcNotification(
29
- StreamMessage,
30
- 'sendStreamMessage',
31
- async (): Promise<Empty> => {
32
- recvCounter += 1
33
- return {}
34
- }
35
- )
36
- })
37
-
38
- afterEach(() => {
39
- rpcCommunicator1.stop()
40
- rpcCommunicator2.stop()
41
- })
42
-
43
- it('sends Data', async () => {
44
- const msg = createStreamMessage(
45
- JSON.stringify({ hello: 'WORLD' }),
46
- StreamPartIDUtils.parse('testStream#0'),
47
- randomUserId()
48
- )
49
- await client.sendStreamMessage(msg)
50
- await waitForCondition(() => recvCounter === 1)
51
- })
52
- })
@@ -1,72 +0,0 @@
1
- import {
2
- StreamPartIDUtils,
3
- waitForCondition
4
- } from '@streamr/utils'
5
- import { NetworkStack } from '../../src/NetworkStack'
6
- import { createMockPeerDescriptor, createStreamMessage } from '../utils/utils'
7
- import { randomUserId } from '@streamr/test-utils'
8
-
9
- const STREAM_PART_ID = StreamPartIDUtils.parse('stream#0')
10
-
11
- describe('NetworkStack', () => {
12
-
13
- let stack1: NetworkStack
14
- let stack2: NetworkStack
15
-
16
- const epDescriptor = createMockPeerDescriptor({
17
- websocket: { host: '127.0.0.1', port: 32222, tls: false }
18
- })
19
-
20
- beforeEach(async () => {
21
- stack1 = new NetworkStack({
22
- layer0: {
23
- peerDescriptor: epDescriptor,
24
- entryPoints: [epDescriptor],
25
- websocketServerEnableTls: false
26
- }
27
- })
28
- stack2 = new NetworkStack({
29
- layer0: {
30
- websocketPortRange: { min: 32223, max: 32223 },
31
- entryPoints: [epDescriptor],
32
- websocketServerEnableTls: false
33
- }
34
- })
35
-
36
- await stack1.start()
37
- stack1.getContentDeliveryManager().setStreamPartEntryPoints(STREAM_PART_ID, [epDescriptor])
38
- await stack2.start()
39
- stack2.getContentDeliveryManager().setStreamPartEntryPoints(STREAM_PART_ID, [epDescriptor])
40
- })
41
-
42
- afterEach(async () => {
43
- await Promise.all([
44
- stack1.stop(),
45
- stack2.stop()
46
- ])
47
- })
48
-
49
- it('Can use NetworkNode pub/sub via NetworkStack', async () => {
50
- let receivedMessages = 0
51
- stack1.getContentDeliveryManager().joinStreamPart(STREAM_PART_ID)
52
- stack1.getContentDeliveryManager().on('newMessage', () => {
53
- receivedMessages += 1
54
- })
55
- const msg = createStreamMessage(
56
- JSON.stringify({ hello: 'WORLD' }),
57
- STREAM_PART_ID,
58
- randomUserId()
59
- )
60
- stack2.getContentDeliveryManager().broadcast(msg)
61
- await waitForCondition(() => receivedMessages === 1)
62
- })
63
-
64
- it('join and wait for neighbors', async () => {
65
- await Promise.all([
66
- stack1.joinStreamPart(STREAM_PART_ID, { minCount: 1, timeout: 5000 }),
67
- stack2.joinStreamPart(STREAM_PART_ID, { minCount: 1, timeout: 5000 }),
68
- ])
69
- expect(stack1.getContentDeliveryManager().getNeighbors(STREAM_PART_ID).length).toBe(1)
70
- expect(stack2.getContentDeliveryManager().getNeighbors(STREAM_PART_ID).length).toBe(1)
71
- })
72
- })