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:
// 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:
start[service]
or create[service]
methodsstart[service]
or create[service]
methodssetDefaultCustomOptions
method of options classServices Mocha hooks provide automation for your mocha tests:
before
)beforeEach
, afterEach
)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.