Skip to content
This repository was archived by the owner on Jul 21, 2023. It is now read-only.
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 2b3d8c0

Browse files
committedNov 1, 2022
fix: enable and fix browser tests
1 parent 520db99 commit 2b3d8c0

8 files changed

+106
-78
lines changed
 

‎.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ pids
1919
lib-cov
2020

2121
# Coverage directory used by tools like istanbul
22-
coverage
22+
.coverage
2323

2424
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
2525
.grunt

‎package.json

+8-3
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,12 @@
131131
"lint": "aegir lint",
132132
"build": "aegir build",
133133
"generate": "protons ./src/message/dht.proto",
134-
"test": "aegir test -t node",
135-
"test:node": "aegir test -t node",
134+
"test": "aegir test",
135+
"test:node": "aegir test -t node -f './dist/test/**/*.{node,spec}.js' --cov",
136+
"test:chrome": "aegir test -t browser -f './dist/test/**/*.spec.js' --cov",
137+
"test:chrome-webworker": "aegir test -t webworker -f './dist/test/**/*.spec.js'",
138+
"test:firefox": "aegir test -t browser -f './dist/test/**/*.spec.js' -- --browser firefox",
139+
"test:firefox-webworker": "aegir test -t webworker -f './dist/test/**/*.spec.js' -- --browser firefox",
136140
"dep-check": "aegir dep-check",
137141
"release": "aegir release"
138142
},
@@ -159,6 +163,7 @@
159163
"any-signal": "^3.0.0",
160164
"datastore-core": "^8.0.1",
161165
"err-code": "^3.0.1",
166+
"events": "^3.3.0",
162167
"hashlru": "^2.3.0",
163168
"interface-datastore": "^7.0.0",
164169
"it-all": "^1.0.6",
@@ -191,7 +196,7 @@
191196
"@types/lodash.range": "^3.2.6",
192197
"@types/varint": "^6.0.0",
193198
"@types/which": "^2.0.1",
194-
"aegir": "^37.0.8",
199+
"aegir": "^37.3.0",
195200
"datastore-level": "^9.0.0",
196201
"delay": "^5.0.0",
197202
"execa": "^6.0.0",

‎test/message.node.ts

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/* eslint-env mocha */
2+
3+
import { expect } from 'aegir/chai'
4+
import range from 'lodash.range'
5+
import fs from 'fs'
6+
import path from 'path'
7+
import { Message } from '../src/message/index.js'
8+
import { isPeerId } from '@libp2p/interface-peer-id'
9+
10+
describe('Message', () => {
11+
it('go-interop', () => {
12+
range(1, 9).forEach((i) => {
13+
const raw = fs.readFileSync(
14+
path.join(process.cwd(), 'test', 'fixtures', `msg-${i}`)
15+
)
16+
17+
const msg = Message.deserialize(raw)
18+
19+
expect(msg.clusterLevel).to.gte(0)
20+
if (msg.record != null) {
21+
expect(msg.record.key).to.be.a('Uint8Array')
22+
}
23+
24+
if (msg.providerPeers.length > 0) {
25+
msg.providerPeers.forEach((p) => {
26+
expect(isPeerId(p.id)).to.be.true()
27+
})
28+
}
29+
})
30+
})
31+
})

‎test/message.spec.ts

+1-26
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,11 @@
22

33
import { expect } from 'aegir/chai'
44
import { multiaddr } from '@multiformats/multiaddr'
5-
import range from 'lodash.range'
6-
import random from 'lodash.random'
5+
import random from 'lodash/random.js'
76
import { Libp2pRecord } from '@libp2p/record'
8-
import fs from 'fs'
9-
import path from 'path'
107
import { Message, MESSAGE_TYPE } from '../src/message/index.js'
118
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
129
import { createEd25519PeerId } from '@libp2p/peer-id-factory'
13-
import { isPeerId } from '@libp2p/interface-peer-id'
1410

1511
describe('Message', () => {
1612
it('create', () => {
@@ -88,25 +84,4 @@ describe('Message', () => {
8884
msg.clusterLevel = 10
8985
expect(msg.clusterLevel).to.eql(9)
9086
})
91-
92-
it('go-interop', () => {
93-
range(1, 9).forEach((i) => {
94-
const raw = fs.readFileSync(
95-
path.join(process.cwd(), 'test', 'fixtures', `msg-${i}`)
96-
)
97-
98-
const msg = Message.deserialize(raw)
99-
100-
expect(msg.clusterLevel).to.gte(0)
101-
if (msg.record != null) {
102-
expect(msg.record.key).to.be.a('Uint8Array')
103-
}
104-
105-
if (msg.providerPeers.length > 0) {
106-
msg.providerPeers.forEach((p) => {
107-
expect(isPeerId(p.id)).to.be.true()
108-
})
109-
}
110-
})
111-
})
11287
})

‎test/providers.node.ts

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/* eslint-env mocha */
2+
3+
import { LevelDatastore } from 'datastore-level'
4+
import path from 'path'
5+
import os from 'os'
6+
import { Providers } from '../src/providers.js'
7+
import { createValues } from './utils/create-values.js'
8+
import { createPeerIds } from './utils/create-peer-id.js'
9+
import { MemoryDatastore } from 'datastore-core/memory'
10+
11+
describe('Providers', () => {
12+
let providers: Providers
13+
14+
before(async function () {
15+
this.timeout(10 * 1000)
16+
})
17+
18+
afterEach(async () => {
19+
await providers?.stop()
20+
})
21+
22+
// slooow so only run when you need to
23+
it.skip('many', async function () {
24+
const p = path.join(
25+
os.tmpdir(), (Math.random() * 100).toString()
26+
)
27+
const store = new LevelDatastore(p)
28+
await store.open()
29+
providers = new Providers({
30+
datastore: new MemoryDatastore()
31+
}, {
32+
cacheSize: 10
33+
})
34+
35+
console.log('starting') // eslint-disable-line no-console
36+
const [createdValues, createdPeers] = await Promise.all([
37+
createValues(100),
38+
createPeerIds(600)
39+
])
40+
41+
console.log('got values and peers') // eslint-disable-line no-console
42+
const total = Date.now()
43+
44+
for (const v of createdValues) {
45+
for (const p of createdPeers) {
46+
await providers.addProvider(v.cid, p)
47+
}
48+
}
49+
50+
console.log('addProvider %s peers %s cids in %sms', createdPeers.length, createdValues.length, Date.now() - total) // eslint-disable-line no-console
51+
console.log('starting profile with %s peers and %s cids', createdPeers.length, createdValues.length) // eslint-disable-line no-console
52+
53+
for (let i = 0; i < 3; i++) {
54+
const start = Date.now()
55+
for (const v of createdValues) {
56+
await providers.getProviders(v.cid)
57+
console.log('query %sms', (Date.now() - start)) // eslint-disable-line no-console
58+
}
59+
}
60+
61+
await store.close()
62+
})
63+
})

‎test/providers.spec.ts

-46
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,8 @@ import { expect } from 'aegir/chai'
44
import { MemoryDatastore } from 'datastore-core/memory'
55
import { CID } from 'multiformats/cid'
66
import { sha256 } from 'multiformats/hashes/sha2'
7-
import { LevelDatastore } from 'datastore-level'
8-
import path from 'path'
9-
import os from 'os'
107
import { Providers } from '../src/providers.js'
118
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
12-
import { createValues } from './utils/create-values.js'
139
import { createPeerIds } from './utils/create-peer-id.js'
1410
import type { PeerId } from '@libp2p/interface-peer-id'
1511
import delay from 'delay'
@@ -114,46 +110,4 @@ describe('Providers', () => {
114110
expect(provsAfter).to.have.length(0)
115111
await providers.stop()
116112
})
117-
118-
// slooow so only run when you need to
119-
it.skip('many', async function () {
120-
const p = path.join(
121-
os.tmpdir(), (Math.random() * 100).toString()
122-
)
123-
const store = new LevelDatastore(p)
124-
await store.open()
125-
providers = new Providers({
126-
datastore: new MemoryDatastore()
127-
}, {
128-
cacheSize: 10
129-
})
130-
131-
console.log('starting') // eslint-disable-line no-console
132-
const [createdValues, createdPeers] = await Promise.all([
133-
createValues(100),
134-
createPeerIds(600)
135-
])
136-
137-
console.log('got values and peers') // eslint-disable-line no-console
138-
const total = Date.now()
139-
140-
for (const v of createdValues) {
141-
for (const p of createdPeers) {
142-
await providers.addProvider(v.cid, p)
143-
}
144-
}
145-
146-
console.log('addProvider %s peers %s cids in %sms', createdPeers.length, createdValues.length, Date.now() - total) // eslint-disable-line no-console
147-
console.log('starting profile with %s peers and %s cids', createdPeers.length, createdValues.length) // eslint-disable-line no-console
148-
149-
for (let i = 0; i < 3; i++) {
150-
const start = Date.now()
151-
for (const v of createdValues) {
152-
await providers.getProviders(v.cid)
153-
console.log('query %sms', (Date.now() - start)) // eslint-disable-line no-console
154-
}
155-
}
156-
157-
await store.close()
158-
})
159113
})

‎test/rpc/index.spec.ts ‎test/rpc/index.node.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,11 @@ describe('rpc', () => {
9797
}
9898
}
9999

100-
await rpc.onIncomingStream({
100+
rpc.onIncomingStream({
101101
stream: mockStream(duplexStream),
102102
connection: stubInterface<Connection>()
103103
})
104104

105-
return await defer.promise
105+
await defer.promise
106106
})
107107
})

0 commit comments

Comments
 (0)
This repository has been archived.