@libp2p/interface-compliance-tests 3.0.7 → 4.0.0-e66f4891

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 (184) hide show
  1. package/README.md +12 -3
  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 +150 -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 +19 -0
  13. package/dist/src/connection-encryption/utils/index.js.map +1 -0
  14. package/dist/src/index.d.ts.map +1 -1
  15. package/dist/src/is-valid-tick.d.ts.map +1 -1
  16. package/dist/src/is-valid-tick.js.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 +29 -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 +167 -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 +60 -0
  48. package/dist/src/mocks/multiaddr-connection.js.map +1 -0
  49. package/dist/src/mocks/muxer.d.ts +36 -0
  50. package/dist/src/mocks/muxer.d.ts.map +1 -0
  51. package/dist/src/mocks/muxer.js +213 -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/pubsub/api.d.ts +6 -0
  70. package/dist/src/pubsub/api.d.ts.map +1 -0
  71. package/dist/src/pubsub/api.js +87 -0
  72. package/dist/src/pubsub/api.js.map +1 -0
  73. package/dist/src/pubsub/connection-handlers.d.ts +6 -0
  74. package/dist/src/pubsub/connection-handlers.d.ts.map +1 -0
  75. package/dist/src/pubsub/connection-handlers.js +329 -0
  76. package/dist/src/pubsub/connection-handlers.js.map +1 -0
  77. package/dist/src/pubsub/emit-self.d.ts +6 -0
  78. package/dist/src/pubsub/emit-self.d.ts.map +1 -0
  79. package/dist/src/pubsub/emit-self.js +80 -0
  80. package/dist/src/pubsub/emit-self.js.map +1 -0
  81. package/dist/src/pubsub/index.d.ts +18 -0
  82. package/dist/src/pubsub/index.d.ts.map +1 -0
  83. package/dist/src/pubsub/index.js +17 -0
  84. package/dist/src/pubsub/index.js.map +1 -0
  85. package/dist/src/pubsub/messages.d.ts +6 -0
  86. package/dist/src/pubsub/messages.d.ts.map +1 -0
  87. package/dist/src/pubsub/messages.js +48 -0
  88. package/dist/src/pubsub/messages.js.map +1 -0
  89. package/dist/src/pubsub/multiple-nodes.d.ts +6 -0
  90. package/dist/src/pubsub/multiple-nodes.d.ts.map +1 -0
  91. package/dist/src/pubsub/multiple-nodes.js +350 -0
  92. package/dist/src/pubsub/multiple-nodes.js.map +1 -0
  93. package/dist/src/pubsub/two-nodes.d.ts +6 -0
  94. package/dist/src/pubsub/two-nodes.d.ts.map +1 -0
  95. package/dist/src/pubsub/two-nodes.js +217 -0
  96. package/dist/src/pubsub/two-nodes.js.map +1 -0
  97. package/dist/src/pubsub/utils.d.ts +6 -0
  98. package/dist/src/pubsub/utils.d.ts.map +1 -0
  99. package/dist/src/pubsub/utils.js +22 -0
  100. package/dist/src/pubsub/utils.js.map +1 -0
  101. package/dist/src/stream-muxer/base-test.d.ts +5 -0
  102. package/dist/src/stream-muxer/base-test.d.ts.map +1 -0
  103. package/dist/src/stream-muxer/base-test.js +153 -0
  104. package/dist/src/stream-muxer/base-test.js.map +1 -0
  105. package/dist/src/stream-muxer/close-test.d.ts +5 -0
  106. package/dist/src/stream-muxer/close-test.d.ts.map +1 -0
  107. package/dist/src/stream-muxer/close-test.js +357 -0
  108. package/dist/src/stream-muxer/close-test.js.map +1 -0
  109. package/dist/src/stream-muxer/fixtures/pb/message.d.ts +13 -0
  110. package/dist/src/stream-muxer/fixtures/pb/message.d.ts.map +1 -0
  111. package/dist/src/stream-muxer/fixtures/pb/message.js +67 -0
  112. package/dist/src/stream-muxer/fixtures/pb/message.js.map +1 -0
  113. package/dist/src/stream-muxer/index.d.ts +5 -0
  114. package/dist/src/stream-muxer/index.d.ts.map +1 -0
  115. package/dist/src/stream-muxer/index.js +13 -0
  116. package/dist/src/stream-muxer/index.js.map +1 -0
  117. package/dist/src/stream-muxer/mega-stress-test.d.ts +5 -0
  118. package/dist/src/stream-muxer/mega-stress-test.d.ts.map +1 -0
  119. package/dist/src/stream-muxer/mega-stress-test.js +11 -0
  120. package/dist/src/stream-muxer/mega-stress-test.js.map +1 -0
  121. package/dist/src/stream-muxer/spawner.d.ts +4 -0
  122. package/dist/src/stream-muxer/spawner.d.ts.map +1 -0
  123. package/dist/src/stream-muxer/spawner.js +37 -0
  124. package/dist/src/stream-muxer/spawner.js.map +1 -0
  125. package/dist/src/stream-muxer/stress-test.d.ts +5 -0
  126. package/dist/src/stream-muxer/stress-test.d.ts.map +1 -0
  127. package/dist/src/stream-muxer/stress-test.js +23 -0
  128. package/dist/src/stream-muxer/stress-test.js.map +1 -0
  129. package/dist/src/transport/dial-test.d.ts +5 -0
  130. package/dist/src/transport/dial-test.d.ts.map +1 -0
  131. package/dist/src/transport/dial-test.js +98 -0
  132. package/dist/src/transport/dial-test.js.map +1 -0
  133. package/dist/src/transport/filter-test.d.ts +5 -0
  134. package/dist/src/transport/filter-test.d.ts.map +1 -0
  135. package/dist/src/transport/filter-test.js +18 -0
  136. package/dist/src/transport/filter-test.js.map +1 -0
  137. package/dist/src/transport/index.d.ts +15 -0
  138. package/dist/src/transport/index.d.ts.map +1 -0
  139. package/dist/src/transport/index.js +11 -0
  140. package/dist/src/transport/index.js.map +1 -0
  141. package/dist/src/transport/listen-test.d.ts +5 -0
  142. package/dist/src/transport/listen-test.d.ts.map +1 -0
  143. package/dist/src/transport/listen-test.js +152 -0
  144. package/dist/src/transport/listen-test.js.map +1 -0
  145. package/package.json +74 -97
  146. package/src/connection/index.ts +182 -0
  147. package/src/connection-encryption/index.ts +97 -0
  148. package/src/connection-encryption/utils/index.ts +24 -0
  149. package/src/index.ts +0 -1
  150. package/src/is-valid-tick.ts +0 -1
  151. package/src/mocks/connection-encrypter.ts +113 -0
  152. package/src/mocks/connection-gater.ts +18 -0
  153. package/src/mocks/connection-manager.ts +211 -0
  154. package/src/mocks/connection.ts +226 -0
  155. package/src/mocks/duplex.ts +10 -0
  156. package/src/mocks/index.ts +12 -0
  157. package/src/mocks/metrics.ts +162 -0
  158. package/src/mocks/multiaddr-connection.ts +76 -0
  159. package/src/mocks/muxer.ts +303 -0
  160. package/src/mocks/peer-discovery.ts +60 -0
  161. package/src/mocks/registrar.ts +88 -0
  162. package/src/mocks/upgrader.ts +49 -0
  163. package/src/peer-discovery/index.ts +90 -0
  164. package/src/pubsub/api.ts +114 -0
  165. package/src/pubsub/connection-handlers.ts +413 -0
  166. package/src/pubsub/emit-self.ts +99 -0
  167. package/src/pubsub/index.ts +34 -0
  168. package/src/pubsub/messages.ts +59 -0
  169. package/src/pubsub/multiple-nodes.ts +440 -0
  170. package/src/pubsub/two-nodes.ts +273 -0
  171. package/src/pubsub/utils.ts +29 -0
  172. package/src/stream-muxer/base-test.ts +196 -0
  173. package/src/stream-muxer/close-test.ts +442 -0
  174. package/src/stream-muxer/fixtures/pb/message.proto +7 -0
  175. package/src/stream-muxer/fixtures/pb/message.ts +87 -0
  176. package/src/stream-muxer/index.ts +15 -0
  177. package/src/stream-muxer/mega-stress-test.ts +14 -0
  178. package/src/stream-muxer/spawner.ts +55 -0
  179. package/src/stream-muxer/stress-test.ts +27 -0
  180. package/src/transport/dial-test.ts +124 -0
  181. package/src/transport/filter-test.ts +25 -0
  182. package/src/transport/index.ts +25 -0
  183. package/src/transport/listen-test.ts +191 -0
  184. package/dist/typedoc-urls.json +0 -3
@@ -0,0 +1,48 @@
1
+ import { start, stop } from '@libp2p/interface/startable';
2
+ import { expect } from 'aegir/chai';
3
+ import { pEvent } from 'p-event';
4
+ import sinon from 'sinon';
5
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
6
+ import { mockNetwork } from '../mocks/index.js';
7
+ import { createComponents } from './utils.js';
8
+ const topic = 'foo';
9
+ const data = uint8ArrayFromString('bar');
10
+ export default (common) => {
11
+ describe('messages', () => {
12
+ let pubsub;
13
+ let components;
14
+ // Create pubsub router
15
+ beforeEach(async () => {
16
+ mockNetwork.reset();
17
+ components = await createComponents();
18
+ pubsub = components.pubsub = await common.setup({
19
+ components,
20
+ init: {
21
+ emitSelf: true
22
+ }
23
+ });
24
+ await start(...Object.values(components));
25
+ });
26
+ afterEach(async () => {
27
+ sinon.restore();
28
+ await stop(...Object.values(components));
29
+ await common.teardown();
30
+ mockNetwork.reset();
31
+ });
32
+ it('should emit normalized signed messages on publish', async () => {
33
+ const eventPromise = pEvent(pubsub, 'message');
34
+ pubsub.globalSignaturePolicy = 'StrictSign';
35
+ pubsub.subscribe(topic);
36
+ await pubsub.publish(topic, data);
37
+ const event = await eventPromise;
38
+ const message = event.detail;
39
+ if (message.type === 'signed') {
40
+ expect(message.from.toString()).to.equal(components.peerId.toString());
41
+ expect(message.sequenceNumber).to.not.eql(undefined);
42
+ expect(message.key).to.not.eql(undefined);
43
+ expect(message.signature).to.not.eql(undefined);
44
+ }
45
+ });
46
+ });
47
+ };
48
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/pubsub/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAK7C,MAAM,KAAK,GAAG,KAAK,CAAA;AACnB,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;AAExC,eAAe,CAAC,MAAqC,EAAQ,EAAE;IAC7D,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,IAAI,MAAc,CAAA;QAClB,IAAI,UAA4B,CAAA;QAEhC,uBAAuB;QACvB,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,WAAW,CAAC,KAAK,EAAE,CAAA;YACnB,UAAU,GAAG,MAAM,gBAAgB,EAAE,CAAA;YAErC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;gBAC9C,UAAU;gBACV,IAAI,EAAE;oBACJ,QAAQ,EAAE,IAAI;iBACf;aACF,CAAC,CAAA;YACF,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;QAC3C,CAAC,CAAC,CAAA;QAEF,SAAS,CAAC,KAAK,IAAI,EAAE;YACnB,KAAK,CAAC,OAAO,EAAE,CAAA;YACf,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;YACxC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;YACvB,WAAW,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,YAAY,GAAG,MAAM,CAAkC,MAAM,EAAE,SAAS,CAAC,CAAA;YAE/E,MAAM,CAAC,qBAAqB,GAAG,YAAY,CAAA;YAC3C,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YACvB,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAEjC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAA;YAChC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAA;YAE5B,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAC7B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;gBACtE,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBACpD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBACzC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;aAChD;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { PubSubArgs } from './index.js';
2
+ import type { TestSetup } from '../index.js';
3
+ import type { PubSub } from '@libp2p/interface/pubsub';
4
+ declare const _default: (common: TestSetup<PubSub, PubSubArgs>) => void;
5
+ export default _default;
6
+ //# sourceMappingURL=multiple-nodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiple-nodes.d.ts","sourceRoot":"","sources":["../../../src/pubsub/multiple-nodes.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,YAAY,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAW,MAAM,EAAE,MAAM,0BAA0B,CAAA;iCAEvC,UAAU,MAAM,EAAE,UAAU,CAAC,KAAG,IAAI;AAA5D,wBAwaC"}
@@ -0,0 +1,350 @@
1
+ /* eslint max-nested-callbacks: ["error", 6] */
2
+ import { start, stop } from '@libp2p/interface/startable';
3
+ import { expect } from 'aegir/chai';
4
+ import delay from 'delay';
5
+ import pDefer from 'p-defer';
6
+ import pWaitFor from 'p-wait-for';
7
+ import sinon from 'sinon';
8
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
9
+ import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
10
+ import { mockNetwork } from '../mocks/index.js';
11
+ import { createComponents, waitForSubscriptionUpdate } from './utils.js';
12
+ export default (common) => {
13
+ describe('pubsub with multiple nodes', function () {
14
+ describe('every peer subscribes to the topic', () => {
15
+ describe('line', () => {
16
+ // line
17
+ // ◉────◉────◉
18
+ // a b c
19
+ let psA;
20
+ let psB;
21
+ let psC;
22
+ let componentsA;
23
+ let componentsB;
24
+ let componentsC;
25
+ // Create and start pubsub nodes
26
+ beforeEach(async () => {
27
+ mockNetwork.reset();
28
+ componentsA = await createComponents();
29
+ componentsB = await createComponents();
30
+ componentsC = await createComponents();
31
+ psA = componentsA.pubsub = await common.setup({
32
+ components: componentsA,
33
+ init: {
34
+ emitSelf: true
35
+ }
36
+ });
37
+ psB = componentsB.pubsub = await common.setup({
38
+ components: componentsB,
39
+ init: {
40
+ emitSelf: true
41
+ }
42
+ });
43
+ psC = componentsC.pubsub = await common.setup({
44
+ components: componentsC,
45
+ init: {
46
+ emitSelf: true
47
+ }
48
+ });
49
+ // Start pubsub modes
50
+ await start(...Object.values(componentsA), ...Object.values(componentsB), ...Object.values(componentsC));
51
+ // Connect nodes
52
+ await componentsA.connectionManager.openConnection(componentsB.peerId);
53
+ await componentsB.connectionManager.openConnection(componentsC.peerId);
54
+ // Wait for peers to be ready in pubsub
55
+ await pWaitFor(() => psA.getPeers().length === 1 &&
56
+ psC.getPeers().length === 1 &&
57
+ psA.getPeers().length === 1);
58
+ });
59
+ afterEach(async () => {
60
+ sinon.restore();
61
+ await stop(...Object.values(componentsA), ...Object.values(componentsB), ...Object.values(componentsC));
62
+ await common.teardown();
63
+ mockNetwork.reset();
64
+ });
65
+ it('subscribe to the topic on node a', async () => {
66
+ const topic = 'Z';
67
+ psA.subscribe(topic);
68
+ expect(psA.getTopics()).to.deep.equal([topic]);
69
+ await waitForSubscriptionUpdate(psB, componentsA.peerId);
70
+ expect(psB.getPeers().length).to.equal(2);
71
+ expect(psB.getSubscribers(topic).map(p => p.toString())).to.deep.equal([componentsA.peerId.toString()]);
72
+ expect(psC.getPeers().length).to.equal(1);
73
+ expect(psC.getSubscribers(topic)).to.be.empty();
74
+ });
75
+ it('subscribe to the topic on node b', async () => {
76
+ const topic = 'Z';
77
+ psB.subscribe(topic);
78
+ expect(psB.getTopics()).to.deep.equal([topic]);
79
+ await Promise.all([
80
+ waitForSubscriptionUpdate(psA, componentsB.peerId),
81
+ waitForSubscriptionUpdate(psC, componentsB.peerId)
82
+ ]);
83
+ expect(psA.getPeers().length).to.equal(1);
84
+ expect(psA.getSubscribers(topic).map(p => p.toString())).to.deep.equal([componentsB.peerId.toString()]);
85
+ expect(psC.getPeers().length).to.equal(1);
86
+ expect(psC.getSubscribers(topic).map(p => p.toString())).to.deep.equal([componentsB.peerId.toString()]);
87
+ });
88
+ it('subscribe to the topic on node c', async () => {
89
+ const topic = 'Z';
90
+ const defer = pDefer();
91
+ psC.subscribe(topic);
92
+ expect(psC.getTopics()).to.deep.equal([topic]);
93
+ psB.addEventListener('subscription-change', () => {
94
+ expect(psA.getPeers().length).to.equal(1);
95
+ expect(psB.getPeers().length).to.equal(2);
96
+ expect(psB.getSubscribers(topic).map(p => p.toString())).to.deep.equal([componentsC.peerId.toString()]);
97
+ defer.resolve();
98
+ }, {
99
+ once: true
100
+ });
101
+ return defer.promise;
102
+ });
103
+ it('publish on node a', async () => {
104
+ const topic = 'Z';
105
+ const defer = pDefer();
106
+ psA.subscribe(topic);
107
+ psB.subscribe(topic);
108
+ psC.subscribe(topic);
109
+ await Promise.all([
110
+ waitForSubscriptionUpdate(psA, componentsB.peerId),
111
+ waitForSubscriptionUpdate(psB, componentsA.peerId),
112
+ waitForSubscriptionUpdate(psC, componentsB.peerId)
113
+ ]);
114
+ // GossipSub needs time to build the mesh overlay
115
+ await delay(1000);
116
+ let counter = 0;
117
+ psA.addEventListener('message', incMsg);
118
+ psB.addEventListener('message', incMsg);
119
+ psC.addEventListener('message', incMsg);
120
+ const result = await psA.publish(topic, uint8ArrayFromString('hey'));
121
+ expect(result).to.have.property('recipients').with.property('length').greaterThanOrEqual(1);
122
+ function incMsg(evt) {
123
+ const msg = evt.detail;
124
+ if (msg.topic !== topic) {
125
+ return;
126
+ }
127
+ expect(uint8ArrayToString(msg.data)).to.equal('hey');
128
+ check();
129
+ }
130
+ function check() {
131
+ if (++counter === 3) {
132
+ psA.removeEventListener('message', incMsg);
133
+ psB.removeEventListener('message', incMsg);
134
+ psC.removeEventListener('message', incMsg);
135
+ defer.resolve();
136
+ }
137
+ }
138
+ return defer.promise;
139
+ });
140
+ // since the topology is the same, just the publish
141
+ // gets sent by other peer, we reused the same peers
142
+ describe('1 level tree', () => {
143
+ // 1 level tree
144
+ // ┌◉┐
145
+ // │b│
146
+ // ◉─┘ └─◉
147
+ // a c
148
+ it('publish on node b', async () => {
149
+ const topic = 'Z';
150
+ const defer = pDefer();
151
+ let counter = 0;
152
+ psA.subscribe(topic);
153
+ psB.subscribe(topic);
154
+ psC.subscribe(topic);
155
+ await Promise.all([
156
+ waitForSubscriptionUpdate(psA, componentsB.peerId),
157
+ waitForSubscriptionUpdate(psB, componentsA.peerId),
158
+ waitForSubscriptionUpdate(psC, componentsB.peerId)
159
+ ]);
160
+ // GossipSub needs time to build the mesh overlay
161
+ await delay(1000);
162
+ psA.addEventListener('message', incMsg);
163
+ psB.addEventListener('message', incMsg);
164
+ psC.addEventListener('message', incMsg);
165
+ await psB.publish(topic, uint8ArrayFromString('hey'));
166
+ function incMsg(evt) {
167
+ const msg = evt.detail;
168
+ if (msg.topic !== topic) {
169
+ return;
170
+ }
171
+ expect(uint8ArrayToString(msg.data)).to.equal('hey');
172
+ check();
173
+ }
174
+ function check() {
175
+ if (++counter === 3) {
176
+ psA.removeEventListener('message', incMsg);
177
+ psB.removeEventListener('message', incMsg);
178
+ psC.removeEventListener('message', incMsg);
179
+ defer.resolve();
180
+ }
181
+ }
182
+ return defer.promise;
183
+ });
184
+ });
185
+ });
186
+ describe('2 level tree', () => {
187
+ // 2 levels tree
188
+ // ┌◉┐
189
+ // │c│
190
+ // ┌◉─┘ └─◉┐
191
+ // │b d│
192
+ // ◉─┘ └─◉
193
+ // a
194
+ let psA;
195
+ let psB;
196
+ let psC;
197
+ let psD;
198
+ let psE;
199
+ let componentsA;
200
+ let componentsB;
201
+ let componentsC;
202
+ let componentsD;
203
+ let componentsE;
204
+ // Create and start pubsub nodes
205
+ beforeEach(async () => {
206
+ mockNetwork.reset();
207
+ componentsA = await createComponents();
208
+ componentsB = await createComponents();
209
+ componentsC = await createComponents();
210
+ componentsD = await createComponents();
211
+ componentsE = await createComponents();
212
+ psA = componentsA.pubsub = await common.setup({
213
+ components: componentsA,
214
+ init: {
215
+ emitSelf: true
216
+ }
217
+ });
218
+ psB = componentsB.pubsub = await common.setup({
219
+ components: componentsB,
220
+ init: {
221
+ emitSelf: true
222
+ }
223
+ });
224
+ psC = componentsC.pubsub = await common.setup({
225
+ components: componentsC,
226
+ init: {
227
+ emitSelf: true
228
+ }
229
+ });
230
+ psD = componentsD.pubsub = await common.setup({
231
+ components: componentsD,
232
+ init: {
233
+ emitSelf: true
234
+ }
235
+ });
236
+ psE = componentsE.pubsub = await common.setup({
237
+ components: componentsE,
238
+ init: {
239
+ emitSelf: true
240
+ }
241
+ });
242
+ // Start pubsub nodes
243
+ await start(...Object.values(componentsA), ...Object.values(componentsB), ...Object.values(componentsC), ...Object.values(componentsD), ...Object.values(componentsE));
244
+ // connect nodes
245
+ await componentsA.connectionManager.openConnection(componentsB.peerId);
246
+ await componentsB.connectionManager.openConnection(componentsC.peerId);
247
+ await componentsC.connectionManager.openConnection(componentsD.peerId);
248
+ await componentsD.connectionManager.openConnection(componentsE.peerId);
249
+ // Wait for peers to be ready in pubsub
250
+ await pWaitFor(() => psA.getPeers().length === 1 &&
251
+ psB.getPeers().length === 2 &&
252
+ psC.getPeers().length === 2 &&
253
+ psD.getPeers().length === 2 &&
254
+ psE.getPeers().length === 1);
255
+ });
256
+ afterEach(async () => {
257
+ await stop(...Object.values(componentsA), ...Object.values(componentsB), ...Object.values(componentsC), ...Object.values(componentsD), ...Object.values(componentsE));
258
+ await common.teardown();
259
+ mockNetwork.reset();
260
+ });
261
+ it('subscribes', () => {
262
+ psA.subscribe('Z');
263
+ expect(psA.getTopics()).to.deep.equal(['Z']);
264
+ psB.subscribe('Z');
265
+ expect(psB.getTopics()).to.deep.equal(['Z']);
266
+ psC.subscribe('Z');
267
+ expect(psC.getTopics()).to.deep.equal(['Z']);
268
+ psD.subscribe('Z');
269
+ expect(psD.getTopics()).to.deep.equal(['Z']);
270
+ psE.subscribe('Z');
271
+ expect(psE.getTopics()).to.deep.equal(['Z']);
272
+ });
273
+ it('publishes from c', async function () {
274
+ const defer = pDefer();
275
+ let counter = 0;
276
+ const topic = 'Z';
277
+ psA.subscribe(topic);
278
+ psA.addEventListener('message', incMsg);
279
+ psB.subscribe(topic);
280
+ psB.addEventListener('message', incMsg);
281
+ psC.subscribe(topic);
282
+ psC.addEventListener('message', incMsg);
283
+ psD.subscribe(topic);
284
+ psD.addEventListener('message', incMsg);
285
+ psE.subscribe(topic);
286
+ psE.addEventListener('message', incMsg);
287
+ await Promise.all([
288
+ waitForSubscriptionUpdate(psA, componentsB.peerId),
289
+ waitForSubscriptionUpdate(psB, componentsA.peerId),
290
+ waitForSubscriptionUpdate(psC, componentsB.peerId),
291
+ waitForSubscriptionUpdate(psD, componentsC.peerId),
292
+ waitForSubscriptionUpdate(psE, componentsD.peerId)
293
+ ]);
294
+ // GossipSub needs time to build the mesh overlay
295
+ await delay(1000);
296
+ await psC.publish('Z', uint8ArrayFromString('hey from c'));
297
+ function incMsg(evt) {
298
+ const msg = evt.detail;
299
+ if (msg.topic !== topic) {
300
+ return;
301
+ }
302
+ expect(uint8ArrayToString(msg.data)).to.equal('hey from c');
303
+ check();
304
+ }
305
+ function check() {
306
+ if (++counter === 5) {
307
+ psA.unsubscribe('Z');
308
+ psB.unsubscribe('Z');
309
+ psC.unsubscribe('Z');
310
+ psD.unsubscribe('Z');
311
+ psE.unsubscribe('Z');
312
+ defer.resolve();
313
+ }
314
+ }
315
+ return defer.promise;
316
+ });
317
+ });
318
+ });
319
+ describe('only some nodes subscribe the networks', () => {
320
+ describe('line', () => {
321
+ // line
322
+ // ◉────◎────◉
323
+ // a b c
324
+ before(() => { });
325
+ after(() => { });
326
+ });
327
+ describe('1 level tree', () => {
328
+ // 1 level tree
329
+ // ┌◉┐
330
+ // │b│
331
+ // ◎─┘ └─◉
332
+ // a c
333
+ before(() => { });
334
+ after(() => { });
335
+ });
336
+ describe('2 level tree', () => {
337
+ // 2 levels tree
338
+ // ┌◉┐
339
+ // │c│
340
+ // ┌◎─┘ └─◉┐
341
+ // │b d│
342
+ // ◉─┘ └─◎
343
+ // a e
344
+ before(() => { });
345
+ after(() => { });
346
+ });
347
+ });
348
+ });
349
+ };
350
+ //# sourceMappingURL=multiple-nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiple-nodes.js","sourceRoot":"","sources":["../../../src/pubsub/multiple-nodes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { PubSubArgs } from './index.js';
2
+ import type { TestSetup } from '../index.js';
3
+ import type { PubSub } from '@libp2p/interface/pubsub';
4
+ declare const _default: (common: TestSetup<PubSub, PubSubArgs>) => void;
5
+ export default _default;
6
+ //# sourceMappingURL=two-nodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"two-nodes.d.ts","sourceRoot":"","sources":["../../../src/pubsub/two-nodes.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,YAAY,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAW,MAAM,EAAE,MAAM,0BAA0B,CAAA;iCAQvC,UAAU,MAAM,EAAE,UAAU,CAAC,KAAG,IAAI;AAA5D,wBA2PC"}