@libp2p/interface-compliance-tests 6.1.7 → 6.1.8-32ca76fcb

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/src/matchers.d.ts +6 -0
  2. package/dist/src/matchers.d.ts.map +1 -1
  3. package/dist/src/matchers.js +6 -0
  4. package/dist/src/matchers.js.map +1 -1
  5. package/dist/src/mocks/muxer.d.ts +8 -3
  6. package/dist/src/mocks/muxer.d.ts.map +1 -1
  7. package/dist/src/mocks/muxer.js +15 -6
  8. package/dist/src/mocks/muxer.js.map +1 -1
  9. package/dist/src/transport/index.d.ts +13 -9
  10. package/dist/src/transport/index.d.ts.map +1 -1
  11. package/dist/src/transport/index.js +321 -6
  12. package/dist/src/transport/index.js.map +1 -1
  13. package/dist/src/transport/utils.d.ts +19 -0
  14. package/dist/src/transport/utils.d.ts.map +1 -0
  15. package/dist/src/transport/utils.js +62 -0
  16. package/dist/src/transport/utils.js.map +1 -0
  17. package/package.json +14 -13
  18. package/src/matchers.ts +6 -0
  19. package/src/mocks/muxer.ts +24 -10
  20. package/src/transport/index.ts +405 -17
  21. package/src/transport/utils.ts +76 -0
  22. package/dist/src/connection/index.d.ts +0 -5
  23. package/dist/src/connection/index.d.ts.map +0 -1
  24. package/dist/src/connection/index.js +0 -135
  25. package/dist/src/connection/index.js.map +0 -1
  26. package/dist/src/transport/dial-test.d.ts +0 -5
  27. package/dist/src/transport/dial-test.d.ts.map +0 -1
  28. package/dist/src/transport/dial-test.js +0 -99
  29. package/dist/src/transport/dial-test.js.map +0 -1
  30. package/dist/src/transport/filter-test.d.ts +0 -5
  31. package/dist/src/transport/filter-test.d.ts.map +0 -1
  32. package/dist/src/transport/filter-test.js +0 -24
  33. package/dist/src/transport/filter-test.js.map +0 -1
  34. package/dist/src/transport/listen-test.d.ts +0 -5
  35. package/dist/src/transport/listen-test.d.ts.map +0 -1
  36. package/dist/src/transport/listen-test.js +0 -154
  37. package/dist/src/transport/listen-test.js.map +0 -1
  38. package/dist/typedoc-urls.json +0 -49
  39. package/src/connection/index.ts +0 -166
  40. package/src/transport/dial-test.ts +0 -125
  41. package/src/transport/filter-test.ts +0 -32
  42. package/src/transport/listen-test.ts +0 -192
@@ -1,6 +1,12 @@
1
1
  import Sinon from 'sinon';
2
2
  import type { PeerId } from '@libp2p/interface';
3
3
  import type { Multiaddr } from '@multiformats/multiaddr';
4
+ /**
5
+ * @deprecated PeerIds can be passed to sinon matchers directly
6
+ */
4
7
  export declare function matchPeerId(peerId: PeerId): Sinon.SinonMatcher;
8
+ /**
9
+ * @deprecated Multiaddrs can be passed to sinon matchers directly
10
+ */
5
11
  export declare function matchMultiaddr(ma: Multiaddr): Sinon.SinonMatcher;
6
12
  //# sourceMappingURL=matchers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"matchers.d.ts","sourceRoot":"","sources":["../../src/matchers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,wBAAgB,WAAW,CAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,YAAY,CAE/D;AAED,wBAAgB,cAAc,CAAE,EAAE,EAAE,SAAS,GAAG,KAAK,CAAC,YAAY,CAEjE"}
1
+ {"version":3,"file":"matchers.d.ts","sourceRoot":"","sources":["../../src/matchers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD;;GAEG;AACH,wBAAgB,WAAW,CAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,YAAY,CAE/D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAE,EAAE,EAAE,SAAS,GAAG,KAAK,CAAC,YAAY,CAEjE"}
@@ -1,7 +1,13 @@
1
1
  import Sinon from 'sinon';
2
+ /**
3
+ * @deprecated PeerIds can be passed to sinon matchers directly
4
+ */
2
5
  export function matchPeerId(peerId) {
3
6
  return Sinon.match(p => p.toString() === peerId.toString());
4
7
  }
8
+ /**
9
+ * @deprecated Multiaddrs can be passed to sinon matchers directly
10
+ */
5
11
  export function matchMultiaddr(ma) {
6
12
  return Sinon.match(m => m.toString() === ma.toString());
7
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"matchers.js","sourceRoot":"","sources":["../../src/matchers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,MAAM,UAAU,WAAW,CAAE,MAAc;IACzC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;AAC7D,CAAC;AAED,MAAM,UAAU,cAAc,CAAE,EAAa;IAC3C,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;AACzD,CAAC"}
1
+ {"version":3,"file":"matchers.js","sourceRoot":"","sources":["../../src/matchers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB;;GAEG;AACH,MAAM,UAAU,WAAW,CAAE,MAAc;IACzC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAE,EAAa;IAC3C,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;AACzD,CAAC"}
@@ -12,9 +12,14 @@ interface ResetMessage {
12
12
  type: 'reset';
13
13
  direction: Direction;
14
14
  }
15
- interface CloseMessage {
15
+ interface CloseWriteMessage {
16
16
  id: string;
17
- type: 'close';
17
+ type: 'closeWrite';
18
+ direction: Direction;
19
+ }
20
+ interface CloseReadMessage {
21
+ id: string;
22
+ type: 'closeRead';
18
23
  direction: Direction;
19
24
  }
20
25
  interface CreateMessage {
@@ -22,7 +27,7 @@ interface CreateMessage {
22
27
  type: 'create';
23
28
  direction: 'outbound';
24
29
  }
25
- type StreamMessage = DataMessage | ResetMessage | CloseMessage | CreateMessage;
30
+ type StreamMessage = DataMessage | ResetMessage | CloseWriteMessage | CloseReadMessage | CreateMessage;
26
31
  export interface MockMuxedStreamInit extends AbstractStreamInit {
27
32
  push: Pushable<StreamMessage>;
28
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"muxer.d.ts","sourceRoot":"","sources":["../../../src/mocks/muxer.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAKvF,OAAO,EAAE,KAAK,QAAQ,EAAY,MAAM,aAAa,CAAA;AAIrD,OAAO,KAAK,EAAgB,SAAS,EAAuB,kBAAkB,EAAmB,MAAM,mBAAmB,CAAA;AAM1H,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,OAAO,CAAA;IACb,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,OAAO,CAAA;IACb,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,UAAU,aAAa;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,QAAQ,CAAA;IACd,SAAS,EAAE,UAAU,CAAA;CACtB;AAED,KAAK,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,GAAG,aAAa,CAAA;AAE9E,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;CAC9B;AA0QD,wBAAgB,SAAS,IAAK,kBAAkB,CAE/C"}
1
+ {"version":3,"file":"muxer.d.ts","sourceRoot":"","sources":["../../../src/mocks/muxer.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAKvF,OAAO,EAAE,KAAK,QAAQ,EAAY,MAAM,aAAa,CAAA;AAIrD,OAAO,KAAK,EAAgB,SAAS,EAAuB,kBAAkB,EAAmB,MAAM,mBAAmB,CAAA;AAM1H,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,OAAO,CAAA;IACb,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,UAAU,iBAAiB;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,YAAY,CAAA;IAClB,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,WAAW,CAAA;IACjB,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,UAAU,aAAa;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,QAAQ,CAAA;IACd,SAAS,EAAE,UAAU,CAAA;CACtB;AAED,KAAK,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,aAAa,CAAA;AAEtG,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;CAC9B;AAkRD,wBAAgB,SAAS,IAAK,kBAAkB,CAE/C"}
@@ -45,13 +45,18 @@ class MuxedStream extends AbstractStream {
45
45
  sendCloseWrite() {
46
46
  const closeMsg = {
47
47
  id: this.id,
48
- type: 'close',
48
+ type: 'closeWrite',
49
49
  direction: this.direction
50
50
  };
51
51
  this.push.push(closeMsg);
52
52
  }
53
53
  sendCloseRead() {
54
- // does not support close read, only close write
54
+ const closeMsg = {
55
+ id: this.id,
56
+ type: 'closeRead',
57
+ direction: this.direction
58
+ };
59
+ this.push.push(closeMsg);
55
60
  }
56
61
  }
57
62
  class MockMuxer {
@@ -98,11 +103,11 @@ class MockMuxer {
98
103
  this.handleMessage(message);
99
104
  }
100
105
  });
101
- this.log('muxed stream ended');
106
+ this.log('muxer ended');
102
107
  this.input.end();
103
108
  }
104
109
  catch (err) {
105
- this.log('muxed stream errored', err);
110
+ this.log.error('muxer errored - %e', err);
106
111
  this.input.end(err);
107
112
  }
108
113
  }
@@ -131,10 +136,14 @@ class MockMuxer {
131
136
  this.log('-> reset stream %s %s', muxedStream.direction, muxedStream.id);
132
137
  muxedStream.reset();
133
138
  }
134
- else if (message.type === 'close') {
135
- this.log('-> closing stream %s %s', muxedStream.direction, muxedStream.id);
139
+ else if (message.type === 'closeWrite') {
140
+ this.log('-> closing writeable end of stream %s %s', muxedStream.direction, muxedStream.id);
136
141
  muxedStream.remoteCloseWrite();
137
142
  }
143
+ else if (message.type === 'closeRead') {
144
+ this.log('-> closing readable end of stream %s %s', muxedStream.direction, muxedStream.id);
145
+ muxedStream.remoteCloseRead();
146
+ }
138
147
  }
139
148
  get streams() {
140
149
  return Array.from(this.registryRecipientStreams.values())
@@ -1 +1 @@
1
- {"version":3,"file":"muxer.js","sourceRoot":"","sources":["../../../src/mocks/muxer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"muxer.js","sourceRoot":"","sources":["../../../src/mocks/muxer.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,20 @@
1
1
  import type { TestSetup } from '../index.js';
2
2
  import type { Transport } from '@libp2p/interface';
3
3
  import type { Multiaddr } from '@multiformats/multiaddr';
4
- export interface Connector {
5
- delay(ms: number): void;
6
- restore(): void;
7
- }
8
4
  export interface TransportTestFixtures {
9
- listenAddrs: Multiaddr[];
10
- dialAddrs: Multiaddr[];
11
- dialer: Transport;
12
- listener: Transport;
13
- connector: Connector;
5
+ /**
6
+ * Addresses that will be used to dial listeners from `listenAddrs`
7
+ */
8
+ dialAddrs: [Multiaddr, Multiaddr];
9
+ /**
10
+ * Addresses that will be used to create listeners to dial
11
+ */
12
+ listenAddrs?: [Multiaddr, Multiaddr];
13
+ /**
14
+ * Only run the dial portion of the tests, do not try to create listeners
15
+ */
16
+ dialOnly?: boolean;
17
+ transport(components: any): Transport;
14
18
  }
15
19
  declare const _default: (common: TestSetup<TransportTestFixtures>) => void;
16
20
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transport/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,SAAS,EAAE,CAAA;IACxB,SAAS,EAAE,SAAS,EAAE,CAAA;IACtB,MAAM,EAAE,SAAS,CAAA;IACjB,QAAQ,EAAE,SAAS,CAAA;IACnB,SAAS,EAAE,SAAS,CAAA;CACrB;iCAEuB,UAAU,qBAAqB,CAAC,KAAG,IAAI;AAA/D,wBAMC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transport/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,KAAK,EAA8B,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,SAAS,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAEjC;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAEpC;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB,SAAS,CAAC,UAAU,EAAE,GAAG,GAAG,SAAS,CAAA;CACtC;iCAEuB,UAAU,qBAAqB,CAAC,KAAG,IAAI;AAA/D,wBA6XC"}
@@ -1,11 +1,326 @@
1
- import dial from './dial-test.js';
2
- import filter from './filter-test.js';
3
- import listen from './listen-test.js';
1
+ import { echo } from '@libp2p/echo';
2
+ import { stop } from '@libp2p/interface';
3
+ import { expect } from 'aegir/chai';
4
+ import delay from 'delay';
5
+ import { pEvent } from 'p-event';
6
+ import pWaitFor from 'p-wait-for';
7
+ import { raceSignal } from 'race-signal';
8
+ import { isValidTick } from '../is-valid-tick.js';
9
+ import { createPeer, getTransportManager, getUpgrader, slowNetwork } from './utils.js';
4
10
  export default (common) => {
5
11
  describe('interface-transport', () => {
6
- dial(common);
7
- listen(common);
8
- filter(common);
12
+ let dialAddrs;
13
+ let listenAddrs;
14
+ let transport;
15
+ let dialer;
16
+ let listener;
17
+ let dialOnly;
18
+ beforeEach(async () => {
19
+ ({ dialAddrs, listenAddrs = dialAddrs, transport, dialOnly = false } = await common.setup());
20
+ });
21
+ afterEach(async () => {
22
+ await stop(dialer, listener);
23
+ await common.teardown();
24
+ });
25
+ it('simple', async () => {
26
+ dialer = await createPeer({
27
+ transports: [
28
+ transport
29
+ ]
30
+ });
31
+ if (!dialOnly) {
32
+ listener = await createPeer({
33
+ addresses: {
34
+ listen: [listenAddrs[0].toString()]
35
+ },
36
+ transports: [
37
+ transport
38
+ ]
39
+ });
40
+ }
41
+ const input = Uint8Array.from([0, 1, 2, 3, 4]);
42
+ const output = await dialer.services.echo.echo(dialAddrs[0], input, {
43
+ signal: AbortSignal.timeout(5000)
44
+ });
45
+ expect(output).to.equalBytes(input);
46
+ });
47
+ it('should listen on multiple addresses', async () => {
48
+ dialer = await createPeer({
49
+ transports: [
50
+ transport
51
+ ]
52
+ });
53
+ if (!dialOnly) {
54
+ listener = await createPeer({
55
+ addresses: {
56
+ listen: [
57
+ listenAddrs[0].toString(),
58
+ listenAddrs[1].toString()
59
+ ]
60
+ },
61
+ transports: [
62
+ transport
63
+ ]
64
+ });
65
+ }
66
+ const input = Uint8Array.from([0, 1, 2, 3, 4]);
67
+ await expect(dialer.services.echo.echo(dialAddrs[0], input, {
68
+ signal: AbortSignal.timeout(5000)
69
+ })).to.eventually.deep.equal(input);
70
+ await expect(dialer.services.echo.echo(dialAddrs[1], input, {
71
+ signal: AbortSignal.timeout(5000)
72
+ })).to.eventually.deep.equal(input);
73
+ });
74
+ it('can close connections', async () => {
75
+ dialer = await createPeer({
76
+ transports: [
77
+ transport
78
+ ]
79
+ });
80
+ if (!dialOnly) {
81
+ listener = await createPeer({
82
+ addresses: {
83
+ listen: [listenAddrs[0].toString()]
84
+ },
85
+ transports: [
86
+ transport
87
+ ]
88
+ });
89
+ }
90
+ const conn = await dialer.dial(dialAddrs[0], {
91
+ signal: AbortSignal.timeout(5000)
92
+ });
93
+ await conn.close();
94
+ expect(isValidTick(conn.timeline.close)).to.equal(true);
95
+ });
96
+ it('abort before dialing throws AbortError', async () => {
97
+ dialer = await createPeer({
98
+ transports: [
99
+ transport
100
+ ]
101
+ });
102
+ if (!dialOnly) {
103
+ listener = await createPeer({
104
+ addresses: {
105
+ listen: [listenAddrs[0].toString()]
106
+ },
107
+ transports: [
108
+ transport
109
+ ]
110
+ });
111
+ }
112
+ const controller = new AbortController();
113
+ controller.abort();
114
+ await expect(dialer.dial(dialAddrs[0], {
115
+ signal: controller.signal
116
+ })).to.eventually.be.rejected()
117
+ .with.property('name', 'AbortError');
118
+ });
119
+ it('abort while dialing throws AbortError', async () => {
120
+ dialer = await createPeer({
121
+ transports: [
122
+ transport
123
+ ]
124
+ });
125
+ if (!dialOnly) {
126
+ listener = await createPeer({
127
+ addresses: {
128
+ listen: [listenAddrs[0].toString()]
129
+ },
130
+ transports: [
131
+ transport
132
+ ]
133
+ });
134
+ }
135
+ slowNetwork(dialer, 100);
136
+ const controller = new AbortController();
137
+ setTimeout(() => { controller.abort(); }, 50);
138
+ await expect(dialer.dial(dialAddrs[0], {
139
+ signal: controller.signal
140
+ })).to.eventually.be.rejected()
141
+ .with.property('name', 'AbortError');
142
+ });
143
+ it('should close all streams when the connection closes', async () => {
144
+ dialer = await createPeer({
145
+ transports: [
146
+ transport
147
+ ]
148
+ });
149
+ if (!dialOnly) {
150
+ listener = await createPeer({
151
+ addresses: {
152
+ listen: [listenAddrs[0].toString()]
153
+ },
154
+ transports: [
155
+ transport
156
+ ],
157
+ services: {
158
+ echo: echo({
159
+ maxInboundStreams: 5
160
+ })
161
+ }
162
+ });
163
+ }
164
+ const connection = await dialer.dial(listenAddrs[0]);
165
+ let remoteConn;
166
+ if (listener != null) {
167
+ const remoteConnections = listener.getConnections(dialer.peerId);
168
+ expect(remoteConnections).to.have.lengthOf(1);
169
+ remoteConn = remoteConnections[0];
170
+ }
171
+ const streams = [];
172
+ for (let i = 0; i < 5; i++) {
173
+ streams.push(await connection.newStream('/echo/1.0.0', {
174
+ maxOutboundStreams: 5
175
+ }));
176
+ }
177
+ // Close the connection and verify all streams have been closed
178
+ await connection.close();
179
+ await pWaitFor(() => connection.streams.length === 0);
180
+ if (remoteConn != null) {
181
+ await pWaitFor(() => remoteConn.streams.length === 0);
182
+ }
183
+ expect(streams.find(stream => stream.status !== 'closed')).to.be.undefined();
184
+ });
185
+ it('should not handle connection if upgradeInbound rejects', async function () {
186
+ if (dialOnly) {
187
+ return this.skip();
188
+ }
189
+ dialer = await createPeer({
190
+ transports: [
191
+ transport
192
+ ]
193
+ });
194
+ if (!dialOnly) {
195
+ listener = await createPeer({
196
+ addresses: {
197
+ listen: [listenAddrs[0].toString()]
198
+ },
199
+ transports: [
200
+ transport
201
+ ]
202
+ });
203
+ }
204
+ const upgrader = getUpgrader(listener);
205
+ upgrader.upgradeInbound = async () => {
206
+ await delay(100);
207
+ throw new Error('Oh noes!');
208
+ };
209
+ await expect(dialer.dial(listenAddrs[0])).to.eventually.be.rejected
210
+ .with.property('name', 'EncryptionFailedError');
211
+ expect(dialer.getConnections()).to.have.lengthOf(0);
212
+ if (listener != null) {
213
+ expect(listener.getConnections()).to.have.lengthOf(0);
214
+ }
215
+ });
216
+ });
217
+ describe('events', () => {
218
+ let listenAddrs;
219
+ let dialAddrs;
220
+ let transport;
221
+ let dialer;
222
+ let listener;
223
+ let dialOnly;
224
+ beforeEach(async () => {
225
+ ({ dialAddrs, listenAddrs = dialAddrs, transport, dialOnly = false } = await common.setup());
226
+ });
227
+ afterEach(async () => {
228
+ await stop(dialer, listener);
229
+ await common.teardown();
230
+ });
231
+ it('emits connection', async function () {
232
+ if (dialOnly) {
233
+ return this.skip();
234
+ }
235
+ dialer = await createPeer({
236
+ transports: [
237
+ transport
238
+ ]
239
+ });
240
+ if (!dialOnly) {
241
+ listener = await createPeer({
242
+ addresses: {
243
+ listen: [listenAddrs[0].toString()]
244
+ },
245
+ transports: [
246
+ transport
247
+ ]
248
+ });
249
+ }
250
+ const transportManager = getTransportManager(listener);
251
+ const transportListener = transportManager.getListeners()[0];
252
+ const p = pEvent(transportListener, 'connection');
253
+ await expect(dialer.dial(dialAddrs[0])).to.eventually.be.ok();
254
+ await raceSignal(p, AbortSignal.timeout(1000), {
255
+ errorMessage: 'Did not emit connection event'
256
+ });
257
+ });
258
+ it('emits listening', async function () {
259
+ if (dialOnly) {
260
+ return this.skip();
261
+ }
262
+ dialer = await createPeer({
263
+ transports: [
264
+ transport
265
+ ]
266
+ });
267
+ if (!dialOnly) {
268
+ listener = await createPeer({
269
+ addresses: {
270
+ listen: [listenAddrs[0].toString()]
271
+ },
272
+ transports: [
273
+ transport
274
+ ]
275
+ });
276
+ }
277
+ const transportManager = getTransportManager(listener);
278
+ const t = transportManager.dialTransportForMultiaddr(dialAddrs[0]);
279
+ if (t == null) {
280
+ throw new Error(`No transport configured for dial address ${dialAddrs[0]}`);
281
+ }
282
+ let p;
283
+ const originalCreateListener = t.createListener.bind(t);
284
+ t.createListener = (opts) => {
285
+ const listener = originalCreateListener(opts);
286
+ p = pEvent(listener, 'listening');
287
+ return listener;
288
+ };
289
+ await transportManager.listen([
290
+ listenAddrs[1]
291
+ ]);
292
+ if (p == null) {
293
+ throw new Error('Listener was not created');
294
+ }
295
+ await raceSignal(p, AbortSignal.timeout(1000), {
296
+ errorMessage: 'Did not emit connection event'
297
+ });
298
+ });
299
+ it('emits close', async function () {
300
+ if (dialOnly) {
301
+ return this.skip();
302
+ }
303
+ dialer = await createPeer({
304
+ transports: [
305
+ transport
306
+ ]
307
+ });
308
+ listener = await createPeer({
309
+ addresses: {
310
+ listen: [listenAddrs[0].toString()]
311
+ },
312
+ transports: [
313
+ transport
314
+ ]
315
+ });
316
+ const transportManager = getTransportManager(listener);
317
+ const transportListener = transportManager.getListeners()[0];
318
+ const p = pEvent(transportListener, 'close');
319
+ await listener.stop();
320
+ await raceSignal(p, AbortSignal.timeout(1000), {
321
+ errorMessage: 'Did not emit close event'
322
+ });
323
+ });
9
324
  });
10
325
  };
11
326
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transport/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,gBAAgB,CAAA;AACjC,OAAO,MAAM,MAAM,kBAAkB,CAAA;AACrC,OAAO,MAAM,MAAM,kBAAkB,CAAA;AAkBrC,eAAe,CAAC,MAAwC,EAAQ,EAAE;IAChE,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,IAAI,CAAC,MAAM,CAAC,CAAA;QACZ,MAAM,CAAC,MAAM,CAAC,CAAA;QACd,MAAM,CAAC,MAAM,CAAC,CAAA;IAChB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transport/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { Echo } from '@libp2p/echo';
2
+ import type { Libp2p, Upgrader } from '@libp2p/interface';
3
+ import type { TransportManager } from '@libp2p/interface-internal';
4
+ import type { Libp2pOptions } from 'libp2p';
5
+ export declare function createPeer(config?: Partial<Libp2pOptions<{
6
+ echo: Echo;
7
+ }>>): Promise<Libp2p<{
8
+ echo: Echo;
9
+ }>>;
10
+ /**
11
+ * Monkey patch the upgrader in the passed libp2p to add latency to any
12
+ * multiaddr connections upgraded to connections - this is to work with
13
+ * transports that have their own muxers/encrypters and do not support
14
+ * connection protection
15
+ */
16
+ export declare function slowNetwork(libp2p: any, latency: number): void;
17
+ export declare function getUpgrader(libp2p: any): Upgrader;
18
+ export declare function getTransportManager(libp2p: any): TransportManager;
19
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/transport/utils.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAE3C,wBAAsB,UAAU,CAAE,MAAM,GAAE,OAAO,CAAC,aAAa,CAAC;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC,CAsBtH;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAuB/D;AAED,wBAAgB,WAAW,CAAE,MAAM,EAAE,GAAG,GAAG,QAAQ,CAElD;AAED,wBAAgB,mBAAmB,CAAE,MAAM,EAAE,GAAG,GAAG,gBAAgB,CAElE"}
@@ -0,0 +1,62 @@
1
+ /* eslint-env mocha */
2
+ import { echo } from '@libp2p/echo';
3
+ import { memory } from '@libp2p/memory';
4
+ import { plaintext } from '@libp2p/plaintext';
5
+ import delay from 'delay';
6
+ import map from 'it-map';
7
+ import { createLibp2p } from 'libp2p';
8
+ import { mockMuxer } from '../mocks/muxer.js';
9
+ export async function createPeer(config = {}) {
10
+ const node = await createLibp2p({
11
+ transports: [
12
+ memory()
13
+ ],
14
+ connectionEncrypters: [
15
+ plaintext()
16
+ ],
17
+ streamMuxers: [
18
+ () => mockMuxer()
19
+ ],
20
+ connectionGater: {
21
+ denyDialMultiaddr: () => false
22
+ },
23
+ ...config,
24
+ services: {
25
+ echo: echo(),
26
+ ...config.services
27
+ }
28
+ });
29
+ return node;
30
+ }
31
+ /**
32
+ * Monkey patch the upgrader in the passed libp2p to add latency to any
33
+ * multiaddr connections upgraded to connections - this is to work with
34
+ * transports that have their own muxers/encrypters and do not support
35
+ * connection protection
36
+ */
37
+ export function slowNetwork(libp2p, latency) {
38
+ const upgrader = getUpgrader(libp2p);
39
+ const originalUpgradeInbound = upgrader.upgradeInbound.bind(upgrader);
40
+ const originalUpgradeOutbound = upgrader.upgradeOutbound.bind(upgrader);
41
+ upgrader.upgradeInbound = async (maConn, opts) => {
42
+ maConn.source = map(maConn.source, async (buf) => {
43
+ await delay(latency);
44
+ return buf;
45
+ });
46
+ return originalUpgradeInbound(maConn, opts);
47
+ };
48
+ upgrader.upgradeOutbound = async (maConn, opts) => {
49
+ maConn.source = map(maConn.source, async (buf) => {
50
+ await delay(latency);
51
+ return buf;
52
+ });
53
+ return originalUpgradeOutbound(maConn, opts);
54
+ };
55
+ }
56
+ export function getUpgrader(libp2p) {
57
+ return libp2p.components.upgrader;
58
+ }
59
+ export function getTransportManager(libp2p) {
60
+ return libp2p.components.transportManager;
61
+ }
62
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/transport/utils.ts"],"names":[],"mappings":"AAAA,sBAAsB;AAEtB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAM7C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAE,SAAiD,EAAE;IACnF,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC;QAC9B,UAAU,EAAE;YACV,MAAM,EAAE;SACT;QACD,oBAAoB,EAAE;YACpB,SAAS,EAAE;SACZ;QACD,YAAY,EAAE;YACZ,GAAG,EAAE,CAAC,SAAS,EAAE;SAClB;QACD,eAAe,EAAE;YACf,iBAAiB,EAAE,GAAG,EAAE,CAAC,KAAK;SAC/B;QACD,GAAG,MAAM;QACT,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,EAAE;YACZ,GAAG,MAAM,CAAC,QAAQ;SACnB;KACF,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAE,MAAW,EAAE,OAAe;IACvD,MAAM,QAAQ,GAAa,WAAW,CAAC,MAAM,CAAC,CAAA;IAE9C,MAAM,sBAAsB,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACrE,MAAM,uBAAuB,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAEvE,QAAQ,CAAC,cAAc,GAAG,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC/C,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC/C,MAAM,KAAK,CAAC,OAAO,CAAC,CAAA;YACpB,OAAO,GAAG,CAAA;QACZ,CAAC,CAAC,CAAA;QAEF,OAAO,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC,CAAA;IAED,QAAQ,CAAC,eAAe,GAAG,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAChD,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC/C,MAAM,KAAK,CAAC,OAAO,CAAC,CAAA;YACpB,OAAO,GAAG,CAAA;QACZ,CAAC,CAAC,CAAA;QAEF,OAAO,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9C,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAE,MAAW;IACtC,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAE,MAAW;IAC9C,OAAO,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAA;AAC3C,CAAC"}