@libp2p/interface-compliance-tests 2.0.2 → 3.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 +23 -11
- package/dist/src/{utils/is-valid-tick.d.ts → is-valid-tick.d.ts} +0 -0
- package/dist/src/is-valid-tick.d.ts.map +1 -0
- package/dist/src/{utils/is-valid-tick.js → is-valid-tick.js} +0 -0
- package/dist/src/is-valid-tick.js.map +1 -0
- package/dist/src/{utils/peers.d.ts → peers.d.ts} +0 -0
- package/dist/src/peers.d.ts.map +1 -0
- package/dist/src/{utils/peers.js → peers.js} +0 -0
- package/dist/src/peers.js.map +1 -0
- package/package.json +11 -89
- package/src/{utils/is-valid-tick.ts → is-valid-tick.ts} +0 -0
- package/src/{utils/peers.ts → peers.ts} +0 -0
- package/dist/src/connection/connection.d.ts +0 -5
- package/dist/src/connection/connection.d.ts.map +0 -1
- package/dist/src/connection/connection.js +0 -146
- package/dist/src/connection/connection.js.map +0 -1
- package/dist/src/connection/index.d.ts +0 -5
- package/dist/src/connection/index.d.ts.map +0 -1
- package/dist/src/connection/index.js +0 -5
- package/dist/src/connection/index.js.map +0 -1
- package/dist/src/connection-encrypter/index.d.ts +0 -5
- package/dist/src/connection-encrypter/index.d.ts.map +0 -1
- package/dist/src/connection-encrypter/index.js +0 -77
- package/dist/src/connection-encrypter/index.js.map +0 -1
- package/dist/src/connection-encrypter/utils/index.d.ts +0 -3
- package/dist/src/connection-encrypter/utils/index.d.ts.map +0 -1
- package/dist/src/connection-encrypter/utils/index.js +0 -18
- package/dist/src/connection-encrypter/utils/index.js.map +0 -1
- package/dist/src/mocks/connection-encrypter.d.ts +0 -3
- package/dist/src/mocks/connection-encrypter.d.ts.map +0 -1
- package/dist/src/mocks/connection-encrypter.js +0 -93
- package/dist/src/mocks/connection-encrypter.js.map +0 -1
- package/dist/src/mocks/connection-gater.d.ts +0 -12
- package/dist/src/mocks/connection-gater.d.ts.map +0 -1
- package/dist/src/mocks/connection-gater.js +0 -14
- package/dist/src/mocks/connection-gater.js.map +0 -1
- package/dist/src/mocks/connection-manager.d.ts +0 -28
- package/dist/src/mocks/connection-manager.d.ts.map +0 -1
- package/dist/src/mocks/connection-manager.js +0 -107
- package/dist/src/mocks/connection-manager.js.map +0 -1
- package/dist/src/mocks/connection.d.ts +0 -18
- package/dist/src/mocks/connection.d.ts.map +0 -1
- package/dist/src/mocks/connection.js +0 -138
- package/dist/src/mocks/connection.js.map +0 -1
- package/dist/src/mocks/duplex.d.ts +0 -3
- package/dist/src/mocks/duplex.d.ts.map +0 -1
- package/dist/src/mocks/duplex.js +0 -7
- package/dist/src/mocks/duplex.js.map +0 -1
- package/dist/src/mocks/index.d.ts +0 -10
- package/dist/src/mocks/index.d.ts.map +0 -1
- package/dist/src/mocks/index.js +0 -9
- package/dist/src/mocks/index.js.map +0 -1
- package/dist/src/mocks/multiaddr-connection.d.ts +0 -17
- package/dist/src/mocks/multiaddr-connection.d.ts.map +0 -1
- package/dist/src/mocks/multiaddr-connection.js +0 -51
- package/dist/src/mocks/multiaddr-connection.js.map +0 -1
- package/dist/src/mocks/muxer.d.ts +0 -9
- package/dist/src/mocks/muxer.d.ts.map +0 -1
- package/dist/src/mocks/muxer.js +0 -302
- package/dist/src/mocks/muxer.js.map +0 -1
- package/dist/src/mocks/registrar.d.ts +0 -18
- package/dist/src/mocks/registrar.d.ts.map +0 -1
- package/dist/src/mocks/registrar.js +0 -73
- package/dist/src/mocks/registrar.js.map +0 -1
- package/dist/src/mocks/upgrader.d.ts +0 -15
- package/dist/src/mocks/upgrader.d.ts.map +0 -1
- package/dist/src/mocks/upgrader.js +0 -33
- package/dist/src/mocks/upgrader.js.map +0 -1
- package/dist/src/peer-discovery/index.d.ts +0 -6
- package/dist/src/peer-discovery/index.d.ts.map +0 -1
- package/dist/src/peer-discovery/index.js +0 -64
- package/dist/src/peer-discovery/index.js.map +0 -1
- package/dist/src/pubsub/api.d.ts +0 -6
- package/dist/src/pubsub/api.d.ts.map +0 -1
- package/dist/src/pubsub/api.js +0 -87
- package/dist/src/pubsub/api.js.map +0 -1
- package/dist/src/pubsub/connection-handlers.d.ts +0 -6
- package/dist/src/pubsub/connection-handlers.d.ts.map +0 -1
- package/dist/src/pubsub/connection-handlers.js +0 -329
- package/dist/src/pubsub/connection-handlers.js.map +0 -1
- package/dist/src/pubsub/emit-self.d.ts +0 -6
- package/dist/src/pubsub/emit-self.d.ts.map +0 -1
- package/dist/src/pubsub/emit-self.js +0 -86
- package/dist/src/pubsub/emit-self.js.map +0 -1
- package/dist/src/pubsub/index.d.ts +0 -10
- package/dist/src/pubsub/index.d.ts.map +0 -1
- package/dist/src/pubsub/index.js +0 -17
- package/dist/src/pubsub/index.js.map +0 -1
- package/dist/src/pubsub/messages.d.ts +0 -6
- package/dist/src/pubsub/messages.d.ts.map +0 -1
- package/dist/src/pubsub/messages.js +0 -46
- package/dist/src/pubsub/messages.js.map +0 -1
- package/dist/src/pubsub/multiple-nodes.d.ts +0 -6
- package/dist/src/pubsub/multiple-nodes.d.ts.map +0 -1
- package/dist/src/pubsub/multiple-nodes.js +0 -350
- package/dist/src/pubsub/multiple-nodes.js.map +0 -1
- package/dist/src/pubsub/two-nodes.d.ts +0 -6
- package/dist/src/pubsub/two-nodes.d.ts.map +0 -1
- package/dist/src/pubsub/two-nodes.js +0 -185
- package/dist/src/pubsub/two-nodes.js.map +0 -1
- package/dist/src/pubsub/utils.d.ts +0 -6
- package/dist/src/pubsub/utils.d.ts.map +0 -1
- package/dist/src/pubsub/utils.js +0 -22
- package/dist/src/pubsub/utils.js.map +0 -1
- package/dist/src/record/index.d.ts +0 -5
- package/dist/src/record/index.d.ts.map +0 -1
- package/dist/src/record/index.js +0 -25
- package/dist/src/record/index.js.map +0 -1
- package/dist/src/stream-muxer/base-test.d.ts +0 -5
- package/dist/src/stream-muxer/base-test.d.ts.map +0 -1
- package/dist/src/stream-muxer/base-test.js +0 -147
- package/dist/src/stream-muxer/base-test.js.map +0 -1
- package/dist/src/stream-muxer/close-test.d.ts +0 -5
- package/dist/src/stream-muxer/close-test.d.ts.map +0 -1
- package/dist/src/stream-muxer/close-test.js +0 -180
- package/dist/src/stream-muxer/close-test.js.map +0 -1
- package/dist/src/stream-muxer/index.d.ts +0 -5
- package/dist/src/stream-muxer/index.d.ts.map +0 -1
- package/dist/src/stream-muxer/index.js +0 -13
- package/dist/src/stream-muxer/index.js.map +0 -1
- package/dist/src/stream-muxer/mega-stress-test.d.ts +0 -5
- package/dist/src/stream-muxer/mega-stress-test.d.ts.map +0 -1
- package/dist/src/stream-muxer/mega-stress-test.js +0 -12
- package/dist/src/stream-muxer/mega-stress-test.js.map +0 -1
- package/dist/src/stream-muxer/spawner.d.ts +0 -4
- package/dist/src/stream-muxer/spawner.d.ts.map +0 -1
- package/dist/src/stream-muxer/spawner.js +0 -32
- package/dist/src/stream-muxer/spawner.js.map +0 -1
- package/dist/src/stream-muxer/stress-test.d.ts +0 -5
- package/dist/src/stream-muxer/stress-test.d.ts.map +0 -1
- package/dist/src/stream-muxer/stress-test.js +0 -26
- package/dist/src/stream-muxer/stress-test.js.map +0 -1
- package/dist/src/topology/topology.d.ts +0 -5
- package/dist/src/topology/topology.d.ts.map +0 -1
- package/dist/src/topology/topology.js +0 -20
- package/dist/src/topology/topology.js.map +0 -1
- package/dist/src/transport/dial-test.d.ts +0 -5
- package/dist/src/transport/dial-test.d.ts.map +0 -1
- package/dist/src/transport/dial-test.js +0 -97
- package/dist/src/transport/dial-test.js.map +0 -1
- package/dist/src/transport/filter-test.d.ts +0 -5
- package/dist/src/transport/filter-test.d.ts.map +0 -1
- package/dist/src/transport/filter-test.js +0 -18
- package/dist/src/transport/filter-test.js.map +0 -1
- package/dist/src/transport/index.d.ts +0 -15
- package/dist/src/transport/index.d.ts.map +0 -1
- package/dist/src/transport/index.js +0 -11
- package/dist/src/transport/index.js.map +0 -1
- package/dist/src/transport/listen-test.d.ts +0 -5
- package/dist/src/transport/listen-test.d.ts.map +0 -1
- package/dist/src/transport/listen-test.js +0 -152
- package/dist/src/transport/listen-test.js.map +0 -1
- package/dist/src/utils/is-valid-tick.d.ts.map +0 -1
- package/dist/src/utils/is-valid-tick.js.map +0 -1
- package/dist/src/utils/peers.d.ts.map +0 -1
- package/dist/src/utils/peers.js.map +0 -1
- package/src/connection/README.md +0 -256
- package/src/connection/connection.ts +0 -176
- package/src/connection/index.ts +0 -7
- package/src/connection-encrypter/index.ts +0 -104
- package/src/connection-encrypter/utils/index.ts +0 -23
- package/src/mocks/connection-encrypter.ts +0 -110
- package/src/mocks/connection-gater.ts +0 -14
- package/src/mocks/connection-manager.ts +0 -141
- package/src/mocks/connection.ts +0 -205
- package/src/mocks/duplex.ts +0 -8
- package/src/mocks/index.ts +0 -10
- package/src/mocks/multiaddr-connection.ts +0 -66
- package/src/mocks/muxer.ts +0 -424
- package/src/mocks/registrar.ts +0 -96
- package/src/mocks/upgrader.ts +0 -46
- package/src/peer-discovery/index.ts +0 -89
- package/src/pubsub/api.ts +0 -115
- package/src/pubsub/connection-handlers.ts +0 -413
- package/src/pubsub/emit-self.ts +0 -105
- package/src/pubsub/index.ts +0 -25
- package/src/pubsub/messages.ts +0 -58
- package/src/pubsub/multiple-nodes.ts +0 -429
- package/src/pubsub/two-nodes.ts +0 -235
- package/src/pubsub/utils.ts +0 -28
- package/src/record/index.ts +0 -32
- package/src/stream-muxer/base-test.ts +0 -190
- package/src/stream-muxer/close-test.ts +0 -227
- package/src/stream-muxer/index.ts +0 -15
- package/src/stream-muxer/mega-stress-test.ts +0 -15
- package/src/stream-muxer/spawner.ts +0 -50
- package/src/stream-muxer/stress-test.ts +0 -29
- package/src/topology/topology.ts +0 -25
- package/src/transport/dial-test.ts +0 -123
- package/src/transport/filter-test.ts +0 -25
- package/src/transport/index.ts +0 -25
- package/src/transport/listen-test.ts +0 -191
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { Components } from '@libp2p/interfaces/components';
|
|
2
|
-
import type { PubSub } from '@libp2p/interfaces/pubsub';
|
|
3
|
-
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
4
|
-
export declare function waitForSubscriptionUpdate(a: PubSub, b: PeerId): Promise<void>;
|
|
5
|
-
export declare function createComponents(): Promise<Components>;
|
|
6
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/pubsub/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC1D,OAAO,KAAK,EAAE,MAAM,EAA0B,MAAM,2BAA2B,CAAA;AAC/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAKxD,wBAAsB,yBAAyB,CAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,iBAMpE;AAED,wBAAsB,gBAAgB,IAAK,OAAO,CAAC,UAAU,CAAC,CAU7D"}
|
package/dist/src/pubsub/utils.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { pEvent } from 'p-event';
|
|
2
|
-
import pWaitFor from 'p-wait-for';
|
|
3
|
-
import { Components } from '@libp2p/interfaces/components';
|
|
4
|
-
import { createEd25519PeerId } from '@libp2p/peer-id-factory';
|
|
5
|
-
import { mockConnectionManager, mockRegistrar } from '../mocks/index.js';
|
|
6
|
-
import { mockNetwork } from '../mocks/connection-manager.js';
|
|
7
|
-
export async function waitForSubscriptionUpdate(a, b) {
|
|
8
|
-
await pWaitFor(async () => {
|
|
9
|
-
const event = await pEvent(a, 'subscription-change');
|
|
10
|
-
return event.detail.peerId.equals(b);
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
export async function createComponents() {
|
|
14
|
-
const components = new Components({
|
|
15
|
-
peerId: await createEd25519PeerId(),
|
|
16
|
-
registrar: mockRegistrar(),
|
|
17
|
-
connectionManager: mockConnectionManager()
|
|
18
|
-
});
|
|
19
|
-
mockNetwork.addNode(components);
|
|
20
|
-
return components;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/pubsub/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAG1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAE5D,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAE,CAAS,EAAE,CAAS;IACnE,MAAM,QAAQ,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,KAAK,GAAG,MAAM,MAAM,CAA6D,CAAC,EAAE,qBAAqB,CAAC,CAAA;QAEhH,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;QAChC,MAAM,EAAE,MAAM,mBAAmB,EAAE;QACnC,SAAS,EAAE,aAAa,EAAE;QAC1B,iBAAiB,EAAE,qBAAqB,EAAE;KAC3C,CAAC,CAAA;IAEF,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAE/B,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/record/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;+BAEjC,UAAU,MAAM,CAAC;AAAvC,wBA2BC"}
|
package/dist/src/record/index.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { expect } from 'aegir/chai';
|
|
2
|
-
export default (test) => {
|
|
3
|
-
describe('record', () => {
|
|
4
|
-
let record;
|
|
5
|
-
beforeEach(async () => {
|
|
6
|
-
record = await test.setup();
|
|
7
|
-
});
|
|
8
|
-
afterEach(async () => {
|
|
9
|
-
await test.teardown();
|
|
10
|
-
});
|
|
11
|
-
it('has domain and codec', () => {
|
|
12
|
-
expect(record.domain).to.exist();
|
|
13
|
-
expect(record.codec).to.exist();
|
|
14
|
-
});
|
|
15
|
-
it('is able to marshal', () => {
|
|
16
|
-
const rawData = record.marshal();
|
|
17
|
-
expect(rawData).to.be.an.instanceof(Uint8Array);
|
|
18
|
-
});
|
|
19
|
-
it('is able to compare two records', () => {
|
|
20
|
-
const equals = record.equals(record);
|
|
21
|
-
expect(equals).to.eql(true);
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/record/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAInC,eAAe,CAAC,IAAuB,EAAE,EAAE;IACzC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,IAAI,MAAc,CAAA;QAElB,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QAC7B,CAAC,CAAC,CAAA;QAEF,SAAS,CAAC,KAAK,IAAI,EAAE;YACnB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QACvB,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;YAChC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;QACjC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;YAChC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YACpC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base-test.d.ts","sourceRoot":"","sources":["../../../src/stream-muxer/base-test.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;iCAQjD,UAAU,kBAAkB,CAAC;AAArD,wBAwKC"}
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { expect } from 'aegir/chai';
|
|
2
|
-
import { duplexPair } from 'it-pair/duplex';
|
|
3
|
-
import { pipe } from 'it-pipe';
|
|
4
|
-
import drain from 'it-drain';
|
|
5
|
-
import map from 'it-map';
|
|
6
|
-
import all from 'it-all';
|
|
7
|
-
import defer from 'p-defer';
|
|
8
|
-
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
9
|
-
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
10
|
-
import { isValidTick } from '../utils/is-valid-tick.js';
|
|
11
|
-
import { Components } from '@libp2p/interfaces/components';
|
|
12
|
-
async function drainAndClose(stream) {
|
|
13
|
-
return await pipe([], stream, drain);
|
|
14
|
-
}
|
|
15
|
-
export default (common) => {
|
|
16
|
-
describe('base', () => {
|
|
17
|
-
it('Open a stream from the dialer', async () => {
|
|
18
|
-
const p = duplexPair();
|
|
19
|
-
const dialerFactory = await common.setup();
|
|
20
|
-
const dialer = dialerFactory.createStreamMuxer(new Components());
|
|
21
|
-
const onStreamPromise = defer();
|
|
22
|
-
const onStreamEndPromise = defer();
|
|
23
|
-
const listenerFactory = await common.setup();
|
|
24
|
-
const listener = listenerFactory.createStreamMuxer(new Components(), {
|
|
25
|
-
onIncomingStream: (stream) => {
|
|
26
|
-
onStreamPromise.resolve(stream);
|
|
27
|
-
},
|
|
28
|
-
onStreamEnd: (stream) => {
|
|
29
|
-
onStreamEndPromise.resolve(stream);
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
void pipe(p[0], dialer, p[0]);
|
|
33
|
-
void pipe(p[1], listener, p[1]);
|
|
34
|
-
const conn = dialer.newStream();
|
|
35
|
-
expect(dialer.streams).to.include(conn);
|
|
36
|
-
expect(isValidTick(conn.timeline.open)).to.equal(true);
|
|
37
|
-
void drainAndClose(conn);
|
|
38
|
-
const stream = await onStreamPromise.promise;
|
|
39
|
-
expect(isValidTick(stream.timeline.open)).to.equal(true);
|
|
40
|
-
// Make sure the stream is being tracked
|
|
41
|
-
expect(listener.streams).to.include(stream);
|
|
42
|
-
void drainAndClose(stream);
|
|
43
|
-
// Make sure stream is closed properly
|
|
44
|
-
const endedStream = await onStreamEndPromise.promise;
|
|
45
|
-
expect(listener.streams).to.not.include(endedStream);
|
|
46
|
-
if (endedStream.timeline.close == null) {
|
|
47
|
-
throw new Error('timeline had no close time');
|
|
48
|
-
}
|
|
49
|
-
// Make sure the stream is removed from tracking
|
|
50
|
-
expect(isValidTick(endedStream.timeline.close)).to.equal(true);
|
|
51
|
-
await drainAndClose(dialer);
|
|
52
|
-
await drainAndClose(listener);
|
|
53
|
-
// ensure we have no streams left
|
|
54
|
-
expect(dialer.streams).to.have.length(0);
|
|
55
|
-
expect(listener.streams).to.have.length(0);
|
|
56
|
-
});
|
|
57
|
-
it('Open a stream from the listener', async () => {
|
|
58
|
-
const p = duplexPair();
|
|
59
|
-
const onStreamPromise = defer();
|
|
60
|
-
const dialerFactory = await common.setup();
|
|
61
|
-
const dialer = dialerFactory.createStreamMuxer(new Components(), {
|
|
62
|
-
onIncomingStream: (stream) => {
|
|
63
|
-
onStreamPromise.resolve(stream);
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
const listenerFactory = await common.setup();
|
|
67
|
-
const listener = listenerFactory.createStreamMuxer(new Components());
|
|
68
|
-
void pipe(p[0], dialer, p[0]);
|
|
69
|
-
void pipe(p[1], listener, p[1]);
|
|
70
|
-
const conn = listener.newStream();
|
|
71
|
-
void drainAndClose(conn);
|
|
72
|
-
const stream = await onStreamPromise.promise;
|
|
73
|
-
expect(isValidTick(stream.timeline.open)).to.equal(true);
|
|
74
|
-
expect(listener.streams).to.include(conn);
|
|
75
|
-
expect(isValidTick(conn.timeline.open)).to.equal(true);
|
|
76
|
-
void drainAndClose(stream);
|
|
77
|
-
await drainAndClose(dialer);
|
|
78
|
-
await drainAndClose(listener);
|
|
79
|
-
});
|
|
80
|
-
it('Open a stream on both sides', async () => {
|
|
81
|
-
const p = duplexPair();
|
|
82
|
-
const onDialerStreamPromise = defer();
|
|
83
|
-
const onListenerStreamPromise = defer();
|
|
84
|
-
const dialerFactory = await common.setup();
|
|
85
|
-
const dialer = dialerFactory.createStreamMuxer(new Components(), {
|
|
86
|
-
onIncomingStream: (stream) => {
|
|
87
|
-
onDialerStreamPromise.resolve(stream);
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
const listenerFactory = await common.setup();
|
|
91
|
-
const listener = listenerFactory.createStreamMuxer(new Components(), {
|
|
92
|
-
onIncomingStream: (stream) => {
|
|
93
|
-
onListenerStreamPromise.resolve(stream);
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
void pipe(p[0], dialer, p[0]);
|
|
97
|
-
void pipe(p[1], listener, p[1]);
|
|
98
|
-
const dialerInitiatorStream = dialer.newStream();
|
|
99
|
-
const listenerInitiatorStream = listener.newStream();
|
|
100
|
-
await Promise.all([
|
|
101
|
-
drainAndClose(dialerInitiatorStream),
|
|
102
|
-
drainAndClose(listenerInitiatorStream),
|
|
103
|
-
onDialerStreamPromise.promise.then(async (stream) => await drainAndClose(stream)),
|
|
104
|
-
onListenerStreamPromise.promise.then(async (stream) => await drainAndClose(stream))
|
|
105
|
-
]);
|
|
106
|
-
await Promise.all([
|
|
107
|
-
drainAndClose(dialer),
|
|
108
|
-
drainAndClose(listener)
|
|
109
|
-
]);
|
|
110
|
-
});
|
|
111
|
-
it('Open a stream on one side, write, open a stream on the other side', async () => {
|
|
112
|
-
const toString = (source) => map(source, (u) => uint8ArrayToString(u));
|
|
113
|
-
const p = duplexPair();
|
|
114
|
-
const onDialerStreamPromise = defer();
|
|
115
|
-
const onListenerStreamPromise = defer();
|
|
116
|
-
const dialerFactory = await common.setup();
|
|
117
|
-
const dialer = dialerFactory.createStreamMuxer(new Components(), {
|
|
118
|
-
onIncomingStream: (stream) => {
|
|
119
|
-
onDialerStreamPromise.resolve(stream);
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
const listenerFactory = await common.setup();
|
|
123
|
-
const listener = listenerFactory.createStreamMuxer(new Components(), {
|
|
124
|
-
onIncomingStream: (stream) => {
|
|
125
|
-
onListenerStreamPromise.resolve(stream);
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
void pipe(p[0], dialer, p[0]);
|
|
129
|
-
void pipe(p[1], listener, p[1]);
|
|
130
|
-
const dialerConn = dialer.newStream();
|
|
131
|
-
const listenerConn = listener.newStream();
|
|
132
|
-
void pipe([uint8ArrayFromString('hey')], dialerConn);
|
|
133
|
-
void pipe([uint8ArrayFromString('hello')], listenerConn);
|
|
134
|
-
const [dialerStream, listenerStream] = await Promise.all([
|
|
135
|
-
onDialerStreamPromise.promise,
|
|
136
|
-
onListenerStreamPromise.promise
|
|
137
|
-
]);
|
|
138
|
-
const [listenerChunks, dialerChunks] = await Promise.all([
|
|
139
|
-
pipe(listenerStream, toString, async (source) => await all(source)),
|
|
140
|
-
pipe(dialerStream, toString, async (source) => await all(source))
|
|
141
|
-
]);
|
|
142
|
-
expect(listenerChunks).to.be.eql(['hey']);
|
|
143
|
-
expect(dialerChunks).to.be.eql(['hello']);
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
};
|
|
147
|
-
//# sourceMappingURL=base-test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base-test.js","sourceRoot":"","sources":["../../../src/stream-muxer/base-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"close-test.d.ts","sourceRoot":"","sources":["../../../src/stream-muxer/close-test.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;iCAkBjD,UAAU,kBAAkB,CAAC;AAArD,wBAuMC"}
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
/* eslint max-nested-callbacks: ["error", 8] */
|
|
2
|
-
import { pipe } from 'it-pipe';
|
|
3
|
-
import { duplexPair } from 'it-pair/duplex';
|
|
4
|
-
import { abortableSource } from 'abortable-iterator';
|
|
5
|
-
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
6
|
-
import drain from 'it-drain';
|
|
7
|
-
import { expect } from 'aegir/chai';
|
|
8
|
-
import delay from 'delay';
|
|
9
|
-
import { Components } from '@libp2p/interfaces/components';
|
|
10
|
-
import pDefer from 'p-defer';
|
|
11
|
-
import all from 'it-all';
|
|
12
|
-
function randomBuffer() {
|
|
13
|
-
return uint8ArrayFromString(Math.random().toString());
|
|
14
|
-
}
|
|
15
|
-
const infiniteRandom = {
|
|
16
|
-
[Symbol.asyncIterator]: async function* () {
|
|
17
|
-
while (true) {
|
|
18
|
-
yield randomBuffer();
|
|
19
|
-
await delay(50);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
export default (common) => {
|
|
24
|
-
describe('close', () => {
|
|
25
|
-
it('closing underlying socket closes streams', async () => {
|
|
26
|
-
let openedStreams = 0;
|
|
27
|
-
const expectedStreams = 5;
|
|
28
|
-
const dialerFactory = await common.setup();
|
|
29
|
-
const dialer = dialerFactory.createStreamMuxer(new Components());
|
|
30
|
-
// Listener is echo server :)
|
|
31
|
-
const listenerFactory = await common.setup();
|
|
32
|
-
const listener = listenerFactory.createStreamMuxer(new Components(), {
|
|
33
|
-
onIncomingStream: (stream) => {
|
|
34
|
-
openedStreams++;
|
|
35
|
-
void pipe(stream, stream);
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
const p = duplexPair();
|
|
39
|
-
void pipe(p[0], dialer, p[0]);
|
|
40
|
-
void pipe(p[1], listener, p[1]);
|
|
41
|
-
const streams = Array(expectedStreams).fill(0).map(() => dialer.newStream());
|
|
42
|
-
void Promise.all(streams.map(async (stream) => {
|
|
43
|
-
return await pipe(infiniteRandom, stream, drain);
|
|
44
|
-
}));
|
|
45
|
-
expect(dialer.streams).to.have.lengthOf(expectedStreams);
|
|
46
|
-
// Pause, and then send some data and close the dialer
|
|
47
|
-
await delay(50);
|
|
48
|
-
await pipe([randomBuffer()], dialer, drain);
|
|
49
|
-
expect(openedStreams).to.have.equal(expectedStreams);
|
|
50
|
-
expect(dialer.streams).to.have.lengthOf(0);
|
|
51
|
-
});
|
|
52
|
-
it('closing one of the muxed streams doesn\'t close others', async () => {
|
|
53
|
-
const p = duplexPair();
|
|
54
|
-
const dialerFactory = await common.setup();
|
|
55
|
-
const dialer = dialerFactory.createStreamMuxer(new Components());
|
|
56
|
-
// Listener is echo server :)
|
|
57
|
-
const listenerFactory = await common.setup();
|
|
58
|
-
const listener = listenerFactory.createStreamMuxer(new Components(), {
|
|
59
|
-
onIncomingStream: (stream) => {
|
|
60
|
-
void pipe(stream, stream);
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
void pipe(p[0], dialer, p[0]);
|
|
64
|
-
void pipe(p[1], listener, p[1]);
|
|
65
|
-
const stream = dialer.newStream();
|
|
66
|
-
const streams = Array.from(Array(5), () => dialer.newStream());
|
|
67
|
-
let closed = false;
|
|
68
|
-
const controllers = [];
|
|
69
|
-
const streamResults = streams.map(async (stream) => {
|
|
70
|
-
const controller = new AbortController();
|
|
71
|
-
controllers.push(controller);
|
|
72
|
-
try {
|
|
73
|
-
const abortableRand = abortableSource(infiniteRandom, controller.signal, { abortCode: 'ERR_TEST_ABORT' });
|
|
74
|
-
await pipe(abortableRand, stream, drain);
|
|
75
|
-
}
|
|
76
|
-
catch (err) {
|
|
77
|
-
if (err.code !== 'ERR_TEST_ABORT')
|
|
78
|
-
throw err;
|
|
79
|
-
}
|
|
80
|
-
if (!closed)
|
|
81
|
-
throw new Error('stream should not have ended yet!');
|
|
82
|
-
});
|
|
83
|
-
// Pause, and then send some data and close the first stream
|
|
84
|
-
await delay(50);
|
|
85
|
-
await pipe([randomBuffer()], stream, drain);
|
|
86
|
-
closed = true;
|
|
87
|
-
// Abort all the other streams later
|
|
88
|
-
await delay(50);
|
|
89
|
-
controllers.forEach(c => c.abort());
|
|
90
|
-
// These should now all resolve without error
|
|
91
|
-
await Promise.all(streamResults);
|
|
92
|
-
});
|
|
93
|
-
it('can close a stream for writing', async () => {
|
|
94
|
-
const deferred = pDefer();
|
|
95
|
-
const p = duplexPair();
|
|
96
|
-
const dialerFactory = await common.setup();
|
|
97
|
-
const dialer = dialerFactory.createStreamMuxer(new Components());
|
|
98
|
-
const data = [randomBuffer(), randomBuffer()];
|
|
99
|
-
const listenerFactory = await common.setup();
|
|
100
|
-
const listener = listenerFactory.createStreamMuxer(new Components(), {
|
|
101
|
-
onIncomingStream: (stream) => {
|
|
102
|
-
void Promise.resolve().then(async () => {
|
|
103
|
-
// Immediate close for write
|
|
104
|
-
await stream.closeWrite();
|
|
105
|
-
const results = await pipe(stream, async (source) => {
|
|
106
|
-
const data = [];
|
|
107
|
-
for await (const chunk of source) {
|
|
108
|
-
data.push(chunk.slice());
|
|
109
|
-
}
|
|
110
|
-
return data;
|
|
111
|
-
});
|
|
112
|
-
expect(results).to.eql(data);
|
|
113
|
-
try {
|
|
114
|
-
await stream.sink([randomBuffer()]);
|
|
115
|
-
}
|
|
116
|
-
catch (err) {
|
|
117
|
-
deferred.resolve(err);
|
|
118
|
-
}
|
|
119
|
-
deferred.reject(new Error('should not support writing to closed writer'));
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
void pipe(p[0], dialer, p[0]);
|
|
124
|
-
void pipe(p[1], listener, p[1]);
|
|
125
|
-
const stream = dialer.newStream();
|
|
126
|
-
await stream.sink(data);
|
|
127
|
-
const err = await deferred.promise;
|
|
128
|
-
expect(err).to.have.property('message').that.matches(/stream closed for writing/);
|
|
129
|
-
});
|
|
130
|
-
it('can close a stream for reading', async () => {
|
|
131
|
-
const deferred = pDefer();
|
|
132
|
-
const p = duplexPair();
|
|
133
|
-
const dialerFactory = await common.setup();
|
|
134
|
-
const dialer = dialerFactory.createStreamMuxer(new Components());
|
|
135
|
-
const data = [randomBuffer(), randomBuffer()];
|
|
136
|
-
const listenerFactory = await common.setup();
|
|
137
|
-
const listener = listenerFactory.createStreamMuxer(new Components(), {
|
|
138
|
-
onIncomingStream: (stream) => {
|
|
139
|
-
void all(stream.source).then(deferred.resolve, deferred.reject);
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
void pipe(p[0], dialer, p[0]);
|
|
143
|
-
void pipe(p[1], listener, p[1]);
|
|
144
|
-
const stream = dialer.newStream();
|
|
145
|
-
await stream.closeRead();
|
|
146
|
-
// Source should be done
|
|
147
|
-
void Promise.resolve().then(async () => {
|
|
148
|
-
// @ts-expect-error next is part of the iterable protocol
|
|
149
|
-
expect(await stream.source.next()).to.have.property('done', true);
|
|
150
|
-
await stream.sink(data);
|
|
151
|
-
});
|
|
152
|
-
const results = await deferred.promise;
|
|
153
|
-
expect(results).to.eql(data);
|
|
154
|
-
});
|
|
155
|
-
it('calls onStreamEnd for closed streams not previously written', async () => {
|
|
156
|
-
const deferred = pDefer();
|
|
157
|
-
const onStreamEnd = () => deferred.resolve();
|
|
158
|
-
const dialerFactory = await common.setup();
|
|
159
|
-
const dialer = dialerFactory.createStreamMuxer(new Components(), {
|
|
160
|
-
onStreamEnd
|
|
161
|
-
});
|
|
162
|
-
const stream = await dialer.newStream();
|
|
163
|
-
await stream.close();
|
|
164
|
-
await deferred.promise;
|
|
165
|
-
});
|
|
166
|
-
it('calls onStreamEnd for read and write closed streams not previously written', async () => {
|
|
167
|
-
const deferred = pDefer();
|
|
168
|
-
const onStreamEnd = () => deferred.resolve();
|
|
169
|
-
const dialerFactory = await common.setup();
|
|
170
|
-
const dialer = dialerFactory.createStreamMuxer(new Components(), {
|
|
171
|
-
onStreamEnd
|
|
172
|
-
});
|
|
173
|
-
const stream = await dialer.newStream();
|
|
174
|
-
await stream.closeWrite();
|
|
175
|
-
await stream.closeRead();
|
|
176
|
-
await deferred.promise;
|
|
177
|
-
});
|
|
178
|
-
});
|
|
179
|
-
};
|
|
180
|
-
//# sourceMappingURL=close-test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"close-test.js","sourceRoot":"","sources":["../../../src/stream-muxer/close-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/stream-muxer/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;iCAEjD,UAAU,kBAAkB,CAAC;AAArD,wBAOC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import baseTest from './base-test.js';
|
|
2
|
-
import closeTest from './close-test.js';
|
|
3
|
-
import stressTest from './stress-test.js';
|
|
4
|
-
import megaStressTest from './mega-stress-test.js';
|
|
5
|
-
export default (common) => {
|
|
6
|
-
describe('interface-stream-muxer', () => {
|
|
7
|
-
baseTest(common);
|
|
8
|
-
closeTest(common);
|
|
9
|
-
stressTest(common);
|
|
10
|
-
megaStressTest(common);
|
|
11
|
-
});
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/stream-muxer/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,SAAS,MAAM,iBAAiB,CAAA;AACvC,OAAO,UAAU,MAAM,kBAAkB,CAAA;AACzC,OAAO,cAAc,MAAM,uBAAuB,CAAA;AAIlD,eAAe,CAAC,MAAqC,EAAE,EAAE;IACvD,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAChB,SAAS,CAAC,MAAM,CAAC,CAAA;QACjB,UAAU,CAAC,MAAM,CAAC,CAAA;QAClB,cAAc,CAAC,MAAM,CAAC,CAAA;IACxB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { TestSetup } from '../index.js';
|
|
2
|
-
import type { StreamMuxerFactory } from '@libp2p/interfaces/stream-muxer';
|
|
3
|
-
declare const _default: (common: TestSetup<StreamMuxerFactory>) => void;
|
|
4
|
-
export default _default;
|
|
5
|
-
//# sourceMappingURL=mega-stress-test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mega-stress-test.d.ts","sourceRoot":"","sources":["../../../src/stream-muxer/mega-stress-test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAe,kBAAkB,EAAmB,MAAM,iCAAiC,CAAA;iCAG/E,UAAU,kBAAkB,CAAC;AAArD,wBASC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import spawn from './spawner.js';
|
|
2
|
-
import { Components } from '@libp2p/interfaces/components';
|
|
3
|
-
export default (common) => {
|
|
4
|
-
const createMuxer = async (init) => {
|
|
5
|
-
const factory = await common.setup();
|
|
6
|
-
return factory.createStreamMuxer(new Components(), init);
|
|
7
|
-
};
|
|
8
|
-
describe.skip('mega stress test', function () {
|
|
9
|
-
it('10,000 streams with 10,000 msg', async () => await spawn(createMuxer, 10000, 10000, 5000));
|
|
10
|
-
});
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=mega-stress-test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mega-stress-test.js","sourceRoot":"","sources":["../../../src/stream-muxer/mega-stress-test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAA;AAGhC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAE1D,eAAe,CAAC,MAAqC,EAAE,EAAE;IACvD,MAAM,WAAW,GAAG,KAAK,EAAE,IAAsB,EAAwB,EAAE;QACzE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QACpC,OAAO,OAAO,CAAC,iBAAiB,CAAC,IAAI,UAAU,EAAE,EAAE,IAAI,CAAC,CAAA;IAC1D,CAAC,CAAA;IAED,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE;QAChC,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;IAChG,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { StreamMuxer, StreamMuxerInit } from '@libp2p/interfaces/stream-muxer';
|
|
2
|
-
declare const _default: (createMuxer: (init?: StreamMuxerInit | undefined) => Promise<StreamMuxer>, nStreams: number, nMsg: number, limit?: number | undefined) => Promise<void>;
|
|
3
|
-
export default _default;
|
|
4
|
-
//# sourceMappingURL=spawner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spawner.d.ts","sourceRoot":"","sources":["../../../src/stream-muxer/spawner.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;8EAEpB,QAAQ,WAAW,CAAC,YAAY,MAAM,QAAQ,MAAM;AAAnH,wBAwCC"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { expect } from 'aegir/chai';
|
|
2
|
-
import { duplexPair } from 'it-pair/duplex';
|
|
3
|
-
import { pipe } from 'it-pipe';
|
|
4
|
-
import pLimit from 'p-limit';
|
|
5
|
-
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
6
|
-
import drain from 'it-drain';
|
|
7
|
-
import all from 'it-all';
|
|
8
|
-
export default async (createMuxer, nStreams, nMsg, limit) => {
|
|
9
|
-
const [dialerSocket, listenerSocket] = duplexPair();
|
|
10
|
-
const msg = uint8ArrayFromString('simple msg');
|
|
11
|
-
const listener = await createMuxer({
|
|
12
|
-
onIncomingStream: (stream) => {
|
|
13
|
-
void pipe(stream, drain);
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
const dialer = await createMuxer();
|
|
17
|
-
void pipe(listenerSocket, listener, listenerSocket);
|
|
18
|
-
void pipe(dialerSocket, dialer, dialerSocket);
|
|
19
|
-
const spawnStream = async () => {
|
|
20
|
-
const stream = dialer.newStream();
|
|
21
|
-
expect(stream).to.exist; // eslint-disable-line
|
|
22
|
-
const res = await pipe((async function* () {
|
|
23
|
-
for (let i = 0; i < nMsg; i++) {
|
|
24
|
-
yield msg;
|
|
25
|
-
}
|
|
26
|
-
}()), stream, async (source) => await all(source));
|
|
27
|
-
expect(res).to.be.eql([]);
|
|
28
|
-
};
|
|
29
|
-
const limiter = pLimit(limit ?? Infinity);
|
|
30
|
-
await Promise.all(Array.from(Array(nStreams), async () => await limiter(async () => await spawnStream())));
|
|
31
|
-
};
|
|
32
|
-
//# sourceMappingURL=spawner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spawner.js","sourceRoot":"","sources":["../../../src/stream-muxer/spawner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,GAAG,MAAM,QAAQ,CAAA;AAGxB,eAAe,KAAK,EAAE,WAA6D,EAAE,QAAgB,EAAE,IAAY,EAAE,KAAc,EAAE,EAAE;IACrI,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG,UAAU,EAAc,CAAA;IAE/D,MAAM,GAAG,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAA;IAE9C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;QACjC,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE;YAC3B,KAAK,IAAI,CACP,MAAM,EACN,KAAK,CACN,CAAA;QACH,CAAC;KACF,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAA;IAElC,KAAK,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAA;IACnD,KAAK,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,CAAA;IAE7C,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;QACjC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAA,CAAC,sBAAsB;QAE9C,MAAM,GAAG,GAAG,MAAM,IAAI,CACpB,CAAC,KAAK,SAAU,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;gBAC7B,MAAM,GAAG,CAAA;aACV;QACH,CAAC,EAAE,CAAC,EACJ,MAAM,EACN,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CACpC,CAAA;QAED,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC3B,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAA;IAEzC,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC,CACxF,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stress-test.d.ts","sourceRoot":"","sources":["../../../src/stream-muxer/stress-test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAgC,MAAM,iCAAiC,CAAA;iCAG/E,UAAU,kBAAkB,CAAC;AAArD,wBAuBC"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import spawn from './spawner.js';
|
|
2
|
-
import { Components } from '@libp2p/interfaces/components';
|
|
3
|
-
export default (common) => {
|
|
4
|
-
const createMuxer = async (init) => {
|
|
5
|
-
const factory = await common.setup();
|
|
6
|
-
return factory.createStreamMuxer(new Components(), init);
|
|
7
|
-
};
|
|
8
|
-
describe('stress test', () => {
|
|
9
|
-
it('1 stream with 1 msg', async () => await spawn(createMuxer, 1, 1));
|
|
10
|
-
it('1 stream with 10 msg', async () => await spawn(createMuxer, 1, 10));
|
|
11
|
-
it('1 stream with 100 msg', async () => await spawn(createMuxer, 1, 100));
|
|
12
|
-
it('10 streams with 1 msg', async () => await spawn(createMuxer, 10, 1));
|
|
13
|
-
it('10 streams with 10 msg', async () => await spawn(createMuxer, 10, 10));
|
|
14
|
-
it('10 streams with 100 msg', async () => await spawn(createMuxer, 10, 100));
|
|
15
|
-
it('100 streams with 1 msg', async () => await spawn(createMuxer, 100, 1));
|
|
16
|
-
it('100 streams with 10 msg', async () => await spawn(createMuxer, 100, 10));
|
|
17
|
-
it('100 streams with 100 msg', async () => await spawn(createMuxer, 100, 100));
|
|
18
|
-
it('1000 streams with 1 msg', async () => await spawn(createMuxer, 1000, 1));
|
|
19
|
-
it('1000 streams with 10 msg', async () => await spawn(createMuxer, 1000, 10));
|
|
20
|
-
it('1000 streams with 100 msg', async function () {
|
|
21
|
-
this.timeout(120000);
|
|
22
|
-
await spawn(createMuxer, 1000, 100);
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=stress-test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stress-test.js","sourceRoot":"","sources":["../../../src/stream-muxer/stress-test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAA;AAGhC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAE1D,eAAe,CAAC,MAAqC,EAAE,EAAE;IACvD,MAAM,WAAW,GAAG,KAAK,EAAE,IAAsB,EAAwB,EAAE;QACzE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QACpC,OAAO,OAAO,CAAC,iBAAiB,CAAC,IAAI,UAAU,EAAE,EAAE,IAAI,CAAC,CAAA;IAC1D,CAAC,CAAA;IAED,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACrE,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QACvE,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;QACzE,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;QACxE,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QAC1E,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAA;QAC5E,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1E,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;QAC5E,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QAC9E,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAC5E,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;QAC9E,EAAE,CAAC,2BAA2B,EAAE,KAAK;YACnC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YACpB,MAAM,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../../../src/topology/topology.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;+BAErC,UAAU,QAAQ,CAAC;AAAzC,wBAmBC"}
|