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
setDefaultCustomOptions
method 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.