@libp2p/interface-compliance-tests 3.0.5 → 3.0.7-05abd49f

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 (138) hide show
  1. package/README.md +14 -5
  2. package/dist/src/connection/index.d.ts +5 -0
  3. package/dist/src/connection/index.d.ts.map +1 -0
  4. package/dist/src/connection/index.js +151 -0
  5. package/dist/src/connection/index.js.map +1 -0
  6. package/dist/src/connection-encryption/index.d.ts +5 -0
  7. package/dist/src/connection-encryption/index.d.ts.map +1 -0
  8. package/dist/src/connection-encryption/index.js +71 -0
  9. package/dist/src/connection-encryption/index.js.map +1 -0
  10. package/dist/src/connection-encryption/utils/index.d.ts +3 -0
  11. package/dist/src/connection-encryption/utils/index.d.ts.map +1 -0
  12. package/dist/src/connection-encryption/utils/index.js +18 -0
  13. package/dist/src/connection-encryption/utils/index.js.map +1 -0
  14. package/dist/src/index.d.ts +1 -1
  15. package/dist/src/index.d.ts.map +1 -1
  16. package/dist/src/is-valid-tick.d.ts.map +1 -1
  17. package/dist/src/mocks/connection-encrypter.d.ts +3 -0
  18. package/dist/src/mocks/connection-encrypter.d.ts.map +1 -0
  19. package/dist/src/mocks/connection-encrypter.js +98 -0
  20. package/dist/src/mocks/connection-encrypter.js.map +1 -0
  21. package/dist/src/mocks/connection-gater.d.ts +3 -0
  22. package/dist/src/mocks/connection-gater.d.ts.map +1 -0
  23. package/dist/src/mocks/connection-gater.js +17 -0
  24. package/dist/src/mocks/connection-gater.js.map +1 -0
  25. package/dist/src/mocks/connection-manager.d.ts +27 -0
  26. package/dist/src/mocks/connection-manager.d.ts.map +1 -0
  27. package/dist/src/mocks/connection-manager.js +145 -0
  28. package/dist/src/mocks/connection-manager.js.map +1 -0
  29. package/dist/src/mocks/connection.d.ts +32 -0
  30. package/dist/src/mocks/connection.d.ts.map +1 -0
  31. package/dist/src/mocks/connection.js +162 -0
  32. package/dist/src/mocks/connection.js.map +1 -0
  33. package/dist/src/mocks/duplex.d.ts +3 -0
  34. package/dist/src/mocks/duplex.d.ts.map +1 -0
  35. package/dist/src/mocks/duplex.js +9 -0
  36. package/dist/src/mocks/duplex.js.map +1 -0
  37. package/dist/src/mocks/index.d.ts +13 -0
  38. package/dist/src/mocks/index.d.ts.map +1 -0
  39. package/dist/src/mocks/index.js +11 -0
  40. package/dist/src/mocks/index.js.map +1 -0
  41. package/dist/src/mocks/metrics.d.ts +3 -0
  42. package/dist/src/mocks/metrics.d.ts.map +1 -0
  43. package/dist/src/mocks/metrics.js +115 -0
  44. package/dist/src/mocks/metrics.js.map +1 -0
  45. package/dist/src/mocks/multiaddr-connection.d.ts +17 -0
  46. package/dist/src/mocks/multiaddr-connection.d.ts.map +1 -0
  47. package/dist/src/mocks/multiaddr-connection.js +51 -0
  48. package/dist/src/mocks/multiaddr-connection.js.map +1 -0
  49. package/dist/src/mocks/muxer.d.ts +8 -0
  50. package/dist/src/mocks/muxer.d.ts.map +1 -0
  51. package/dist/src/mocks/muxer.js +341 -0
  52. package/dist/src/mocks/muxer.js.map +1 -0
  53. package/dist/src/mocks/peer-discovery.d.ts +22 -0
  54. package/dist/src/mocks/peer-discovery.d.ts.map +1 -0
  55. package/dist/src/mocks/peer-discovery.js +47 -0
  56. package/dist/src/mocks/peer-discovery.js.map +1 -0
  57. package/dist/src/mocks/registrar.d.ts +18 -0
  58. package/dist/src/mocks/registrar.d.ts.map +1 -0
  59. package/dist/src/mocks/registrar.js +66 -0
  60. package/dist/src/mocks/registrar.js.map +1 -0
  61. package/dist/src/mocks/upgrader.d.ts +10 -0
  62. package/dist/src/mocks/upgrader.d.ts.map +1 -0
  63. package/dist/src/mocks/upgrader.js +31 -0
  64. package/dist/src/mocks/upgrader.js.map +1 -0
  65. package/dist/src/peer-discovery/index.d.ts +5 -0
  66. package/dist/src/peer-discovery/index.d.ts.map +1 -0
  67. package/dist/src/peer-discovery/index.js +66 -0
  68. package/dist/src/peer-discovery/index.js.map +1 -0
  69. package/dist/src/stream-muxer/base-test.d.ts +5 -0
  70. package/dist/src/stream-muxer/base-test.d.ts.map +1 -0
  71. package/dist/src/stream-muxer/base-test.js +153 -0
  72. package/dist/src/stream-muxer/base-test.js.map +1 -0
  73. package/dist/src/stream-muxer/close-test.d.ts +5 -0
  74. package/dist/src/stream-muxer/close-test.d.ts.map +1 -0
  75. package/dist/src/stream-muxer/close-test.js +269 -0
  76. package/dist/src/stream-muxer/close-test.js.map +1 -0
  77. package/dist/src/stream-muxer/index.d.ts +5 -0
  78. package/dist/src/stream-muxer/index.d.ts.map +1 -0
  79. package/dist/src/stream-muxer/index.js +13 -0
  80. package/dist/src/stream-muxer/index.js.map +1 -0
  81. package/dist/src/stream-muxer/mega-stress-test.d.ts +5 -0
  82. package/dist/src/stream-muxer/mega-stress-test.d.ts.map +1 -0
  83. package/dist/src/stream-muxer/mega-stress-test.js +11 -0
  84. package/dist/src/stream-muxer/mega-stress-test.js.map +1 -0
  85. package/dist/src/stream-muxer/spawner.d.ts +4 -0
  86. package/dist/src/stream-muxer/spawner.d.ts.map +1 -0
  87. package/dist/src/stream-muxer/spawner.js +36 -0
  88. package/dist/src/stream-muxer/spawner.js.map +1 -0
  89. package/dist/src/stream-muxer/stress-test.d.ts +5 -0
  90. package/dist/src/stream-muxer/stress-test.d.ts.map +1 -0
  91. package/dist/src/stream-muxer/stress-test.js +23 -0
  92. package/dist/src/stream-muxer/stress-test.js.map +1 -0
  93. package/dist/src/transport/dial-test.d.ts +5 -0
  94. package/dist/src/transport/dial-test.d.ts.map +1 -0
  95. package/dist/src/transport/dial-test.js +98 -0
  96. package/dist/src/transport/dial-test.js.map +1 -0
  97. package/dist/src/transport/filter-test.d.ts +5 -0
  98. package/dist/src/transport/filter-test.d.ts.map +1 -0
  99. package/dist/src/transport/filter-test.js +18 -0
  100. package/dist/src/transport/filter-test.js.map +1 -0
  101. package/dist/src/transport/index.d.ts +15 -0
  102. package/dist/src/transport/index.d.ts.map +1 -0
  103. package/dist/src/transport/index.js +11 -0
  104. package/dist/src/transport/index.js.map +1 -0
  105. package/dist/src/transport/listen-test.d.ts +5 -0
  106. package/dist/src/transport/listen-test.d.ts.map +1 -0
  107. package/dist/src/transport/listen-test.js +152 -0
  108. package/dist/src/transport/listen-test.js.map +1 -0
  109. package/package.json +66 -95
  110. package/src/connection/index.ts +184 -0
  111. package/src/connection-encryption/index.ts +97 -0
  112. package/src/connection-encryption/utils/index.ts +23 -0
  113. package/src/index.ts +1 -1
  114. package/src/is-valid-tick.ts +1 -1
  115. package/src/mocks/connection-encrypter.ts +113 -0
  116. package/src/mocks/connection-gater.ts +18 -0
  117. package/src/mocks/connection-manager.ts +209 -0
  118. package/src/mocks/connection.ts +218 -0
  119. package/src/mocks/duplex.ts +10 -0
  120. package/src/mocks/index.ts +12 -0
  121. package/src/mocks/metrics.ts +162 -0
  122. package/src/mocks/multiaddr-connection.ts +67 -0
  123. package/src/mocks/muxer.ts +447 -0
  124. package/src/mocks/peer-discovery.ts +60 -0
  125. package/src/mocks/registrar.ts +88 -0
  126. package/src/mocks/upgrader.ts +49 -0
  127. package/src/peer-discovery/index.ts +90 -0
  128. package/src/stream-muxer/base-test.ts +196 -0
  129. package/src/stream-muxer/close-test.ts +346 -0
  130. package/src/stream-muxer/index.ts +15 -0
  131. package/src/stream-muxer/mega-stress-test.ts +14 -0
  132. package/src/stream-muxer/spawner.ts +54 -0
  133. package/src/stream-muxer/stress-test.ts +27 -0
  134. package/src/transport/dial-test.ts +124 -0
  135. package/src/transport/filter-test.ts +25 -0
  136. package/src/transport/index.ts +25 -0
  137. package/src/transport/listen-test.ts +191 -0
  138. package/dist/typedoc-urls.json +0 -3
@@ -0,0 +1,36 @@
1
+ import { expect } from 'aegir/chai';
2
+ import all from 'it-all';
3
+ import drain from 'it-drain';
4
+ import { duplexPair } from 'it-pair/duplex';
5
+ import { pipe } from 'it-pipe';
6
+ import pLimit from 'p-limit';
7
+ import { Uint8ArrayList } from 'uint8arraylist';
8
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
9
+ export default async (createMuxer, nStreams, nMsg, limit) => {
10
+ const [dialerSocket, listenerSocket] = duplexPair();
11
+ const msg = new Uint8ArrayList(uint8ArrayFromString('simple msg'));
12
+ const listener = await createMuxer({
13
+ direction: 'inbound',
14
+ onIncomingStream: (stream) => {
15
+ void pipe(stream, drain).then(() => {
16
+ stream.close();
17
+ });
18
+ }
19
+ });
20
+ const dialer = await createMuxer({ direction: 'outbound' });
21
+ void pipe(listenerSocket, listener, listenerSocket);
22
+ void pipe(dialerSocket, dialer, dialerSocket);
23
+ const spawnStream = async () => {
24
+ const stream = await dialer.newStream();
25
+ expect(stream).to.exist; // eslint-disable-line
26
+ const res = await pipe((async function* () {
27
+ for (let i = 0; i < nMsg; i++) {
28
+ yield msg;
29
+ }
30
+ }()), stream, async (source) => all(source));
31
+ expect(res).to.be.eql([]);
32
+ };
33
+ const limiter = pLimit(limit ?? Infinity);
34
+ await Promise.all(Array.from(Array(nStreams), async () => { await limiter(async () => { await spawnStream(); }); }));
35
+ };
36
+ //# sourceMappingURL=spawner.js.map
@@ -0,0 +1 @@
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,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAG5E,eAAe,KAAK,EAAE,WAA6D,EAAE,QAAgB,EAAE,IAAY,EAAE,KAAc,EAAiB,EAAE;IACpJ,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG,UAAU,EAAc,CAAA;IAE/D,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAA;IAElE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;QACjC,SAAS,EAAE,SAAS;QACpB,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE;YAC3B,KAAK,IAAI,CACP,MAAM,EACN,KAAK,CACN,CAAC,IAAI,CAAC,GAAG,EAAE;gBACV,MAAM,CAAC,KAAK,EAAE,CAAA;YAChB,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAA;IAE3D,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,IAAmB,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;QACvC,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,GAAG,CAAC,MAAM,CAAC,CAC9B,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,GAAG,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,WAAW,EAAE,CAAA,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAChG,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { TestSetup } from '../index.js';
2
+ import type { StreamMuxerFactory } from '@libp2p/interface/stream-muxer';
3
+ declare const _default: (common: TestSetup<StreamMuxerFactory>) => void;
4
+ export default _default;
5
+ //# sourceMappingURL=stress-test.d.ts.map
@@ -0,0 +1 @@
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,gCAAgC,CAAA;iCAE9E,UAAU,kBAAkB,CAAC,KAAG,IAAI;AAA5D,wBAsBC"}
@@ -0,0 +1,23 @@
1
+ import spawn from './spawner.js';
2
+ export default (common) => {
3
+ const createMuxer = async (init) => {
4
+ const factory = await common.setup();
5
+ return factory.createStreamMuxer(init);
6
+ };
7
+ describe('stress test', function () {
8
+ this.timeout(800000);
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 () => { await spawn(createMuxer, 1000, 100); });
21
+ });
22
+ };
23
+ //# sourceMappingURL=stress-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stress-test.js","sourceRoot":"","sources":["../../../src/stream-muxer/stress-test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAA;AAIhC,eAAe,CAAC,MAAqC,EAAQ,EAAE;IAC7D,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,CAAC,CAAA;IACxC,CAAC,CAAA;IAED,QAAQ,CAAC,aAAa,EAAE;QACtB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAEpB,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QACzE,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QAC3E,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QAC7E,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QAC5E,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QAC9E,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QAChF,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QAC9E,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QAChF,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QAClF,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QAChF,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QAClF,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;IACtF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { TransportTestFixtures } from './index.js';
2
+ import type { TestSetup } from '../index.js';
3
+ declare const _default: (common: TestSetup<TransportTestFixtures>) => void;
4
+ export default _default;
5
+ //# sourceMappingURL=dial-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dial-test.d.ts","sourceRoot":"","sources":["../../../src/transport/dial-test.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,qBAAqB,EAAa,MAAM,YAAY,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;iCAKpB,UAAU,qBAAqB,CAAC,KAAG,IAAI;AAA/D,wBA2GC"}
@@ -0,0 +1,98 @@
1
+ import { AbortError } from '@libp2p/interface/errors';
2
+ import { EventEmitter } from '@libp2p/interface/events';
3
+ import { expect } from 'aegir/chai';
4
+ import all from 'it-all';
5
+ import drain from 'it-drain';
6
+ import { pipe } from 'it-pipe';
7
+ import sinon from 'sinon';
8
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
9
+ import { isValidTick } from '../is-valid-tick.js';
10
+ import { mockUpgrader, mockRegistrar } from '../mocks/index.js';
11
+ export default (common) => {
12
+ describe('dial', () => {
13
+ let upgrader;
14
+ let registrar;
15
+ let addrs;
16
+ let transport;
17
+ let connector;
18
+ let listener;
19
+ before(async () => {
20
+ registrar = mockRegistrar();
21
+ upgrader = mockUpgrader({
22
+ registrar,
23
+ events: new EventEmitter()
24
+ });
25
+ ({ addrs, transport, connector } = await common.setup());
26
+ });
27
+ after(async () => {
28
+ await common.teardown();
29
+ });
30
+ beforeEach(async () => {
31
+ listener = transport.createListener({
32
+ upgrader
33
+ });
34
+ await listener.listen(addrs[0]);
35
+ });
36
+ afterEach(async () => {
37
+ sinon.restore();
38
+ connector.restore();
39
+ await listener.close();
40
+ });
41
+ it('simple', async () => {
42
+ const protocol = '/hello/1.0.0';
43
+ void registrar.handle(protocol, (data) => {
44
+ void pipe([
45
+ uint8ArrayFromString('hey')
46
+ ], data.stream, drain);
47
+ });
48
+ const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound');
49
+ const conn = await transport.dial(addrs[0], {
50
+ upgrader
51
+ });
52
+ const stream = await conn.newStream([protocol]);
53
+ const result = await all(stream.source);
54
+ expect(upgradeSpy.callCount).to.equal(1);
55
+ await expect(upgradeSpy.getCall(0).returnValue).to.eventually.equal(conn);
56
+ expect(result.length).to.equal(1);
57
+ expect(result[0].subarray()).to.equalBytes(uint8ArrayFromString('hey'));
58
+ await conn.close();
59
+ });
60
+ it('can close connections', async () => {
61
+ const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound');
62
+ const conn = await transport.dial(addrs[0], {
63
+ upgrader
64
+ });
65
+ expect(upgradeSpy.callCount).to.equal(1);
66
+ await expect(upgradeSpy.getCall(0).returnValue).to.eventually.equal(conn);
67
+ await conn.close();
68
+ expect(isValidTick(conn.stat.timeline.close)).to.equal(true);
69
+ });
70
+ it('to non existent listener', async () => {
71
+ const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound');
72
+ await expect(transport.dial(addrs[1], {
73
+ upgrader
74
+ })).to.eventually.be.rejected();
75
+ expect(upgradeSpy.callCount).to.equal(0);
76
+ });
77
+ it('abort before dialing throws AbortError', async () => {
78
+ const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound');
79
+ const controller = new AbortController();
80
+ controller.abort();
81
+ const conn = transport.dial(addrs[0], { signal: controller.signal, upgrader });
82
+ await expect(conn).to.eventually.be.rejected().with.property('code', AbortError.code);
83
+ expect(upgradeSpy.callCount).to.equal(0);
84
+ });
85
+ it('abort while dialing throws AbortError', async () => {
86
+ const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound');
87
+ // Add a delay to connect() so that we can abort while the dial is in
88
+ // progress
89
+ connector.delay(100);
90
+ const controller = new AbortController();
91
+ const conn = transport.dial(addrs[0], { signal: controller.signal, upgrader });
92
+ setTimeout(() => { controller.abort(); }, 50);
93
+ await expect(conn).to.eventually.be.rejected().with.property('code', AbortError.code);
94
+ expect(upgradeSpy.callCount).to.equal(0);
95
+ });
96
+ });
97
+ };
98
+ //# sourceMappingURL=dial-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dial-test.js","sourceRoot":"","sources":["../../../src/transport/dial-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { TransportTestFixtures } from './index.js';
2
+ import type { TestSetup } from '../index.js';
3
+ declare const _default: (common: TestSetup<TransportTestFixtures>) => void;
4
+ export default _default;
5
+ //# sourceMappingURL=filter-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-test.d.ts","sourceRoot":"","sources":["../../../src/transport/filter-test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;iCAIpB,UAAU,qBAAqB,CAAC,KAAG,IAAI;AAA/D,wBAkBC"}
@@ -0,0 +1,18 @@
1
+ import { expect } from 'aegir/chai';
2
+ export default (common) => {
3
+ describe('filter', () => {
4
+ let addrs;
5
+ let transport;
6
+ before(async () => {
7
+ ({ addrs, transport } = await common.setup());
8
+ });
9
+ after(async () => {
10
+ await common.teardown();
11
+ });
12
+ it('filters addresses', () => {
13
+ const filteredAddrs = transport.filter(addrs);
14
+ expect(filteredAddrs).to.eql(addrs);
15
+ });
16
+ });
17
+ };
18
+ //# sourceMappingURL=filter-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-test.js","sourceRoot":"","sources":["../../../src/transport/filter-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAMnC,eAAe,CAAC,MAAwC,EAAQ,EAAE;IAChE,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,IAAI,KAAkB,CAAA;QACtB,IAAI,SAAoB,CAAA;QAExB,MAAM,CAAC,KAAK,IAAI,EAAE;YAChB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;QAC/C,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;QACzB,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC3B,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC7C,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -0,0 +1,15 @@
1
+ import type { TestSetup } from '../index.js';
2
+ import type { Transport } from '@libp2p/interface/transport';
3
+ import type { Multiaddr } from '@multiformats/multiaddr';
4
+ export interface Connector {
5
+ delay: (ms: number) => void;
6
+ restore: () => void;
7
+ }
8
+ export interface TransportTestFixtures {
9
+ addrs: Multiaddr[];
10
+ transport: Transport;
11
+ connector: Connector;
12
+ }
13
+ declare const _default: (common: TestSetup<TransportTestFixtures>) => void;
14
+ export default _default;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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,6BAA6B,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;CACrB;iCAEuB,UAAU,qBAAqB,CAAC,KAAG,IAAI;AAA/D,wBAMC"}
@@ -0,0 +1,11 @@
1
+ import dial from './dial-test.js';
2
+ import filter from './filter-test.js';
3
+ import listen from './listen-test.js';
4
+ export default (common) => {
5
+ describe('interface-transport', () => {
6
+ dial(common);
7
+ listen(common);
8
+ filter(common);
9
+ });
10
+ };
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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;AAgBrC,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"}
@@ -0,0 +1,5 @@
1
+ import type { TransportTestFixtures } from './index.js';
2
+ import type { TestSetup } from '../index.js';
3
+ declare const _default: (common: TestSetup<TransportTestFixtures>) => void;
4
+ export default _default;
5
+ //# sourceMappingURL=listen-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listen-test.d.ts","sourceRoot":"","sources":["../../../src/transport/listen-test.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;iCAMpB,UAAU,qBAAqB,CAAC,KAAG,IAAI;AAA/D,wBA4KC"}
@@ -0,0 +1,152 @@
1
+ /* eslint max-nested-callbacks: ["error", 8] */
2
+ import { CustomEvent, EventEmitter } from '@libp2p/interface/events';
3
+ import { expect } from 'aegir/chai';
4
+ import drain from 'it-drain';
5
+ import { pipe } from 'it-pipe';
6
+ import defer from 'p-defer';
7
+ import pWaitFor from 'p-wait-for';
8
+ import sinon from 'sinon';
9
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
10
+ import { isValidTick } from '../is-valid-tick.js';
11
+ import { mockUpgrader, mockRegistrar } from '../mocks/index.js';
12
+ export default (common) => {
13
+ describe('listen', () => {
14
+ let upgrader;
15
+ let addrs;
16
+ let transport;
17
+ let registrar;
18
+ before(async () => {
19
+ registrar = mockRegistrar();
20
+ upgrader = mockUpgrader({
21
+ registrar,
22
+ events: new EventEmitter()
23
+ });
24
+ ({ transport, addrs } = await common.setup());
25
+ });
26
+ after(async () => {
27
+ await common.teardown();
28
+ });
29
+ afterEach(() => {
30
+ sinon.restore();
31
+ });
32
+ it('simple', async () => {
33
+ const listener = transport.createListener({
34
+ upgrader
35
+ });
36
+ await listener.listen(addrs[0]);
37
+ await listener.close();
38
+ });
39
+ it('close listener with connections, through timeout', async () => {
40
+ const upgradeSpy = sinon.spy(upgrader, 'upgradeInbound');
41
+ const listenerConns = [];
42
+ const protocol = '/test/protocol';
43
+ void registrar.handle(protocol, (data) => {
44
+ void drain(data.stream.source);
45
+ });
46
+ const listener = transport.createListener({
47
+ upgrader,
48
+ handler: (conn) => {
49
+ listenerConns.push(conn);
50
+ }
51
+ });
52
+ // Listen
53
+ await listener.listen(addrs[0]);
54
+ // Create two connections to the listener
55
+ const [conn1] = await Promise.all([
56
+ transport.dial(addrs[0], {
57
+ upgrader
58
+ }),
59
+ transport.dial(addrs[0], {
60
+ upgrader
61
+ })
62
+ ]);
63
+ // Give the listener a chance to finish its upgrade
64
+ await pWaitFor(() => listenerConns.length === 2);
65
+ const stream1 = await conn1.newStream([protocol]);
66
+ // Wait for the data send and close to finish
67
+ await Promise.all([
68
+ pipe([uint8ArrayFromString('Some data that is never handled')], stream1),
69
+ // Closer the listener (will take a couple of seconds to time out)
70
+ listener.close()
71
+ ]);
72
+ stream1.close();
73
+ await conn1.close();
74
+ expect(isValidTick(conn1.stat.timeline.close)).to.equal(true);
75
+ listenerConns.forEach(conn => {
76
+ expect(isValidTick(conn.stat.timeline.close)).to.equal(true);
77
+ });
78
+ // 2 dials = 2 connections upgraded
79
+ expect(upgradeSpy.callCount).to.equal(2);
80
+ });
81
+ it('should not handle connection if upgradeInbound throws', async () => {
82
+ sinon.stub(upgrader, 'upgradeInbound').throws();
83
+ const listener = transport.createListener({
84
+ upgrader
85
+ });
86
+ // Listen
87
+ await listener.listen(addrs[0]);
88
+ // Create a connection to the listener
89
+ const conn = await transport.dial(addrs[0], {
90
+ upgrader
91
+ });
92
+ await pWaitFor(() => typeof conn.stat.timeline.close === 'number');
93
+ await listener.close();
94
+ });
95
+ describe('events', () => {
96
+ it('connection', async () => {
97
+ const upgradeSpy = sinon.spy(upgrader, 'upgradeInbound');
98
+ const listener = transport.createListener({
99
+ upgrader
100
+ });
101
+ const deferred = defer();
102
+ let conn;
103
+ listener.addEventListener('connection', (evt) => {
104
+ conn = evt.detail;
105
+ deferred.resolve();
106
+ });
107
+ void (async () => {
108
+ await listener.listen(addrs[0]);
109
+ await transport.dial(addrs[0], {
110
+ upgrader
111
+ });
112
+ })();
113
+ await deferred.promise;
114
+ await expect(upgradeSpy.getCall(0).returnValue).to.eventually.equal(conn);
115
+ expect(upgradeSpy.callCount).to.equal(1);
116
+ await listener.close();
117
+ });
118
+ it('listening', (done) => {
119
+ const listener = transport.createListener({
120
+ upgrader
121
+ });
122
+ listener.addEventListener('listening', () => {
123
+ listener.close().then(done, done);
124
+ });
125
+ void listener.listen(addrs[0]);
126
+ });
127
+ it('error', (done) => {
128
+ const listener = transport.createListener({
129
+ upgrader
130
+ });
131
+ listener.addEventListener('error', (evt) => {
132
+ expect(evt.detail).to.be.an.instanceOf(Error);
133
+ listener.close().then(done, done);
134
+ });
135
+ listener.dispatchEvent(new CustomEvent('error', {
136
+ detail: new Error('my err')
137
+ }));
138
+ });
139
+ it('close', (done) => {
140
+ const listener = transport.createListener({
141
+ upgrader
142
+ });
143
+ listener.addEventListener('close', () => { done(); });
144
+ void (async () => {
145
+ await listener.listen(addrs[0]);
146
+ await listener.close();
147
+ })();
148
+ });
149
+ });
150
+ });
151
+ };
152
+ //# sourceMappingURL=listen-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listen-test.js","sourceRoot":"","sources":["../../../src/transport/listen-test.ts"],"names":[],"mappings":"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"}