0.3.0 • Published 5 years ago

@dashevo/js-evo-services-ctl v0.3.0

Weekly downloads
17
License
MIT
Repository
github
Last release
5 years ago

Dash Platform services ctl

Build Status NPM version

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.

Table of Contents

Installation

  1. Install Docker
  2. Install NPM package:

    npm install @dashevo/js-evo-services-ctl

Usage

Available DP services

Drive

Drive service starts a bunch of related services:

DAPI

DAPI service starts all DP services:

Dash Core

Dash Core service - Methods - Options

Insight

IPFS

MongoDB

Starting a service

// Export service(s)
const { startIPFS } = require('@dashevo/js-evo-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('@dashevo/js-evo-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 overwrited in three ways: 1. Pass options as plain JS object to start[service] or create[service] methods 2. Pass instance of options class to start[service] or create[service] methods 3. Pass default options as plain JS object to setDefaultCustomOptions method of options class

Integration with Mocha

Services Mocha hooks provide automatization 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('@dashevo/js-evo-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

@shumkov @jawid-h @abvgedeika

Contributing

Feel free to dive in! Open an issue or submit PRs.

License

MIT © Dash Core Group, Inc.