Axe Platform services ctl
Control Axe Platform services using JavaScript and Docker
The tool provides a convenient JavaScript interface for configuration and interaction with Axe Platform services. Services are started in Docker containers.
Table of Contents
Installation
-
Install NPM package:
npm install @axerunners/ap-services-ctl
Usage
Available AP services
Drive
Drive service starts a bunch of related services:
DAPI
DAPI service starts all AP services:
Axe Core
Axe Core service - Methods - Options
Insight API
- Insight API service
IPFS
MongoDB
Starting a service
// Export service(s)
const { startIPFS } = require('@axerunners/ap-services-ctl');
// This is optional. Default options listed in options class
const options = {
port: 5001, // IPFS port
};
// Start service
const ipfs = await startIPFS(options);
// Get peer ID
const peerId = await ipfs.getApi().id();
// Stop IPFS
await ipfs.remove();
Use many
method to start several instances:
const { startIPFS } = require('@axerunners/ap-services-ctl');
// This is optional. Default options listed in options class
const options = {
port: 5001, // IPFS port
};
// Start two services
const ipfsNodes = await startIPFS.many(2, options);
// Get peer IDs
const [peerId1, peerId2] = await Promise.all(
ipfsNodes.map(ipfs => ipfs.getApi().id()),
);
// Stop IPFS nodes
await Promise.all(
ipfsNodes.map(ipfs => ipfs.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: { startIPFS } } = require('@axerunners/ap-services-ctl');
describe('Test suite', () => {
let ipfsApi;
startIPFS().then(ipfs => () => {
ipfsApi = ipfs.getApi();
});
it('should do something', async () => {
const peerId = await ipfsApi.id();
expect(peerId).to.be.a('string');
});
});
Maintainers
Contributing
Feel free to dive in! Open an issue or submit PRs.
License
MIT © Axe Core Group, Inc.