From 25455861378dc505723cdba6721d7b55eec1a744 Mon Sep 17 00:00:00 2001 From: Dmitriy Ryajov Date: Thu, 21 Dec 2017 10:30:40 -0600 Subject: [PATCH 1/3] feat: use new ipfsd-ctl --- src/block.js | 10 ++++---- src/config.js | 10 ++++---- src/dag.js | 10 ++++---- src/dht.js | 19 ++++++++------- src/files.js | 10 ++++---- src/key.js | 10 ++++---- src/miscellaneous.js | 12 +++++----- src/object.js | 12 +++++----- src/pin.js | 10 ++++---- src/pubsub.js | 29 ++++++++++++----------- src/swarm.js | 56 +++++++++++++++++++++++++++++--------------- 11 files changed, 111 insertions(+), 77 deletions(-) diff --git a/src/block.js b/src/block.js index d0cf8af68..fb827a822 100644 --- a/src/block.js +++ b/src/block.js @@ -20,23 +20,25 @@ function expectKey (block, expected, callback) { module.exports = (common) => { describe('.block', () => { let ipfs + let ipfsd before(function (done) { // CI takes longer to instantiate the daemon, so we need to increase the // timeout for the before step this.timeout(60 * 1000) - common.setup((err, factory) => { + common.setup((err, df) => { expect(err).to.not.exist() - factory.spawnNode((err, node) => { + df.spawn((err, node) => { expect(err).to.not.exist() - ipfs = node + ipfsd = node + ipfs = node.api done() }) }) }) - after((done) => common.teardown(done)) + after((done) => ipfsd.stop(done)) describe('.put', () => { it('a buffer, using defaults', (done) => { diff --git a/src/config.js b/src/config.js index 1cff56c81..02fc284d8 100644 --- a/src/config.js +++ b/src/config.js @@ -12,23 +12,25 @@ module.exports = (common) => { describe('.config', function () { this.timeout(30 * 1000) let ipfs + let ipfsd before(function (done) { // CI takes longer to instantiate the daemon, so we need to increase the // timeout for the before step this.timeout(60 * 1000) - common.setup((err, factory) => { + common.setup((err, df) => { expect(err).to.not.exist() - factory.spawnNode((err, node) => { + df.spawn((err, node) => { expect(err).to.not.exist() - ipfs = node + ipfsd = node + ipfs = node.api done() }) }) }) - after((done) => common.teardown(done)) + after((done) => ipfsd.stop(done)) describe('.get', () => { it('retrieve the whole config', (done) => { diff --git a/src/dag.js b/src/dag.js index a8a70cac8..72e3cdcbc 100644 --- a/src/dag.js +++ b/src/dag.js @@ -17,23 +17,25 @@ const CID = require('cids') module.exports = (common) => { describe('.dag', () => { let ipfs + let ipfsd before(function (done) { // CI takes longer to instantiate the daemon, so we need to increase the // timeout for the before step this.timeout(60 * 1000) - common.setup((err, factory) => { + common.setup((err, df) => { expect(err).to.not.exist() - factory.spawnNode((err, node) => { + df.spawn((err, node) => { expect(err).to.not.exist() - ipfs = node + ipfs = node.api + ipfsd = node done() }) }) }) - after((done) => common.teardown(done)) + after((done) => ipfsd.stop(done)) let pbNode let cborNode diff --git a/src/dht.js b/src/dht.js index 06af6e920..b460f383a 100644 --- a/src/dht.js +++ b/src/dht.js @@ -10,14 +10,14 @@ const series = require('async/series') const parallel = require('async/parallel') const CID = require('cids') -function spawnWithId (factory, callback) { +function spawnWithId (df, callback) { waterfall([ - (cb) => factory.spawnNode(cb), - (node, cb) => node.id((err, peerId) => { + (cb) => df.spawn(cb), + (node, cb) => node.api.id((err, peerId) => { if (err) { return cb(err) } - node.peerId = peerId + node.api.peerId = peerId cb(null, node) }) ], callback) @@ -31,6 +31,7 @@ module.exports = (common) => { let nodeB let nodeC + let ipfsdNodes before(function (done) { // CI takes longer to instantiate the daemon, so we need to increase the // timeout for the before step @@ -45,9 +46,11 @@ module.exports = (common) => { ], (err, nodes) => { expect(err).to.not.exist() - nodeA = nodes[0] - nodeB = nodes[1] - nodeC = nodes[2] + ipfsdNodes = nodes + + nodeA = nodes[0].api + nodeB = nodes[1].api + nodeC = nodes[2].api parallel([ (cb) => nodeA.swarm.connect(nodeB.peerId.addresses[0], cb), @@ -58,7 +61,7 @@ module.exports = (common) => { }) }) - after((done) => common.teardown(done)) + after((done) => parallel(ipfsdNodes.map((node) => (cb) => node.stop(cb)), done)) describe('.get and .put', () => { it('errors when getting a non-existent key from the DHT', (done) => { diff --git a/src/files.js b/src/files.js index 417251566..6249c636a 100644 --- a/src/files.js +++ b/src/files.js @@ -24,6 +24,7 @@ module.exports = (common) => { this.timeout(40 * 1000) let ipfs + let ipfsd function fixture (path) { return loadFixture(__dirname, path, 'interface-ipfs-core') @@ -55,17 +56,18 @@ module.exports = (common) => { // timeout for the before step this.timeout(60 * 1000) - common.setup((err, factory) => { + common.setup((err, fd) => { expect(err).to.not.exist() - factory.spawnNode((err, node) => { + fd.spawn((err, node) => { expect(err).to.not.exist() - ipfs = node + ipfs = node.api + ipfsd = node done() }) }) }) - after((done) => common.teardown(done)) + after((done) => ipfsd.stop(done)) describe('.add', () => { it('a Buffer', (done) => { diff --git a/src/key.js b/src/key.js index 4e60f72e3..2665f514a 100644 --- a/src/key.js +++ b/src/key.js @@ -16,6 +16,7 @@ module.exports = (common) => { ] const keys = [] let ipfs + let ipfsd let withGo before(function (done) { @@ -23,11 +24,12 @@ module.exports = (common) => { // timeout for the before step this.timeout(60 * 1000) - common.setup((err, factory) => { + common.setup((err, df) => { expect(err).to.not.exist() - factory.spawnNode((err, node) => { + df.spawn((err, node) => { expect(err).to.not.exist() - ipfs = node + ipfsd = node + ipfs = node.api ipfs.id((err, id) => { expect(err).to.not.exist() withGo = id.agentVersion.startsWith('go-ipfs') @@ -37,7 +39,7 @@ module.exports = (common) => { }) }) - after((done) => common.teardown(done)) + after((done) => ipfsd.stop(done)) describe('.gen', () => { keyTypes.forEach((kt) => { diff --git a/src/miscellaneous.js b/src/miscellaneous.js index 7a7d60c90..55a2536fe 100644 --- a/src/miscellaneous.js +++ b/src/miscellaneous.js @@ -11,25 +11,25 @@ chai.use(dirtyChai) module.exports = (common) => { describe('.miscellaneous', () => { let ipfs + let ipfsd before(function (done) { // CI takes longer to instantiate the daemon, so we need to increase the // timeout for the before step this.timeout(60 * 1000) - common.setup((err, factory) => { + common.setup((err, df) => { expect(err).to.not.exist() - factory.spawnNode((err, node) => { + df.spawn((err, node) => { expect(err).to.not.exist() - ipfs = node + ipfs = node.api + ipfsd = node done() }) }) }) - after((done) => { - common.teardown(done) - }) + after((done) => ipfsd.stop(done)) it('.id', (done) => { ipfs.id((err, res) => { diff --git a/src/object.js b/src/object.js index 0ebf3df47..5f1e96221 100644 --- a/src/object.js +++ b/src/object.js @@ -17,25 +17,25 @@ module.exports = (common) => { this.timeout(80 * 1000) let ipfs + let ipfsd before(function (done) { // CI takes longer to instantiate the daemon, so we need to increase the // timeout for the before step this.timeout(60 * 1000) - common.setup((err, factory) => { + common.setup((err, df) => { expect(err).to.not.exist() - factory.spawnNode((err, node) => { + df.spawn((err, node) => { expect(err).to.not.exist() - ipfs = node + ipfs = node.api + ipfsd = node done() }) }) }) - after((done) => { - common.teardown(done) - }) + after((done) => ipfsd.stop(done)) describe('callback API', () => { describe('.new', () => { diff --git a/src/pin.js b/src/pin.js index 6c76050ef..357e02e80 100644 --- a/src/pin.js +++ b/src/pin.js @@ -17,17 +17,19 @@ module.exports = (common) => { this.timeout(50 * 1000) let ipfs + let ipfsd before(function (done) { // CI takes longer to instantiate the daemon, so we need to increase the // timeout for the before step this.timeout(60 * 1000) - common.setup((err, factory) => { + common.setup((err, df) => { expect(err).to.not.exist() - factory.spawnNode((err, node) => { + df.spawn((err, node) => { expect(err).to.not.exist() - ipfs = node + ipfs = node.api + ipfsd = node populate() }) }) @@ -43,7 +45,7 @@ module.exports = (common) => { } }) - after((done) => common.teardown(done)) + after((done) => ipfsd.stop(done)) describe('callback API', () => { // 1st, because ipfs.files.add pins automatically diff --git a/src/pubsub.js b/src/pubsub.js index d9e40f96d..58251ce55 100644 --- a/src/pubsub.js +++ b/src/pubsub.js @@ -32,14 +32,14 @@ function waitForPeers (ipfs, topic, peersToWait, callback) { }, 500) } -function spawnWithId (factory, callback) { +function spawnWithId (df, callback) { waterfall([ - (cb) => factory.spawnNode(cb), - (node, cb) => node.id((err, res) => { + (cb) => df.spawn({ args: ['--enable-pubsub-experiment'] }, cb), + (node, cb) => node.api.id((err, res) => { if (err) { return cb(err) } - node.peerId = res + node.api.peerId = res cb(null, node) }) ], callback) @@ -68,36 +68,37 @@ module.exports = (common) => { let ipfs2 let ipfs3 + let ipfsdNodes before(function (done) { // CI takes longer to instantiate the daemon, so we need to increase the // timeout for the before step this.timeout(100 * 1000) - common.setup((err, factory) => { + common.setup((err, df) => { if (err) { return done(err) } series([ - (cb) => spawnWithId(factory, cb), - (cb) => spawnWithId(factory, cb), - (cb) => spawnWithId(factory, cb) + (cb) => spawnWithId(df, cb), + (cb) => spawnWithId(df, cb), + (cb) => spawnWithId(df, cb) ], (err, nodes) => { if (err) { return done(err) } - ipfs1 = nodes[0] - ipfs2 = nodes[1] - ipfs3 = nodes[2] + ipfsdNodes = nodes + + ipfs1 = nodes[0].api + ipfs2 = nodes[1].api + ipfs3 = nodes[2].api done() }) }) }) - after((done) => { - common.teardown(done) - }) + after((done) => parallel(ipfsdNodes.map((node) => (cb) => node.stop(cb)), done)) describe('single node', () => { describe('.publish', () => { diff --git a/src/swarm.js b/src/swarm.js index 9c43869a4..eca71ab14 100644 --- a/src/swarm.js +++ b/src/swarm.js @@ -8,6 +8,7 @@ const dirtyChai = require('dirty-chai') const expect = chai.expect chai.use(dirtyChai) const series = require('async/series') +const parallel = require('async/parallel') const multiaddr = require('multiaddr') const os = require('os') const path = require('path') @@ -19,32 +20,35 @@ module.exports = (common) => { let ipfsA let ipfsB - let factoryInstance + let dfInstance + let nodes = [] before(function (done) { // CI takes longer to instantiate the daemon, so we need to increase the // timeout for the before step this.timeout(100 * 1000) - common.setup((err, factory) => { + common.setup((err, df) => { expect(err).to.not.exist() - factoryInstance = factory + dfInstance = df series([ - (cb) => factory.spawnNode((err, node) => { + (cb) => df.spawn((err, node) => { expect(err).to.not.exist() - ipfsA = node + ipfsA = node.api + nodes.push(node) cb() }), - (cb) => factory.spawnNode((err, node) => { + (cb) => df.spawn((err, node) => { expect(err).to.not.exist() - ipfsB = node + ipfsB = node.api + nodes.push(node) cb() }) ], done) }) }) - after((done) => common.teardown(done)) + after((done) => parallel(nodes.map((node) => (cb) => node.stop(cb)), done)) let ipfsBId @@ -90,7 +94,7 @@ module.exports = (common) => { }) it('verbose', (done) => { - ipfsA.swarm.peers({verbose: true}, (err, peers) => { + ipfsA.swarm.peers({ verbose: true }, (err, peers) => { expect(err).to.not.exist() expect(peers).to.have.length.above(0) @@ -132,6 +136,8 @@ module.exports = (common) => { } it('Connecting two peers with one address each', (done) => { + let nodes = [] + let nodeA let nodeB let nodeBAddress @@ -139,16 +145,18 @@ module.exports = (common) => { const config = getConfig(addresses) series([ (cb) => { - factoryInstance.spawnNode(getRepoPath(), config, (err, node) => { + dfInstance.spawn({ repoPath: getRepoPath(), config }, (err, node) => { expect(err).to.not.exist() - nodeA = node + nodes.push(node) + nodeA = node.api cb() }) }, (cb) => { - factoryInstance.spawnNode(getRepoPath(), config, (err, node) => { + dfInstance.spawn({ repoPath: getRepoPath(), config }, (err, node) => { expect(err).to.not.exist() - nodeB = node + nodes.push(node) + nodeB = node.api cb() }) }, @@ -175,10 +183,15 @@ module.exports = (common) => { cb() }) } - ], done) + ], (err) => { + expect(err).to.not.exist() + parallel(nodes.map((node) => (cb) => node.stop(cb)), done) + }) }) it('Connecting two peers with two addresses each', (done) => { + let nodes = [] + let nodeA let nodeB let nodeBAddress @@ -194,16 +207,18 @@ module.exports = (common) => { ]) series([ (cb) => { - factoryInstance.spawnNode(getRepoPath(), configA, (err, node) => { + dfInstance.spawn({ repoPath: getRepoPath(), config: configA }, (err, node) => { expect(err).to.not.exist() - nodeA = node + nodes.push(node) + nodeA = node.api cb() }) }, (cb) => { - factoryInstance.spawnNode(getRepoPath(), configB, (err, node) => { + dfInstance.spawn({ repoPath: getRepoPath(), config: configB }, (err, node) => { expect(err).to.not.exist() - nodeB = node + nodes.push(node) + nodeB = node.api cb() }) }, @@ -230,7 +245,10 @@ module.exports = (common) => { cb() }) } - ], done) + ], (err) => { + expect(err).to.not.exist() + parallel(nodes.map((node) => (cb) => node.stop(cb)), done) + }) }) }) }) From a3c134da721da047a7f4dd2a1b88fb66762863e1 Mon Sep 17 00:00:00 2001 From: Dmitriy Ryajov Date: Thu, 28 Dec 2017 16:03:41 -0600 Subject: [PATCH 2/3] feat: allow passing daemon type and exec path to spawn --- src/block.js | 4 ++-- src/config.js | 4 ++-- src/dag.js | 4 ++-- src/dht.js | 22 ++++++++++++++++------ src/files.js | 4 ++-- src/key.js | 6 +++--- src/miscellaneous.js | 4 ++-- src/object.js | 6 +++--- src/pin.js | 4 ++-- src/pubsub.js | 14 ++++++++++++-- src/swarm.js | 4 ++-- 11 files changed, 48 insertions(+), 28 deletions(-) diff --git a/src/block.js b/src/block.js index fb827a822..54695a438 100644 --- a/src/block.js +++ b/src/block.js @@ -27,9 +27,9 @@ module.exports = (common) => { // timeout for the before step this.timeout(60 * 1000) - common.setup((err, df) => { + common.setup((err, df, type, exec) => { expect(err).to.not.exist() - df.spawn((err, node) => { + df.spawn({ type, exec }, (err, node) => { expect(err).to.not.exist() ipfsd = node ipfs = node.api diff --git a/src/config.js b/src/config.js index 02fc284d8..7fc852c65 100644 --- a/src/config.js +++ b/src/config.js @@ -19,9 +19,9 @@ module.exports = (common) => { // timeout for the before step this.timeout(60 * 1000) - common.setup((err, df) => { + common.setup((err, df, type, exec) => { expect(err).to.not.exist() - df.spawn((err, node) => { + df.spawn({ type, exec }, (err, node) => { expect(err).to.not.exist() ipfsd = node ipfs = node.api diff --git a/src/dag.js b/src/dag.js index 72e3cdcbc..1304a85ef 100644 --- a/src/dag.js +++ b/src/dag.js @@ -24,9 +24,9 @@ module.exports = (common) => { // timeout for the before step this.timeout(60 * 1000) - common.setup((err, df) => { + common.setup((err, df, type, exec) => { expect(err).to.not.exist() - df.spawn((err, node) => { + df.spawn({ type, exec }, (err, node) => { expect(err).to.not.exist() ipfs = node.api ipfsd = node diff --git a/src/dht.js b/src/dht.js index b460f383a..ec8427132 100644 --- a/src/dht.js +++ b/src/dht.js @@ -10,9 +10,19 @@ const series = require('async/series') const parallel = require('async/parallel') const CID = require('cids') -function spawnWithId (df, callback) { +function spawnWithId (df, type, exec, callback) { + if (typeof type === 'function') { + callback = type + type = undefined + } + + if (typeof exec === 'function') { + callback = exec + exec = undefined + } + waterfall([ - (cb) => df.spawn(cb), + (cb) => df.spawn({ type, exec }, cb), (node, cb) => node.api.id((err, peerId) => { if (err) { return cb(err) @@ -37,12 +47,12 @@ module.exports = (common) => { // timeout for the before step this.timeout(60 * 1000) - common.setup((err, factory) => { + common.setup((err, df, type) => { expect(err).to.not.exist() series([ - (cb) => spawnWithId(factory, cb), - (cb) => spawnWithId(factory, cb), - (cb) => spawnWithId(factory, cb) + (cb) => spawnWithId(df, type, cb), + (cb) => spawnWithId(df, type, cb), + (cb) => spawnWithId(df, type, cb) ], (err, nodes) => { expect(err).to.not.exist() diff --git a/src/files.js b/src/files.js index 6249c636a..f981bb67d 100644 --- a/src/files.js +++ b/src/files.js @@ -56,9 +56,9 @@ module.exports = (common) => { // timeout for the before step this.timeout(60 * 1000) - common.setup((err, fd) => { + common.setup((err, df, type, exec) => { expect(err).to.not.exist() - fd.spawn((err, node) => { + df.spawn({ type, exec }, (err, node) => { expect(err).to.not.exist() ipfs = node.api ipfsd = node diff --git a/src/key.js b/src/key.js index 2665f514a..437508939 100644 --- a/src/key.js +++ b/src/key.js @@ -12,7 +12,7 @@ const hat = require('hat') module.exports = (common) => { describe('.key', () => { const keyTypes = [ - {type: 'rsa', size: 2048} + { type: 'rsa', size: 2048 } ] const keys = [] let ipfs @@ -24,9 +24,9 @@ module.exports = (common) => { // timeout for the before step this.timeout(60 * 1000) - common.setup((err, df) => { + common.setup((err, df, type, exec) => { expect(err).to.not.exist() - df.spawn((err, node) => { + df.spawn({ type, exec }, (err, node) => { expect(err).to.not.exist() ipfsd = node ipfs = node.api diff --git a/src/miscellaneous.js b/src/miscellaneous.js index 55a2536fe..56f5a1890 100644 --- a/src/miscellaneous.js +++ b/src/miscellaneous.js @@ -18,9 +18,9 @@ module.exports = (common) => { // timeout for the before step this.timeout(60 * 1000) - common.setup((err, df) => { + common.setup((err, df, type, exec) => { expect(err).to.not.exist() - df.spawn((err, node) => { + df.spawn({ type, exec }, (err, node) => { expect(err).to.not.exist() ipfs = node.api ipfsd = node diff --git a/src/object.js b/src/object.js index 5f1e96221..e33736c83 100644 --- a/src/object.js +++ b/src/object.js @@ -24,9 +24,9 @@ module.exports = (common) => { // timeout for the before step this.timeout(60 * 1000) - common.setup((err, df) => { + common.setup((err, df, type, exec) => { expect(err).to.not.exist() - df.spawn((err, node) => { + df.spawn({ type, exec }, (err, node) => { expect(err).to.not.exist() ipfs = node.api ipfsd = node @@ -843,7 +843,7 @@ module.exports = (common) => { return ipfs.object.put(testObj, (err, node) => { expect(err).to.not.exist() - return ipfs.object.stat('QmNggDXca24S6cMPEYHZjeuc4QRmofkRrAEqVL3Ms2sdJZ', {enc: 'base58'}) + return ipfs.object.stat('QmNggDXca24S6cMPEYHZjeuc4QRmofkRrAEqVL3Ms2sdJZ', { enc: 'base58' }) .then((stats) => { const expected = { Hash: 'QmNggDXca24S6cMPEYHZjeuc4QRmofkRrAEqVL3Ms2sdJZ', diff --git a/src/pin.js b/src/pin.js index 357e02e80..f0cc5cfd0 100644 --- a/src/pin.js +++ b/src/pin.js @@ -24,9 +24,9 @@ module.exports = (common) => { // timeout for the before step this.timeout(60 * 1000) - common.setup((err, df) => { + common.setup((err, df, type, exec) => { expect(err).to.not.exist() - df.spawn((err, node) => { + df.spawn({ type, exec }, (err, node) => { expect(err).to.not.exist() ipfs = node.api ipfsd = node diff --git a/src/pubsub.js b/src/pubsub.js index 58251ce55..d324501ae 100644 --- a/src/pubsub.js +++ b/src/pubsub.js @@ -32,9 +32,19 @@ function waitForPeers (ipfs, topic, peersToWait, callback) { }, 500) } -function spawnWithId (df, callback) { +function spawnWithId (df, type, exec, callback) { + if (typeof type === 'function') { + callback = type + type = undefined + } + + if (typeof exec === 'function') { + callback = exec + exec = undefined + } + waterfall([ - (cb) => df.spawn({ args: ['--enable-pubsub-experiment'] }, cb), + (cb) => df.spawn({ type, exec, args: ['--enable-pubsub-experiment'] }, cb), (node, cb) => node.api.id((err, res) => { if (err) { return cb(err) diff --git a/src/swarm.js b/src/swarm.js index eca71ab14..8ee893145 100644 --- a/src/swarm.js +++ b/src/swarm.js @@ -28,11 +28,11 @@ module.exports = (common) => { // timeout for the before step this.timeout(100 * 1000) - common.setup((err, df) => { + common.setup((err, df, type, exec) => { expect(err).to.not.exist() dfInstance = df series([ - (cb) => df.spawn((err, node) => { + (cb) => df.spawn({ type, exec }, (err, node) => { expect(err).to.not.exist() ipfsA = node.api nodes.push(node) From b3e3faba5d77a68ea9bb1ef804fea8de234bff3e Mon Sep 17 00:00:00 2001 From: Dmitriy Ryajov Date: Thu, 28 Dec 2017 16:16:18 -0600 Subject: [PATCH 3/3] fix: lint --- src/dht.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dht.js b/src/dht.js index ec8427132..ad3047d36 100644 --- a/src/dht.js +++ b/src/dht.js @@ -11,12 +11,12 @@ const parallel = require('async/parallel') const CID = require('cids') function spawnWithId (df, type, exec, callback) { - if (typeof type === 'function') { + if (typeof type === 'function') { callback = type type = undefined } - if (typeof exec === 'function') { + if (typeof exec === 'function') { callback = exec exec = undefined }