From 13e2b7687e694ef67c3e55ad4f3713084675b9b5 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuptsov Date: Tue, 16 Dec 2014 13:49:17 +0200 Subject: [PATCH 1/5] Fixed test --- test/basic_test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/basic_test.js b/test/basic_test.js index f376c0a..b1de9b5 100644 --- a/test/basic_test.js +++ b/test/basic_test.js @@ -459,7 +459,7 @@ describe('Add and get datapoitns:', function() { assert.equal(odp.timestampMs() + offset, dp.timestampMs()); assert.equal(odp.value(), dp.value()); } catch(error) { - deleteSensor(fetched_sensor.suid()); + deleteSensor(newsensor.suid()); done(error); } }); From d1ddcdbea98df8707c533179a997b3e9d97e35fb Mon Sep 17 00:00:00 2001 From: Dmitriy Kuptsov Date: Tue, 16 Dec 2014 15:49:27 +0200 Subject: [PATCH 2/5] removed test involving timezone (not part of official API) --- test/basic_test.js | 121 --------------------------------------------- 1 file changed, 121 deletions(-) diff --git a/test/basic_test.js b/test/basic_test.js index b1de9b5..dc3d6bb 100644 --- a/test/basic_test.js +++ b/test/basic_test.js @@ -363,127 +363,6 @@ describe('Add and get datapoitns:', function() { }); }); -describe('Add and get datapoitns:', function() { - it('should correctly create sensor, create channel, insert and read out datapoints with time zone offset and delete sensor', function(done) { - this.timeout(60000); - - var newsensor = new ibisense.models.Sensor({name: "Mocha test sensor"}); - var newchannel = new ibisense.models.Channel({name: "Mocha test channel"}); - - var prepareData = function(start, end, step) { - return _.map(_.range(start, end, step), function(ts, i) { - return new ibisense.models.DataPoint({date: ts, value: i}); - }); - } - - var createNewSensor = function(newsensor) { - var dfd = when.defer(); - ibisense.sensors.add(newsensor, function(sensor) { - dfd.resolve(sensor); - }, function(error) { - dfd.reject(error); - }); - return dfd.promise; - } - - var createNewChannel = function(suid, newchannel) { - var dfd = when.defer(); - ibisense.channels.add(suid, newchannel, function(channel) { - dfd.resolve(channel); - }, function(error) { - dfd.reject(error); - }); - return dfd.promise; - } - - var addDatapoints = function(cuid, datapoints) { - var dfd = when.defer(); - - ibisense.datapoints.add(cuid, datapoints, function() { - dfd.resolve(); - }, function(error) { - dfd.reject(error); - }); - - return dfd.promise; - } - - var queryDatapoints = function(cuid, start, end, tz) { - var dfd = when.defer(); - var query = { - cuid : cuid, - start : new Date(start).toISOString(), - end : new Date(end).toISOString(), - tz : tz - }; - - ibisense.datapoints.get(query, function(dataset) { - dfd.resolve(dataset.datapoints()); - }, function(error) { - dfd.reject(dataset.datapoints); - }); - - return dfd.promise; - } - - var deleteSensor = function(suid) { - ibisense.sensors.remove(suid); - } - - var cuid = undefined; - - var num = 100; - var step = 1000; // 1 second - - var end = new Date().getTime(); - var start = end - num * step; - var tz = "Europe/Helsinki"; - var offset = 3*60*60*1000; - var original_datapoints = prepareData(start, end + 1, step); - - var propagation_delay = 5000; // wait 5 seconds before attempting to read out data - - when(createNewSensor(newsensor)).then(function(sensor) { - newsensor = sensor; - when(createNewChannel(newsensor.suid(), newchannel)).then(function(created_channel) { - newchannel = created_channel; - cuid = newchannel.cuid(); - when(addDatapoints(cuid, original_datapoints)).then(function(received_datapoints) { - setTimeout(function() { - when(queryDatapoints(cuid, start, end, tz)).then( - function(received_datapoints) { - assert.equal(received_datapoints.length, original_datapoints.length); - _.each(received_datapoints, function(dp, i) { - var odp = original_datapoints[i]; - try { - assert.equal(odp.timestampMs() + offset, dp.timestampMs()); - assert.equal(odp.value(), dp.value()); - } catch(error) { - deleteSensor(newsensor.suid()); - done(error); - } - }); - deleteSensor(newsensor.suid()); - done(); - }, function(error) { - deleteSensor(newsensor.suid()); - done(error); - }); - }, propagation_delay); - }, function(error) { - deleteSensor(newsensor.suid()); - done(error); - }); - }, function(error) { - deleteSensor(newsensor.suid()); - done(error); - }); - }, function(error) { - done(error); - }); - }); -}); - describe('Add and get with rollups:', function() { it('should correctly create sensor, create channel, insert and rollup datapoints into 10 seconds bins using average aggregator function and delete sensor', function(done) { From ad880fa7d2c26ccd59562c966990fea9497e9dfb Mon Sep 17 00:00:00 2001 From: Dmitriy Kuptsov Date: Tue, 16 Dec 2014 15:50:05 +0200 Subject: [PATCH 3/5] removed timezone support --- ibisense.core-latest.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/ibisense.core-latest.js b/ibisense.core-latest.js index ac74616..4232f5d 100644 --- a/ibisense.core-latest.js +++ b/ibisense.core-latest.js @@ -194,7 +194,6 @@ var ibisense = (function () { } xhr.send(data); } catch(e) { - console.log(e); throw e; } } @@ -3681,8 +3680,6 @@ var ibisense = (function () { query["function"] = params["func"]; } } - - query["tz"] = params["tz"] || ""; } httprequest({ From 4043813f03776e07bf0c04944ab98bedeb329d34 Mon Sep 17 00:00:00 2001 From: Jussi Halinen Date: Sat, 10 Jan 2015 11:29:34 +0200 Subject: [PATCH 4/5] Increased timeout for first tests --- test/basic_test.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/basic_test.js b/test/basic_test.js index dc3d6bb..fa04a59 100644 --- a/test/basic_test.js +++ b/test/basic_test.js @@ -30,7 +30,9 @@ describe('Configuration test:', function() { describe('Check sensor fields: ', function() { it('should create a sensor with pre-initialized fileds and then read it out from the database', function(done) { - this.timeout(10000); + // for first test allow longer timeout as per if the django server has been just started + // it can be slow... + this.timeout(20000); function randomString() { var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz"; From 4012584fbd9c955c8220d88a721618083ebf4d73 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuptsov Date: Mon, 16 Feb 2015 19:47:35 +0200 Subject: [PATCH 5/5] Added unit tests to cover filtering functionality --- test/basic_test.js | 168 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) diff --git a/test/basic_test.js b/test/basic_test.js index fa04a59..77596ed 100644 --- a/test/basic_test.js +++ b/test/basic_test.js @@ -248,6 +248,174 @@ describe('List sensors:', function() { }); }); +describe('Filter sensors:', function() { + it('should return sensors which pass the filter', function(done) { + + var newsensor = new ibisense.models.Sensor( + { + 'name': 'Mocha test sensor', + 'attributes': + { + 'type': 'placeholder' + } + } + ); + + var createNewSensor = function(newsensor) { + var dfd = when.defer(); + ibisense.sensors.add(newsensor, function(sensor) { + dfd.resolve(sensor); + }, function(error) { + dfd.reject(error); + }); + return dfd.promise; + } + + var getCreatedSensor = function(suid) { + var dfd = when.defer(); + ibisense.sensors.get(suid, function(sensor) { + dfd.resolve(sensor); + }, function(error) { + dfd.reject(error); + }); + return dfd.promise; + } + + var deleteSensor = function(suid) { + ibisense.sensors.remove(suid); + } + + var filterSensors = function() { + var dfd = when.defer(); + var filter = + new ibisense.models.Filter( + { + 'comparator': 'equal', + 'key': 'type', + 'value': 'placeholder' + } + ); + + ibisense.sensors.filter(filter, function(sensors) { + dfd.resolve(sensors); + }, function(error) { + dfd.reject(error); + }, null, true); + return dfd.promise; + } + + when(createNewSensor(newsensor)).then(function(created_sensor) { + newsensor = created_sensor; + when(filterSensors()).then(function(sensors) { + assert.notEqual(sensors[0].length, 0); + assert.equal('Mocha test sensor', sensors[0].name()); + deleteSensor(newsensor.suid()); + done(); + }, function(error) { + deleteSensor(newsensor.suid()); + done(error); + }); + }, function(error) { + deleteSensor(newsensor.suid()); + done(error); + }); + }); +}); + + +describe('Filter channels:', function() { + it('should return channels which pass the filter', function(done) { + + var newsensor = new ibisense.models.Sensor( + { + 'name': 'Mocha test sensor' + } + ); + var newchannel = new ibisense.models.Channel( + { + 'name': 'Mocha channel filtering test', + 'attributes': + { + 'type': 'temperature' + } + } + ); + + var createNewSensor = function(newsensor) { + var dfd = when.defer(); + ibisense.sensors.add(newsensor, function(sensor) { + dfd.resolve(sensor); + }, function(error) { + dfd.reject(error); + }); + return dfd.promise; + } + + var getCreatedSensor = function(suid) { + var dfd = when.defer(); + ibisense.sensors.get(suid, function(sensor) { + dfd.resolve(sensor); + }, function(error) { + dfd.reject(error); + }); + return dfd.promise; + } + + var createNewChannel = function(suid, newchannel) { + var dfd = when.defer(); + ibisense.channels.add(suid, newchannel, function(channel) { + dfd.resolve(channel); + }, function(error) { + dfd.reject(error); + }); + return dfd.promise; + } + + var deleteSensor = function(suid) { + ibisense.sensors.remove(suid); + } + + var filterTemperatureChannels = function() { + var dfd = when.defer(); + var filter = + new ibisense.models.Filter( + { + 'comparator': 'equal', + 'key': 'type', + 'value': 'temperature' + } + ); + ibisense.channels.getByAttribute('type', 'temperature', function(sensor) { + dfd.resolve(sensor); + }, function(error) { + dfd.reject(error); + }, null, true); + return dfd.promise; + } + + when(createNewSensor(newsensor)).then(function(created_sensor) { + newsensor = created_sensor; + when(createNewChannel(created_sensor.suid(), newchannel)).then(function(channel) { + when(filterTemperatureChannels()).then(function(channels) { + var soughtChannel = channels[0]; + assert.equal("Mocha channel filtering test", soughtChannel.name()); + deleteSensor(newsensor.suid()); + done(); + }, function(error) { + deleteSensor(newsensor.suid()); + done(error); + }); + }, function(error) { + deleteSensor(newsensor.suid()); + done(error); + }); + }, function(error) { + deleteSensor(newsensor.suid()); + done(error); + }); + }); +}); + describe('Add and get datapoitns:', function() { it('should correctly create sensor, create channel, insert and read out datapoints and delete sensor', function(done) { this.timeout(60000);