@streamr/dht 100.0.0-testnet-three.6 → 100.0.0

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 (153) hide show
  1. package/README.md +1 -1
  2. package/dist/package.json +12 -8
  3. package/dist/src/connection/ConnectionLockHandler.d.ts +2 -2
  4. package/dist/src/connection/ConnectionLockHandler.js +13 -5
  5. package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
  6. package/dist/src/connection/ConnectionManager.d.ts +4 -4
  7. package/dist/src/connection/ConnectionManager.js +8 -7
  8. package/dist/src/connection/ConnectionManager.js.map +1 -1
  9. package/dist/src/connection/ConnectorFacade.js.map +1 -1
  10. package/dist/src/connection/Handshaker.js +6 -13
  11. package/dist/src/connection/Handshaker.js.map +1 -1
  12. package/dist/src/connection/connectivityChecker.d.ts +1 -1
  13. package/dist/src/connection/connectivityChecker.js +5 -5
  14. package/dist/src/connection/connectivityChecker.js.map +1 -1
  15. package/dist/src/connection/connectivityRequestHandler.d.ts +2 -2
  16. package/dist/src/connection/connectivityRequestHandler.js +6 -7
  17. package/dist/src/connection/connectivityRequestHandler.js.map +1 -1
  18. package/dist/src/connection/webrtc/WebrtcConnector.d.ts +1 -0
  19. package/dist/src/connection/webrtc/WebrtcConnector.js +13 -8
  20. package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -1
  21. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.d.ts +2 -0
  22. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +4 -6
  23. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +1 -1
  24. package/dist/src/connection/websocket/WebsocketConnector.js +24 -21
  25. package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -1
  26. package/dist/src/connection/websocket/WebsocketServer.js +25 -35
  27. package/dist/src/connection/websocket/WebsocketServer.js.map +1 -1
  28. package/dist/src/connection/websocket/{ServerWebsocket.d.ts → WebsocketServerConnection.d.ts} +4 -5
  29. package/dist/src/connection/websocket/{ServerWebsocket.js → WebsocketServerConnection.js} +15 -48
  30. package/dist/src/connection/websocket/WebsocketServerConnection.js.map +1 -0
  31. package/dist/src/dht/DhtNode.d.ts +13 -6
  32. package/dist/src/dht/DhtNode.js +50 -15
  33. package/dist/src/dht/DhtNode.js.map +1 -1
  34. package/dist/src/dht/DhtNodeRpcLocal.d.ts +5 -1
  35. package/dist/src/dht/DhtNodeRpcLocal.js +10 -0
  36. package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -1
  37. package/dist/src/dht/DhtNodeRpcRemote.d.ts +3 -0
  38. package/dist/src/dht/DhtNodeRpcRemote.js +15 -0
  39. package/dist/src/dht/DhtNodeRpcRemote.js.map +1 -1
  40. package/dist/src/dht/ExternalApiRpcLocal.d.ts +2 -2
  41. package/dist/src/dht/ExternalApiRpcLocal.js +3 -3
  42. package/dist/src/dht/ExternalApiRpcLocal.js.map +1 -1
  43. package/dist/src/dht/ExternalApiRpcRemote.d.ts +1 -1
  44. package/dist/src/dht/ExternalApiRpcRemote.js +2 -2
  45. package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -1
  46. package/dist/src/dht/PeerManager.d.ts +12 -0
  47. package/dist/src/dht/PeerManager.js +30 -5
  48. package/dist/src/dht/PeerManager.js.map +1 -1
  49. package/dist/src/dht/contact/RingContactList.d.ts +31 -0
  50. package/dist/src/dht/contact/RingContactList.js +133 -0
  51. package/dist/src/dht/contact/RingContactList.js.map +1 -0
  52. package/dist/src/dht/contact/ringIdentifiers.d.ts +16 -0
  53. package/dist/src/dht/contact/ringIdentifiers.js +54 -0
  54. package/dist/src/dht/contact/ringIdentifiers.js.map +1 -0
  55. package/dist/src/dht/discovery/PeerDiscovery.d.ts +4 -0
  56. package/dist/src/dht/discovery/PeerDiscovery.js +35 -0
  57. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  58. package/dist/src/dht/discovery/RingDiscoverySession.d.ts +29 -0
  59. package/dist/src/dht/discovery/RingDiscoverySession.js +123 -0
  60. package/dist/src/dht/discovery/RingDiscoverySession.js.map +1 -0
  61. package/dist/src/dht/recursive-operation/RecursiveOperationSession.js +0 -1
  62. package/dist/src/dht/recursive-operation/RecursiveOperationSession.js.map +1 -1
  63. package/dist/src/dht/store/StoreManager.js +1 -1
  64. package/dist/src/dht/store/StoreManager.js.map +1 -1
  65. package/dist/src/exports.d.ts +1 -0
  66. package/dist/src/exports.js.map +1 -1
  67. package/dist/src/helpers/createPeerDescriptor.d.ts +1 -1
  68. package/dist/src/helpers/createPeerDescriptor.js +2 -1
  69. package/dist/src/helpers/createPeerDescriptor.js.map +1 -1
  70. package/dist/src/helpers/version.d.ts +6 -0
  71. package/dist/src/helpers/version.js +38 -0
  72. package/dist/src/helpers/version.js.map +1 -0
  73. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +16 -6
  74. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +11 -4
  75. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
  76. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +98 -87
  77. package/dist/src/proto/packages/dht/protos/DhtRpc.js +45 -49
  78. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  79. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +10 -4
  80. package/dist/src/transport/RoutingRpcCommunicator.js +0 -2
  81. package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
  82. package/package.json +12 -8
  83. package/protos/DhtRpc.proto +21 -21
  84. package/src/connection/ConnectionLockHandler.ts +13 -5
  85. package/src/connection/ConnectionManager.ts +10 -10
  86. package/src/connection/ConnectorFacade.ts +0 -1
  87. package/src/connection/Handshaker.ts +7 -15
  88. package/src/connection/connectivityChecker.ts +6 -7
  89. package/src/connection/connectivityRequestHandler.ts +12 -12
  90. package/src/connection/webrtc/NodeWebrtcConnection.ts +1 -1
  91. package/src/connection/webrtc/WebrtcConnector.ts +14 -8
  92. package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +5 -5
  93. package/src/connection/websocket/WebsocketConnector.ts +25 -26
  94. package/src/connection/websocket/WebsocketServer.ts +27 -42
  95. package/src/connection/websocket/{ServerWebsocket.ts → WebsocketServerConnection.ts} +14 -55
  96. package/src/dht/DhtNode.ts +72 -34
  97. package/src/dht/DhtNodeRpcLocal.ts +16 -0
  98. package/src/dht/DhtNodeRpcRemote.ts +18 -0
  99. package/src/dht/ExternalApiRpcLocal.ts +5 -5
  100. package/src/dht/ExternalApiRpcRemote.ts +4 -4
  101. package/src/dht/PeerManager.ts +48 -12
  102. package/src/dht/contact/RingContactList.ts +151 -0
  103. package/src/dht/contact/ringIdentifiers.ts +62 -0
  104. package/src/dht/discovery/PeerDiscovery.ts +37 -0
  105. package/src/dht/discovery/RingDiscoverySession.ts +160 -0
  106. package/src/dht/recursive-operation/RecursiveOperationSession.ts +1 -3
  107. package/src/dht/store/StoreManager.ts +1 -1
  108. package/src/exports.ts +1 -0
  109. package/src/helpers/createPeerDescriptor.ts +2 -1
  110. package/src/helpers/version.ts +32 -0
  111. package/src/proto/packages/dht/protos/DhtRpc.client.ts +22 -9
  112. package/src/proto/packages/dht/protos/DhtRpc.server.ts +10 -4
  113. package/src/proto/packages/dht/protos/DhtRpc.ts +122 -100
  114. package/src/transport/RoutingRpcCommunicator.ts +1 -2
  115. package/test/benchmark/Find.test.ts +3 -4
  116. package/test/benchmark/KademliaCorrectness.test.ts +14 -8
  117. package/test/benchmark/RingCorrectness.test.ts +157 -0
  118. package/test/benchmark/hybrid-network-simulation/RingContactList.test.ts +72 -0
  119. package/test/data/generateGroundTruthData.ts +2 -2
  120. package/test/end-to-end/memory-leak.test.ts +1 -2
  121. package/test/integration/ConnectionManager.test.ts +28 -10
  122. package/test/integration/ConnectivityChecking.test.ts +3 -15
  123. package/test/integration/DhtNodeExternalAPI.test.ts +6 -6
  124. package/test/integration/Find.test.ts +4 -4
  125. package/test/integration/Layer1-scale.test.ts +0 -1
  126. package/test/integration/ReplicateData.test.ts +1 -1
  127. package/test/integration/RouteMessage.test.ts +1 -6
  128. package/test/integration/RouterRpcRemote.test.ts +1 -3
  129. package/test/integration/SimultaneousConnections.test.ts +9 -10
  130. package/test/integration/Store.test.ts +2 -2
  131. package/test/integration/StoreAndDelete.test.ts +3 -3
  132. package/test/integration/StoreOnDhtWithThreeNodes.test.ts +5 -5
  133. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +3 -3
  134. package/test/integration/WebrtcConnectionManagement.test.ts +3 -9
  135. package/test/integration/WebsocketConnectionManagement.test.ts +1 -6
  136. package/test/integration/rpc-connections-over-webrpc.test.ts +1 -2
  137. package/test/unit/PeerManager.test.ts +5 -2
  138. package/test/unit/RecursiveOperationManager.test.ts +14 -8
  139. package/test/unit/RecursiveOperationSession.test.ts +1 -1
  140. package/test/unit/Router.test.ts +0 -2
  141. package/test/unit/RoutingSession.test.ts +1 -2
  142. package/test/unit/connectivityRequestHandler.test.ts +5 -9
  143. package/test/unit/createPeerDescriptor.test.ts +12 -6
  144. package/test/unit/version.test.ts +18 -0
  145. package/test/utils/utils.ts +43 -10
  146. package/tsconfig.jest.json +2 -1
  147. package/tsconfig.node.json +2 -1
  148. package/dist/src/connection/websocket/ServerWebsocket.js.map +0 -1
  149. package/dist/src/helpers/versionCompatibility.d.ts +0 -2
  150. package/dist/src/helpers/versionCompatibility.js +0 -18
  151. package/dist/src/helpers/versionCompatibility.js.map +0 -1
  152. package/src/helpers/versionCompatibility.ts +0 -13
  153. package/test/unit/versionCompatibility.test.ts +0 -16
@@ -46,7 +46,7 @@ describe('Storing data in DHT', () => {
46
46
  // Wait for the delete operation to propagate
47
47
  await wait(500)
48
48
  const fetchingNode = getRandomNode()
49
- const results = await fetchingNode.getDataFromDht(getDhtAddressFromRaw(entry.key))
49
+ const results = await fetchingNode.fetchDataFromDht(getDhtAddressFromRaw(entry.key))
50
50
  results.forEach((result) => {
51
51
  expect(result.deleted).toBeTrue()
52
52
  expectEqualData(result, entry)
@@ -62,14 +62,14 @@ describe('Storing data in DHT', () => {
62
62
  // Wait for the delete operation to propagate
63
63
  await wait(500)
64
64
  const fetchingNode = getRandomNode()
65
- const results1 = await fetchingNode.getDataFromDht(getDhtAddressFromRaw(entry.key))
65
+ const results1 = await fetchingNode.fetchDataFromDht(getDhtAddressFromRaw(entry.key))
66
66
  results1.forEach((result) => {
67
67
  expect(result.deleted).toBeTrue()
68
68
  expectEqualData(result, entry)
69
69
  })
70
70
  const successfulStorers2 = await storingNode.storeDataToDht(getDhtAddressFromRaw(entry.key), entry.data!)
71
71
  expect(successfulStorers2.length).toBeGreaterThan(4)
72
- const results2 = await fetchingNode.getDataFromDht(getDhtAddressFromRaw(entry.key))
72
+ const results2 = await fetchingNode.fetchDataFromDht(getDhtAddressFromRaw(entry.key))
73
73
  results2.forEach((result) => {
74
74
  expect(result.deleted).toBeFalse()
75
75
  expectEqualData(result, entry)
@@ -41,15 +41,15 @@ describe('Storing data in DHT with two peers', () => {
41
41
  const storedData1 = createMockDataEntry()
42
42
  const storedData2 = createMockDataEntry()
43
43
  // Here we effectively test that fetching "null" data doesn't take too long. A test timeout here indicates an issue.
44
- await node1.getDataFromDht(getDhtAddressFromRaw(storedData1.key))
45
- await node2.getDataFromDht(getDhtAddressFromRaw(storedData1.key))
44
+ await node1.fetchDataFromDht(getDhtAddressFromRaw(storedData1.key))
45
+ await node2.fetchDataFromDht(getDhtAddressFromRaw(storedData1.key))
46
46
 
47
47
  await node1.storeDataToDht(getDhtAddressFromRaw(storedData1.key), storedData1.data!)
48
48
  await node2.storeDataToDht(getDhtAddressFromRaw(storedData1.key), storedData1.data!)
49
49
  await entryPoint.storeDataToDht(getDhtAddressFromRaw(storedData2.key), storedData2.data!)
50
- const foundData1 = await node1.getDataFromDht(getDhtAddressFromRaw(storedData1.key))
51
- const foundData2 = await node2.getDataFromDht(getDhtAddressFromRaw(storedData1.key))
52
- const foundData3 = await entryPoint.getDataFromDht(getDhtAddressFromRaw(storedData2.key))
50
+ const foundData1 = await node1.fetchDataFromDht(getDhtAddressFromRaw(storedData1.key))
51
+ const foundData2 = await node2.fetchDataFromDht(getDhtAddressFromRaw(storedData1.key))
52
+ const foundData3 = await entryPoint.fetchDataFromDht(getDhtAddressFromRaw(storedData2.key))
53
53
  expectEqualData(foundData1[0], storedData1)
54
54
  expectEqualData(foundData1[1], storedData1)
55
55
  expectEqualData(foundData2[0], storedData1)
@@ -34,8 +34,8 @@ describe('Storing data in DHT with two peers', () => {
34
34
  const storedData2 = createMockDataEntry()
35
35
  await otherNode.storeDataToDht(getDhtAddressFromRaw(storedData1.key), storedData1.data!)
36
36
  await entryPoint.storeDataToDht(getDhtAddressFromRaw(storedData2.key), storedData2.data!)
37
- const foundData1 = await otherNode.getDataFromDht(getDhtAddressFromRaw(storedData1.key))
38
- const foundData2 = await entryPoint.getDataFromDht(getDhtAddressFromRaw(storedData2.key))
37
+ const foundData1 = await otherNode.fetchDataFromDht(getDhtAddressFromRaw(storedData1.key))
38
+ const foundData2 = await entryPoint.fetchDataFromDht(getDhtAddressFromRaw(storedData2.key))
39
39
  expectEqualData(foundData1[0], storedData1)
40
40
  expectEqualData(foundData2[0], storedData2)
41
41
  })
@@ -45,7 +45,7 @@ describe('Storing data in DHT with two peers', () => {
45
45
  await waitForCondition(() => entryPoint.getNeighborCount() === 0)
46
46
  const storedData = createMockDataEntry()
47
47
  await entryPoint.storeDataToDht(getDhtAddressFromRaw(storedData.key), storedData.data!)
48
- const foundData = await entryPoint.getDataFromDht(getDhtAddressFromRaw(storedData.key))
48
+ const foundData = await entryPoint.fetchDataFromDht(getDhtAddressFromRaw(storedData.key))
49
49
  expectEqualData(foundData[0], storedData)
50
50
  }, 60000)
51
51
  })
@@ -1,6 +1,6 @@
1
1
  import { ConnectionManager } from '../../src/connection/ConnectionManager'
2
2
  import { LatencyType, Simulator } from '../../src/connection/simulator/Simulator'
3
- import { Message, MessageType, NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
3
+ import { Message, NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
4
4
  import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
5
5
  import { ConnectionType } from '../../src/connection/IConnection'
6
6
  import { ITransport } from '../../src/transport/ITransport'
@@ -63,7 +63,6 @@ describe('WebRTC Connection Management', () => {
63
63
  oneofKind: 'rpcMessage',
64
64
  rpcMessage: RpcMessage.create()
65
65
  },
66
- messageType: MessageType.RPC,
67
66
  messageId: 'mockerer'
68
67
  }
69
68
 
@@ -87,7 +86,6 @@ describe('WebRTC Connection Management', () => {
87
86
  oneofKind: 'rpcMessage',
88
87
  rpcMessage: RpcMessage.create()
89
88
  },
90
- messageType: MessageType.RPC,
91
89
  messageId: 'mockerer'
92
90
  }
93
91
  manager1.on('message', (message: Message) => {
@@ -108,7 +106,6 @@ describe('WebRTC Connection Management', () => {
108
106
  oneofKind: 'rpcMessage',
109
107
  rpcMessage: RpcMessage.create()
110
108
  },
111
- messageType: MessageType.RPC,
112
109
  messageId: 'mockerer'
113
110
  }
114
111
  dummyMessage.targetDescriptor = peerDescriptor1
@@ -120,7 +117,6 @@ describe('WebRTC Connection Management', () => {
120
117
  it('Connects and disconnects webrtc connections', async () => {
121
118
  const msg: Message = {
122
119
  serviceId,
123
- messageType: MessageType.RPC,
124
120
  messageId: '1',
125
121
  body: {
126
122
  oneofKind: 'rpcMessage',
@@ -130,14 +126,14 @@ describe('WebRTC Connection Management', () => {
130
126
 
131
127
  const dataPromise = new Promise<void>((resolve, _reject) => {
132
128
  manager2.on('message', async (message: Message) => {
133
- expect(message.messageType).toBe(MessageType.RPC)
129
+ expect(message.body.oneofKind).toBe('rpcMessage')
134
130
  resolve()
135
131
  })
136
132
  })
137
133
 
138
134
  const connectedPromise1 = new Promise<void>((resolve, _reject) => {
139
135
  manager1.on('connected', () => {
140
- //expect(message.messageType).toBe(MessageType.RPC)
136
+ //expect(message.body.oneofKind).toBe('rpcMessage')
141
137
  resolve()
142
138
  })
143
139
  })
@@ -175,7 +171,6 @@ describe('WebRTC Connection Management', () => {
175
171
  it('Disconnects webrtcconnection while being connected', async () => {
176
172
  const msg: Message = {
177
173
  serviceId,
178
- messageType: MessageType.RPC,
179
174
  messageId: '1',
180
175
  body: {
181
176
  oneofKind: 'rpcMessage',
@@ -204,7 +199,6 @@ describe('WebRTC Connection Management', () => {
204
199
  it('failed connections are cleaned up', async () => {
205
200
  const msg: Message = {
206
201
  serviceId,
207
- messageType: MessageType.RPC,
208
202
  messageId: '1',
209
203
  body: {
210
204
  oneofKind: 'rpcMessage',
@@ -7,7 +7,7 @@ import { ConnectionType } from '../../src/connection/IConnection'
7
7
  import { Simulator } from '../../src/connection/simulator/Simulator'
8
8
  import { SimulatorTransport } from '../../src/connection/simulator/SimulatorTransport'
9
9
  import * as Err from '../../src/helpers/errors'
10
- import { Message, MessageType, NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
10
+ import { Message, NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
11
11
  import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
12
12
  import { TransportEvents } from '../../src/transport/ITransport'
13
13
  import { getNodeIdFromPeerDescriptor } from '../../src/identifiers'
@@ -98,7 +98,6 @@ describe('Websocket Connection Management', () => {
98
98
  oneofKind: 'rpcMessage',
99
99
  rpcMessage: RpcMessage.create()
100
100
  },
101
- messageType: MessageType.RPC,
102
101
  messageId: 'mockerer',
103
102
  targetDescriptor: noWsServerConnectorPeerDescriptor
104
103
  }
@@ -124,7 +123,6 @@ describe('Websocket Connection Management', () => {
124
123
  oneofKind: 'rpcMessage',
125
124
  rpcMessage: RpcMessage.create()
126
125
  },
127
- messageType: MessageType.RPC,
128
126
  messageId: 'mockerer',
129
127
  targetDescriptor: biggerNoWsServerConnectorPeerDescriptor
130
128
  }
@@ -150,7 +148,6 @@ describe('Websocket Connection Management', () => {
150
148
  oneofKind: 'rpcMessage',
151
149
  rpcMessage: RpcMessage.create()
152
150
  },
153
- messageType: MessageType.RPC,
154
151
  messageId: 'mockerer',
155
152
  targetDescriptor: {
156
153
  nodeId: new Uint8Array([1, 2, 4]),
@@ -172,7 +169,6 @@ describe('Websocket Connection Management', () => {
172
169
  oneofKind: 'rpcMessage',
173
170
  rpcMessage: RpcMessage.create()
174
171
  },
175
- messageType: MessageType.RPC,
176
172
  messageId: 'mockerer',
177
173
  targetDescriptor: wsServerConnectorPeerDescriptor
178
174
  }
@@ -199,7 +195,6 @@ describe('Websocket Connection Management', () => {
199
195
  oneofKind: 'rpcMessage',
200
196
  rpcMessage: RpcMessage.create()
201
197
  },
202
- messageType: MessageType.RPC,
203
198
  messageId: 'mockerer',
204
199
  targetDescriptor: noWsServerConnectorPeerDescriptor
205
200
  }
@@ -133,14 +133,13 @@ describe('RPC connections over WebRTC', () => {
133
133
 
134
134
  const msg: Message = {
135
135
  serviceId,
136
- messageType: MessageType.RPC,
137
136
  messageId: '1',
138
137
  body: RpcMessage.toBinary(rpcMessage)
139
138
  }
140
139
 
141
140
  const disconnectedPromise1 = new Promise<void>((resolve, _reject) => {
142
141
  manager1.on('disconnected', () => {
143
- //expect(message.messageType).toBe(MessageType.RPC)
142
+ //expect(message.body.oneofKind).toBe('rpcMessage')
144
143
  resolve()
145
144
  })
146
145
  })
@@ -1,16 +1,19 @@
1
1
  import { PeerManager, getDistance } from '../../src/dht/PeerManager'
2
- import { DhtAddress, createRandomDhtAddress, getRawFromDhtAddress } from '../../src/identifiers'
2
+ import { DhtAddress, createRandomDhtAddress, getNodeIdFromPeerDescriptor, getRawFromDhtAddress } from '../../src/identifiers'
3
3
  import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
4
4
  import { range, sampleSize, sortBy, without } from 'lodash'
5
5
  import { DhtNodeRpcRemote } from '../../src/dht/DhtNodeRpcRemote'
6
6
  import { MockRpcCommunicator } from '../utils/mock/MockRpcCommunicator'
7
+ import { createMockPeerDescriptor } from '../utils/utils'
7
8
 
8
9
  describe('PeerManager', () => {
9
10
 
10
11
  it('getClosestContactsTo', () => {
11
12
  const nodeIds = range(10).map(() => createRandomDhtAddress())
13
+ const peerDescriptor = createMockPeerDescriptor()
12
14
  const manager = new PeerManager({
13
- localNodeId: createRandomDhtAddress(),
15
+ localNodeId: getNodeIdFromPeerDescriptor(peerDescriptor),
16
+ localPeerDescriptor: peerDescriptor,
14
17
  createDhtNodeRpcRemote: (peerDescriptor: PeerDescriptor) => {
15
18
  return new DhtNodeRpcRemote(undefined as any, peerDescriptor, undefined as any, new MockRpcCommunicator())
16
19
  }
@@ -1,14 +1,13 @@
1
1
  import {
2
2
  RecursiveOperation,
3
3
  Message,
4
- MessageType,
5
4
  RouteMessageAck,
6
5
  RouteMessageError,
7
- RouteMessageWrapper
6
+ RouteMessageWrapper,
7
+ RecursiveOperationRequest
8
8
  } from '../../src/proto/packages/dht/protos/DhtRpc'
9
9
  import {
10
10
  createWrappedClosestPeersRequest,
11
- createFindRequest,
12
11
  createMockPeerDescriptor
13
12
  } from '../utils/utils'
14
13
  import { RecursiveOperationManager } from '../../src/dht/recursive-operation/RecursiveOperationManager'
@@ -33,15 +32,23 @@ const createMockRouter = (error?: RouteMessageError): Partial<Router> => {
33
32
  addToDuplicateDetector: () => {}
34
33
  }
35
34
  }
35
+
36
+ const createRequest = (): RecursiveOperationRequest => {
37
+ const request: RecursiveOperationRequest = {
38
+ operation: RecursiveOperation.FIND_CLOSEST_NODES,
39
+ sessionId: v4()
40
+ }
41
+ return request
42
+ }
43
+
36
44
  describe('RecursiveOperationManager', () => {
37
45
 
38
46
  const peerDescriptor1 = createMockPeerDescriptor()
39
47
  const peerDescriptor2 = createMockPeerDescriptor()
40
- const recursiveOperationRequest = createFindRequest()
48
+ const recursiveOperationRequest = createRequest()
41
49
  const message: Message = {
42
50
  serviceId: 'unknown',
43
51
  messageId: v4(),
44
- messageType: MessageType.RPC,
45
52
  body: {
46
53
  oneofKind: 'recursiveOperationRequest',
47
54
  recursiveOperationRequest
@@ -83,9 +90,9 @@ describe('RecursiveOperationManager', () => {
83
90
  recursiveOperationManager.stop()
84
91
  })
85
92
 
86
- it('startFind with mode Node returns self if no peers', async () => {
93
+ it('find closest nodes returns self if no peers', async () => {
87
94
  const recursiveOperationManager = createRecursiveOperationManager()
88
- const res = await recursiveOperationManager.execute(createRandomDhtAddress(), RecursiveOperation.FIND_NODE)
95
+ const res = await recursiveOperationManager.execute(createRandomDhtAddress(), RecursiveOperation.FIND_CLOSEST_NODES)
89
96
  expect(areEqualPeerDescriptors(res.closestNodes[0], peerDescriptor1)).toEqual(true)
90
97
  recursiveOperationManager.stop()
91
98
  })
@@ -96,7 +103,6 @@ describe('RecursiveOperationManager', () => {
96
103
  const badMessage: Message = {
97
104
  serviceId: 'unknown',
98
105
  messageId: v4(),
99
- messageType: MessageType.RPC,
100
106
  body: {
101
107
  oneofKind: 'rpcMessage',
102
108
  rpcMessage: rpcWrapper
@@ -39,7 +39,7 @@ describe('RecursiveOperationSession', () => {
39
39
  targetId: createRandomDhtAddress(),
40
40
  localPeerDescriptor,
41
41
  waitedRoutingPathCompletions: 3,
42
- operation: RecursiveOperation.FIND_NODE,
42
+ operation: RecursiveOperation.FIND_CLOSEST_NODES,
43
43
  doRouteRequest
44
44
  })
45
45
  const onCompleted = jest.fn()
@@ -3,7 +3,6 @@ import { DhtNodeRpcRemote } from '../../src/dht/DhtNodeRpcRemote'
3
3
  import { Router } from '../../src/dht/routing/Router'
4
4
  import {
5
5
  Message,
6
- MessageType,
7
6
  PeerDescriptor,
8
7
  RouteMessageAck,
9
8
  RouteMessageError,
@@ -23,7 +22,6 @@ describe('Router', () => {
23
22
  const message: Message = {
24
23
  serviceId: 'unknown',
25
24
  messageId: v4(),
26
- messageType: MessageType.RPC,
27
25
  body: {
28
26
  oneofKind: 'rpcMessage',
29
27
  rpcMessage: rpcWrapper
@@ -1,6 +1,6 @@
1
1
  import { v4 } from 'uuid'
2
2
  import { RoutingMode, RoutingSession } from '../../src/dht/routing/RoutingSession'
3
- import { Message, MessageType, PeerDescriptor, RouteMessageWrapper } from '../../src/proto/packages/dht/protos/DhtRpc'
3
+ import { Message, PeerDescriptor, RouteMessageWrapper } from '../../src/proto/packages/dht/protos/DhtRpc'
4
4
  import { createMockPeerDescriptor, createWrappedClosestPeersRequest } from '../utils/utils'
5
5
  import { DhtNodeRpcRemote } from '../../src/dht/DhtNodeRpcRemote'
6
6
  import { RoutingRpcCommunicator } from '../../src/transport/RoutingRpcCommunicator'
@@ -20,7 +20,6 @@ describe('RoutingSession', () => {
20
20
  const message: Message = {
21
21
  serviceId: 'unknown',
22
22
  messageId: v4(),
23
- messageType: MessageType.RPC,
24
23
  body: {
25
24
  oneofKind: 'rpcMessage',
26
25
  rpcMessage: rpcWrapper
@@ -5,8 +5,8 @@ import { Server as HttpServer, createServer as createHttpServer } from 'http'
5
5
  import { server as WsServer } from 'websocket'
6
6
  import { CONNECTIVITY_CHECKER_SERVICE_ID } from '../../src/connection/connectivityChecker'
7
7
  import { attachConnectivityRequestHandler } from '../../src/connection/connectivityRequestHandler'
8
- import { Message, MessageType } from '../../src/proto/packages/dht/protos/DhtRpc'
9
- import { version } from '../../package.json'
8
+ import { Message } from '../../src/proto/packages/dht/protos/DhtRpc'
9
+ import { LOCAL_PROTOCOL_VERSION } from '../../src/helpers/version'
10
10
 
11
11
  const HOST = '127.0.0.1'
12
12
  const PORT = 15001
@@ -27,7 +27,7 @@ describe('connectivityRequestHandler', () => {
27
27
  await once(httpServer, 'listening')
28
28
  connection = new EventEmitter()
29
29
  connection.send = jest.fn()
30
- connection.getRemoteIp = () => HOST
30
+ connection.remoteIpAddress = HOST
31
31
  })
32
32
 
33
33
  afterEach(async () => {
@@ -40,7 +40,6 @@ describe('connectivityRequestHandler', () => {
40
40
  attachConnectivityRequestHandler(connection)
41
41
  const request: Message = {
42
42
  serviceId: CONNECTIVITY_CHECKER_SERVICE_ID,
43
- messageType: MessageType.CONNECTIVITY_REQUEST,
44
43
  messageId: 'mock-message-id',
45
44
  body: {
46
45
  oneofKind: 'connectivityRequest',
@@ -63,12 +62,11 @@ describe('connectivityRequestHandler', () => {
63
62
  tls: false
64
63
  },
65
64
  ipAddress: ipv4ToNumber(HOST),
66
- version
65
+ version: LOCAL_PROTOCOL_VERSION
67
66
  },
68
67
  oneofKind: 'connectivityResponse'
69
68
  },
70
69
  messageId: expect.any(String),
71
- messageType: MessageType.CONNECTIVITY_RESPONSE,
72
70
  serviceId: 'system/connectivity-checker'
73
71
  })
74
72
  })
@@ -77,7 +75,6 @@ describe('connectivityRequestHandler', () => {
77
75
  attachConnectivityRequestHandler(connection)
78
76
  const request: Message = {
79
77
  serviceId: CONNECTIVITY_CHECKER_SERVICE_ID,
80
- messageType: MessageType.CONNECTIVITY_REQUEST,
81
78
  messageId: 'mock-message-id',
82
79
  body: {
83
80
  oneofKind: 'connectivityRequest',
@@ -95,12 +92,11 @@ describe('connectivityRequestHandler', () => {
95
92
  host: HOST,
96
93
  natType: 'unknown',
97
94
  ipAddress: ipv4ToNumber(HOST),
98
- version
95
+ version: LOCAL_PROTOCOL_VERSION
99
96
  },
100
97
  oneofKind: 'connectivityResponse'
101
98
  },
102
99
  messageId: expect.any(String),
103
- messageType: MessageType.CONNECTIVITY_RESPONSE,
104
100
  serviceId: 'system/connectivity-checker'
105
101
  })
106
102
  })
@@ -3,22 +3,26 @@ import { createPeerDescriptor } from '../../src/helpers/createPeerDescriptor'
3
3
  import { isBrowserEnvironment } from '../../src/helpers/browser/isBrowserEnvironment'
4
4
  import { NodeType } from '../../src/proto/packages/dht/protos/DhtRpc'
5
5
  import { createRandomDhtAddress, getRawFromDhtAddress } from '../../src/identifiers'
6
+ import { getRandomRegion } from '../../dist/src/connection/simulator/pings'
6
7
 
7
8
  const IP_ADDRESS = '1.2.3.4'
8
9
 
9
10
  describe('createPeerDescriptor', () => {
10
11
 
12
+ const region = getRandomRegion()
13
+
11
14
  it('without websocket', () => {
12
15
  const connectivityResponse = {
13
16
  ipAddress: ipv4ToNumber(IP_ADDRESS)
14
17
  } as any
15
- const peerDescriptor = createPeerDescriptor(connectivityResponse)
18
+ const peerDescriptor = createPeerDescriptor(connectivityResponse, region)
16
19
  expect(peerDescriptor).toEqual({
17
20
  nodeId: expect.any(Uint8Array),
18
21
  type: isBrowserEnvironment() ? NodeType.BROWSER : NodeType.NODEJS,
19
22
  ipAddress: ipv4ToNumber(IP_ADDRESS),
20
23
  publicKey: expect.any(Uint8Array),
21
- signature: expect.any(Uint8Array)
24
+ signature: expect.any(Uint8Array),
25
+ region
22
26
  })
23
27
  })
24
28
 
@@ -31,7 +35,7 @@ describe('createPeerDescriptor', () => {
31
35
  tls: true
32
36
  }
33
37
  } as any
34
- const peerDescriptor = createPeerDescriptor(connectivityResponse)
38
+ const peerDescriptor = createPeerDescriptor(connectivityResponse, region)
35
39
  expect(peerDescriptor).toEqual({
36
40
  nodeId: expect.any(Uint8Array),
37
41
  type: isBrowserEnvironment() ? NodeType.BROWSER : NodeType.NODEJS,
@@ -42,7 +46,8 @@ describe('createPeerDescriptor', () => {
42
46
  host: 'bar.com',
43
47
  port: 123,
44
48
  tls: true
45
- }
49
+ },
50
+ region
46
51
  })
47
52
  })
48
53
 
@@ -51,13 +56,14 @@ describe('createPeerDescriptor', () => {
51
56
  const connectivityResponse = {
52
57
  ipAddress: ipv4ToNumber(IP_ADDRESS)
53
58
  } as any
54
- const peerDescriptor = createPeerDescriptor(connectivityResponse, nodeId)
59
+ const peerDescriptor = createPeerDescriptor(connectivityResponse, region, nodeId)
55
60
  expect(peerDescriptor).toEqual({
56
61
  nodeId: getRawFromDhtAddress(nodeId),
57
62
  type: isBrowserEnvironment() ? NodeType.BROWSER : NodeType.NODEJS,
58
63
  ipAddress: ipv4ToNumber(IP_ADDRESS),
59
64
  publicKey: expect.any(Uint8Array),
60
- signature: expect.any(Uint8Array)
65
+ signature: expect.any(Uint8Array),
66
+ region
61
67
  })
62
68
  })
63
69
  })
@@ -0,0 +1,18 @@
1
+ import { isMaybeSupportedVersion } from '../../src/helpers/version'
2
+
3
+ describe('version', () => {
4
+
5
+ it('supported', () => {
6
+ expect(isMaybeSupportedVersion('1.0')).toBe(true)
7
+ expect(isMaybeSupportedVersion('1.1')).toBe(true)
8
+ expect(isMaybeSupportedVersion('2.0')).toBe(true)
9
+ expect(isMaybeSupportedVersion('3.5')).toBe(true)
10
+ })
11
+
12
+ it('not supported', () => {
13
+ expect(isMaybeSupportedVersion('')).toBe(false)
14
+ expect(isMaybeSupportedVersion('100.0.0-testnet-three.3')).toBe(false)
15
+ expect(isMaybeSupportedVersion('0.0')).toBe(false)
16
+ expect(isMaybeSupportedVersion('0.1')).toBe(false)
17
+ })
18
+ })
@@ -10,8 +10,7 @@ import {
10
10
  RouteMessageWrapper,
11
11
  StoreDataRequest,
12
12
  StoreDataResponse,
13
- RecursiveOperationRequest,
14
- RecursiveOperation
13
+ ClosestRingPeersResponse
15
14
  } from '../../src/proto/packages/dht/protos/DhtRpc'
16
15
  import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
17
16
  import {
@@ -38,6 +37,40 @@ export const createMockPeerDescriptor = (opts?: Partial<Omit<PeerDescriptor, 'no
38
37
  }
39
38
  }
40
39
 
40
+ export const createMockRingNode = async (
41
+ simulator: Simulator,
42
+ nodeId: DhtAddress,
43
+ region: number
44
+ ): Promise<DhtNode> => {
45
+ const maxConnections = 80
46
+ const dhtJoinTimeout = 45000
47
+
48
+ const peerDescriptor: PeerDescriptor = {
49
+ nodeId: getRawFromDhtAddress(nodeId ?? createRandomDhtAddress()),
50
+ type: NodeType.NODEJS,
51
+ region
52
+ //ipAddress: ipv4ToNumber(ipAddress)
53
+ }
54
+ const mockConnectionManager = new SimulatorTransport(peerDescriptor, simulator)
55
+ await mockConnectionManager.start()
56
+ const opts = {
57
+ peerDescriptor: peerDescriptor,
58
+ transport: mockConnectionManager,
59
+ numberOfNodesPerKBucket: 8,
60
+ maxConnections: maxConnections,
61
+ dhtJoinTimeout,
62
+ rpcRequestTimeout: 5000
63
+ }
64
+ const node = new class extends DhtNode {
65
+ async stop(): Promise<void> {
66
+ await super.stop()
67
+ await mockConnectionManager.stop()
68
+ }
69
+ }(opts)
70
+ await node.start()
71
+ return node
72
+ }
73
+
41
74
  export const createMockConnectionDhtNode = async (
42
75
  simulator: Simulator,
43
76
  nodeId?: DhtAddress,
@@ -107,14 +140,6 @@ export const createWrappedClosestPeersRequest = (
107
140
  return rpcWrapper
108
141
  }
109
142
 
110
- export const createFindRequest = (): RecursiveOperationRequest => {
111
- const request: RecursiveOperationRequest = {
112
- operation: RecursiveOperation.FIND_NODE,
113
- sessionId: v4()
114
- }
115
- return request
116
- }
117
-
118
143
  interface IDhtRpcWithError extends IDhtNodeRpc {
119
144
  throwPingError: (request: PingRequest) => Promise<PingResponse>
120
145
  respondPingWithTimeout: (request: PingRequest) => Promise<PingResponse>
@@ -130,6 +155,14 @@ export const createMockDhtRpc = (neighbors: PeerDescriptor[]): IDhtRpcWithError
130
155
  }
131
156
  return response
132
157
  },
158
+ async getClosestRingPeers(): Promise<ClosestRingPeersResponse> {
159
+ const response: ClosestRingPeersResponse = {
160
+ leftPeers: neighbors,
161
+ rightPeers: neighbors,
162
+ requestId: 'why am i still here'
163
+ }
164
+ return response
165
+ },
133
166
  async ping(request: PingRequest): Promise<PingResponse> {
134
167
  const response: PingResponse = {
135
168
  requestId: request.requestId
@@ -16,6 +16,7 @@
16
16
  { "path": "../utils/tsconfig.node.json" },
17
17
  { "path": "../test-utils/tsconfig.node.json" },
18
18
  { "path": "../proto-rpc/tsconfig.node.json" },
19
- { "path": "../autocertifier-client/tsconfig.node.json" }
19
+ { "path": "../autocertifier-client/tsconfig.node.json" },
20
+ { "path": "../cdn-location/tsconfig.node.json" }
20
21
  ]
21
22
  }
@@ -15,6 +15,7 @@
15
15
  { "path": "../utils/tsconfig.node.json" },
16
16
  { "path": "../test-utils/tsconfig.node.json" },
17
17
  { "path": "../proto-rpc/tsconfig.node.json" },
18
- { "path": "../autocertifier-client/tsconfig.node.json" }
18
+ { "path": "../autocertifier-client/tsconfig.node.json" },
19
+ { "path": "../cdn-location/tsconfig.node.json" }
19
20
  ]
20
21
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServerWebsocket.js","sourceRoot":"","sources":["../../../../src/connection/websocket/ServerWebsocket.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare const isCompatibleVersion: (version1: string, version2: string) => boolean;
2
- export declare const excludePatchVersion: (version: string) => string;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.excludePatchVersion = exports.isCompatibleVersion = void 0;
4
- // Is able to compare versions such as 1.2.3 and 1.2.4
5
- // can also compare versions such as 100.0.0-pretestnet.0 and 100.0.0-pretestnet.40
6
- const isCompatibleVersion = (version1, version2) => {
7
- const minorVersion1 = (0, exports.excludePatchVersion)(version1);
8
- const minorVersion2 = (0, exports.excludePatchVersion)(version2);
9
- return minorVersion1 === minorVersion2;
10
- };
11
- exports.isCompatibleVersion = isCompatibleVersion;
12
- const excludePatchVersion = (version) => {
13
- const versionParts = version.split('.');
14
- versionParts.pop();
15
- return versionParts.join('.');
16
- };
17
- exports.excludePatchVersion = excludePatchVersion;
18
- //# sourceMappingURL=versionCompatibility.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"versionCompatibility.js","sourceRoot":"","sources":["../../../src/helpers/versionCompatibility.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,mFAAmF;AAC5E,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAE,QAAgB,EAAW,EAAE;IAC/E,MAAM,aAAa,GAAG,IAAA,2BAAmB,EAAC,QAAQ,CAAC,CAAA;IACnD,MAAM,aAAa,GAAG,IAAA,2BAAmB,EAAC,QAAQ,CAAC,CAAA;IACnD,OAAO,aAAa,KAAK,aAAa,CAAA;AAC1C,CAAC,CAAA;AAJY,QAAA,mBAAmB,uBAI/B;AAEM,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAU,EAAE;IAC3D,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvC,YAAY,CAAC,GAAG,EAAE,CAAA;IAClB,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjC,CAAC,CAAA;AAJY,QAAA,mBAAmB,uBAI/B"}
@@ -1,13 +0,0 @@
1
- // Is able to compare versions such as 1.2.3 and 1.2.4
2
- // can also compare versions such as 100.0.0-pretestnet.0 and 100.0.0-pretestnet.40
3
- export const isCompatibleVersion = (version1: string, version2: string): boolean => {
4
- const minorVersion1 = excludePatchVersion(version1)
5
- const minorVersion2 = excludePatchVersion(version2)
6
- return minorVersion1 === minorVersion2
7
- }
8
-
9
- export const excludePatchVersion = (version: string): string => {
10
- const versionParts = version.split('.')
11
- versionParts.pop()
12
- return versionParts.join('.')
13
- }