blob: 1ad17771adbe813e8984c3b7c518607f005930bf [file] [log] [blame]
import assert from 'assert';
import nock from 'nock';
import { createConfigFile } from './common';
import nmo from '../src/nmo.js';
import getActiveTask, { filterTasks, cli } from '../src/activetasks.js';
import { consoleMock, mockNodeIsOnline } from './helpers';
describe('activetasks', () => {
createConfigFile();
const url = 'http://127.0.0.11';
beforeEach(() => {
return nmo
.load({nmoconf: __dirname + '/fixtures/randomini'});
});
describe('cli', () => {
it('no arguments', done => {
cli().catch(err => {
assert.ok(/Usage/.test(err.message));
done();
});
});
it('does json', done => {
mockNodeIsOnline(url);
nock(url)
.get('/_active_tasks')
.reply(200, []);
console.log = consoleMock(msg => {
done();
assert.deepEqual(msg, []);
});
nmo
.load({nmoconf: __dirname + '/fixtures/randomini', json: true})
.then(() => {
cli(url);
});
});
it('rejests errors', () => {
return cli(url)
.catch(err => {
assert.ok(err);
});
});
it('Not existing cluster', () => {
return cli('wrong').catch(err => {
assert.ok(/Cluster does not exist/.test(err.message));
});
});
it('returns no active tasks for filter', done => {
console.log = consoleMock((msg, log) => {
assert.ok(/for that filter/.test(msg));
done();
});
mockNodeIsOnline(url);
nock(url)
.get('/_active_tasks')
.reply(200, []);
cli(url, 'filter');
});
it('returns no active tasks', done => {
console.log = consoleMock(function (msg) {
assert.ok(/There are no active tasks/.test(msg));
done();
});
mockNodeIsOnline(url)
nock(url)
.get('/_active_tasks')
.reply(200, []);
cli(url);
});
it('returns active tasks', done => {
const resp = `[{"node":"node1@127.0.0.1","pid":"<0.8331.5>",
"changes_pending":null,"checkpoint_interval":5000,
"checkpointed_source_seq":"1234",
"continuous":true,"database":null,
"doc_id":null,"doc_write_failures":0,"docs_read":44,
"docs_written":44,"missing_revisions_found":44,
"replication_id":"123123123",
"revisions_checked":44,
"source":"http://127.0.0.1:15984/mango-query/",
"source_seq":"1231",
"started_on":1444135320,
"target":"http://127.0.0.1:15984/test-mango/",
"through_seq":"12313","type":"replication",
"updated_on":1444135325,"user":null}]`;
mockNodeIsOnline(url);
nock(url)
.get('/_active_tasks')
.reply(200, resp);
console.log = consoleMock(msg => {
if (!/Active/.test(msg)) { return; }
assert.ok(/Active Tasks:/.test(msg));
done();
});
cli(url);
});
});
describe('getActiveTask', () => {
it('rejects for invalid url', () => {
return getActiveTask('hhhh')
.catch(err => {
assert.deepEqual(err.type, 'EUSAGE');
});
});
it('returns error for bad connections', () => {
return getActiveTask('http://doesnotexist.invalid')
.catch(err => {
assert.ok(/Could not connect/.test(err.message));
});
});
it('returns active tasks info', () => {
const resp = `[{"node":"node1@127.0.0.1","pid":"<0.8331.5>",
"changes_pending":null,"checkpoint_interval":5000,
"checkpointed_source_seq":"1234",
"continuous":true,"database":null,
"doc_id":null,"doc_write_failures":0,"docs_read":44,
"docs_written":44,"missing_revisions_found":44,
"replication_id":"123123123",
"revisions_checked":44,
"source":"http://127.0.0.1:15984/mango-query/",
"source_seq":"1231",
"started_on":1444135320,
"target":"http://127.0.0.1:15984/test-mango/",
"through_seq":"12313","type":"replication",
"updated_on":1444135325,"user":null}]`;
mockNodeIsOnline(url);
nock(url)
.get('/_active_tasks')
.reply(200, resp);
return getActiveTask(url)
.then(activetasks => {
assert.deepEqual(activetasks, JSON.parse(resp));
});
});
});
describe('filterTasks', () => {
const tasks = [
{
type: 'replication',
target: 'mydatabase'
},
{
type: 'view_compaction',
target: 'another-db'
},
{
type: 'indexer',
source: 'mydatabase'
},
];
it('for no filter returns', () => {
const filtered = filterTasks(tasks);
assert.deepEqual(tasks, filtered);
});
it('only returns for filtered type', () => {
const filtered = filterTasks(tasks, 'replication');
assert.deepEqual(filtered.length, 1);
assert.deepEqual(filtered[0].type, 'replication');
});
it('returns filter for database', () => {
const filtered = filterTasks(tasks, 'mydatabase');
assert.deepEqual(filtered.length, 2);
assert.deepEqual(filtered[0].target, 'mydatabase');
});
});
});