blob: 3cdd34857fa6e57446939a8170343f2588fec022 [file] [log] [blame]
import assert from 'assert';
import nock from 'nock';
import Lab from 'lab';
export const lab = Lab.script();
import { createConfigFile } from './common';
import nmo from '../src/nmo.js';
import getActiveTask, { filterTasks, cli } from '../src/activetasks.js';
lab.experiment('activetasks', () => {
createConfigFile();
lab.beforeEach((done) => {
nmo
.load({nmoconf: __dirname + '/fixtures/randomini'})
.then(() => done())
.catch(() => done());
});
lab.experiment('cli', () => {
const oldConsole = console.log;
lab.afterEach(done => {
console.log = oldConsole;
done();
});
lab.test('no arguments', done => {
cli().catch(err => {
assert.ok(/Usage/.test(err.message));
done();
});
});
lab.test('does json', done => {
nock('http://127.0.0.11')
.get('/_active_tasks')
.reply(200, []);
console.log = msg => {
assert.deepEqual(msg, []);
done();
};
nmo
.load({nmoconf: __dirname + '/fixtures/randomini', json: true})
.then(() => {
cli('http://127.0.0.11');
});
});
lab.test('rejests errors', done => {
cli('http://127.0.0.11')
.catch(err => {
assert.ok(err);
done();
});
});
lab.test('Not existing cluster', (done) => {
cli('wrong').catch(err => {
assert.ok(/Cluster does not exist/.test(err.message));
done();
});
});
lab.test('returns no active tasks for filter', done => {
console.log = function (msg) {
assert.ok(/for that filter/.test(msg));
done();
};
nock('http://127.0.0.11')
.get('/_active_tasks')
.reply(200, []);
cli('http://127.0.0.11', 'filter');
});
lab.test('returns no active tasks', done => {
console.log = function (msg) {
assert.ok(/There are no active tasks/.test(msg));
done();
};
nock('http://127.0.0.11')
.get('/_active_tasks')
.reply(200, []);
cli('http://127.0.0.11');
});
lab.test('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}]`;
nock('http://127.0.0.11')
.get('/_active_tasks')
.reply(200, resp);
console.log = msg => {
if (!/Active/.test(msg)) { return; }
assert.ok(/Active Tasks:/.test(msg));
done();
};
cli('http://127.0.0.11');
});
});
lab.experiment('getActiveTask', () => {
lab.test('rejects for invalid url', done => {
getActiveTask('hhhh')
.catch(err => {
assert.deepEqual(err.type, 'EUSAGE');
done();
});
});
lab.test('returns error for bad connections', done => {
getActiveTask('http://127.1.1.10')
.catch(err => {
console.log('ERR', err);
assert.ok(/Could not connect/.test(err.message));
done();
});
});
lab.test('returns active tasks info', 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}]`;
nock('http://127.0.0.11')
.get('/_active_tasks')
.reply(200, resp);
getActiveTask('http://127.0.0.11')
.then(activetasks => {
assert.deepEqual(activetasks, JSON.parse(resp));
done();
});
});
});
lab.experiment('filterTasks', () => {
const tasks = [
{
type: 'replication',
target: 'mydatabase'
},
{
type: 'view_compaction',
target: 'another-db'
},
{
type: 'indexer',
source: 'mydatabase'
},
];
lab.test('for no filter returns', done => {
const filtered = filterTasks(tasks);
assert.deepEqual(tasks, filtered);
done();
});
lab.test('only returns for filtered type', done => {
const filtered = filterTasks(tasks, 'replication');
assert.deepEqual(filtered.length, 1);
assert.deepEqual(filtered[0].type, 'replication');
done();
});
lab.test('returns filter for database', done => {
const filtered = filterTasks(tasks, 'mydatabase');
assert.deepEqual(filtered.length, 2);
assert.deepEqual(filtered[0].target, 'mydatabase');
done();
});
});
});