diff options
author | Richard Wall <richard@largo> | 2011-06-12 16:42:44 +0100 |
---|---|---|
committer | Richard Wall <richard@largo> | 2011-06-12 16:42:44 +0100 |
commit | 153f51bcc0f537fab5ab059b8fb76cd34389354d (patch) | |
tree | 299a0c681f63653f0fb5a8de582f57847192530a /jarmon/jarmon.test.js | |
parent | 579605cb677a0345688c5421b0075b26111c4393 (diff) | |
parent | 2e0922788f4f3d34e8fe56fcdf140e59299c730c (diff) |
Various changes and re-factoring towards implementation of a customisable interface. Old and unfinished but needs merging before starting work on Jquery 1.5 compatibility work.
Diffstat (limited to 'jarmon/jarmon.test.js')
-rw-r--r-- | jarmon/jarmon.test.js | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/jarmon/jarmon.test.js b/jarmon/jarmon.test.js index c838023..f5b7dae 100644 --- a/jarmon/jarmon.test.js +++ b/jarmon/jarmon.test.js @@ -277,6 +277,105 @@ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) { Y.Test.Runner.add(new Y.Test.Case({ + name: "jarmon.RrdQueryRemote", + + setUp: function() { + this.rq = new jarmon.RrdQueryRemote('build/test.rrd', ''); + }, + + test_getDataTimeRangeOverlapError: function () { + /** + * The starttime must be less than the endtime + **/ + this.rq.getData(1, 0).addBoth( + function(self, res) { + self.resume(function() { + Y.Assert.isInstanceOf(RangeError, res); + }); + }, this); + this.wait(); + }, + + + test_getDataUnknownCfError: function () { + /** + * Error is raised if the rrd file doesn't contain an RRA with the + * requested consolidation function (CF) + **/ + this.rq.getData(RRD_STARTTIME, RRD_ENDTIME, 0, 'FOO').addBoth( + function(self, res) { + self.resume(function() { + Y.Assert.isInstanceOf(TypeError, res); + }); + }, this); + this.wait(); + }, + + + test_getData: function () { + /** + * The generated rrd file should have values 0-9 at 300s intervals + * starting at 1980-01-01 00:00:00 + * Result should include a data points with times > starttime and + * <= endTime + **/ + this.rq.getData(RRD_STARTTIME + (RRD_STEP+1) * 1000, + RRD_ENDTIME - (RRD_STEP-1) * 1000).addBoth( + function(self, data) { + self.resume(function() { + // We request data starting 1 STEP +1s after the RRD file + // first val and ending 1 STEP -1s before the RRD last val + // ie one step within the RRD file, but 1s away from the + // step boundary to test the quantisation of the + // requested time range. + + // so we expect two less rows than the total rows in the + // file. + Y.Assert.areEqual(RRD_RRAROWS-2, data.data.length); + + // The value of the first returned row should be the + // second value in the RRD file (starts at value 0) + Y.Assert.areEqual(1, data.data[0][1]); + + // The value of the last returned row should be the + // 10 value in the RRD file (starts at value 0) + Y.Assert.areEqual(10, data.data[data.data.length-1][1]); + + // The timestamp of the first returned row should be + // exactly one step after the start of the RRD file + Y.Assert.areEqual( + RRD_STARTTIME+RRD_STEP*1000, data.data[0][0]); + + // RRD_ENDTIME is on a step boundary and is therfore + // actually the start time of a new row + // So when we ask for endTime = RRD_ENDTIME-STEP-1 we + // actually get data up to the 2nd to last RRD row. + Y.Assert.areEqual( + RRD_ENDTIME-RRD_STEP*1000*2, + data.data[data.data.length-1][0]); + }); + }, this); + this.wait(); + }, + + test_getDataUnknownValues: function () { + /** + * If the requested time range is outside the range of the RRD file + * we should not get any values back + **/ + this.rq.getData(RRD_ENDTIME, RRD_ENDTIME+1000).addBoth( + function(self, data) { + self.resume(function() { + Y.Assert.areEqual(0, data.data.length); + }); + }, this); + this.wait(); + } + + })); + + + Y.Test.Runner.add(new Y.Test.Case({ name: "jarmon.Chart", test_draw: function () { @@ -301,6 +400,85 @@ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) { })); + Y.Test.Runner.add(new Y.Test.Case({ + name: "jarmon.RrdChooser", + + setUp: function() { + this.$tpl = $('<div/>').appendTo($('body')) + var c = new jarmon.RrdChooser(this.$tpl); + c.drawRrdUrlForm(); + }, + + test_drawInitialForm: function () { + /** + * Test that the initial config form contains an rrd form field + **/ + Y.Assert.areEqual( + this.$tpl.find('form input[name=rrd_url]').size(), 1); + }, + + test_drawUrlErrorMessage: function () { + /** + * Test that submitting the form with an incorrect url results in + * an error message + **/ + var self = this; + this.$tpl.find('form input[name=rrd_url]').val('Foo/Bar').submit(); + this.wait( + function() { + Y.Assert.areEqual(self.$tpl.find('.error').size(), 1); + }, 1000 + ); + }, + + test_drawUrlListDatasources: function () { + /** + * Test that submitting the form with an correct rrd url results in + * list of further DS label fields + **/ + var self = this; + this.$tpl.find('form input[name=rrd_url]').val('build/test.rrd').submit(); + this.wait( + function() { + Y.Assert.areEqual(self.$tpl.find('input[name=rrd_ds_label]').size(), 1); + }, 1000 + ); + }, + })); + + + Y.Test.Runner.add(new Y.Test.Case({ + name: "jarmon.ChartEditor", + + setUp: function() { + this.$tpl = $('<div/>').appendTo($('body')) + var c = new jarmon.ChartEditor( + this.$tpl, + { + title: 'Foo', + datasources: [ + ['data/cpu-0/cpu-wait.rrd', 0, 'CPU-0 Wait', '%'], + ['data/cpu-1/cpu-wait.rrd', 0, 'CPU-1 Wait', '%'], + ['data/cpu-0/cpu-system.rrd', 0, 'CPU-0 System', '%'], + ['data/cpu-1/cpu-system.rrd', 0, 'CPU-1 System', '%'], + ['data/cpu-0/cpu-user.rrd', 0, 'CPU-0 User', '%'], + ['data/cpu-1/cpu-user.rrd', 0, 'CPU-1 User', '%'] + ] + } + ); + c.draw(); + }, + + test_drawInitialForm: function () { + /** + * Test that the initial config form contains an rrd form field + **/ + Y.Assert.areEqual( + this.$tpl.find('form input[name=rrd_url]').size(), 1); + } + })); + + //initialize the console var yconsole = new Y.Console({ newestOnTop: false, |