149 lines
3.7 KiB
TypeScript
149 lines
3.7 KiB
TypeScript
const nm_assert = require("assert");
|
|
const nm_fs = require("fs");
|
|
|
|
declare var describe;
|
|
declare var it;
|
|
|
|
_heimdall.init();
|
|
describe(
|
|
"heimdall",
|
|
() => {
|
|
function datetimestring_to_timestamp(datetimestring) {
|
|
return Math.floor((new Date(datetimestring)).getTime() / 1000);
|
|
};
|
|
function resolve_condition(condition_raw) {
|
|
return {
|
|
"unknown": _heimdall.enum_condition.unknown,
|
|
"ok": _heimdall.enum_condition.ok,
|
|
"concerning": _heimdall.enum_condition.concerning,
|
|
"critical": _heimdall.enum_condition.critical,
|
|
}[condition_raw];
|
|
};
|
|
const data = JSON.parse(nm_fs.readFileSync("./test-data.json"));
|
|
describe(
|
|
"master.determine_due",
|
|
() => {
|
|
data.cases.forEach(
|
|
case_ => {
|
|
it(
|
|
case_.name,
|
|
() => {
|
|
// setup
|
|
const check : _heimdall.type_check = Object.assign(
|
|
data.parameters["check"],
|
|
{
|
|
"annoy": false,
|
|
}
|
|
);
|
|
const old_item_state : _heimdall.type_item_state = {
|
|
"timestamp": datetimestring_to_timestamp(data.parameters["old_item_state"]["timestamp"]),
|
|
"condition": resolve_condition(case_.input["condition"]),
|
|
"count": (case_.input["threshold_reached"] ? null : 0),
|
|
"last_notification_timestamp": datetimestring_to_timestamp(data.parameters["old_item_state"]["last_notification_timestamp"]),
|
|
};
|
|
const timestamp : int = (
|
|
datetimestring_to_timestamp(
|
|
data.parameters["old_item_state"]["timestamp"]
|
|
)
|
|
+
|
|
(
|
|
{
|
|
"none": 0,
|
|
"attentive": data.parameters["check"]["schedule"]["attentive_interval"],
|
|
"regular": data.parameters["check"]["schedule"]["regular_interval"],
|
|
"reminding": data.parameters["check"]["schedule"]["reminding_interval"]
|
|
}[case_.input["passed"]]
|
|
)
|
|
+
|
|
60
|
|
);
|
|
|
|
// execution
|
|
const result : boolean = _heimdall.master.determine_due(
|
|
check,
|
|
old_item_state,
|
|
{
|
|
"timestamp": timestamp,
|
|
}
|
|
);
|
|
|
|
// assertions
|
|
nm_assert.equal(result, case_.output);
|
|
}
|
|
);
|
|
}
|
|
);
|
|
}
|
|
);
|
|
/*
|
|
describe(
|
|
"master.determine_shall_send_notification",
|
|
() => {
|
|
it(
|
|
"test",
|
|
() => {
|
|
// setup
|
|
const check : _heimdall.type_check = {
|
|
"name": "iks.web.2",
|
|
"title": "web.2",
|
|
"kind": "http_request",
|
|
"parameters": {
|
|
"request": {
|
|
"method": "GET",
|
|
"target": "https://iks-sachsen.de"
|
|
},
|
|
"timeout": 5,
|
|
"follow_redirects": true,
|
|
"response": {
|
|
"status_code": 200
|
|
},
|
|
"critical": true
|
|
},
|
|
"custom": null,
|
|
"active": false,
|
|
"threshold": 3,
|
|
"annoy": false,
|
|
"schedule": {
|
|
"regular_interval": 60,
|
|
"attentive_interval": 10,
|
|
"reminding_interval": 86400
|
|
},
|
|
"notifications": [
|
|
{
|
|
"kind": "console",
|
|
"parameters": {
|
|
}
|
|
}
|
|
]
|
|
};
|
|
const old_item_state : _heimdall.type_item_state = {
|
|
"timestamp": 1693493942,
|
|
"condition": _heimdall.enum_condition.critical,
|
|
"count": 2,
|
|
"last_notification_timestamp": 1693493942,
|
|
};
|
|
const timestamp : int = 1693495622;
|
|
|
|
// execution
|
|
const result : boolean = _heimdall.master.determine_shall_send_notification(
|
|
check,
|
|
false,
|
|
3,
|
|
timestamp,
|
|
old_item_state,
|
|
{
|
|
"condition": _heimdall.enum_condition.critical,
|
|
"info": {},
|
|
}
|
|
);
|
|
|
|
// assertions
|
|
nm_assert.equal(result, false);
|
|
}
|
|
);
|
|
}
|
|
);
|
|
*/
|
|
}
|
|
);
|