|
|
@@ -1,155 +1,155 @@
|
|
|
-// 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.getCloudWatchClient = function() {
|
|
|
-// return {
|
|
|
-// getMetricStatistics: function(params, callback) {
|
|
|
-// setTimeout(function() {
|
|
|
-// requestParams = params;
|
|
|
-// callback(null, response);
|
|
|
-// }, 0);
|
|
|
-// }
|
|
|
-// };
|
|
|
-// };
|
|
|
-// });
|
|
|
-//
|
|
|
-// it('should generate the correct query', function() {
|
|
|
-// 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);
|
|
|
-// });
|
|
|
-// });
|
|
|
-//
|
|
|
-// it('should return series list', function() {
|
|
|
-// 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);
|
|
|
-// expect(result.data[0].datapoints[0][0]).to.be(response.Datapoints[0][s]);
|
|
|
-// });
|
|
|
-// });
|
|
|
-// });
|
|
|
-//
|
|
|
-// 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.getCloudWatchClient = function() {
|
|
|
-// return {
|
|
|
-// listMetrics: function(params, callback) {
|
|
|
-// setTimeout(function() {
|
|
|
-// requestParams = params;
|
|
|
-// callback(null, response);
|
|
|
-// }, 0);
|
|
|
-// }
|
|
|
-// };
|
|
|
-// };
|
|
|
-// });
|
|
|
-//
|
|
|
-// it('should return suggest list for region()', function() {
|
|
|
-// var query = 'region()';
|
|
|
-// ctx.ds.metricFindQuery(query).then(function(result) {
|
|
|
-// expect(result).to.contain('us-east-1');
|
|
|
-// });
|
|
|
-// });
|
|
|
-//
|
|
|
-// it('should return suggest list for namespace()', function() {
|
|
|
-// var query = 'namespace()';
|
|
|
-// ctx.ds.metricFindQuery(query).then(function(result) {
|
|
|
-// expect(result).to.contain('AWS/EC2');
|
|
|
-// });
|
|
|
-// });
|
|
|
-//
|
|
|
-// it('should return suggest list for metrics()', function() {
|
|
|
-// var query = 'metrics(AWS/EC2)';
|
|
|
-// ctx.ds.metricFindQuery(query).then(function(result) {
|
|
|
-// expect(result).to.contain('CPUUtilization');
|
|
|
-// });
|
|
|
-// });
|
|
|
-//
|
|
|
-// it('should return suggest list for dimension_keys()', function() {
|
|
|
-// var query = 'dimension_keys(AWS/EC2)';
|
|
|
-// ctx.ds.metricFindQuery(query).then(function(result) {
|
|
|
-// expect(result).to.contain('InstanceId');
|
|
|
-// });
|
|
|
-// });
|
|
|
-//
|
|
|
-// it('should return suggest list for dimension_values()', function() {
|
|
|
-// var query = 'dimension_values(us-east-1,AWS/EC2,CPUUtilization)';
|
|
|
-// ctx.ds.metricFindQuery(query).then(function(result) {
|
|
|
-// expect(result).to.contain('InstanceId');
|
|
|
-// });
|
|
|
-// });
|
|
|
-// });
|
|
|
-// });
|
|
|
-// });
|
|
|
+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.getCloudWatchClient = function() {
|
|
|
+ return {
|
|
|
+ getMetricStatistics: function(params, callback) {
|
|
|
+ setTimeout(function() {
|
|
|
+ requestParams = params;
|
|
|
+ callback(null, response);
|
|
|
+ }, 0);
|
|
|
+ }
|
|
|
+ };
|
|
|
+ };
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should generate the correct query', function() {
|
|
|
+ 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);
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should return series list', function() {
|
|
|
+ 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);
|
|
|
+ expect(result.data[0].datapoints[0][0]).to.be(response.Datapoints[0][s]);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ 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.getCloudWatchClient = function() {
|
|
|
+ return {
|
|
|
+ listMetrics: function(params, callback) {
|
|
|
+ setTimeout(function() {
|
|
|
+ requestParams = params;
|
|
|
+ callback(null, response);
|
|
|
+ }, 0);
|
|
|
+ }
|
|
|
+ };
|
|
|
+ };
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should return suggest list for region()', function() {
|
|
|
+ var query = 'region()';
|
|
|
+ ctx.ds.metricFindQuery(query).then(function(result) {
|
|
|
+ expect(result).to.contain('us-east-1');
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should return suggest list for namespace()', function() {
|
|
|
+ var query = 'namespace()';
|
|
|
+ ctx.ds.metricFindQuery(query).then(function(result) {
|
|
|
+ expect(result).to.contain('AWS/EC2');
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should return suggest list for metrics()', function() {
|
|
|
+ var query = 'metrics(AWS/EC2)';
|
|
|
+ ctx.ds.metricFindQuery(query).then(function(result) {
|
|
|
+ expect(result).to.contain('CPUUtilization');
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should return suggest list for dimension_keys()', function() {
|
|
|
+ var query = 'dimension_keys(AWS/EC2)';
|
|
|
+ ctx.ds.metricFindQuery(query).then(function(result) {
|
|
|
+ expect(result).to.contain('InstanceId');
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should return suggest list for dimension_values()', function() {
|
|
|
+ var query = 'dimension_values(us-east-1,AWS/EC2,CPUUtilization)';
|
|
|
+ ctx.ds.metricFindQuery(query).then(function(result) {
|
|
|
+ expect(result).to.contain('InstanceId');
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+});
|