Skip to content
This repository has been archived by the owner on Jul 21, 2023. It is now read-only.

feat: filter IPFS addrs correctly #62

Merged
merged 18 commits into from
Oct 20, 2017
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 12 additions & 7 deletions gulpfile.js → .aegir.js
Original file line number Diff line number Diff line change
@@ -1,24 +1,29 @@
'use strict'

const gulp = require('gulp')
const multiaddr = require('multiaddr')
const pull = require('pull-stream')

const WS = require('./src')

let listener

gulp.task('test:browser:before', (done) => {
function boot (done) {
const ws = new WS()
const ma = multiaddr('/ip4/127.0.0.1/tcp/9090/ws')
listener = ws.createListener((conn) => {
pull(conn, conn)
})
listener.listen(ma, done)
})
}

gulp.task('test:browser:after', (done) => {
function shutdown (done) {
listener.close(done)
})
}

require('aegir/gulp')(gulp)
module.exports = {
hooks: {
browser: {
pre: boot,
post: shutdown
}
}
}
24 changes: 9 additions & 15 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,18 @@ language: node_js

matrix:
include:
- node_js: 4
env: CXX=g++-4.8
- node_js: 6
env:
- SAUCE=true
- CXX=g++-4.8
- node_js: "stable"
env:
- CXX=g++-4.8

# Make sure we have new NPM.
before_install:
- npm install -g npm
env: CXX=g++-4.8
- node_js: 8
env: CXX=g++-4.8
# - node_js: stable
# env: CXX=g++-4.8

script:
- npm run lint
- npm test
- npm run test
- npm run coverage
- make test

before_script:
- export DISPLAY=:99.0
Expand All @@ -30,9 +24,9 @@ after_success:
- npm run coverage-publish

addons:
firefox: latest
firefox: 'latest'
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-4.8
- g++-4.8
14 changes: 10 additions & 4 deletions circle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,14 @@ machine:
dependencies:
pre:
- google-chrome --version
- wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
- sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
- curl -L -o google-chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
- for v in $(curl http://archive.ubuntu.com/ubuntu/pool/main/n/nss/ | grep "href=" | grep "libnss3.*deb\"" -o | grep -o "libnss3.*deb" | grep "3.28" | grep "14.04"); do curl -L -o $v http://archive.ubuntu.com/ubuntu/pool/main/n/nss/$v; done && rm libnss3-tools*_i386.deb libnss3-dev*_i386.deb
- sudo dpkg -i google-chrome.deb || true
- sudo dpkg -i libnss3*.deb || true
- sudo apt-get update
- sudo apt-get --only-upgrade install google-chrome-stable
- google-chrome --version
- sudo apt-get install -f || true
- sudo dpkg -i libnss3*.deb
- sudo apt-get install -f
- sudo apt-get install --only-upgrade lsb-base
- sudo dpkg -i google-chrome.deb
- google-chrome --version
24 changes: 12 additions & 12 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@
"description": "JavaScript implementation of the WebSockets module that libp2p uses and that implements the interface-transport spec",
"main": "src/index.js",
"scripts": {
"lint": "aegir-lint",
"test": "gulp test",
"test:node": "gulp test:node",
"test:browser": "gulp test:browser",
"build": "gulp build",
"release": "gulp release",
"release-minor": "gulp release --type minor",
"release-major": "gulp release --type major",
"coverage": "gulp coverage",
"coverage-publish": "aegir-coverage publish"
"lint": "aegir lint",
"build": "aegir build",
"test": "aegir test --target node --target browser",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

try with --no-parallel and increasing the timeout for the test with multiple writes

"test:node": "aegir test --target node",
"test:browser": "aegir test --target browser",
"release": "aegir test release --target node --target browser",
"release-minor": "aegir release --type minor --target node --target browser",
"release-major": "aegir release --type major --target node --target browser",
"coverage": "aegir coverage",
"coverage-publish": "aegir coverage --provider coveralls"
},
"browser": {
"pull-ws/server": false
Expand All @@ -38,11 +38,11 @@
"dependencies": {
"interface-connection": "~0.3.2",
"lodash.includes": "^4.3.0",
"mafmt": "^2.1.8",
"mafmt": "^3.0.1",
"pull-ws": "^3.2.9"
},
"devDependencies": {
"aegir": "^11.0.2",
"aegir": "^12.0.8",
"chai": "^4.1.1",
"dirty-chai": "^2.0.1",
"gulp": "^3.9.1",
Expand Down
8 changes: 7 additions & 1 deletion src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,16 @@ class WebSockets {
}

return multiaddrs.filter((ma) => {
if (includes(ma.protoNames(), 'p2p-circuit')) {
return false
}

if (includes(ma.protoNames(), 'ipfs')) {
ma = ma.decapsulate('ipfs')
}
return mafmt.WebSockets.matches(ma) || mafmt.WebSocketsSecure.matches(ma)

return mafmt.WebSockets.matches(ma) ||
mafmt.WebSocketsSecure.matches(ma)
})
}
}
Expand Down
4 changes: 2 additions & 2 deletions test/browser.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ describe('libp2p-websockets', () => {

describe('stress', () => {
it('one big write', (done) => {
const rawMessage = new Buffer(1000000).fill('a')
const rawMessage = Buffer.alloc(1000000).fill('a')

const s = goodbye({
source: pull.values([rawMessage]),
Expand All @@ -58,7 +58,7 @@ describe('libp2p-websockets', () => {
source: pull(
pull.infinite(),
pull.take(1000),
pull.map((val) => Buffer(val.toString()))
pull.map((val) => Buffer.from(val.toString()))
),
sink: pull.collect((err, result) => {
expect(err).to.not.exist()
Expand Down
4 changes: 3 additions & 1 deletion test/node.js
Original file line number Diff line number Diff line change
Expand Up @@ -295,8 +295,10 @@ describe('filter addrs', () => {
const ma2 = multiaddr('/ip4/127.0.0.1/tcp/9090')
const ma3 = multiaddr('/ip4/127.0.0.1/udp/9090')
const ma4 = multiaddr('/dns6/ipfs.io/ws')
const mh5 = multiaddr('/ip4/127.0.0.1/tcp/9090/ws/ipfs/Qmb6owHp6eaWArVbcJJbQSyifyJBttMMjYV76N2hMbf5Vw' +
'/p2p-circuit/ipfs/Qmb6owHp6eaWArVbcJJbQSyifyJBttMMjYV76N2hMbf5Vw')

const valid = ws.filter([ma1, ma2, ma3, ma4])
const valid = ws.filter([ma1, ma2, ma3, ma4, mh5])
expect(valid.length).to.equal(2)
expect(valid[0]).to.deep.equal(ma1)
expect(valid[1]).to.deep.equal(ma4)
Expand Down