add more test for triggers panel
This commit is contained in:
138
dist/panel-triggers/specs/panel_ctrl.spec.js
vendored
138
dist/panel-triggers/specs/panel_ctrl.spec.js
vendored
@@ -57,25 +57,78 @@ describe('TriggerPanelCtrl', () => {
|
|||||||
'zabbix_default': DEFAULT_TARGET,
|
'zabbix_default': DEFAULT_TARGET,
|
||||||
'zabbix': DEFAULT_TARGET
|
'zabbix': DEFAULT_TARGET
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getTriggersResp = [
|
||||||
|
[
|
||||||
|
createTrigger({triggerid: "1", lastchange: "1510000010", priority: 5, lastEvent: {eventid: "11"}}),
|
||||||
|
createTrigger({triggerid: "2", lastchange: "1510000040", priority: 3, lastEvent: {eventid: "12"}}),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
createTrigger({triggerid: "3", lastchange: "1510000020", priority: 4, lastEvent: {eventid: "13"}}),
|
||||||
|
createTrigger({triggerid: "4", lastchange: "1510000030", priority: 2, lastEvent: {eventid: "14"}}),
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
// Simulate 2 data sources
|
||||||
zabbixDSMock.zabbix.getTriggers = jest.fn()
|
zabbixDSMock.zabbix.getTriggers = jest.fn()
|
||||||
.mockReturnValueOnce([
|
.mockReturnValueOnce(getTriggersResp[0])
|
||||||
generateTrigger(1, 1), generateTrigger(2, 11)
|
.mockReturnValueOnce(getTriggersResp[1]);
|
||||||
])
|
zabbixDSMock.zabbix.getAcknowledges = jest.fn()
|
||||||
.mockReturnValueOnce([
|
.mockReturnValue(Promise.resolve([defaultEvent]));
|
||||||
generateTrigger(3, 2), generateTrigger(4, 3)
|
|
||||||
]);
|
ctx.panelCtrl = createPanelCtrl();
|
||||||
|
|
||||||
|
ctx.panelCtrl.datasources['zabbix_default'] = zabbixDSMock;
|
||||||
|
ctx.panelCtrl.datasources['zabbix'] = zabbixDSMock;
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should sort triggers', (done) => {
|
it('should format triggers', (done) => {
|
||||||
let panelCtrl = createPanelCtrl();
|
ctx.panelCtrl.onRefresh().then(() => {
|
||||||
panelCtrl.onRefresh().then(() => {
|
let formattedTrigger = _.find(ctx.panelCtrl.triggerList, {triggerid: "1"});
|
||||||
let trigger_ids = _.map(panelCtrl.triggerList, 'triggerid');
|
expect(formattedTrigger.host).toBe('backend01');
|
||||||
|
expect(formattedTrigger.hostTechName).toBe('backend01_tech');
|
||||||
|
expect(formattedTrigger.datasource).toBe('zabbix_default');
|
||||||
|
expect(formattedTrigger.severity).toBe('Disaster');
|
||||||
|
expect(formattedTrigger.age).toBeTruthy();
|
||||||
|
expect(formattedTrigger.lastchange).toBeTruthy();
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should sort triggers by time by default', (done) => {
|
||||||
|
ctx.panelCtrl.onRefresh().then(() => {
|
||||||
|
let trigger_ids = _.map(ctx.panelCtrl.triggerList, 'triggerid');
|
||||||
expect(trigger_ids).toEqual([
|
expect(trigger_ids).toEqual([
|
||||||
'2', '4', '3', '1'
|
'2', '4', '3', '1'
|
||||||
]);
|
]);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should sort triggers by severity', (done) => {
|
||||||
|
ctx.panelCtrl.panel.sortTriggersBy = { text: 'severity', value: 'priority' };
|
||||||
|
ctx.panelCtrl.onRefresh().then(() => {
|
||||||
|
let trigger_ids = _.map(ctx.panelCtrl.triggerList, 'triggerid');
|
||||||
|
expect(trigger_ids).toEqual([
|
||||||
|
'1', '3', '2', '4'
|
||||||
|
]);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should add acknowledges to trigger', (done) => {
|
||||||
|
ctx.panelCtrl.onRefresh().then(() => {
|
||||||
|
let trigger = getTriggerById(1, ctx);
|
||||||
|
expect(trigger.acknowledges).toHaveLength(1);
|
||||||
|
expect(trigger.acknowledges[0].message).toBe("event ack");
|
||||||
|
|
||||||
|
expect(getTriggerById(2, ctx).acknowledges).toBe(undefined);
|
||||||
|
expect(getTriggerById(3, ctx).acknowledges).toBe(undefined);
|
||||||
|
expect(getTriggerById(4, ctx).acknowledges).toBe(undefined);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('When formatting triggers', () => {
|
describe('When formatting triggers', () => {
|
||||||
@@ -93,21 +146,74 @@ describe('TriggerPanelCtrl', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const defaultTrigger = {
|
const defaultTrigger = {
|
||||||
triggerid: "1",
|
"triggerid": "13565",
|
||||||
priority: 3,
|
"value": "1",
|
||||||
lastchange: "1",
|
"groups": [{"groupid": "1", "name": "Backend"}] ,
|
||||||
hosts: [],
|
"hosts": [{"host": "backend01_tech", "hostid": "10001","maintenance_status": "0", "name": "backend01"}] ,
|
||||||
lastEvent: []
|
"lastEvent": {
|
||||||
|
"eventid": "11",
|
||||||
|
"clock": "1507229064",
|
||||||
|
"ns": "556202037",
|
||||||
|
"acknowledged": "1",
|
||||||
|
"value": "1",
|
||||||
|
"object": "0",
|
||||||
|
"source": "0",
|
||||||
|
"objectid": "13565",
|
||||||
|
},
|
||||||
|
"tags": [] ,
|
||||||
|
"lastchange": "1440259530",
|
||||||
|
"priority": "2",
|
||||||
|
"description": "Lack of free swap space on server",
|
||||||
|
"comments": "It probably means that the systems requires\nmore physical memory.",
|
||||||
|
"url": "https://host.local/path",
|
||||||
|
"templateid": "0", "expression": "{13174}<50", "manual_close": "0", "correlation_mode": "0",
|
||||||
|
"correlation_tag": "", "recovery_mode": "0", "recovery_expression": "", "state": "0", "status": "0",
|
||||||
|
"flags": "0", "type": "0", "items": [] , "error": ""
|
||||||
|
};
|
||||||
|
|
||||||
|
const defaultEvent = {
|
||||||
|
"eventid": "11",
|
||||||
|
"acknowledges": [
|
||||||
|
{
|
||||||
|
"acknowledgeid": "185",
|
||||||
|
"action": "0",
|
||||||
|
"alias": "api",
|
||||||
|
"clock": "1512382246",
|
||||||
|
"eventid": "11",
|
||||||
|
"message": "event ack",
|
||||||
|
"name": "api",
|
||||||
|
"surname": "user",
|
||||||
|
"userid": "3"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"clock": "1507229064",
|
||||||
|
"ns": "556202037",
|
||||||
|
"acknowledged": "1",
|
||||||
|
"value": "1",
|
||||||
|
"object": "0",
|
||||||
|
"source": "0",
|
||||||
|
"objectid": "1",
|
||||||
};
|
};
|
||||||
|
|
||||||
function generateTrigger(id, timestamp, severity) {
|
function generateTrigger(id, timestamp, severity) {
|
||||||
let trigger = _.cloneDeep(defaultTrigger);
|
let trigger = _.cloneDeep(defaultTrigger);
|
||||||
trigger.triggerid = id.toString();
|
trigger.triggerid = id.toString();
|
||||||
if (severity) {
|
if (severity) {
|
||||||
trigger.priority = severity;
|
trigger.priority = severity.toString();
|
||||||
}
|
}
|
||||||
if (timestamp) {
|
if (timestamp) {
|
||||||
trigger.lastchange = timestamp;
|
trigger.lastchange = timestamp;
|
||||||
}
|
}
|
||||||
return trigger;
|
return trigger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function createTrigger(props) {
|
||||||
|
let trigger = _.cloneDeep(defaultTrigger);
|
||||||
|
trigger = _.merge(trigger, props);
|
||||||
|
trigger.lastEvent.objectid = trigger.triggerid;
|
||||||
|
return trigger;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getTriggerById(id, ctx) {
|
||||||
|
return _.find(ctx.panelCtrl.triggerList, {triggerid: id.toString()});
|
||||||
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"jest": "jest --notify --watch",
|
"jest": "jest --notify --watch",
|
||||||
"build": "grunt && jest",
|
"build": "grunt && jest",
|
||||||
"watch": "grunt watch",
|
"watch": "grunt watch",
|
||||||
"codecov": "grunt && jest --coverage && codecov",
|
"codecov": "jest --coverage && codecov",
|
||||||
"ci-test": "grunt && jest --coverage && codecov",
|
"ci-test": "grunt && jest --coverage && codecov",
|
||||||
"benchmark": "grunt bench"
|
"benchmark": "grunt bench"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -57,25 +57,83 @@ describe('TriggerPanelCtrl', () => {
|
|||||||
'zabbix_default': DEFAULT_TARGET,
|
'zabbix_default': DEFAULT_TARGET,
|
||||||
'zabbix': DEFAULT_TARGET
|
'zabbix': DEFAULT_TARGET
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getTriggersResp = [
|
||||||
|
[
|
||||||
|
createTrigger({
|
||||||
|
triggerid: "1", lastchange: "1510000010", priority: 5, lastEvent: {eventid: "11"}, hosts: [{maintenance_status: '1'}]
|
||||||
|
}),
|
||||||
|
createTrigger({
|
||||||
|
triggerid: "2", lastchange: "1510000040", priority: 3, lastEvent: {eventid: "12"}
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
createTrigger({triggerid: "3", lastchange: "1510000020", priority: 4, lastEvent: {eventid: "13"}}),
|
||||||
|
createTrigger({triggerid: "4", lastchange: "1510000030", priority: 2, lastEvent: {eventid: "14"}}),
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
// Simulate 2 data sources
|
||||||
zabbixDSMock.zabbix.getTriggers = jest.fn()
|
zabbixDSMock.zabbix.getTriggers = jest.fn()
|
||||||
.mockReturnValueOnce([
|
.mockReturnValueOnce(getTriggersResp[0])
|
||||||
generateTrigger(1, 1), generateTrigger(2, 11)
|
.mockReturnValueOnce(getTriggersResp[1]);
|
||||||
])
|
zabbixDSMock.zabbix.getAcknowledges = jest.fn()
|
||||||
.mockReturnValueOnce([
|
.mockReturnValue(Promise.resolve([defaultEvent]));
|
||||||
generateTrigger(3, 2), generateTrigger(4, 3)
|
|
||||||
]);
|
ctx.panelCtrl = createPanelCtrl();
|
||||||
|
|
||||||
|
ctx.panelCtrl.datasources['zabbix_default'] = zabbixDSMock;
|
||||||
|
ctx.panelCtrl.datasources['zabbix'] = zabbixDSMock;
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should sort triggers', (done) => {
|
it('should format triggers', (done) => {
|
||||||
let panelCtrl = createPanelCtrl();
|
ctx.panelCtrl.onRefresh().then(() => {
|
||||||
panelCtrl.onRefresh().then(() => {
|
let formattedTrigger = _.find(ctx.panelCtrl.triggerList, {triggerid: "1"});
|
||||||
let trigger_ids = _.map(panelCtrl.triggerList, 'triggerid');
|
expect(formattedTrigger.host).toBe('backend01');
|
||||||
|
expect(formattedTrigger.hostTechName).toBe('backend01_tech');
|
||||||
|
expect(formattedTrigger.datasource).toBe('zabbix_default');
|
||||||
|
expect(formattedTrigger.severity).toBe('Disaster');
|
||||||
|
expect(formattedTrigger.maintenance).toBe(true);
|
||||||
|
expect(formattedTrigger.age).toBeTruthy();
|
||||||
|
expect(formattedTrigger.lastchange).toBeTruthy();
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should sort triggers by time by default', (done) => {
|
||||||
|
ctx.panelCtrl.onRefresh().then(() => {
|
||||||
|
let trigger_ids = _.map(ctx.panelCtrl.triggerList, 'triggerid');
|
||||||
expect(trigger_ids).toEqual([
|
expect(trigger_ids).toEqual([
|
||||||
'2', '4', '3', '1'
|
'2', '4', '3', '1'
|
||||||
]);
|
]);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should sort triggers by severity', (done) => {
|
||||||
|
ctx.panelCtrl.panel.sortTriggersBy = { text: 'severity', value: 'priority' };
|
||||||
|
ctx.panelCtrl.onRefresh().then(() => {
|
||||||
|
let trigger_ids = _.map(ctx.panelCtrl.triggerList, 'triggerid');
|
||||||
|
expect(trigger_ids).toEqual([
|
||||||
|
'1', '3', '2', '4'
|
||||||
|
]);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should add acknowledges to trigger', (done) => {
|
||||||
|
ctx.panelCtrl.onRefresh().then(() => {
|
||||||
|
let trigger = getTriggerById(1, ctx);
|
||||||
|
expect(trigger.acknowledges).toHaveLength(1);
|
||||||
|
expect(trigger.acknowledges[0].message).toBe("event ack");
|
||||||
|
|
||||||
|
expect(getTriggerById(2, ctx).acknowledges).toBe(undefined);
|
||||||
|
expect(getTriggerById(3, ctx).acknowledges).toBe(undefined);
|
||||||
|
expect(getTriggerById(4, ctx).acknowledges).toBe(undefined);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('When formatting triggers', () => {
|
describe('When formatting triggers', () => {
|
||||||
@@ -93,21 +151,74 @@ describe('TriggerPanelCtrl', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const defaultTrigger = {
|
const defaultTrigger = {
|
||||||
triggerid: "1",
|
"triggerid": "13565",
|
||||||
priority: 3,
|
"value": "1",
|
||||||
lastchange: "1",
|
"groups": [{"groupid": "1", "name": "Backend"}] ,
|
||||||
hosts: [],
|
"hosts": [{"host": "backend01_tech", "hostid": "10001","maintenance_status": "0", "name": "backend01"}] ,
|
||||||
lastEvent: []
|
"lastEvent": {
|
||||||
|
"eventid": "11",
|
||||||
|
"clock": "1507229064",
|
||||||
|
"ns": "556202037",
|
||||||
|
"acknowledged": "1",
|
||||||
|
"value": "1",
|
||||||
|
"object": "0",
|
||||||
|
"source": "0",
|
||||||
|
"objectid": "13565",
|
||||||
|
},
|
||||||
|
"tags": [] ,
|
||||||
|
"lastchange": "1440259530",
|
||||||
|
"priority": "2",
|
||||||
|
"description": "Lack of free swap space on server",
|
||||||
|
"comments": "It probably means that the systems requires\nmore physical memory.",
|
||||||
|
"url": "https://host.local/path",
|
||||||
|
"templateid": "0", "expression": "{13174}<50", "manual_close": "0", "correlation_mode": "0",
|
||||||
|
"correlation_tag": "", "recovery_mode": "0", "recovery_expression": "", "state": "0", "status": "0",
|
||||||
|
"flags": "0", "type": "0", "items": [] , "error": ""
|
||||||
|
};
|
||||||
|
|
||||||
|
const defaultEvent = {
|
||||||
|
"eventid": "11",
|
||||||
|
"acknowledges": [
|
||||||
|
{
|
||||||
|
"acknowledgeid": "185",
|
||||||
|
"action": "0",
|
||||||
|
"alias": "api",
|
||||||
|
"clock": "1512382246",
|
||||||
|
"eventid": "11",
|
||||||
|
"message": "event ack",
|
||||||
|
"name": "api",
|
||||||
|
"surname": "user",
|
||||||
|
"userid": "3"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"clock": "1507229064",
|
||||||
|
"ns": "556202037",
|
||||||
|
"acknowledged": "1",
|
||||||
|
"value": "1",
|
||||||
|
"object": "0",
|
||||||
|
"source": "0",
|
||||||
|
"objectid": "1",
|
||||||
};
|
};
|
||||||
|
|
||||||
function generateTrigger(id, timestamp, severity) {
|
function generateTrigger(id, timestamp, severity) {
|
||||||
let trigger = _.cloneDeep(defaultTrigger);
|
let trigger = _.cloneDeep(defaultTrigger);
|
||||||
trigger.triggerid = id.toString();
|
trigger.triggerid = id.toString();
|
||||||
if (severity) {
|
if (severity) {
|
||||||
trigger.priority = severity;
|
trigger.priority = severity.toString();
|
||||||
}
|
}
|
||||||
if (timestamp) {
|
if (timestamp) {
|
||||||
trigger.lastchange = timestamp;
|
trigger.lastchange = timestamp;
|
||||||
}
|
}
|
||||||
return trigger;
|
return trigger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function createTrigger(props) {
|
||||||
|
let trigger = _.cloneDeep(defaultTrigger);
|
||||||
|
trigger = _.merge(trigger, props);
|
||||||
|
trigger.lastEvent.objectid = trigger.triggerid;
|
||||||
|
return trigger;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getTriggerById(id, ctx) {
|
||||||
|
return _.find(ctx.panelCtrl.triggerList, {triggerid: id.toString()});
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user