| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- define([
- 'helpers',
- 'plugins/datasource/cloudwatch/datasource',
- 'aws-sdk',
- ], function(helpers) {
- 'use strict';
- describe('CloudWatchDatasource', function() {
- var ctx = new helpers.ServiceTestContext();
- beforeEach(module('grafana.services'));
- 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');
- });
- });
- });
- });
- });
|