From af398738604835f29a60031b4aa93da574e81792 Mon Sep 17 00:00:00 2001 From: Dmitriy Ryajov Date: Fri, 24 Nov 2017 13:31:03 -0600 Subject: [PATCH] fix: circuit tests --- .aegir.js | 9 +++--- test/core/circuit-relay.spec.js | 34 +++++++++++---------- test/interop/circuit-relay.js | 45 ++++++++++++++++++++-------- test/interop/exchange-files.js | 8 +++-- test/utils/another-daemon-spawner.js | 29 ++++++++++++++++-- 5 files changed, 88 insertions(+), 37 deletions(-) diff --git a/.aegir.js b/.aegir.js index bd4bdbb6f0..7e3afed7aa 100644 --- a/.aegir.js +++ b/.aegir.js @@ -18,7 +18,8 @@ function start (done) { (cb) => js([`${base}/10012`, `${base}/20012/ws`], true, 31012, 32012, cb), (cb) => js([`${base}/10013`, `${base}/20013/ws`], true, 31013, 32013, cb), (cb) => js([`${base}/10014`, `${base}/20014/ws`], true, 31014, 32014, cb), - (cb) => js([`${base}/10015`, `${base}/20015/ws`], true, 31015, 32015, cb) + (cb) => js([`${base}/10015`, `${base}/20015/ws`], true, 31015, 32015, cb), + (cb) => go([`${base}/10027`, `${base}/20027/ws`], true, 33027, 44027, cb), // we need this for circuit for now ], done) } else if (process.env.IPFS_TEST === 'interop') { parallel([ @@ -38,9 +39,9 @@ module.exports = { pattern: 'node_modules/interface-ipfs-core/test/fixtures/**/*', watched: false, served: true, - included: false, - singleRun: false - }] + included: false + }], + singleRun: true }, hooks: { pre: start, diff --git a/test/core/circuit-relay.spec.js b/test/core/circuit-relay.spec.js index 4934b5cadb..85ee2f7477 100644 --- a/test/core/circuit-relay.spec.js +++ b/test/core/circuit-relay.spec.js @@ -10,7 +10,6 @@ const parallel = require('async/parallel') const series = require('async/series') const waterfall = require('async/waterfall') const API = require('ipfs-api') -const bl = require('bl') const PeerInfo = require('peer-info') const PeerId = require('peer-id') const multiaddr = require('multiaddr') @@ -34,7 +33,7 @@ describe.skip('circuit', function () { let factory let jsRelay = new API(`/ip4/127.0.0.1/tcp/31015`) - // let goRelay = new API(`/ip4/127.0.0.1/tcp/33031`) + let goRelay = new API(`/ip4/127.0.0.1/tcp/33027`) let node1 let node2 @@ -51,8 +50,8 @@ describe.skip('circuit', function () { const base = { EXPERIMENTAL: { - Relay: { - Enabled: true + relay: { + enabled: true } }, Addresses: { @@ -63,12 +62,12 @@ describe.skip('circuit', function () { parallel([ (cb) => factory.spawnNode(null, Object.assign(base, { Addresses: { - Swarm: [ (isNode ? `/ip4/127.0.0.1/tcp/0` : '') ] + Swarm: [(isNode ? `/ip4/127.0.0.1/tcp/0` : '')] } }), cb), (cb) => factory.spawnNode(null, Object.assign(base, { Addresses: { - Swarm: [ (isNode ? `/ip4/127.0.0.1/tcp/0/ws` : '') ] + Swarm: [(isNode ? `/ip4/127.0.0.1/tcp/0/ws` : '')] } }), cb) ], (err, nodes) => { @@ -78,20 +77,20 @@ describe.skip('circuit', function () { parallel([ (cb) => jsRelay.id(cb), - // (cb) => goRelay.id(cb), + (cb) => goRelay.id(cb), (cb) => node1.id(cb), (cb) => node2.id(cb) ], (err, res2) => { expect(err).to.not.exist() parallel([ (cb) => peerInfoFromObj(res2[0], cb), - // (cb) => peerInfoFromObj(res2[1], cb), + (cb) => peerInfoFromObj(res2[1], cb), (cb) => peerInfoFromObj(res2[1], cb), (cb) => peerInfoFromObj(res2[2], cb) ], (err, res3) => { expect(err).to.not.exist() jsRelayId = res3[0] - // goRelayId = res3[1] + goRelayId = res3[1] // nodeId1 = res3[2] nodeId2 = res3[2] done() @@ -102,9 +101,7 @@ describe.skip('circuit', function () { after((done) => factory.dismantle(done)) - // TODO: 1) figure out why this test hangs randomly - // TODO: 2) move this test to the interop batch - it.skip('node1 <-> goRelay <-> node2', (done) => { + it('node1 <-> goRelay <-> node2', (done) => { const data = crypto.randomBytes(128) series([ @@ -115,15 +112,19 @@ describe.skip('circuit', function () { (cb) => node1.swarm.connect(nodeId2, cb) ], (err) => { expect(err).to.not.exist() + waterfall([ (cb) => node1.files.add(data, cb), (filesAdded, cb) => node2.files.cat(filesAdded[0].hash, cb), - (stream, cb) => stream.pipe(bl(cb)) + (buffer, cb) => { + expect(buffer).to.deep.equal(data) + cb() + } ], done) }) }) - it('node1 <-> jsRelay <-> node2', (done) => { + it.skip('node1 <-> jsRelay <-> node2', (done) => { const data = crypto.randomBytes(128) series([ @@ -138,7 +139,10 @@ describe.skip('circuit', function () { waterfall([ (cb) => node1.files.add(data, cb), (filesAdded, cb) => node2.files.cat(filesAdded[0].hash, cb), - (stream, cb) => stream.pipe(bl(cb)) + (buffer, cb) => { + expect(buffer).to.deep.equal(data) + cb() + } ], done) }) }) diff --git a/test/interop/circuit-relay.js b/test/interop/circuit-relay.js index 2bf1c707dc..20fb065fe7 100644 --- a/test/interop/circuit-relay.js +++ b/test/interop/circuit-relay.js @@ -8,7 +8,6 @@ const expect = chai.expect chai.use(dirtyChai) const parallel = require('async/parallel') const series = require('async/series') -const bl = require('bl') const waterfall = require('async/waterfall') const multiaddr = require('multiaddr') const crypto = require('crypto') @@ -18,7 +17,7 @@ const js = ads.spawnJsNode const go = ads.spawnGoNode const stop = ads.stopNodes -describe.skip('circuit interop', () => { +describe('circuit interop', () => { let jsTCP let jsTCPAddrs let jsWS @@ -33,7 +32,8 @@ describe.skip('circuit interop', () => { let goWSAddrs let goWS - beforeEach((done) => { + beforeEach(function (done) { + this.timeout(20 * 1000) const base = '/ip4/127.0.0.1/tcp' parallel([ @@ -61,7 +61,7 @@ describe.skip('circuit interop', () => { }) }) - afterEach(() => stop()) + afterEach((done) => stop(done)) it('jsWS <-> jsRelay <-> jsTCP', (done) => { const data = crypto.randomBytes(128) @@ -75,7 +75,10 @@ describe.skip('circuit interop', () => { waterfall([ (cb) => jsTCP.files.add(data, cb), (res, cb) => jsWS.files.cat(res[0].hash, cb), - (stream, cb) => stream.pipe(bl(cb)) + (buffer, cb) => { + expect(buffer).to.deep.equal(data) + cb() + } ], done) }) }) @@ -92,7 +95,10 @@ describe.skip('circuit interop', () => { waterfall([ (cb) => goTCP.files.add(data, cb), (res, cb) => goWS.files.cat(res[0].hash, cb), - (stream, cb) => stream.pipe(bl(cb)) + (buffer, cb) => { + expect(buffer).to.deep.equal(data) + cb() + } ], done) }) }) @@ -109,7 +115,10 @@ describe.skip('circuit interop', () => { waterfall([ (cb) => goTCP.files.add(data, cb), (res, cb) => jsWS.files.cat(res[0].hash, cb), - (stream, cb) => stream.pipe(bl(cb)) + (buffer, cb) => { + expect(buffer).to.deep.equal(data) + cb() + } ], done) }) }) @@ -117,8 +126,9 @@ describe.skip('circuit interop', () => { it('jsTCP <-> goRelay <-> jsWS', (done) => { const data = crypto.randomBytes(128) series([ - (cb) => jsTCP.swarm.connect(goRelayAddrs[2], cb), + (cb) => jsTCP.swarm.connect(goRelayAddrs[1], cb), (cb) => jsWS.swarm.connect(goRelayAddrs[0], cb), + (cb) => jsTCP.swarm.connect(goRelayAddrs[1], cb), (cb) => setTimeout(cb, 1000), (cb) => jsWS.swarm.connect(jsTCPAddrs[0], cb) ], (err) => { @@ -126,7 +136,10 @@ describe.skip('circuit interop', () => { waterfall([ (cb) => jsTCP.files.add(data, cb), (res, cb) => jsWS.files.cat(res[0].hash, cb), - (stream, cb) => stream.pipe(bl(cb)) + (buffer, cb) => { + expect(buffer).to.deep.equal(data) + cb() + } ], done) }) }) @@ -135,7 +148,7 @@ describe.skip('circuit interop', () => { const data = crypto.randomBytes(128) series([ (cb) => goWS.swarm.connect(goRelayAddrs[0], cb), - (cb) => goTCP.swarm.connect(goRelayAddrs[2], cb), + (cb) => goTCP.swarm.connect(goRelayAddrs[1], cb), (cb) => setTimeout(cb, 1000), (cb) => goWS.swarm.connect(`/p2p-circuit/ipfs/${multiaddr(goTCPAddrs[0]).getPeerId()}`, cb) ], (err) => { @@ -143,7 +156,10 @@ describe.skip('circuit interop', () => { waterfall([ (cb) => goTCP.files.add(data, cb), (res, cb) => goWS.files.cat(res[0].hash, cb), - (stream, cb) => stream.pipe(bl(cb)) + (buffer, cb) => { + expect(buffer).to.deep.equal(data) + cb() + } ], done) }) }) @@ -152,7 +168,7 @@ describe.skip('circuit interop', () => { const data = crypto.randomBytes(128) series([ (cb) => jsWS.swarm.connect(goRelayAddrs[0], cb), - (cb) => goTCP.swarm.connect(goRelayAddrs[2], cb), + (cb) => goTCP.swarm.connect(goRelayAddrs[1], cb), (cb) => setTimeout(cb, 1000), (cb) => goTCP.swarm.connect(`/p2p-circuit/ipfs/${multiaddr(jsWSAddrs[0]).getPeerId()}`, cb) ], (err) => { @@ -160,7 +176,10 @@ describe.skip('circuit interop', () => { waterfall([ (cb) => goTCP.files.add(data, cb), (res, cb) => jsWS.files.cat(res[0].hash, cb), - (stream, cb) => stream.pipe(bl(cb)) + (buffer, cb) => { + expect(buffer).to.deep.equal(data) + cb() + } ], done) }) }) diff --git a/test/interop/exchange-files.js b/test/interop/exchange-files.js index 1c14ff57ef..6cd623df81 100644 --- a/test/interop/exchange-files.js +++ b/test/interop/exchange-files.js @@ -179,7 +179,9 @@ describe('exchange files', () => { }) }) - it(`js -> go: depth: 5, num: ${num}`, () => { + it(`js -> go: depth: 5, num: ${num}`, function () { + this.timeout(6000) + const dir = tmpDir() return randomFs({ path: dir, @@ -196,7 +198,9 @@ describe('exchange files', () => { }) }) - it(`js -> js: depth: 5, num: ${num}`, () => { + it(`js -> js: depth: 5, num: ${num}`, function () { + this.timeout(6000) + const dir = tmpDir() return randomFs({ path: dir, diff --git a/test/utils/another-daemon-spawner.js b/test/utils/another-daemon-spawner.js index c8d2295c5a..5b9da091e9 100644 --- a/test/utils/another-daemon-spawner.js +++ b/test/utils/another-daemon-spawner.js @@ -45,6 +45,16 @@ exports.spawnGoNode = (addrs, hop, api, gateway, callback) => { DisableNatPortMap: false, DisableRelay: false, EnableRelayHop: hop + }, + API: { + HTTPHeaders: { + 'Access-Control-Allow-Origin': ['*'], + 'Access-Control-Allow-Methods': [ + 'PUT', + 'POST', + 'GET' + ] + } } } }) @@ -92,10 +102,23 @@ exports.spawnJsNode = (addrs, hop, api, gateway, callback) => { API: `/ip4/0.0.0.0/tcp/${api}`, Gateway: `/ip4/0.0.0.0/tcp/${gateway}` }, + API: { + HTTPHeaders: { + 'Access-Control-Allow-Origin': ['*'], + 'Access-Control-Allow-Methods': [ + 'PUT', + 'POST', + 'GET' + ] + } + }, EXPERIMENTAL: { - Swarm: { - DisableRelay: false, - EnableRelayHop: hop + relay: { + enabled: true, + hop: { + enabled: hop, + active: false + } } } }), cb),