From 9bf7b69c121ed87972fe38be1c0add2dc34257f3 Mon Sep 17 00:00:00 2001 From: Dave Lahr Date: Sun, 19 Feb 2017 16:10:10 -0500 Subject: [PATCH] website/alerts: remove loopIndex from alertInfo so it is strictly a dictionary of devices info to fix bug --- website/alerts.js | 22 ++++++++++------------ website/config/default.json5 | 4 ++-- website/server.js | 2 +- website/test_alerts.js | 17 ++++++++++------- 4 files changed, 23 insertions(+), 22 deletions(-) diff --git a/website/alerts.js b/website/alerts.js index aec67d4..3e71caa 100644 --- a/website/alerts.js +++ b/website/alerts.js @@ -25,24 +25,20 @@ const consoleLogAlertInfo = function(alertInfo) { //checksFunction as checkForAlerts function in this module //sleepTime in milliseconds // -exports.alertLoop = function(alertInfo, alertsConfig, sendAlertFunction, checksFunction, sleepTime) { +exports.alertLoop = function(alertInfo, alertsConfig, sendAlertFunction, checksFunction, sleepTime, loopIndex) { console.log('alerts alertLoop'); consoleLogAlertInfo(alertInfo); - - if (!('loopIndex' in alertInfo)) { - alertInfo.loopIndex = 0; - } - console.log('alertInfo.loopIndex: ' + alertInfo.loopIndex); + console.log('loopIndex: ' + loopIndex); checksFunction(alertInfo, sendAlertFunction, alertsConfig); //this if check is for testing purposes so the function can be called without //going into the infinite loop if (!('numLoopIterations' in alertInfo) || alertInfo.loopIndex < alertInfo.numLoopIterations) { - alertInfo.loopIndex++; + loopIndex++; setTimeout(function() { - exports.alertLoop(alertInfo, alertsConfig, sendAlertFunction, checksFunction, sleepTime); + exports.alertLoop(alertInfo, alertsConfig, sendAlertFunction, checksFunction, sleepTime, loopIndex); }, sleepTime); } @@ -52,8 +48,10 @@ exports.alertLoop = function(alertInfo, alertsConfig, sendAlertFunction, checksF exports.buildInitialAlertInfo = function(db, callback) { database.getDeviceMetadata(db, function(deviceMetadata) { database.getAlertSettings(db, function(alertSettings) { - for (var id in deviceMetadata) { - var curDevice = deviceMetadata[id]; + var alertInfo = deviceMetadata; + + for (var id in alertInfo) { + var curDevice = alertInfo[id]; curDevice.lastTime = null; curDevice.lastTemperature = null; @@ -66,7 +64,7 @@ exports.buildInitialAlertInfo = function(db, callback) { } } - callback(deviceMetadata); + callback(alertInfo); }); }); }; @@ -150,7 +148,7 @@ exports.checkForNoCommunication = function(deviceAlertInfo, alertsConfig) { exports.checkForTemperatureAlert = function(deviceAlertInfo) { console.log('alerts checkForTemperatureAlert'); console.log('deviceAlertInfo: ' + JSON.stringify(deviceAlertInfo)); - + var msg = ''; if ('alertSettings' in deviceAlertInfo) { var alertSettings = deviceAlertInfo.alertSettings; diff --git a/website/config/default.json5 b/website/config/default.json5 index f1dbfa8..e6f3cdf 100644 --- a/website/config/default.json5 +++ b/website/config/default.json5 @@ -6,8 +6,8 @@ gmailPassword: 'CHANGE ME', emailAddresses: 'CHANGE ME', lastTimeOffset: 1800, - sleepTime: 300000, - initialDelay: 600000 + sleepTime: 10000, + initialDelay: 1 }, memoryBuffer: diff --git a/website/server.js b/website/server.js index b0a1e56..2638e47 100644 --- a/website/server.js +++ b/website/server.js @@ -24,7 +24,7 @@ measurementBuffer.buildAndPopulateBuffer(dbConfig.databaseCodeDirectory, dbConfi alerts.buildInitialAlertInfo(db, function(alertInfo) { setTimeout(function() { alerts.alertLoop(alertInfo, alertsConfig, alerts.sendAlert, alerts.checkForAlerts, - alertsConfig.sleepTime); + alertsConfig.sleepTime, 0); }, alertsConfig.initialDelay); http.createServer(function (request, response) { diff --git a/website/test_alerts.js b/website/test_alerts.js index e4f9504..bbb6c4e 100644 --- a/website/test_alerts.js +++ b/website/test_alerts.js @@ -14,7 +14,7 @@ const testDb = new sqlite3.Database(testFileDbPath); testCases.testBuildInitialAlertInfo = function() { console.log('test_alerts testBuildInitialAlertInfo'); - + alerts.buildInitialAlertInfo(testDb, function(alertInfo) { var N = Object.keys(alertInfo).length; console.log('N: ' + N); @@ -212,11 +212,13 @@ testCases.testCheckForAlerts = function() { var alertsConfig = {lastTimeOffset: 1000, enableEmail: true}; var now = (new Date()).getTime() / 1000; - var alertInfo = {myFakeDevice:{ - id:'myFakeDevice', - lastTime:now, - lastTemperature:50, - alertSettings:[{comparison:'<', threshold:40.0}]} + var alertInfo = { + myFakeDevice: { + id:'myFakeDevice', + lastTime:now, + lastTemperature:50, + alertSettings:[{comparison:'<', threshold:40.0}] + } }; alerts.checkForAlerts(alertInfo, sendAlertsFunction, alertsConfig); @@ -262,7 +264,8 @@ testCases.testAlertLoop = function() { console.log('function called'); }; - alerts.alertLoop({numLoopIterations:3}, null, null, checksFunction, 100); + alerts.alertLoop({numLoopIterations:3}, null, null, checksFunction, 100, 0); }; + run_tests.run(process.argv, testCases);