@libp2p/interface-compliance-tests 6.1.8 → 6.1.9
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/dist/src/matchers.d.ts +6 -0
- package/dist/src/matchers.d.ts.map +1 -1
- package/dist/src/matchers.js +6 -0
- package/dist/src/matchers.js.map +1 -1
- package/dist/src/mocks/index.d.ts +0 -2
- package/dist/src/mocks/index.d.ts.map +1 -1
- package/dist/src/mocks/index.js +0 -2
- package/dist/src/mocks/index.js.map +1 -1
- package/dist/src/mocks/muxer.d.ts +8 -3
- package/dist/src/mocks/muxer.d.ts.map +1 -1
- package/dist/src/mocks/muxer.js +15 -6
- package/dist/src/mocks/muxer.js.map +1 -1
- package/dist/src/mocks/upgrader.d.ts.map +1 -1
- package/dist/src/mocks/upgrader.js +0 -1
- package/dist/src/mocks/upgrader.js.map +1 -1
- package/dist/src/transport/index.d.ts +23 -10
- package/dist/src/transport/index.d.ts.map +1 -1
- package/dist/src/transport/index.js +418 -6
- package/dist/src/transport/index.js.map +1 -1
- package/dist/src/transport/utils.d.ts +17 -0
- package/dist/src/transport/utils.d.ts.map +1 -0
- package/dist/src/transport/utils.js +63 -0
- package/dist/src/transport/utils.js.map +1 -0
- package/dist/typedoc-urls.json +1 -6
- package/package.json +11 -10
- package/src/matchers.ts +6 -0
- package/src/mocks/index.ts +0 -2
- package/src/mocks/muxer.ts +24 -10
- package/src/mocks/upgrader.ts +1 -3
- package/src/transport/index.ts +570 -16
- package/src/transport/utils.ts +76 -0
- 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 -135
- package/dist/src/connection/index.js.map +0 -1
- package/dist/src/mocks/connection-gater.d.ts +0 -3
- package/dist/src/mocks/connection-gater.d.ts.map +0 -1
- package/dist/src/mocks/connection-gater.js +0 -17
- package/dist/src/mocks/connection-gater.js.map +0 -1
- package/dist/src/mocks/metrics.d.ts +0 -3
- package/dist/src/mocks/metrics.d.ts.map +0 -1
- package/dist/src/mocks/metrics.js +0 -286
- package/dist/src/mocks/metrics.js.map +0 -1
- package/dist/src/mocks/peer-discovery.d.ts +0 -21
- package/dist/src/mocks/peer-discovery.d.ts.map +0 -1
- package/dist/src/mocks/peer-discovery.js +0 -47
- package/dist/src/mocks/peer-discovery.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 -99
- 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 -24
- package/dist/src/transport/filter-test.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 -154
- package/dist/src/transport/listen-test.js.map +0 -1
- package/src/connection/index.ts +0 -166
- package/src/mocks/connection-gater.ts +0 -18
- package/src/mocks/metrics.ts +0 -385
- package/src/mocks/peer-discovery.ts +0 -59
- package/src/transport/dial-test.ts +0 -125
- package/src/transport/filter-test.ts +0 -32
- package/src/transport/listen-test.ts +0 -192
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
/* eslint max-nested-callbacks: ["error", 8] */
|
|
2
|
-
import { TypedEventEmitter } from '@libp2p/interface'
|
|
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
|
-
import type { TransportTestFixtures } from './index.js'
|
|
13
|
-
import type { TestSetup } from '../index.js'
|
|
14
|
-
import type { Connection, Transport, Upgrader } from '@libp2p/interface'
|
|
15
|
-
import type { Registrar } from '@libp2p/interface-internal'
|
|
16
|
-
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
17
|
-
|
|
18
|
-
export default (common: TestSetup<TransportTestFixtures>): void => {
|
|
19
|
-
describe('listen', () => {
|
|
20
|
-
let upgrader: Upgrader
|
|
21
|
-
let listenAddrs: Multiaddr[]
|
|
22
|
-
let dialAddrs: Multiaddr[]
|
|
23
|
-
let dialer: Transport
|
|
24
|
-
let listener: Transport
|
|
25
|
-
let registrar: Registrar
|
|
26
|
-
|
|
27
|
-
before(async () => {
|
|
28
|
-
registrar = mockRegistrar()
|
|
29
|
-
upgrader = mockUpgrader({
|
|
30
|
-
registrar,
|
|
31
|
-
events: new TypedEventEmitter()
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
({ dialer, listener, listenAddrs, dialAddrs } = await common.setup())
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
after(async () => {
|
|
38
|
-
await common.teardown()
|
|
39
|
-
})
|
|
40
|
-
|
|
41
|
-
afterEach(() => {
|
|
42
|
-
sinon.restore()
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
it('simple', async () => {
|
|
46
|
-
const listen = listener.createListener({
|
|
47
|
-
upgrader
|
|
48
|
-
})
|
|
49
|
-
await listen.listen(listenAddrs[0])
|
|
50
|
-
await listen.close()
|
|
51
|
-
})
|
|
52
|
-
|
|
53
|
-
it('close listener with connections, through timeout', async () => {
|
|
54
|
-
const upgradeSpy = sinon.spy(upgrader, 'upgradeInbound')
|
|
55
|
-
const listenerConns: Connection[] = []
|
|
56
|
-
|
|
57
|
-
const protocol = '/test/protocol'
|
|
58
|
-
void registrar.handle(protocol, (data) => {
|
|
59
|
-
void drain(data.stream.source)
|
|
60
|
-
})
|
|
61
|
-
|
|
62
|
-
const listen = listener.createListener({
|
|
63
|
-
upgrader,
|
|
64
|
-
handler: (conn) => {
|
|
65
|
-
listenerConns.push(conn)
|
|
66
|
-
}
|
|
67
|
-
})
|
|
68
|
-
|
|
69
|
-
// Listen
|
|
70
|
-
await listen.listen(listenAddrs[0])
|
|
71
|
-
|
|
72
|
-
// Create two connections to the listener
|
|
73
|
-
const [conn1] = await Promise.all([
|
|
74
|
-
dialer.dial(dialAddrs[0], {
|
|
75
|
-
upgrader
|
|
76
|
-
}),
|
|
77
|
-
dialer.dial(dialAddrs[0], {
|
|
78
|
-
upgrader
|
|
79
|
-
})
|
|
80
|
-
])
|
|
81
|
-
|
|
82
|
-
// Give the listener a chance to finish its upgrade
|
|
83
|
-
await pWaitFor(() => listenerConns.length === 2)
|
|
84
|
-
|
|
85
|
-
const stream1 = await conn1.newStream([protocol])
|
|
86
|
-
|
|
87
|
-
// Wait for the data send and close to finish
|
|
88
|
-
await Promise.all([
|
|
89
|
-
pipe(
|
|
90
|
-
[uint8ArrayFromString('Some data that is never handled')],
|
|
91
|
-
stream1
|
|
92
|
-
),
|
|
93
|
-
// Closer the listener (will take a couple of seconds to time out)
|
|
94
|
-
listen.close()
|
|
95
|
-
])
|
|
96
|
-
|
|
97
|
-
await stream1.close()
|
|
98
|
-
await conn1.close()
|
|
99
|
-
|
|
100
|
-
expect(isValidTick(conn1.timeline.close)).to.equal(true)
|
|
101
|
-
listenerConns.forEach(conn => {
|
|
102
|
-
expect(isValidTick(conn.timeline.close)).to.equal(true)
|
|
103
|
-
})
|
|
104
|
-
|
|
105
|
-
// 2 dials = 2 connections upgraded
|
|
106
|
-
expect(upgradeSpy.callCount).to.equal(2)
|
|
107
|
-
})
|
|
108
|
-
|
|
109
|
-
it('should not handle connection if upgradeInbound rejects', async () => {
|
|
110
|
-
sinon.stub(upgrader, 'upgradeInbound').rejects()
|
|
111
|
-
|
|
112
|
-
const listen = listener.createListener({
|
|
113
|
-
upgrader
|
|
114
|
-
})
|
|
115
|
-
|
|
116
|
-
// Listen
|
|
117
|
-
await listen.listen(listenAddrs[0])
|
|
118
|
-
|
|
119
|
-
// Create a connection to the listener
|
|
120
|
-
const conn = await dialer.dial(dialAddrs[0], {
|
|
121
|
-
upgrader
|
|
122
|
-
})
|
|
123
|
-
|
|
124
|
-
await pWaitFor(() => typeof conn.timeline.close === 'number')
|
|
125
|
-
await listen.close()
|
|
126
|
-
})
|
|
127
|
-
|
|
128
|
-
describe('events', () => {
|
|
129
|
-
it('connection', async () => {
|
|
130
|
-
const upgradeSpy = sinon.spy(upgrader, 'upgradeInbound')
|
|
131
|
-
const listen = listener.createListener({
|
|
132
|
-
upgrader
|
|
133
|
-
})
|
|
134
|
-
const deferred = defer()
|
|
135
|
-
let conn
|
|
136
|
-
|
|
137
|
-
listen.addEventListener('connection', (evt) => {
|
|
138
|
-
conn = evt.detail
|
|
139
|
-
deferred.resolve()
|
|
140
|
-
})
|
|
141
|
-
|
|
142
|
-
void (async () => {
|
|
143
|
-
await listen.listen(listenAddrs[0])
|
|
144
|
-
await dialer.dial(dialAddrs[0], {
|
|
145
|
-
upgrader
|
|
146
|
-
})
|
|
147
|
-
})()
|
|
148
|
-
|
|
149
|
-
await deferred.promise
|
|
150
|
-
|
|
151
|
-
await expect(upgradeSpy.getCall(0).returnValue).to.eventually.equal(conn)
|
|
152
|
-
expect(upgradeSpy.callCount).to.equal(1)
|
|
153
|
-
await listen.close()
|
|
154
|
-
})
|
|
155
|
-
|
|
156
|
-
it('listening', (done) => {
|
|
157
|
-
const listen = listener.createListener({
|
|
158
|
-
upgrader
|
|
159
|
-
})
|
|
160
|
-
listen.addEventListener('listening', () => {
|
|
161
|
-
listen.close().then(done, done)
|
|
162
|
-
})
|
|
163
|
-
void listen.listen(listenAddrs[0])
|
|
164
|
-
})
|
|
165
|
-
|
|
166
|
-
it('error', (done) => {
|
|
167
|
-
const listen = listener.createListener({
|
|
168
|
-
upgrader
|
|
169
|
-
})
|
|
170
|
-
listen.addEventListener('error', (evt) => {
|
|
171
|
-
expect(evt.detail).to.be.an.instanceOf(Error)
|
|
172
|
-
listen.close().then(done, done)
|
|
173
|
-
})
|
|
174
|
-
listen.dispatchEvent(new CustomEvent('error', {
|
|
175
|
-
detail: new Error('my err')
|
|
176
|
-
}))
|
|
177
|
-
})
|
|
178
|
-
|
|
179
|
-
it('close', (done) => {
|
|
180
|
-
const listen = listener.createListener({
|
|
181
|
-
upgrader
|
|
182
|
-
})
|
|
183
|
-
listen.addEventListener('close', () => { done() })
|
|
184
|
-
|
|
185
|
-
void (async () => {
|
|
186
|
-
await listen.listen(listenAddrs[0])
|
|
187
|
-
await listen.close()
|
|
188
|
-
})()
|
|
189
|
-
})
|
|
190
|
-
})
|
|
191
|
-
})
|
|
192
|
-
}
|