@libp2p/interop 11.0.0 → 12.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/dist/src/connect/index.d.ts +3 -0
- package/dist/src/connect/index.d.ts.map +1 -0
- package/dist/src/{connect.js → connect/index.js} +12 -5
- package/dist/src/connect/index.js.map +1 -0
- package/dist/src/dht/content-fetching.d.ts.map +1 -1
- package/dist/src/dht/content-fetching.js +22 -9
- package/dist/src/dht/content-fetching.js.map +1 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/typedoc-urls.json +2 -0
- package/package.json +1 -1
- package/src/{connect.ts → connect/index.ts} +18 -5
- package/src/dht/content-fetching.ts +23 -9
- package/src/index.ts +3 -1
- package/dist/src/connect.d.ts +0 -3
- package/dist/src/connect.d.ts.map +0 -1
- package/dist/src/connect.js.map +0 -1
package/README.md
CHANGED
|
@@ -7,6 +7,21 @@
|
|
|
7
7
|
|
|
8
8
|
# About
|
|
9
9
|
|
|
10
|
+
<!--
|
|
11
|
+
|
|
12
|
+
!IMPORTANT!
|
|
13
|
+
|
|
14
|
+
Everything in this README between "# About" and "# Install" is automatically
|
|
15
|
+
generated and will be overwritten the next time the doc generator is run.
|
|
16
|
+
|
|
17
|
+
To make changes to this section, please update the @packageDocumentation section
|
|
18
|
+
of src/index.js or src/index.ts
|
|
19
|
+
|
|
20
|
+
To experiment with formatting, please run "npm run docs" from the root of this
|
|
21
|
+
repo and examine the changes made.
|
|
22
|
+
|
|
23
|
+
-->
|
|
24
|
+
|
|
10
25
|
This repository holds interop tests for testing compatibility between different libp2p implementations.
|
|
11
26
|
|
|
12
27
|
## Example - How to run the tests
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connect/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,aAAa,EAAyC,MAAM,aAAa,CAAA;AAE/F,wBAAgB,YAAY,CAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAgB1D"}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import { expect } from 'aegir/chai';
|
|
2
|
-
import { runTests } from './utils/test-matrix.js';
|
|
3
2
|
export function connectTests(factory) {
|
|
4
|
-
|
|
3
|
+
const nodeTypes = ['js', 'go'];
|
|
4
|
+
const transportTypes = ['tcp', 'webtransport'];
|
|
5
|
+
for (const typeA of nodeTypes) {
|
|
6
|
+
for (const typeB of nodeTypes) {
|
|
7
|
+
transportTypes.forEach(transport => {
|
|
8
|
+
runConnectTests(transport, factory, { type: typeA, transport }, { type: typeB, transport });
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
}
|
|
5
12
|
}
|
|
6
13
|
function runConnectTests(name, factory, optionsA, optionsB) {
|
|
7
|
-
describe(name
|
|
14
|
+
describe(`connection.${name}`, () => {
|
|
8
15
|
let daemonA;
|
|
9
16
|
let daemonB;
|
|
10
17
|
// Start Daemons
|
|
@@ -19,7 +26,7 @@ function runConnectTests(name, factory, optionsA, optionsB) {
|
|
|
19
26
|
.filter(Boolean)
|
|
20
27
|
.map(async (d) => { await d.stop(); }));
|
|
21
28
|
});
|
|
22
|
-
it(`${optionsA.type} peer to ${optionsB.type} peer`, async function () {
|
|
29
|
+
it(`${optionsA.type} peer to ${optionsB.type} peer over ${name}`, async function () {
|
|
23
30
|
this.timeout(10 * 1000);
|
|
24
31
|
const identify1 = await daemonA.client.identify();
|
|
25
32
|
const identify2 = await daemonB.client.identify();
|
|
@@ -42,4 +49,4 @@ function runConnectTests(name, factory, optionsA, optionsB) {
|
|
|
42
49
|
});
|
|
43
50
|
});
|
|
44
51
|
}
|
|
45
|
-
//# sourceMappingURL=
|
|
52
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connect/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-fetching.d.ts","sourceRoot":"","sources":["../../../src/dht/content-fetching.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"content-fetching.d.ts","sourceRoot":"","sources":["../../../src/dht/content-fetching.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAU,aAAa,EAA0B,MAAM,aAAa,CAAA;AAUhF,wBAAgB,oBAAoB,CAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAYlE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/* eslint-env mocha */
|
|
2
2
|
import { expect } from 'aegir/chai';
|
|
3
|
+
import delay from 'delay';
|
|
3
4
|
import { concat as uint8ArrayConcat } from 'uint8arrays/concat';
|
|
4
5
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
5
6
|
const record = {
|
|
@@ -21,27 +22,39 @@ function runContentFetchingTests(factory, optionsA, optionsB) {
|
|
|
21
22
|
describe('dht.contentFetching', () => {
|
|
22
23
|
let daemonA;
|
|
23
24
|
let daemonB;
|
|
25
|
+
let daemonC;
|
|
26
|
+
let daemonD;
|
|
24
27
|
// Start Daemons
|
|
25
28
|
before(async function () {
|
|
26
29
|
this.timeout(20 * 1000);
|
|
27
30
|
daemonA = await factory.spawn(optionsA);
|
|
28
|
-
daemonB = await factory.spawn(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
await
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
daemonB = await factory.spawn(optionsA);
|
|
32
|
+
daemonC = await factory.spawn(optionsB);
|
|
33
|
+
daemonD = await factory.spawn(optionsB);
|
|
34
|
+
const identifyA = await daemonA.client.identify();
|
|
35
|
+
const identifyB = await daemonB.client.identify();
|
|
36
|
+
const identifyC = await daemonC.client.identify();
|
|
37
|
+
const identifyD = await daemonD.client.identify();
|
|
38
|
+
// connect them A -> B -> C -> D
|
|
39
|
+
await daemonA.client.connect(identifyB.peerId, identifyB.addrs);
|
|
40
|
+
await daemonB.client.connect(identifyC.peerId, identifyC.addrs);
|
|
41
|
+
await daemonC.client.connect(identifyD.peerId, identifyD.addrs);
|
|
42
|
+
// wait for identify
|
|
43
|
+
await delay(1000);
|
|
44
|
+
// B can find D and C can find A, so their routing tables are not empty
|
|
45
|
+
await expect(daemonB.client.dht.findPeer(identifyD.peerId)).to.eventually.be.ok();
|
|
46
|
+
await expect(daemonC.client.dht.findPeer(identifyA.peerId)).to.eventually.be.ok();
|
|
34
47
|
});
|
|
35
48
|
// Stop daemons
|
|
36
49
|
after(async function () {
|
|
37
|
-
await Promise.all([daemonA, daemonB]
|
|
50
|
+
await Promise.all([daemonA, daemonB, daemonC, daemonD]
|
|
38
51
|
.filter(Boolean)
|
|
39
52
|
.map(async (d) => { await d.stop(); }));
|
|
40
53
|
});
|
|
41
54
|
it(`${optionsA.type} peer to ${optionsB.type} peer`, async function () {
|
|
42
55
|
this.timeout(10 * 1000);
|
|
43
|
-
await
|
|
44
|
-
const data = await
|
|
56
|
+
await daemonB.client.dht.put(record.key, record.value);
|
|
57
|
+
const data = await daemonC.client.dht.get(record.key);
|
|
45
58
|
expect(data).to.equalBytes(record.value);
|
|
46
59
|
});
|
|
47
60
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-fetching.js","sourceRoot":"","sources":["../../../src/dht/content-fetching.ts"],"names":[],"mappings":"AAAA,sBAAsB;AAEtB,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAG5E,MAAM,MAAM,GAAG;IACb,GAAG,EAAE,gBAAgB,CAAC;QACpB,oBAAoB,CAAC,MAAM,CAAC;QAC5B,oBAAoB,CAAC,sDAAsD,EAAE,QAAQ,CAAC;KACvF,CAAC;IACF,KAAK,EAAE,oBAAoB,CAAC,wlBAAwlB,EAAE,KAAK,CAAC;CAC7nB,CAAA;AAED,MAAM,UAAU,oBAAoB,CAAE,OAAsB;IAC1D,MAAM,SAAS,GAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAE1C,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,uBAAuB,CACrB,OAAO,EACP,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAC1B,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAC3B,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAE,OAAsB,EAAE,QAAsB,EAAE,QAAsB;IACtG,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,IAAI,OAAe,CAAA;QACnB,IAAI,OAAe,CAAA;QAEnB,gBAAgB;QAChB,MAAM,CAAC,KAAK;YACV,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;YAEvB,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YACvC,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YAEvC,
|
|
1
|
+
{"version":3,"file":"content-fetching.js","sourceRoot":"","sources":["../../../src/dht/content-fetching.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
*
|
|
42
42
|
* For an example, see the js-libp2p interop test runner.
|
|
43
43
|
*/
|
|
44
|
-
import { connectTests } from './connect.js';
|
|
44
|
+
import { connectTests } from './connect/index.js';
|
|
45
45
|
import { dhtTests } from './dht/index.js';
|
|
46
46
|
import { pubsubTests } from './pubsub/index.js';
|
|
47
47
|
import { relayTests } from './relay/index.js';
|
|
@@ -56,6 +56,7 @@ export type PeerIdType = 'rsa' | 'ed25519' | 'secp256k1';
|
|
|
56
56
|
export type PubSubRouter = 'gossipsub' | 'floodsub';
|
|
57
57
|
export type Muxer = 'mplex' | 'yamux';
|
|
58
58
|
export type Encryption = 'noise' | 'tls';
|
|
59
|
+
export type TransportType = 'tcp' | 'webtransport';
|
|
59
60
|
export interface SpawnOptions {
|
|
60
61
|
type: NodeType;
|
|
61
62
|
key?: string;
|
|
@@ -66,6 +67,7 @@ export interface SpawnOptions {
|
|
|
66
67
|
muxer?: Muxer;
|
|
67
68
|
relay?: boolean;
|
|
68
69
|
noListen?: boolean;
|
|
70
|
+
transport?: TransportType;
|
|
69
71
|
}
|
|
70
72
|
export interface DaemonFactory {
|
|
71
73
|
spawn(options: SpawnOptions): Promise<Daemon>;
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,MAAM,WAAW,MAAM;IACrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB,MAAM,EAAE,YAAY,CAAA;CACrB;AAED,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAA;AAClC,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,CAAA;AACxD,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,UAAU,CAAA;AACnD,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,OAAO,CAAA;AACrC,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,KAAK,CAAA;AACxC,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,cAAc,CAAA;AAElD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;IAGf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,aAAa,CAAA;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CAC9C;AAED,wBAAsB,YAAY,CAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAMzE;AAED,OAAO,EACL,YAAY,IAAI,mBAAmB,EACnC,QAAQ,IAAI,eAAe,EAC3B,WAAW,IAAI,kBAAkB,EACjC,WAAW,IAAI,kBAAkB,EACjC,UAAU,IAAI,iBAAiB,EAChC,CAAA"}
|
package/dist/src/index.js
CHANGED
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
*
|
|
42
42
|
* For an example, see the js-libp2p interop test runner.
|
|
43
43
|
*/
|
|
44
|
-
import { connectTests } from './connect.js';
|
|
44
|
+
import { connectTests } from './connect/index.js';
|
|
45
45
|
import { dhtTests } from './dht/index.js';
|
|
46
46
|
import { pubsubTests } from './pubsub/index.js';
|
|
47
47
|
import { relayTests } from './relay/index.js';
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAkChD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAE,OAAsB;IACxD,YAAY,CAAC,OAAO,CAAC,CAAA;IACrB,UAAU,CAAC,OAAO,CAAC,CAAA;IACnB,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAA;IACvB,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;IAC1B,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;AAC5B,CAAC;AAED,OAAO,EACL,YAAY,IAAI,mBAAmB,EACnC,QAAQ,IAAI,eAAe,EAC3B,WAAW,IAAI,kBAAkB,EACjC,WAAW,IAAI,kBAAkB,EACjC,UAAU,IAAI,iBAAiB,EAChC,CAAA"}
|
package/dist/typedoc-urls.json
CHANGED
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
".:PeerIdType": "https://libp2p.github.io/interop/types/PeerIdType.html",
|
|
16
16
|
"PubSubRouter": "https://libp2p.github.io/interop/types/PubSubRouter.html",
|
|
17
17
|
".:PubSubRouter": "https://libp2p.github.io/interop/types/PubSubRouter.html",
|
|
18
|
+
"TransportType": "https://libp2p.github.io/interop/types/TransportType.html",
|
|
19
|
+
".:TransportType": "https://libp2p.github.io/interop/types/TransportType.html",
|
|
18
20
|
"connectInteropTests": "https://libp2p.github.io/interop/functions/connectInteropTests.html",
|
|
19
21
|
"dhtInteropTests": "https://libp2p.github.io/interop/functions/dhtInteropTests.html",
|
|
20
22
|
"interopTests": "https://libp2p.github.io/interop/functions/interopTests.html",
|
package/package.json
CHANGED
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
import { expect } from 'aegir/chai'
|
|
2
|
-
import {
|
|
3
|
-
import type { Daemon, SpawnOptions, DaemonFactory } from './index.js'
|
|
2
|
+
import type { Daemon, DaemonFactory, NodeType, SpawnOptions, TransportType } from '../index.js'
|
|
4
3
|
|
|
5
4
|
export function connectTests (factory: DaemonFactory): void {
|
|
6
|
-
|
|
5
|
+
const nodeTypes: NodeType[] = ['js', 'go']
|
|
6
|
+
const transportTypes: TransportType[] = ['tcp', 'webtransport']
|
|
7
|
+
|
|
8
|
+
for (const typeA of nodeTypes) {
|
|
9
|
+
for (const typeB of nodeTypes) {
|
|
10
|
+
transportTypes.forEach(transport => {
|
|
11
|
+
runConnectTests(
|
|
12
|
+
transport,
|
|
13
|
+
factory,
|
|
14
|
+
{ type: typeA, transport },
|
|
15
|
+
{ type: typeB, transport }
|
|
16
|
+
)
|
|
17
|
+
})
|
|
18
|
+
}
|
|
19
|
+
}
|
|
7
20
|
}
|
|
8
21
|
|
|
9
22
|
function runConnectTests (name: string, factory: DaemonFactory, optionsA: SpawnOptions, optionsB: SpawnOptions): void {
|
|
10
|
-
describe(name
|
|
23
|
+
describe(`connection.${name}`, () => {
|
|
11
24
|
let daemonA: Daemon
|
|
12
25
|
let daemonB: Daemon
|
|
13
26
|
|
|
@@ -28,7 +41,7 @@ function runConnectTests (name: string, factory: DaemonFactory, optionsA: SpawnO
|
|
|
28
41
|
)
|
|
29
42
|
})
|
|
30
43
|
|
|
31
|
-
it(`${optionsA.type} peer to ${optionsB.type} peer`, async function () {
|
|
44
|
+
it(`${optionsA.type} peer to ${optionsB.type} peer over ${name}`, async function () {
|
|
32
45
|
this.timeout(10 * 1000)
|
|
33
46
|
|
|
34
47
|
const identify1 = await daemonA.client.identify()
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* eslint-env mocha */
|
|
2
2
|
|
|
3
3
|
import { expect } from 'aegir/chai'
|
|
4
|
+
import delay from 'delay'
|
|
4
5
|
import { concat as uint8ArrayConcat } from 'uint8arrays/concat'
|
|
5
6
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
|
6
7
|
import type { Daemon, DaemonFactory, NodeType, SpawnOptions } from '../index.js'
|
|
@@ -31,27 +32,40 @@ function runContentFetchingTests (factory: DaemonFactory, optionsA: SpawnOptions
|
|
|
31
32
|
describe('dht.contentFetching', () => {
|
|
32
33
|
let daemonA: Daemon
|
|
33
34
|
let daemonB: Daemon
|
|
35
|
+
let daemonC: Daemon
|
|
36
|
+
let daemonD: Daemon
|
|
34
37
|
|
|
35
38
|
// Start Daemons
|
|
36
39
|
before(async function () {
|
|
37
40
|
this.timeout(20 * 1000)
|
|
38
41
|
|
|
39
42
|
daemonA = await factory.spawn(optionsA)
|
|
40
|
-
daemonB = await factory.spawn(
|
|
43
|
+
daemonB = await factory.spawn(optionsA)
|
|
44
|
+
daemonC = await factory.spawn(optionsB)
|
|
45
|
+
daemonD = await factory.spawn(optionsB)
|
|
41
46
|
|
|
42
|
-
|
|
43
|
-
const
|
|
47
|
+
const identifyA = await daemonA.client.identify()
|
|
48
|
+
const identifyB = await daemonB.client.identify()
|
|
49
|
+
const identifyC = await daemonC.client.identify()
|
|
50
|
+
const identifyD = await daemonD.client.identify()
|
|
44
51
|
|
|
45
|
-
|
|
52
|
+
// connect them A -> B -> C -> D
|
|
53
|
+
await daemonA.client.connect(identifyB.peerId, identifyB.addrs)
|
|
54
|
+
await daemonB.client.connect(identifyC.peerId, identifyC.addrs)
|
|
55
|
+
await daemonC.client.connect(identifyD.peerId, identifyD.addrs)
|
|
46
56
|
|
|
47
|
-
//
|
|
48
|
-
await
|
|
57
|
+
// wait for identify
|
|
58
|
+
await delay(1000)
|
|
59
|
+
|
|
60
|
+
// B can find D and C can find A, so their routing tables are not empty
|
|
61
|
+
await expect(daemonB.client.dht.findPeer(identifyD.peerId)).to.eventually.be.ok()
|
|
62
|
+
await expect(daemonC.client.dht.findPeer(identifyA.peerId)).to.eventually.be.ok()
|
|
49
63
|
})
|
|
50
64
|
|
|
51
65
|
// Stop daemons
|
|
52
66
|
after(async function () {
|
|
53
67
|
await Promise.all(
|
|
54
|
-
[daemonA, daemonB]
|
|
68
|
+
[daemonA, daemonB, daemonC, daemonD]
|
|
55
69
|
.filter(Boolean)
|
|
56
70
|
.map(async d => { await d.stop() })
|
|
57
71
|
)
|
|
@@ -60,9 +74,9 @@ function runContentFetchingTests (factory: DaemonFactory, optionsA: SpawnOptions
|
|
|
60
74
|
it(`${optionsA.type} peer to ${optionsB.type} peer`, async function () {
|
|
61
75
|
this.timeout(10 * 1000)
|
|
62
76
|
|
|
63
|
-
await
|
|
77
|
+
await daemonB.client.dht.put(record.key, record.value)
|
|
64
78
|
|
|
65
|
-
const data = await
|
|
79
|
+
const data = await daemonC.client.dht.get(record.key)
|
|
66
80
|
expect(data).to.equalBytes(record.value)
|
|
67
81
|
})
|
|
68
82
|
})
|
package/src/index.ts
CHANGED
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
* For an example, see the js-libp2p interop test runner.
|
|
43
43
|
*/
|
|
44
44
|
|
|
45
|
-
import { connectTests } from './connect.js'
|
|
45
|
+
import { connectTests } from './connect/index.js'
|
|
46
46
|
import { dhtTests } from './dht/index.js'
|
|
47
47
|
import { pubsubTests } from './pubsub/index.js'
|
|
48
48
|
import { relayTests } from './relay/index.js'
|
|
@@ -59,6 +59,7 @@ export type PeerIdType = 'rsa' | 'ed25519' | 'secp256k1'
|
|
|
59
59
|
export type PubSubRouter = 'gossipsub' | 'floodsub'
|
|
60
60
|
export type Muxer = 'mplex' | 'yamux'
|
|
61
61
|
export type Encryption = 'noise' | 'tls'
|
|
62
|
+
export type TransportType = 'tcp' | 'webtransport'
|
|
62
63
|
|
|
63
64
|
export interface SpawnOptions {
|
|
64
65
|
type: NodeType
|
|
@@ -72,6 +73,7 @@ export interface SpawnOptions {
|
|
|
72
73
|
// the node will not listen on any
|
|
73
74
|
// addresses if true
|
|
74
75
|
noListen?: boolean
|
|
76
|
+
transport?: TransportType
|
|
75
77
|
}
|
|
76
78
|
|
|
77
79
|
export interface DaemonFactory {
|
package/dist/src/connect.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/connect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAwB,aAAa,EAAE,MAAM,YAAY,CAAA;AAErE,wBAAgB,YAAY,CAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAE1D"}
|
package/dist/src/connect.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAGjD,MAAM,UAAU,YAAY,CAAE,OAAsB;IAClD,QAAQ,CAAC,SAAS,EAAE,eAAe,EAAE,OAAO,CAAC,CAAA;AAC/C,CAAC;AAED,SAAS,eAAe,CAAE,IAAY,EAAE,OAAsB,EAAE,QAAsB,EAAE,QAAsB;IAC5G,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;QAClB,IAAI,OAAe,CAAA;QACnB,IAAI,OAAe,CAAA;QAEnB,gBAAgB;QAChB,MAAM,CAAC,KAAK;YACV,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;YAEvB,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YACvC,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;QAEF,eAAe;QACf,KAAK,CAAC,KAAK;YACT,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,OAAO,EAAE,OAAO,CAAC;iBACf,MAAM,CAAC,OAAO,CAAC;iBACf,GAAG,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA,CAAC,CAAC,CAAC,CACtC,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,YAAY,QAAQ,CAAC,IAAI,OAAO,EAAE,KAAK;YACxD,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;YAEvB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;YACjD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;YAEjD,yBAAyB;YACzB,MAAM,wBAAwB,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;YACjE,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;YAEpD,MAAM,wBAAwB,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;YACjE,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;YAEpD,gBAAgB;YAChB,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;YAE/D,+CAA+C;YAC/C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;YAEvD,yBAAyB;YACzB,MAAM,uBAAuB,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;YAChE,MAAM,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAA;YACpE,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;YAEnF,MAAM,uBAAuB,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;YAChE,MAAM,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAA;YACpE,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QACrF,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
|