Skip to content

Commit a2084f0

Browse files
committed
Merge pull request libp2p#31 from diasdavid/clean/browser-tests
WIP: clean browser tests, add badgers
2 parents 72f205e + 8c6ef52 commit a2084f0

File tree

7 files changed

+199
-205
lines changed

7 files changed

+199
-205
lines changed

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ libp2p-swarm JavaScript implementation
55
[![](https://img.shields.io/badge/project-IPFS-blue.svg?style=flat-square)](http://ipfs.io/)
66
[![](https://img.shields.io/badge/freenode-%23ipfs-blue.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23ipfs)
77
[![Build Status](https://img.shields.io/travis/diasdavid/js-libp2p-swarm/master.svg?style=flat-square)](https://travis-ci.org/diasdavid/js-libp2p-swarm)
8+
![](https://img.shields.io/badge/coverage-%3F-yellow.svg?style=flat-square)
9+
[![Dependency Status](https://david-dm.org/ipfs/js-libp2p-swarm.svg?style=flat-square)](https://david-dm.org/ipfs/js-libp2p-swarm)
10+
[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/feross/standard)
811

912
> libp2p swarm implementation in JavaScript
1013

karma.conf.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
1+
const path = require('path')
2+
13
module.exports = function (config) {
2-
var path = require('path')
3-
var nodeForgePath = path.resolve(__dirname, 'node_modules/peer-id/deps/forge.bundle.js')
4+
const nodeForgePath = path.resolve(__dirname, 'node_modules/peer-id/deps/forge.bundle.js')
45

56
config.set({
67
basePath: '',
78
frameworks: ['mocha'],
89

910
files: [
1011
nodeForgePath,
11-
'tests/browser.js'
12+
'tests/browser-nodejs/browser.js'
1213
],
1314

1415
preprocessors: {
15-
'tests/*': ['webpack']
16+
'tests/*': ['webpack'],
17+
'tests/browser-nodejs/*': ['webpack']
1618
},
1719

1820
webpack: {

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
{
22
"name": "libp2p-swarm",
33
"version": "0.9.0",
4-
"description": "libp2p swarm implementation in Node.js",
4+
"description": "libp2p swarm implementation in JavaScript",
55
"main": "src/index.js",
66
"scripts": {
77
"test:node": "mocha tests/*-test.js",
8-
"test:browser": "node tests/karma.js",
8+
"test:browser": "node tests/browser-nodejs/test.js",
99
"test": "npm run test:node && npm run test:browser",
1010
"coverage": "istanbul cover --print both -- _mocha tests/*-test.js",
1111
"lint": "standard"

tests/browser-nodejs/browser.js

+123
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
/* eslint-env mocha */
2+
3+
const expect = require('chai').expect
4+
const multiaddr = require('multiaddr')
5+
const Id = require('peer-id')
6+
const Peer = require('peer-info')
7+
const Swarm = require('./../../src')
8+
const WebSockets = require('libp2p-websockets')
9+
const bl = require('bl')
10+
11+
describe('basics', () => {
12+
it('throws on missing peerInfo', (done) => {
13+
expect(Swarm).to.throw(Error)
14+
done()
15+
})
16+
})
17+
18+
describe('transport - websockets', function () {
19+
this.timeout(10000)
20+
21+
var swarm
22+
23+
before((done) => {
24+
const b58IdSrc = 'QmYzgdesgjdvD3okTPGZT9NPmh1BuH5FfTVNKjsvaAprhb'
25+
// use a pre generated Id to save time
26+
const idSrc = Id.createFromB58String(b58IdSrc)
27+
const peerSrc = new Peer(idSrc)
28+
swarm = new Swarm(peerSrc)
29+
30+
done()
31+
})
32+
33+
it('add', (done) => {
34+
swarm.transport.add('ws', new WebSockets(), () => {
35+
expect(Object.keys(swarm.transports).length).to.equal(1)
36+
done()
37+
})
38+
})
39+
40+
it('dial', (done) => {
41+
const ma = multiaddr('/ip4/127.0.0.1/tcp/9100/websockets')
42+
43+
const conn = swarm.transport.dial('ws', ma, (err, conn) => {
44+
expect(err).to.not.exist
45+
})
46+
47+
conn.pipe(bl((err, data) => {
48+
expect(err).to.not.exist
49+
expect(data.toString()).to.equal('hey')
50+
done()
51+
}))
52+
conn.write('hey')
53+
conn.end()
54+
})
55+
})
56+
57+
describe('high level API - 1st without stream multiplexing (on websockets)', function () {
58+
this.timeout(10000)
59+
60+
var swarm
61+
var peerDst
62+
63+
before((done) => {
64+
const b58IdSrc = 'QmYzgdesgjdvD3okTPGZT9NPmh1BuH5FfTVNKjsvaAprhb'
65+
// use a pre generated Id to save time
66+
const idSrc = Id.createFromB58String(b58IdSrc)
67+
const peerSrc = new Peer(idSrc)
68+
swarm = new Swarm(peerSrc)
69+
70+
done()
71+
})
72+
73+
after((done) => {
74+
done()
75+
// swarm.close(done)
76+
})
77+
78+
it('add ws', (done) => {
79+
swarm.transport.add('ws', new WebSockets())
80+
expect(Object.keys(swarm.transports).length).to.equal(1)
81+
done()
82+
})
83+
84+
it('create Dst peer info', (done) => {
85+
const b58IdDst = 'QmYzgdesgjdvD3okTPGZT9NPmh1BuH5FfTVNKjsvaAprhb'
86+
// use a pre generated Id to save time
87+
const idDst = Id.createFromB58String(b58IdDst)
88+
peerDst = new Peer(idDst)
89+
90+
const ma = multiaddr('/ip4/127.0.0.1/tcp/9200/websockets')
91+
peerDst.multiaddr.add(ma)
92+
done()
93+
})
94+
95+
it('dial on protocol', (done) => {
96+
swarm.dial(peerDst, '/echo/1.0.0', (err, conn) => {
97+
expect(err).to.not.exist
98+
conn.pipe(bl((err, data) => {
99+
expect(err).to.not.exist
100+
expect(data.toString()).to.equal('hey')
101+
done()
102+
}))
103+
conn.write('hey')
104+
conn.end()
105+
})
106+
})
107+
108+
it('dial to warm a conn', (done) => {
109+
swarm.dial(peerDst, (err) => {
110+
expect(err).to.not.exist
111+
done()
112+
})
113+
})
114+
115+
it('dial on protocol, reuse warmed conn', (done) => {
116+
swarm.dial(peerDst, '/echo/1.0.0', (err, conn) => {
117+
expect(err).to.not.exist
118+
conn.end()
119+
conn.on('data', () => {}) // let it flow.. let it flooooow
120+
conn.on('end', done)
121+
})
122+
})
123+
})

tests/browser-nodejs/test.js

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
const Server = require('karma').Server
2+
const path = require('path')
3+
4+
const Peer = require('peer-info')
5+
const Id = require('peer-id')
6+
const WebSockets = require('libp2p-websockets')
7+
const Swarm = require('./../../src')
8+
const multiaddr = require('multiaddr')
9+
10+
var swarmA
11+
var swarmB
12+
13+
function createListeners (done) {
14+
function createListenerA (cb) {
15+
const b58IdA = 'QmWg2L4Fucx1x4KXJTfKHGixBJvveubzcd7DdhB2Mqwfh1'
16+
const peerA = new Peer(Id.createFromB58String(b58IdA))
17+
const maA = multiaddr('/ip4/127.0.0.1/tcp/9100/websockets')
18+
19+
peerA.multiaddr.add(maA)
20+
swarmA = new Swarm(peerA)
21+
swarmA.transport.add('ws', new WebSockets())
22+
swarmA.transport.listen('ws', {}, echo, cb)
23+
}
24+
25+
function createListenerB (cb) {
26+
const b58IdB = 'QmRy1iU6BHmG5Hd8rnPhPL98cy1W1przUSTAMcGDq9yAAV'
27+
const maB = multiaddr('/ip4/127.0.0.1/tcp/9200/websockets')
28+
const peerB = new Peer(Id.createFromB58String(b58IdB))
29+
peerB.multiaddr.add(maB)
30+
swarmB = new Swarm(peerB)
31+
32+
swarmB.transport.add('ws', new WebSockets())
33+
swarmB.transport.listen('ws', {}, null, cb)
34+
35+
swarmB.handle('/echo/1.0.0', echo)
36+
}
37+
38+
var count = 0
39+
const ready = () => ++count === 2 ? done() : null
40+
41+
createListenerA(ready)
42+
createListenerB(ready)
43+
44+
function echo (conn) {
45+
conn.pipe(conn)
46+
}
47+
}
48+
49+
function stop (done) {
50+
var count = 0
51+
const ready = () => ++count === 2 ? done() : null
52+
53+
swarmA.transport.close('ws', ready)
54+
swarmB.transport.close('ws', ready)
55+
}
56+
57+
function run (done) {
58+
const karma = new Server({
59+
configFile: path.join(__dirname, '../../karma.conf.js')
60+
}, done)
61+
62+
karma.start()
63+
}
64+
65+
createListeners(() => run(() => stop(() => null)))

tests/browser.js

-133
This file was deleted.

0 commit comments

Comments
 (0)