From 3c6a06a3272a5e445b841ff3325c951a5ac78b1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Thu, 1 Oct 2015 17:00:41 +0200 Subject: [PATCH] feat(cloudwatch): moved specs into plugins dir --- .../cloudwatch/specs/datasource_specs.ts | 169 +++++++++++++++++ .../test/specs/cloudwatch-datasource-specs.js | 170 ------------------ tasks/options/watch.js | 26 ++- 3 files changed, 187 insertions(+), 178 deletions(-) create mode 100644 public/app/plugins/datasource/cloudwatch/specs/datasource_specs.ts delete mode 100644 public/test/specs/cloudwatch-datasource-specs.js diff --git a/public/app/plugins/datasource/cloudwatch/specs/datasource_specs.ts b/public/app/plugins/datasource/cloudwatch/specs/datasource_specs.ts new file mode 100644 index 00000000000..164a7f6e500 --- /dev/null +++ b/public/app/plugins/datasource/cloudwatch/specs/datasource_specs.ts @@ -0,0 +1,169 @@ +/// +/// + +import {describe, beforeEach, it, sinon, expect, angularMocks} from 'test/lib/common'; + +declare var helpers: any; + +describe('CloudWatchDatasource', function() { + var ctx = new helpers.ServiceTestContext(); + + beforeEach(angularMocks.module('grafana.services')); + beforeEach(angularMocks.module('grafana.controllers')); + beforeEach(ctx.providePhase(['templateSrv'])); + beforeEach(ctx.createService('CloudWatchDatasource')); + beforeEach(function() { + ctx.ds = new ctx.service({ + jsonData: { + defaultRegion: 'us-east-1', + access: 'proxy' + } + }); + }); + + describe('When performing CloudWatch query', function() { + var requestParams; + + var query = { + range: { from: 'now-1h', to: 'now' }, + targets: [ + { + region: 'us-east-1', + namespace: 'AWS/EC2', + metricName: 'CPUUtilization', + dimensions: { + InstanceId: 'i-12345678' + }, + statistics: { + Average: true + }, + period: 300 + } + ] + }; + + var response = { + Datapoints: [ + { + Average: 1, + Timestamp: 'Wed Dec 31 1969 16:00:00 GMT-0800 (PST)' + } + ], + Label: 'CPUUtilization' + }; + + beforeEach(function() { + ctx.ds.getAwsClient = function() { + return { + getMetricStatistics: function(params, callback) { + requestParams = params; + callback(null, response); + } + }; + }; + }); + + it('should generate the correct query', function(done) { + ctx.ds.query(query).then(function() { + expect(requestParams.Namespace).to.be(query.targets[0].namespace); + expect(requestParams.MetricName).to.be(query.targets[0].metricName); + expect(requestParams.Dimensions[0].Name).to.be(Object.keys(query.targets[0].dimensions)[0]); + expect(requestParams.Dimensions[0].Value).to.be(query.targets[0].dimensions[Object.keys(query.targets[0].dimensions)[0]]); + expect(requestParams.Statistics).to.eql(Object.keys(query.targets[0].statistics)); + expect(requestParams.Period).to.be(query.targets[0].period); + done(); + }); + ctx.$rootScope.$apply(); + }); + + it('should return series list', function(done) { + ctx.ds.query(query).then(function(result) { + var s = Object.keys(query.targets[0].statistics)[0]; + expect(result.data[0].target).to.be(response.Label + '_' + s + JSON.stringify(query.targets[0].dimensions)); + expect(result.data[0].datapoints[0][0]).to.be(response.Datapoints[0][s]); + done(); + }); + ctx.$rootScope.$apply(); + }); + }); + + describe('When performing CloudWatch metricFindQuery', function() { + var requestParams; + + var response = { + Metrics: [ + { + Namespace: 'AWS/EC2', + MetricName: 'CPUUtilization', + Dimensions: [ + { + Name: 'InstanceId', + Value: 'i-12345678' + } + ] + } + ] + }; + + beforeEach(function() { + ctx.ds.getAwsClient = function() { + return { + listMetrics: function(params, callback) { + requestParams = params; + callback(null, response); + } + }; + }; + }); + + it('should return suggest list for region()', function(done) { + var query = 'region()'; + ctx.ds.metricFindQuery(query).then(function(result) { + result = result.map(function(v) { return v.text; }); + expect(result).to.contain('us-east-1'); + done(); + }); + ctx.$rootScope.$apply(); + }); + + it('should return suggest list for namespace()', function(done) { + var query = 'namespace()'; + ctx.ds.metricFindQuery(query).then(function(result) { + result = result.map(function(v) { return v.text; }); + expect(result).to.contain('AWS/EC2'); + done(); + }); + ctx.$rootScope.$apply(); + }); + + it('should return suggest list for metrics()', function(done) { + var query = 'metrics(AWS/EC2)'; + ctx.ds.metricFindQuery(query).then(function(result) { + result = result.map(function(v) { return v.text; }); + expect(result).to.contain('CPUUtilization'); + done(); + }); + ctx.$rootScope.$apply(); + }); + + it('should return suggest list for dimension_keys()', function(done) { + var query = 'dimension_keys(AWS/EC2)'; + ctx.ds.metricFindQuery(query).then(function(result) { + result = result.map(function(v) { return v.text; }); + expect(result).to.contain('InstanceId'); + done(); + }); + ctx.$rootScope.$apply(); + }); + + it('should return suggest list for dimension_values()', function(done) { + var query = 'dimension_values(us-east-1,AWS/EC2,CPUUtilization)'; + ctx.ds.metricFindQuery(query).then(function(result) { + result = result.map(function(v) { return v.text; }); + expect(result).to.eql(['InstanceId=i-12345678']); + done(); + }); + ctx.$rootScope.$apply(); + }); + }); +}); diff --git a/public/test/specs/cloudwatch-datasource-specs.js b/public/test/specs/cloudwatch-datasource-specs.js deleted file mode 100644 index dd416a2adc8..00000000000 --- a/public/test/specs/cloudwatch-datasource-specs.js +++ /dev/null @@ -1,170 +0,0 @@ -define([ - './helpers', - 'app/plugins/datasource/cloudwatch/datasource', - 'aws-sdk', -], function(helpers) { - 'use strict'; - - describe('CloudWatchDatasource', function() { - var ctx = new helpers.ServiceTestContext(); - - beforeEach(module('grafana.services')); - beforeEach(module('grafana.controllers')); - beforeEach(ctx.providePhase(['templateSrv'])); - beforeEach(ctx.createService('CloudWatchDatasource')); - beforeEach(function() { - ctx.ds = new ctx.service({ - jsonData: { - defaultRegion: 'us-east-1', - access: 'proxy' - } - }); - }); - - describe('When performing CloudWatch query', function() { - var requestParams; - - var query = { - range: { from: 'now-1h', to: 'now' }, - targets: [ - { - region: 'us-east-1', - namespace: 'AWS/EC2', - metricName: 'CPUUtilization', - dimensions: { - InstanceId: 'i-12345678' - }, - statistics: { - Average: true - }, - period: 300 - } - ] - }; - - var response = { - Datapoints: [ - { - Average: 1, - Timestamp: 'Wed Dec 31 1969 16:00:00 GMT-0800 (PST)' - } - ], - Label: 'CPUUtilization' - }; - - beforeEach(function() { - ctx.ds.getAwsClient = function() { - return { - getMetricStatistics: function(params, callback) { - requestParams = params; - callback(null, response); - } - }; - }; - }); - - it('should generate the correct query', function(done) { - ctx.ds.query(query).then(function() { - expect(requestParams.Namespace).to.be(query.targets[0].namespace); - expect(requestParams.MetricName).to.be(query.targets[0].metricName); - expect(requestParams.Dimensions[0].Name).to.be(Object.keys(query.targets[0].dimensions)[0]); - expect(requestParams.Dimensions[0].Value).to.be(query.targets[0].dimensions[Object.keys(query.targets[0].dimensions)[0]]); - expect(requestParams.Statistics).to.eql(Object.keys(query.targets[0].statistics)); - expect(requestParams.Period).to.be(query.targets[0].period); - done(); - }); - ctx.$rootScope.$apply(); - }); - - it('should return series list', function(done) { - ctx.ds.query(query).then(function(result) { - var s = Object.keys(query.targets[0].statistics)[0]; - expect(result.data[0].target).to.be(response.Label + '_' + s + JSON.stringify(query.targets[0].dimensions)); - expect(result.data[0].datapoints[0][0]).to.be(response.Datapoints[0][s]); - done(); - }); - ctx.$rootScope.$apply(); - }); - }); - - describe('When performing CloudWatch metricFindQuery', function() { - var requestParams; - - var response = { - Metrics: [ - { - Namespace: 'AWS/EC2', - MetricName: 'CPUUtilization', - Dimensions: [ - { - Name: 'InstanceId', - Value: 'i-12345678' - } - ] - } - ] - }; - - beforeEach(function() { - ctx.ds.getAwsClient = function() { - return { - listMetrics: function(params, callback) { - requestParams = params; - callback(null, response); - } - }; - }; - }); - - it('should return suggest list for region()', function(done) { - var query = 'region()'; - ctx.ds.metricFindQuery(query).then(function(result) { - result = result.map(function(v) { return v.text; }); - expect(result).to.contain('us-east-1'); - done(); - }); - ctx.$rootScope.$apply(); - }); - - it('should return suggest list for namespace()', function(done) { - var query = 'namespace()'; - ctx.ds.metricFindQuery(query).then(function(result) { - result = result.map(function(v) { return v.text; }); - expect(result).to.contain('AWS/EC2'); - done(); - }); - ctx.$rootScope.$apply(); - }); - - it('should return suggest list for metrics()', function(done) { - var query = 'metrics(AWS/EC2)'; - ctx.ds.metricFindQuery(query).then(function(result) { - result = result.map(function(v) { return v.text; }); - expect(result).to.contain('CPUUtilization'); - done(); - }); - ctx.$rootScope.$apply(); - }); - - it('should return suggest list for dimension_keys()', function(done) { - var query = 'dimension_keys(AWS/EC2)'; - ctx.ds.metricFindQuery(query).then(function(result) { - result = result.map(function(v) { return v.text; }); - expect(result).to.contain('InstanceId'); - done(); - }); - ctx.$rootScope.$apply(); - }); - - it('should return suggest list for dimension_values()', function(done) { - var query = 'dimension_values(us-east-1,AWS/EC2,CPUUtilization)'; - ctx.ds.metricFindQuery(query).then(function(result) { - result = result.map(function(v) { return v.text; }); - expect(result).to.eql(['InstanceId=i-12345678']); - done(); - }); - ctx.$rootScope.$apply(); - }); - }); - }); -}); diff --git a/tasks/options/watch.js b/tasks/options/watch.js index 14ec65ab3fb..e7acf25cd01 100644 --- a/tasks/options/watch.js +++ b/tasks/options/watch.js @@ -1,4 +1,6 @@ module.exports = function(config) { + 'use strict'; + return { css: { files: [ '<%= srcDir %>/less/**/*.less' ], @@ -10,19 +12,27 @@ module.exports = function(config) { copy_to_gen: { files: ['<%= srcDir %>/**/*', '!<%= srcDir %>/**/*.less'], - tasks: ['copy:public_to_gen'], + tasks: [ + 'jshint', + 'jscs', + 'tslint', + 'clean:gen', + 'copy:public_to_gen', + 'typescript:build', + 'karma:test' + ], options: { spawn: false } }, - typescript: { - files: ['<%= srcDir %>/app/**/*.ts', '<%= srcDir %>/test/**/*.ts'], - tasks: ['tslint', 'typescript:build'], - options: { - spawn: false - } - } + // typescript: { + // files: ['<%= srcDir %>/app#<{(||)}>#*.ts', '<%= srcDir %>/test#<{(||)}>#*.ts'], + // tasks: ['tslint', 'typescript:build'], + // options: { + // spawn: false + // } + // } }; };