Xazab Platform services ctl
Control Xazab Platform services using JavaScript and Docker
The tool provides a convenient JavaScript interface for configuration and interaction with Xazab Platform services. Services are started in Docker containers.
Table of Contents
Installation
-
Install NPM package:
npm install @xazab/dp-services-ctl
Usage
Available DP services
Drive
Drive service starts a bunch of related services:
- DriveAbci
- MongoDB
- Xazab Core
DAPI
DAPI service starts all DP services:
- DAPI Core
- DAPI TxFilterStream
- Drive
- MongoDB
- XazabCore
- Insight
- Tendermint Core
Xazab Core
- Xazab Core service
Tendermint Core
- Tendermint Core service
Insight API
- Insight API service
MongoDB
Starting a service
// Export service(s)
const { startMongoDb } = require('@xazab/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('@xazab/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()),
);
Services configuration
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
Integration with Mocha
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('@xazab/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);
});
});
Maintainers
Contributing
Feel free to dive in! Open an issue or submit PRs.
License
MIT © Xazab Core Group, Inc.