Control Dash Platform services using JavaScript and Docker
The tool provides a convenient JavaScript interface for configuration and interaction with Dash Platform services. Services are started in Docker containers.
-
Install NPM package:
npm install @dashevo/dp-services-ctl
Drive service starts a bunch of related services:
DAPI service starts all DP services:
- DAPI Core
- DAPI TxFilterStream
- Drive
- MongoDB
- DashCore
- Insight
- Tendermint Core
- Tendermint Core service
- Insight API service
// Export service(s) const { startMongoDb } = require('@dashevo/dp-services-ctl'); // This is optional. Default options listed in options class const options = { port: 27017, // mongoDB port }; // Start service const mongo = await startMongoDb(options); // Get mongo client const client = await mongo.getClient(); // Stop mongoDB await mongo.remove();Use many method to start several instances:
const { startMongoDb } = require('@dashevo/dp-services-ctl'); // This is optional. Default options listed in options class const options = { port: 27017, // mongoDB port }; // Start two services const mongoNodes = await startMongoDb.many(2,options); // Get peer IDs const [client1, client2] = await Promise.all( mongoNodes.map(mongo => mongo.getClient()), ); // Stop mongoDB nodes await Promise.all( mongoNodes.map(mongo => mongo.remove()), );Each service has default options which can be overwritten in three ways:
- Pass options as plain JS object to
start[service]orcreate[service]methods - Pass instance of options class to
start[service]orcreate[service]methods - Pass default options as plain JS object to
setDefaultCustomOptionsmethod of options class
Services Mocha hooks provide automation for your mocha tests:
- Removing obsolete related Docker containers (
before) - Cleaning a service state between tests (
beforeEach,afterEach) - Stopping service after tests (
after)
// Export service(s) with mocha hooks const { mocha: { startMongoDb } } = require('@dashevo/dp-services-ctl'); describe('Test suite', () => { let mongoClient; startMongoDb().then(mongo => () => { mongoClient = mongo.getClient(); }); it('should do something', async () => { const collection = mongoClient.db('test').collection('syncState'); const count = await collection.countDocuments({}); expect(count).to.equal(0); }); });Feel free to dive in! Open an issue or submit PRs.
MIT © Dash Core Group, Inc.