@streamr/trackerless-network 100.0.0-testnet-two.4 → 100.0.0-testnet-three.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.
- package/dist/src/NetworkNode.d.ts +2 -1
- package/dist/src/NetworkNode.js +6 -2
- package/dist/src/NetworkNode.js.map +1 -1
- package/dist/src/NetworkStack.d.ts +6 -2
- package/dist/src/NetworkStack.js +21 -1
- package/dist/src/NetworkStack.js.map +1 -1
- package/dist/src/exports.d.ts +1 -0
- package/dist/src/exports.js +4 -1
- package/dist/src/exports.js.map +1 -1
- package/dist/src/logic/DeliveryRpcLocal.js +1 -0
- package/dist/src/logic/DeliveryRpcLocal.js.map +1 -1
- package/dist/src/logic/DuplicateMessageDetector.d.ts +3 -3
- package/dist/src/logic/DuplicateMessageDetector.js +10 -6
- package/dist/src/logic/DuplicateMessageDetector.js.map +1 -1
- package/dist/src/logic/EntryPointDiscovery.js +8 -5
- package/dist/src/logic/EntryPointDiscovery.js.map +1 -1
- package/dist/src/logic/Layer0Node.d.ts +2 -0
- package/dist/src/logic/Layer1Node.d.ts +4 -4
- package/dist/src/logic/NodeList.d.ts +6 -8
- package/dist/src/logic/NodeList.js +10 -12
- package/dist/src/logic/NodeList.js.map +1 -1
- package/dist/src/logic/RandomGraphNode.d.ts +5 -5
- package/dist/src/logic/RandomGraphNode.js +26 -22
- package/dist/src/logic/RandomGraphNode.js.map +1 -1
- package/dist/src/logic/StreamrNode.d.ts +3 -2
- package/dist/src/logic/StreamrNode.js +25 -6
- package/dist/src/logic/StreamrNode.js.map +1 -1
- package/dist/src/logic/createRandomGraphNode.d.ts +2 -2
- package/dist/src/logic/createRandomGraphNode.js +14 -14
- package/dist/src/logic/createRandomGraphNode.js.map +1 -1
- package/dist/src/logic/inspect/InspectSession.js +3 -2
- package/dist/src/logic/inspect/InspectSession.js.map +1 -1
- package/dist/src/logic/inspect/Inspector.d.ts +2 -3
- package/dist/src/logic/inspect/Inspector.js +7 -1
- package/dist/src/logic/inspect/Inspector.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.d.ts +1 -1
- package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js +18 -17
- package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/Handshaker.d.ts +3 -4
- package/dist/src/logic/neighbor-discovery/Handshaker.js +29 -27
- package/dist/src/logic/neighbor-discovery/Handshaker.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborFinder.d.ts +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborFinder.js +4 -2
- package/dist/src/logic/neighbor-discovery/NeighborFinder.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.d.ts +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js +8 -4
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.d.ts +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js +5 -4
- package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js.map +1 -1
- package/dist/src/logic/node-info/NodeInfoClient.d.ts +9 -0
- package/dist/src/logic/node-info/NodeInfoClient.js +19 -0
- package/dist/src/logic/node-info/NodeInfoClient.js.map +1 -0
- package/dist/src/logic/node-info/NodeInfoRpcLocal.d.ts +12 -0
- package/dist/src/logic/node-info/NodeInfoRpcLocal.js +29 -0
- package/dist/src/logic/node-info/NodeInfoRpcLocal.js.map +1 -0
- package/dist/src/logic/node-info/NodeInfoRpcRemote.d.ts +6 -0
- package/dist/src/logic/node-info/NodeInfoRpcRemote.js +11 -0
- package/dist/src/logic/node-info/NodeInfoRpcRemote.js.map +1 -0
- package/dist/src/logic/propagation/FifoMapWithTTL.js +7 -3
- package/dist/src/logic/propagation/FifoMapWithTTL.js.map +1 -1
- package/dist/src/logic/propagation/Propagation.js +3 -0
- package/dist/src/logic/propagation/Propagation.js.map +1 -1
- package/dist/src/logic/propagation/PropagationTaskStore.js +1 -0
- package/dist/src/logic/propagation/PropagationTaskStore.js.map +1 -1
- package/dist/src/logic/protocol-integration/stream-message/GroupKeyRequestTranslator.js +1 -1
- package/dist/src/logic/protocol-integration/stream-message/GroupKeyRequestTranslator.js.map +1 -1
- package/dist/src/logic/protocol-integration/stream-message/GroupKeyResponseTranslator.js +1 -1
- package/dist/src/logic/protocol-integration/stream-message/GroupKeyResponseTranslator.js.map +1 -1
- package/dist/src/logic/protocol-integration/stream-message/StreamMessageTranslator.js +43 -15
- package/dist/src/logic/protocol-integration/stream-message/StreamMessageTranslator.js.map +1 -1
- package/dist/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.d.ts +3 -0
- package/dist/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.js +14 -0
- package/dist/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.js.map +1 -0
- package/dist/src/logic/proxy/ProxyClient.d.ts +1 -1
- package/dist/src/logic/proxy/ProxyClient.js +18 -11
- package/dist/src/logic/proxy/ProxyClient.js.map +1 -1
- package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js +2 -1
- package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js.map +1 -1
- package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js.map +1 -1
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.d.ts +2 -2
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js +4 -2
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js.map +1 -1
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js.map +1 -1
- package/dist/src/logic/utils.js.map +1 -1
- package/dist/src/proto/google/protobuf/any.js.map +1 -1
- package/dist/src/proto/google/protobuf/timestamp.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +4 -5
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +38 -29
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +22 -12
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +11 -16
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +2 -3
- package/dist/src/proto/packages/proto-rpc/protos/ProtoRpc.js +1 -1
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.d.ts +27 -0
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js +43 -17
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js.map +1 -1
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.d.ts +106 -5
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js +79 -7
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js.map +1 -1
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.server.d.ts +11 -0
- package/dist/test/benchmark/first-message.js +7 -5
- package/dist/test/benchmark/first-message.js.map +1 -1
- package/dist/test/utils/utils.js +2 -1
- package/dist/test/utils/utils.js.map +1 -1
- package/jest.config.js +3 -38
- package/package.json +7 -7
- package/protos/NetworkRpc.proto +34 -5
- package/src/NetworkNode.ts +5 -1
- package/src/NetworkStack.ts +23 -2
- package/src/exports.ts +4 -0
- package/src/logic/DuplicateMessageDetector.ts +7 -7
- package/src/logic/EntryPointDiscovery.ts +3 -3
- package/src/logic/Layer0Node.ts +2 -0
- package/src/logic/Layer1Node.ts +4 -4
- package/src/logic/NodeList.ts +9 -15
- package/src/logic/RandomGraphNode.ts +24 -23
- package/src/logic/StreamrNode.ts +18 -4
- package/src/logic/createRandomGraphNode.ts +17 -17
- package/src/logic/inspect/Inspector.ts +3 -4
- package/src/logic/neighbor-discovery/HandshakeRpcLocal.ts +18 -18
- package/src/logic/neighbor-discovery/Handshaker.ts +31 -32
- package/src/logic/neighbor-discovery/NeighborFinder.ts +2 -2
- package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +6 -5
- package/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.ts +5 -5
- package/src/logic/node-info/NodeInfoClient.ts +21 -0
- package/src/logic/node-info/NodeInfoRpcLocal.ts +35 -0
- package/src/logic/node-info/NodeInfoRpcRemote.ts +11 -0
- package/src/logic/protocol-integration/stream-message/GroupKeyRequestTranslator.ts +1 -1
- package/src/logic/protocol-integration/stream-message/GroupKeyResponseTranslator.ts +1 -1
- package/src/logic/protocol-integration/stream-message/StreamMessageTranslator.ts +56 -27
- package/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.ts +11 -0
- package/src/logic/proxy/ProxyClient.ts +10 -10
- package/src/logic/temporary-connection/TemporaryConnectionRpcLocal.ts +3 -3
- package/src/proto/packages/dht/protos/DhtRpc.client.ts +6 -7
- package/src/proto/packages/dht/protos/DhtRpc.server.ts +3 -4
- package/src/proto/packages/dht/protos/DhtRpc.ts +32 -20
- package/src/proto/packages/proto-rpc/protos/ProtoRpc.ts +1 -1
- package/src/proto/packages/trackerless-network/protos/NetworkRpc.client.ts +30 -1
- package/src/proto/packages/trackerless-network/protos/NetworkRpc.server.ts +12 -1
- package/src/proto/packages/trackerless-network/protos/NetworkRpc.ts +138 -11
- package/test/benchmark/first-message.ts +28 -8
- package/test/end-to-end/inspect.test.ts +13 -1
- package/test/end-to-end/proxy-and-full-node.test.ts +14 -1
- package/test/end-to-end/proxy-connections.test.ts +14 -2
- package/test/end-to-end/proxy-key-exchange.test.ts +15 -8
- package/test/end-to-end/random-graph-with-real-connections.test.ts +21 -21
- package/test/end-to-end/webrtc-full-node-network.test.ts +3 -3
- package/test/end-to-end/websocket-full-node-network.test.ts +3 -3
- package/test/integration/Handshakes.test.ts +8 -8
- package/test/integration/NetworkNode.test.ts +19 -1
- package/test/integration/NetworkRpc.test.ts +3 -2
- package/test/integration/NodeInfoRpc.test.ts +103 -0
- package/test/integration/Propagation.test.ts +2 -2
- package/test/integration/RandomGraphNode-Layer1Node-Latencies.test.ts +20 -21
- package/test/integration/RandomGraphNode-Layer1Node.test.ts +22 -19
- package/test/integration/stream-without-default-entrypoints.test.ts +17 -11
- package/test/unit/HandshakeRpcLocal.test.ts +15 -15
- package/test/unit/Handshaker.test.ts +3 -3
- package/test/unit/NeighborFinder.test.ts +5 -5
- package/test/unit/NodeList.test.ts +56 -57
- package/test/unit/Propagation.test.ts +4 -2
- package/test/unit/RandomGraphNode.test.ts +7 -8
- package/test/unit/StreamMessageTranslator.test.ts +7 -4
- package/test/unit/StreamrNode.test.ts +2 -0
- package/test/unit/oldStreamMessageBinaryUtils.test.ts +39 -0
- package/test/utils/mock/MockLayer0Node.ts +6 -1
- package/test/utils/mock/MockLayer1Node.ts +2 -2
- package/test/utils/mock/Transport.ts +1 -1
- package/test/utils/utils.ts +3 -1
- package/tsconfig.jest.json +3 -3
- package/tsconfig.node.json +0 -1
- package/dist/package.json +0 -55
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { LatencyType, NodeType, PeerDescriptor, Simulator, SimulatorTransport, getRandomRegion } from '@streamr/dht'
|
|
2
2
|
import {
|
|
3
|
+
ContentType,
|
|
4
|
+
EncryptionType,
|
|
3
5
|
MessageID,
|
|
4
6
|
MessageRef,
|
|
7
|
+
SignatureType,
|
|
5
8
|
StreamMessage,
|
|
6
9
|
StreamMessageType,
|
|
7
10
|
StreamPartIDUtils
|
|
@@ -18,7 +21,7 @@ describe('stream without default entrypoints', () => {
|
|
|
18
21
|
|
|
19
22
|
let entrypoint: NetworkNode
|
|
20
23
|
let nodes: NetworkNode[]
|
|
21
|
-
let
|
|
24
|
+
let receivedMessageCount: number
|
|
22
25
|
const entryPointPeerDescriptor: PeerDescriptor = {
|
|
23
26
|
nodeId: new Uint8Array([1, 2, 3]),
|
|
24
27
|
type: NodeType.NODEJS,
|
|
@@ -39,13 +42,16 @@ describe('stream without default entrypoints', () => {
|
|
|
39
42
|
hello: 'world'
|
|
40
43
|
})),
|
|
41
44
|
messageType: StreamMessageType.MESSAGE,
|
|
45
|
+
contentType: ContentType.JSON,
|
|
46
|
+
encryptionType: EncryptionType.NONE,
|
|
47
|
+
signatureType: SignatureType.SECP256K1,
|
|
42
48
|
signature: hexToBinary('0x1234'),
|
|
43
49
|
})
|
|
44
50
|
|
|
45
51
|
beforeEach(async () => {
|
|
46
52
|
const simulator = new Simulator(LatencyType.REAL)
|
|
47
53
|
nodes = []
|
|
48
|
-
|
|
54
|
+
receivedMessageCount = 0
|
|
49
55
|
const entryPointTransport = new SimulatorTransport(entryPointPeerDescriptor, simulator)
|
|
50
56
|
await entryPointTransport.start()
|
|
51
57
|
entrypoint = createNetworkNode({
|
|
@@ -80,36 +86,36 @@ describe('stream without default entrypoints', () => {
|
|
|
80
86
|
it('can join stream without configured entrypoints one by one', async () => {
|
|
81
87
|
await nodes[0].join(STREAM_PART_ID)
|
|
82
88
|
nodes[0].addMessageListener((_msg) => {
|
|
83
|
-
|
|
89
|
+
receivedMessageCount += 1
|
|
84
90
|
})
|
|
85
91
|
await Promise.all([
|
|
86
|
-
waitForCondition(() =>
|
|
92
|
+
waitForCondition(() => receivedMessageCount === 1, 10000),
|
|
87
93
|
nodes[1].broadcast(streamMessage)
|
|
88
94
|
])
|
|
89
95
|
})
|
|
90
96
|
|
|
91
97
|
it('can join without configured entrypoints simultaneously', async () => {
|
|
92
98
|
nodes[0].addMessageListener((_msg) => {
|
|
93
|
-
|
|
99
|
+
receivedMessageCount += 1
|
|
94
100
|
})
|
|
95
101
|
await Promise.all([
|
|
96
|
-
waitForCondition(() =>
|
|
102
|
+
waitForCondition(() => receivedMessageCount === 1, 15000),
|
|
97
103
|
nodes[0].join(STREAM_PART_ID),
|
|
98
104
|
nodes[1].broadcast(streamMessage),
|
|
99
105
|
])
|
|
100
106
|
})
|
|
101
107
|
|
|
102
108
|
it('multiple nodes can join without configured entrypoints simultaneously', async () => {
|
|
103
|
-
const
|
|
104
|
-
await Promise.all(range(
|
|
109
|
+
const subscriberCount = 8
|
|
110
|
+
await Promise.all(range(subscriberCount).map(async (i) => {
|
|
105
111
|
await nodes[i].join(STREAM_PART_ID, { minCount: 4, timeout: 15000 })
|
|
106
112
|
nodes[i].addMessageListener(() => {
|
|
107
|
-
|
|
113
|
+
receivedMessageCount += 1
|
|
108
114
|
})
|
|
109
115
|
}))
|
|
110
|
-
const nonjoinedNode = nodes[
|
|
116
|
+
const nonjoinedNode = nodes[subscriberCount]
|
|
111
117
|
await nonjoinedNode.broadcast(streamMessage)
|
|
112
|
-
await waitForCondition(() =>
|
|
118
|
+
await waitForCondition(() => receivedMessageCount === subscriberCount, 15000)
|
|
113
119
|
}, 45000)
|
|
114
120
|
|
|
115
121
|
it('nodes store themselves as entrypoints on streamPart if number of entrypoints is low', async () => {
|
|
@@ -13,13 +13,13 @@ describe('HandshakeRpcLocal', () => {
|
|
|
13
13
|
|
|
14
14
|
const localPeerDescriptor = createMockPeerDescriptor()
|
|
15
15
|
|
|
16
|
-
let
|
|
16
|
+
let neighbors: NodeList
|
|
17
17
|
let ongoingHandshakes: Set<DhtAddress>
|
|
18
18
|
let ongoingInterleaves: Set<DhtAddress>
|
|
19
19
|
let handshakeWithInterleaving: jest.Mock
|
|
20
20
|
|
|
21
21
|
beforeEach(() => {
|
|
22
|
-
|
|
22
|
+
neighbors = new NodeList(getNodeIdFromPeerDescriptor(localPeerDescriptor), 10)
|
|
23
23
|
ongoingHandshakes = new Set()
|
|
24
24
|
ongoingInterleaves = new Set()
|
|
25
25
|
handshakeWithInterleaving = jest.fn()
|
|
@@ -35,7 +35,7 @@ describe('HandshakeRpcLocal', () => {
|
|
|
35
35
|
handshakeWithInterleaving()
|
|
36
36
|
return true
|
|
37
37
|
},
|
|
38
|
-
|
|
38
|
+
neighbors,
|
|
39
39
|
maxNeighborCount: 4
|
|
40
40
|
})
|
|
41
41
|
})
|
|
@@ -54,10 +54,10 @@ describe('HandshakeRpcLocal', () => {
|
|
|
54
54
|
})
|
|
55
55
|
|
|
56
56
|
it('handshake interleave', async () => {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
neighbors.add(createMockDeliveryRpcRemote())
|
|
58
|
+
neighbors.add(createMockDeliveryRpcRemote())
|
|
59
|
+
neighbors.add(createMockDeliveryRpcRemote())
|
|
60
|
+
neighbors.add(createMockDeliveryRpcRemote())
|
|
61
61
|
const req = StreamPartHandshakeRequest.create({
|
|
62
62
|
streamPartId: STREAM_PART_ID,
|
|
63
63
|
requestId: 'requestId'
|
|
@@ -111,10 +111,10 @@ describe('HandshakeRpcLocal', () => {
|
|
|
111
111
|
})
|
|
112
112
|
|
|
113
113
|
it('rejects handshakes if interleaving to the requestor is ongoing', async () => {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
114
|
+
neighbors.add(createMockDeliveryRpcRemote())
|
|
115
|
+
neighbors.add(createMockDeliveryRpcRemote())
|
|
116
|
+
neighbors.add(createMockDeliveryRpcRemote())
|
|
117
|
+
neighbors.add(createMockDeliveryRpcRemote())
|
|
118
118
|
const requestor = createMockPeerDescriptor()
|
|
119
119
|
ongoingInterleaves.add(getNodeIdFromPeerDescriptor(requestor))
|
|
120
120
|
const req = StreamPartHandshakeRequest.create({
|
|
@@ -131,10 +131,10 @@ describe('HandshakeRpcLocal', () => {
|
|
|
131
131
|
const interleavingPeer1 = createMockPeerDescriptor()
|
|
132
132
|
const interleavingPeer2 = createMockPeerDescriptor()
|
|
133
133
|
const interleavingPeer3 = createMockPeerDescriptor()
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
134
|
+
neighbors.add(createMockDeliveryRpcRemote(interleavingPeer1))
|
|
135
|
+
neighbors.add(createMockDeliveryRpcRemote(interleavingPeer2))
|
|
136
|
+
neighbors.add(createMockDeliveryRpcRemote(interleavingPeer3))
|
|
137
|
+
neighbors.add(createMockDeliveryRpcRemote())
|
|
138
138
|
ongoingInterleaves.add(getNodeIdFromPeerDescriptor(interleavingPeer1))
|
|
139
139
|
ongoingInterleaves.add(getNodeIdFromPeerDescriptor(interleavingPeer2))
|
|
140
140
|
ongoingInterleaves.add(getNodeIdFromPeerDescriptor(interleavingPeer3))
|
|
@@ -13,7 +13,7 @@ describe('Handshaker', () => {
|
|
|
13
13
|
const maxNeighborCount = 4
|
|
14
14
|
const streamPartId = StreamPartIDUtils.parse('stream#0')
|
|
15
15
|
|
|
16
|
-
let
|
|
16
|
+
let neighbors: NodeList
|
|
17
17
|
let nearbyNodeView: NodeList
|
|
18
18
|
let randomNodeView: NodeList
|
|
19
19
|
|
|
@@ -27,7 +27,7 @@ describe('Handshaker', () => {
|
|
|
27
27
|
const rpcCommunicator = new ListeningRpcCommunicator(streamPartId, simulatorTransport)
|
|
28
28
|
|
|
29
29
|
const nodeId = getNodeIdFromPeerDescriptor(peerDescriptor)
|
|
30
|
-
|
|
30
|
+
neighbors = new NodeList(nodeId, 10)
|
|
31
31
|
nearbyNodeView = new NodeList(nodeId, 20)
|
|
32
32
|
randomNodeView = new NodeList(nodeId, 20)
|
|
33
33
|
|
|
@@ -35,7 +35,7 @@ describe('Handshaker', () => {
|
|
|
35
35
|
localPeerDescriptor: peerDescriptor,
|
|
36
36
|
streamPartId,
|
|
37
37
|
connectionLocker: mockConnectionLocker,
|
|
38
|
-
|
|
38
|
+
neighbors,
|
|
39
39
|
nearbyNodeView,
|
|
40
40
|
randomNodeView,
|
|
41
41
|
rpcCommunicator,
|
|
@@ -9,27 +9,27 @@ import { DhtAddress, getNodeIdFromPeerDescriptor } from '@streamr/dht'
|
|
|
9
9
|
describe('NeighborFinder', () => {
|
|
10
10
|
|
|
11
11
|
const nodeId = createRandomNodeId()
|
|
12
|
-
let
|
|
12
|
+
let neighbors: NodeList
|
|
13
13
|
let nearbyNodeView: NodeList
|
|
14
14
|
let neighborFinder: NeighborFinder
|
|
15
15
|
|
|
16
16
|
const minCount = 4
|
|
17
17
|
|
|
18
18
|
beforeEach(() => {
|
|
19
|
-
|
|
19
|
+
neighbors = new NodeList(nodeId, 15)
|
|
20
20
|
nearbyNodeView = new NodeList(nodeId, 30)
|
|
21
21
|
range(30).forEach(() => nearbyNodeView.add(createMockDeliveryRpcRemote()))
|
|
22
22
|
const mockDoFindNeighbors = async (excluded: DhtAddress[]) => {
|
|
23
23
|
const target = nearbyNodeView.getRandom(excluded)
|
|
24
24
|
if (Math.random() < 0.5) {
|
|
25
|
-
|
|
25
|
+
neighbors.add(target!)
|
|
26
26
|
} else {
|
|
27
27
|
excluded.push(getNodeIdFromPeerDescriptor(target!.getPeerDescriptor()))
|
|
28
28
|
}
|
|
29
29
|
return excluded
|
|
30
30
|
}
|
|
31
31
|
neighborFinder = new NeighborFinder({
|
|
32
|
-
|
|
32
|
+
neighbors,
|
|
33
33
|
nearbyNodeView,
|
|
34
34
|
doFindNeighbors: (excluded) => mockDoFindNeighbors(excluded),
|
|
35
35
|
minCount
|
|
@@ -42,7 +42,7 @@ describe('NeighborFinder', () => {
|
|
|
42
42
|
|
|
43
43
|
it('Finds target number of nodes', async () => {
|
|
44
44
|
neighborFinder.start()
|
|
45
|
-
await waitForCondition(() =>
|
|
45
|
+
await waitForCondition(() => neighbors.size() >= minCount, 10000)
|
|
46
46
|
expect(neighborFinder.isRunning()).toEqual(false)
|
|
47
47
|
})
|
|
48
48
|
})
|
|
@@ -2,8 +2,6 @@ import {
|
|
|
2
2
|
ListeningRpcCommunicator,
|
|
3
3
|
NodeType,
|
|
4
4
|
PeerDescriptor,
|
|
5
|
-
Simulator,
|
|
6
|
-
SimulatorTransport,
|
|
7
5
|
getDhtAddressFromRaw,
|
|
8
6
|
getNodeIdFromPeerDescriptor,
|
|
9
7
|
} from '@streamr/dht'
|
|
@@ -14,6 +12,7 @@ import { NodeList } from '../../src/logic/NodeList'
|
|
|
14
12
|
import { formStreamPartDeliveryServiceId } from '../../src/logic/formStreamPartDeliveryServiceId'
|
|
15
13
|
import { DeliveryRpcClient } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc.client'
|
|
16
14
|
import { createMockPeerDescriptor, createRandomNodeId } from '../utils/utils'
|
|
15
|
+
import { MockTransport } from '../utils/mock/Transport'
|
|
17
16
|
|
|
18
17
|
const streamPartId = StreamPartIDUtils.parse('stream#0')
|
|
19
18
|
|
|
@@ -28,14 +27,9 @@ describe('NodeList', () => {
|
|
|
28
27
|
]
|
|
29
28
|
const ownId = createRandomNodeId()
|
|
30
29
|
let nodeList: NodeList
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const createRemoteGraphNode = async (peerDescriptor: PeerDescriptor) => {
|
|
35
|
-
const mockTransport = new SimulatorTransport(peerDescriptor, simulator)
|
|
36
|
-
await mockTransport.start()
|
|
37
|
-
const mockCommunicator = new ListeningRpcCommunicator(formStreamPartDeliveryServiceId(streamPartId), mockTransport)
|
|
38
|
-
mockTransports.push(mockTransport)
|
|
30
|
+
|
|
31
|
+
const createRemoteGraphNode = (peerDescriptor: PeerDescriptor) => {
|
|
32
|
+
const mockCommunicator = new ListeningRpcCommunicator(formStreamPartDeliveryServiceId(streamPartId), new MockTransport())
|
|
39
33
|
return new DeliveryRpcRemote(
|
|
40
34
|
createMockPeerDescriptor(),
|
|
41
35
|
peerDescriptor,
|
|
@@ -44,95 +38,79 @@ describe('NodeList', () => {
|
|
|
44
38
|
)
|
|
45
39
|
}
|
|
46
40
|
|
|
47
|
-
beforeEach(
|
|
48
|
-
simulator = new Simulator()
|
|
49
|
-
mockTransports = []
|
|
41
|
+
beforeEach(() => {
|
|
50
42
|
nodeList = new NodeList(ownId, 6)
|
|
51
43
|
for (const id of ids) {
|
|
52
44
|
const peerDescriptor: PeerDescriptor = {
|
|
53
45
|
nodeId: id,
|
|
54
46
|
type: NodeType.NODEJS
|
|
55
47
|
}
|
|
56
|
-
nodeList.add(
|
|
57
|
-
}
|
|
58
|
-
})
|
|
59
|
-
|
|
60
|
-
afterEach(async () => {
|
|
61
|
-
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
62
|
-
for (let i = 0; i < mockTransports.length; i++) {
|
|
63
|
-
await mockTransports[i].stop()
|
|
48
|
+
nodeList.add(createRemoteGraphNode(peerDescriptor))
|
|
64
49
|
}
|
|
65
|
-
simulator.stop()
|
|
66
50
|
})
|
|
67
51
|
|
|
68
|
-
it('add',
|
|
52
|
+
it('add', () => {
|
|
69
53
|
const newDescriptor = {
|
|
70
54
|
nodeId: new Uint8Array([1, 2, 3]),
|
|
71
55
|
type: NodeType.NODEJS
|
|
72
56
|
}
|
|
73
|
-
const newNode =
|
|
57
|
+
const newNode = createRemoteGraphNode(newDescriptor)
|
|
74
58
|
nodeList.add(newNode)
|
|
75
|
-
expect(nodeList.
|
|
59
|
+
expect(nodeList.has(getNodeIdFromPeerDescriptor(newDescriptor))).toEqual(true)
|
|
76
60
|
|
|
77
61
|
const newDescriptor2 = {
|
|
78
62
|
nodeId: new Uint8Array([1, 2, 4]),
|
|
79
63
|
type: NodeType.NODEJS
|
|
80
64
|
}
|
|
81
|
-
const newNode2 =
|
|
65
|
+
const newNode2 = createRemoteGraphNode(newDescriptor2)
|
|
82
66
|
nodeList.add(newNode2)
|
|
83
|
-
expect(nodeList.
|
|
67
|
+
expect(nodeList.has(getNodeIdFromPeerDescriptor(newDescriptor2))).toEqual(false)
|
|
84
68
|
})
|
|
85
69
|
|
|
86
70
|
it('remove', () => {
|
|
87
|
-
const toRemove = nodeList.
|
|
88
|
-
nodeList.remove(toRemove!.getPeerDescriptor())
|
|
89
|
-
expect(nodeList.hasNode(toRemove!.getPeerDescriptor())).toEqual(false)
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
it('removeById', () => {
|
|
93
|
-
const toRemove = nodeList.getClosest([])
|
|
71
|
+
const toRemove = nodeList.getFirst([])
|
|
94
72
|
const nodeId = getNodeIdFromPeerDescriptor(toRemove!.getPeerDescriptor())
|
|
95
|
-
nodeList.
|
|
96
|
-
expect(nodeList.
|
|
73
|
+
nodeList.remove(nodeId)
|
|
74
|
+
expect(nodeList.has(nodeId)).toEqual(false)
|
|
97
75
|
})
|
|
98
76
|
|
|
99
|
-
it('
|
|
100
|
-
const closest = nodeList.
|
|
77
|
+
it('getFirst', () => {
|
|
78
|
+
const closest = nodeList.getFirst([])
|
|
101
79
|
expect(getNodeIdFromPeerDescriptor(closest!.getPeerDescriptor()))
|
|
102
80
|
.toEqual(getDhtAddressFromRaw(new Uint8Array([1, 1, 1])))
|
|
103
81
|
})
|
|
104
82
|
|
|
105
|
-
it('
|
|
106
|
-
const closest = nodeList.
|
|
83
|
+
it('getFirst with exclude', () => {
|
|
84
|
+
const closest = nodeList.getFirst([getDhtAddressFromRaw(new Uint8Array([1, 1, 1]))])
|
|
107
85
|
expect(getNodeIdFromPeerDescriptor(closest!.getPeerDescriptor()))
|
|
108
86
|
.toEqual(getDhtAddressFromRaw(new Uint8Array([1, 1, 2])))
|
|
109
87
|
})
|
|
110
88
|
|
|
111
|
-
it('
|
|
112
|
-
const closest = nodeList.
|
|
89
|
+
it('getLast', () => {
|
|
90
|
+
const closest = nodeList.getLast([])
|
|
113
91
|
expect(getNodeIdFromPeerDescriptor(closest!.getPeerDescriptor()))
|
|
114
92
|
.toEqual(getDhtAddressFromRaw(new Uint8Array([1, 1, 5])))
|
|
115
93
|
})
|
|
116
94
|
|
|
117
|
-
it('
|
|
118
|
-
const closest = nodeList.
|
|
95
|
+
it('getLast with exclude', () => {
|
|
96
|
+
const closest = nodeList.getLast([getDhtAddressFromRaw(new Uint8Array([1, 1, 5]))])
|
|
119
97
|
expect(getNodeIdFromPeerDescriptor(closest!.getPeerDescriptor()))
|
|
120
98
|
.toEqual(getDhtAddressFromRaw(new Uint8Array([1, 1, 4])))
|
|
121
99
|
})
|
|
122
100
|
|
|
123
|
-
it('
|
|
124
|
-
const results = nodeList.
|
|
125
|
-
expect(results).toEqual([nodeList.
|
|
101
|
+
it('getFirstAndLast', () => {
|
|
102
|
+
const results = nodeList.getFirstAndLast([])
|
|
103
|
+
expect(results).toEqual([nodeList.getFirst([]), nodeList.getLast([])])
|
|
126
104
|
})
|
|
127
105
|
|
|
128
|
-
it('
|
|
106
|
+
it('getFirst empty', () => {
|
|
129
107
|
const emptyList = new NodeList(ownId, 2)
|
|
130
|
-
expect(emptyList.
|
|
108
|
+
expect(emptyList.getFirst([])).toBeUndefined()
|
|
131
109
|
})
|
|
132
110
|
|
|
133
|
-
it('
|
|
111
|
+
it('getLast empty', () => {
|
|
134
112
|
const emptyList = new NodeList(ownId, 2)
|
|
135
|
-
expect(emptyList.
|
|
113
|
+
expect(emptyList.getLast([])).toBeUndefined()
|
|
136
114
|
})
|
|
137
115
|
|
|
138
116
|
it('getRandom empty', () => {
|
|
@@ -140,19 +118,40 @@ describe('NodeList', () => {
|
|
|
140
118
|
expect(emptyList.getRandom([])).toBeUndefined()
|
|
141
119
|
})
|
|
142
120
|
|
|
143
|
-
it('
|
|
121
|
+
it('getFirstAndLast empty', () => {
|
|
144
122
|
const emptyList = new NodeList(ownId, 2)
|
|
145
|
-
expect(emptyList.
|
|
123
|
+
expect(emptyList.getFirstAndLast([])).toEqual([])
|
|
146
124
|
})
|
|
147
125
|
|
|
148
|
-
it('
|
|
149
|
-
const results = nodeList.
|
|
126
|
+
it('getFirstAndLast with exclude', () => {
|
|
127
|
+
const results = nodeList.getFirstAndLast([
|
|
150
128
|
getDhtAddressFromRaw(new Uint8Array([1, 1, 1])),
|
|
151
129
|
getDhtAddressFromRaw(new Uint8Array([1, 1, 5]))
|
|
152
130
|
])
|
|
153
131
|
expect(results).toEqual([
|
|
154
|
-
nodeList.
|
|
155
|
-
nodeList.
|
|
132
|
+
nodeList.getFirst([getDhtAddressFromRaw(new Uint8Array([1, 1, 1]))]),
|
|
133
|
+
nodeList.getLast([getDhtAddressFromRaw(new Uint8Array([1, 1, 5]))])
|
|
156
134
|
])
|
|
157
135
|
})
|
|
136
|
+
|
|
137
|
+
it('items are in insertion order', () => {
|
|
138
|
+
const list = new NodeList(createRandomNodeId(), 100)
|
|
139
|
+
const item1 = createRemoteGraphNode(createMockPeerDescriptor())
|
|
140
|
+
const item2 = createRemoteGraphNode(createMockPeerDescriptor())
|
|
141
|
+
const item3 = createRemoteGraphNode(createMockPeerDescriptor())
|
|
142
|
+
const item4 = createRemoteGraphNode(createMockPeerDescriptor())
|
|
143
|
+
const item5 = createRemoteGraphNode(createMockPeerDescriptor())
|
|
144
|
+
const item6 = createRemoteGraphNode(createMockPeerDescriptor())
|
|
145
|
+
list.add(item2)
|
|
146
|
+
list.add(item3)
|
|
147
|
+
list.add(item1)
|
|
148
|
+
list.add(item6)
|
|
149
|
+
list.add(item4)
|
|
150
|
+
list.add(item5)
|
|
151
|
+
expect(list.getFirst([])!).toEqual(item2)
|
|
152
|
+
expect(list.getLast([])!).toEqual(item5)
|
|
153
|
+
// the order doesn't change if item re-added
|
|
154
|
+
list.add(item4)
|
|
155
|
+
expect(list.getLast([])!).toEqual(item5)
|
|
156
|
+
})
|
|
158
157
|
})
|
|
@@ -2,11 +2,12 @@ import {
|
|
|
2
2
|
ContentType,
|
|
3
3
|
EncryptionType,
|
|
4
4
|
MessageID,
|
|
5
|
+
SignatureType,
|
|
5
6
|
StreamMessage,
|
|
6
7
|
StreamMessageType,
|
|
7
8
|
} from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
|
|
8
9
|
import { Propagation } from '../../src/logic/propagation/Propagation'
|
|
9
|
-
import {
|
|
10
|
+
import { hexToBinary, toEthereumAddress, utf8ToBinary, wait } from '@streamr/utils'
|
|
10
11
|
import { DhtAddress } from '@streamr/dht'
|
|
11
12
|
|
|
12
13
|
const PUBLISHER_ID = toEthereumAddress('0x1111111111111111111111111111111111111111')
|
|
@@ -26,7 +27,8 @@ function makeMsg(streamId: string, partition: number, ts: number, msgNo: number)
|
|
|
26
27
|
contentType: ContentType.JSON,
|
|
27
28
|
encryptionType: EncryptionType.NONE,
|
|
28
29
|
signature: hexToBinary('0x1111'),
|
|
29
|
-
messageType: StreamMessageType.MESSAGE
|
|
30
|
+
messageType: StreamMessageType.MESSAGE,
|
|
31
|
+
signatureType: SignatureType.SECP256K1
|
|
30
32
|
}
|
|
31
33
|
}
|
|
32
34
|
|
|
@@ -16,7 +16,7 @@ describe('RandomGraphNode', () => {
|
|
|
16
16
|
let randomGraphNode: RandomGraphNode
|
|
17
17
|
const peerDescriptor = createMockPeerDescriptor()
|
|
18
18
|
|
|
19
|
-
let
|
|
19
|
+
let neighbors: NodeList
|
|
20
20
|
let nearbyNodeView: NodeList
|
|
21
21
|
let randomNodeView: NodeList
|
|
22
22
|
|
|
@@ -25,13 +25,13 @@ describe('RandomGraphNode', () => {
|
|
|
25
25
|
beforeEach(async () => {
|
|
26
26
|
const nodeId = getNodeIdFromPeerDescriptor(peerDescriptor)
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
neighbors = new NodeList(nodeId, 10)
|
|
29
29
|
randomNodeView = new NodeList(nodeId, 10)
|
|
30
30
|
nearbyNodeView = new NodeList(nodeId, 10)
|
|
31
31
|
layer1Node = new MockLayer1Node()
|
|
32
32
|
|
|
33
33
|
randomGraphNode = createRandomGraphNode({
|
|
34
|
-
|
|
34
|
+
neighbors,
|
|
35
35
|
randomNodeView,
|
|
36
36
|
nearbyNodeView,
|
|
37
37
|
transport: new MockTransport(),
|
|
@@ -52,12 +52,11 @@ describe('RandomGraphNode', () => {
|
|
|
52
52
|
randomGraphNode.stop()
|
|
53
53
|
})
|
|
54
54
|
|
|
55
|
-
it('
|
|
55
|
+
it('getNeighbors', () => {
|
|
56
56
|
const mockRemote = createMockDeliveryRpcRemote()
|
|
57
|
-
|
|
58
|
-
const
|
|
59
|
-
expect(
|
|
60
|
-
targetNeighbors.remove(mockRemote.getPeerDescriptor())
|
|
57
|
+
neighbors.add(mockRemote)
|
|
58
|
+
const result = randomGraphNode.getNeighbors()
|
|
59
|
+
expect(getNodeIdFromPeerDescriptor(result[0])).toEqual(getNodeIdFromPeerDescriptor(mockRemote.getPeerDescriptor()))
|
|
61
60
|
})
|
|
62
61
|
|
|
63
62
|
it('getNearbyNodeView', () => {
|
|
@@ -3,7 +3,9 @@ import {
|
|
|
3
3
|
MessageID,
|
|
4
4
|
StreamMessage as OldStreamMessage,
|
|
5
5
|
StreamMessageType as OldStreamMessageType,
|
|
6
|
-
StreamPartIDUtils
|
|
6
|
+
StreamPartIDUtils,
|
|
7
|
+
ContentType,
|
|
8
|
+
SignatureType
|
|
7
9
|
} from '@streamr/protocol'
|
|
8
10
|
import { binaryToHex, binaryToUtf8, hexToBinary, toEthereumAddress, utf8ToBinary } from '@streamr/utils'
|
|
9
11
|
import { StreamMessageTranslator } from '../../src/logic/protocol-integration/stream-message/StreamMessageTranslator'
|
|
@@ -31,10 +33,11 @@ describe('StreamMessageTranslator', () => {
|
|
|
31
33
|
)
|
|
32
34
|
const oldProtocolMsg = new OldStreamMessage({
|
|
33
35
|
messageId,
|
|
34
|
-
prevMsgRef: null,
|
|
35
36
|
content: utf8ToBinary(JSON.stringify({ hello: 'WORLD' })),
|
|
37
|
+
contentType: ContentType.JSON,
|
|
36
38
|
messageType: OldStreamMessageType.MESSAGE,
|
|
37
39
|
encryptionType: EncryptionType.NONE,
|
|
40
|
+
signatureType: SignatureType.SECP256K1,
|
|
38
41
|
signature,
|
|
39
42
|
})
|
|
40
43
|
|
|
@@ -59,10 +62,10 @@ describe('StreamMessageTranslator', () => {
|
|
|
59
62
|
expect(translated.messageId.timestamp).toBeGreaterThanOrEqual(0)
|
|
60
63
|
expect(translated.messageId.sequenceNumber).toEqual(0)
|
|
61
64
|
expect(translated.getPublisherId()).toEqual('0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
|
|
62
|
-
expect(translated.prevMsgRef).toEqual(
|
|
65
|
+
expect(translated.prevMsgRef).toEqual(undefined)
|
|
63
66
|
expect(translated.messageType).toEqual(OldStreamMessageType.MESSAGE)
|
|
64
67
|
expect(translated.contentType).toEqual(0)
|
|
65
|
-
expect(translated.groupKeyId).toEqual(
|
|
68
|
+
expect(translated.groupKeyId).toEqual(undefined)
|
|
66
69
|
expect(translated.signature).toStrictEqual(signature)
|
|
67
70
|
expect(translated.getParsedContent()).toEqual({ hello: 'WORLD' })
|
|
68
71
|
})
|
|
@@ -56,6 +56,7 @@ describe('StreamrNode', () => {
|
|
|
56
56
|
node.broadcast(message)
|
|
57
57
|
await waitForCondition(() => node.hasStreamPart(streamPartId))
|
|
58
58
|
})
|
|
59
|
+
|
|
59
60
|
})
|
|
60
61
|
|
|
61
62
|
describe('proxied stream', () => {
|
|
@@ -93,4 +94,5 @@ describe('StreamrNode', () => {
|
|
|
93
94
|
expect(node.isProxiedStreamPart(streamPartId)).toBe(false)
|
|
94
95
|
})
|
|
95
96
|
})
|
|
97
|
+
|
|
96
98
|
})
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ContentType,
|
|
3
|
+
EncryptionType,
|
|
4
|
+
MessageID,
|
|
5
|
+
MessageRef,
|
|
6
|
+
SignatureType,
|
|
7
|
+
StreamMessage,
|
|
8
|
+
toStreamID
|
|
9
|
+
} from '@streamr/protocol'
|
|
10
|
+
import { toEthereumAddress } from '@streamr/utils'
|
|
11
|
+
import { convertBytesToStreamMessage, convertStreamMessageToBytes } from '../../src/exports'
|
|
12
|
+
|
|
13
|
+
describe('oldStreamMessageBinaryUtils', () => {
|
|
14
|
+
it('convertStreamMessageToBytes and convertBytesToStreamMessage', () => {
|
|
15
|
+
const streamMessage = new StreamMessage({
|
|
16
|
+
messageId: new MessageID(
|
|
17
|
+
toStreamID('test.ens/foobar'),
|
|
18
|
+
0,
|
|
19
|
+
10001,
|
|
20
|
+
0,
|
|
21
|
+
toEthereumAddress('0x1234567890123456789012345678901234567890'),
|
|
22
|
+
'msgChainId'
|
|
23
|
+
),
|
|
24
|
+
prevMsgRef: new MessageRef(10000, 1),
|
|
25
|
+
content: new Uint8Array([1, 2, 3]),
|
|
26
|
+
contentType: ContentType.BINARY,
|
|
27
|
+
encryptionType: EncryptionType.NONE,
|
|
28
|
+
groupKeyId: '0x1234567890123456789012345678901234567890',
|
|
29
|
+
signatureType: SignatureType.SECP256K1,
|
|
30
|
+
signature: new Uint8Array([7, 8, 9])
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
const bytes = convertStreamMessageToBytes(streamMessage)
|
|
34
|
+
expect(bytes).toBeInstanceOf(Uint8Array)
|
|
35
|
+
expect(bytes.length).toBeGreaterThan(100)
|
|
36
|
+
const convertedStreamMessage = convertBytesToStreamMessage(bytes)
|
|
37
|
+
expect(convertedStreamMessage).toEqual(streamMessage)
|
|
38
|
+
})
|
|
39
|
+
})
|
|
@@ -45,7 +45,12 @@ export class MockLayer0Node extends EventEmitter implements Layer0Node {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
// eslint-disable-next-line class-methods-use-this
|
|
48
|
-
|
|
48
|
+
getConnections(): PeerDescriptor[] {
|
|
49
|
+
return []
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// eslint-disable-next-line class-methods-use-this
|
|
53
|
+
getNeighbors(): PeerDescriptor[] {
|
|
49
54
|
return []
|
|
50
55
|
}
|
|
51
56
|
|
|
@@ -16,11 +16,11 @@ export class MockLayer1Node extends EventEmitter implements Layer1Node {
|
|
|
16
16
|
return []
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
getNeighbors(): PeerDescriptor[] {
|
|
20
20
|
return this.kbucketPeers
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
getNeighborCount(): number {
|
|
24
24
|
return this.kbucketPeers.length
|
|
25
25
|
}
|
|
26
26
|
|
package/test/utils/utils.ts
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
ContentType,
|
|
17
17
|
EncryptionType,
|
|
18
18
|
MessageID,
|
|
19
|
+
SignatureType,
|
|
19
20
|
StreamMessage,
|
|
20
21
|
StreamMessageType
|
|
21
22
|
} from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
|
|
@@ -84,7 +85,8 @@ export const createStreamMessage = (
|
|
|
84
85
|
content: utf8ToBinary(content),
|
|
85
86
|
contentType: ContentType.JSON,
|
|
86
87
|
messageId,
|
|
87
|
-
signature: hexToBinary('0x1234')
|
|
88
|
+
signature: hexToBinary('0x1234'),
|
|
89
|
+
signatureType: SignatureType.SECP256K1,
|
|
88
90
|
}
|
|
89
91
|
return msg
|
|
90
92
|
}
|
package/tsconfig.jest.json
CHANGED
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
"src/**/*",
|
|
9
9
|
"test/**/*"
|
|
10
10
|
],
|
|
11
|
-
"exclude": [
|
|
12
|
-
],
|
|
13
11
|
"references": [
|
|
14
|
-
{ "path": "tsconfig.node.json" }
|
|
12
|
+
{ "path": "../protocol/tsconfig.node.json" },
|
|
13
|
+
{ "path": "../proto-rpc/tsconfig.node.json" },
|
|
14
|
+
{ "path": "../dht/tsconfig.node.json" }
|
|
15
15
|
]
|
|
16
16
|
}
|