From b90e4057bac30ebcc62b0fe15d9064880a652c08 Mon Sep 17 00:00:00 2001 From: Jimmi Dyson Date: Wed, 30 Sep 2015 15:52:15 +0100 Subject: [PATCH] Convert prometheus specs to typescript --- .../prometheus/specs/datasource_specs.ts | 93 +++++++++++++++ .../test/specs/prometheus-datasource-specs.js | 106 ------------------ 2 files changed, 93 insertions(+), 106 deletions(-) create mode 100644 public/app/plugins/datasource/prometheus/specs/datasource_specs.ts delete mode 100644 public/test/specs/prometheus-datasource-specs.js diff --git a/public/app/plugins/datasource/prometheus/specs/datasource_specs.ts b/public/app/plugins/datasource/prometheus/specs/datasource_specs.ts new file mode 100644 index 00000000000..2e5df8e0bf9 --- /dev/null +++ b/public/app/plugins/datasource/prometheus/specs/datasource_specs.ts @@ -0,0 +1,93 @@ +/// +/// + +import {describe, beforeEach, it, sinon, expect, angularMocks} from 'test/lib/common'; +import moment = require('moment'); +declare var helpers: any; + +describe('PrometheusDatasource', function() { + var ctx = new helpers.ServiceTestContext(); + beforeEach(angularMocks.module('grafana.services')); + beforeEach(ctx.createService('PrometheusDatasource')); + beforeEach(function() { + ctx.ds = new ctx.service({ url: '', user: 'test', password: 'mupp' }); + }); + describe('When querying prometheus with one target using query editor target spec', function() { + var results; + var urlExpected = '/api/v1/query_range?query=' + + encodeURIComponent('test{job="testjob"}') + + '&start=1443438675&end=1443460275&step=60s'; + var query = { + range: { from: moment(1443438674760), to: moment(1443460274760) }, + targets: [{ expr: 'test{job="testjob"}' }], + interval: '60s' + }; + var response = { + status: "success", + data: { + resultType: "matrix", + result: [{ + metric: {"__name__": "test", job: "testjob"}, + values: [[1443454528, "3846"]] + }] + } + }; + beforeEach(function() { + ctx.$httpBackend.expect('GET', urlExpected).respond(response); + ctx.ds.query(query).then(function(data) { results = data; }); + ctx.$httpBackend.flush(); + }); + it('should generate the correct query', function() { + ctx.$httpBackend.verifyNoOutstandingExpectation(); + }); + it('should return series list', function() { + expect(results.data.length).to.be(1); + expect(results.data[0].target).to.be('test{job="testjob"}'); + }); + }); + describe('When performing metricFindQuery', function() { + var results; + var response; + it('label_values(resource) should generate label search query', function() { + response = { + status: "success", + data: ["value1", "value2", "value3"] + }; + ctx.$httpBackend.expect('GET', '/api/v1/label/resource/values').respond(response); + ctx.ds.metricFindQuery('label_values(resource)').then(function(data) { results = data; }); + ctx.$httpBackend.flush(); + ctx.$rootScope.$apply(); + expect(results.length).to.be(3); + }); + it('label_values(metric, resource) should generate count metric query', function() { + response = { + status: "success", + data: { + resultType: "vector", + result: [ + {metric: {resource: "value1"}, value: []}, + {metric: {resource: "value2"}, value: []}, + {metric: {resource: "value3"}, value: []} + ] + } + }; + ctx.$httpBackend.expect('GET', /\/api\/v1\/query\?query=count\(metric\)%20by%20\(resource\)&time=.*/).respond(response); + ctx.ds.metricFindQuery('label_values(metric, resource)').then(function(data) { results = data; }); + ctx.$httpBackend.flush(); + ctx.$rootScope.$apply(); + expect(results.length).to.be(3); + }); + it('metrics(metric.*) should generate metric name query', function() { + response = { + status: "success", + data: ["metric1","metric2","metric3","nomatch"] + }; + ctx.$httpBackend.expect('GET', '/api/v1/label/__name__/values').respond(response); + ctx.ds.metricFindQuery('metrics(metric.*)').then(function(data) { results = data; }); + ctx.$httpBackend.flush(); + ctx.$rootScope.$apply(); + expect(results.length).to.be(3); + }); + }); +}); + diff --git a/public/test/specs/prometheus-datasource-specs.js b/public/test/specs/prometheus-datasource-specs.js deleted file mode 100644 index a2f0d8648f5..00000000000 --- a/public/test/specs/prometheus-datasource-specs.js +++ /dev/null @@ -1,106 +0,0 @@ -define([ - './helpers', - 'moment', - 'app/plugins/datasource/prometheus/datasource' -], function(helpers, moment) { - 'use strict'; - - describe('PrometheusDatasource', function() { - var ctx = new helpers.ServiceTestContext(); - - beforeEach(module('grafana.services')); - beforeEach(ctx.createService('PrometheusDatasource')); - beforeEach(function() { - ctx.ds = new ctx.service({ url: '', user: 'test', password: 'mupp' }); - }); - - describe('When querying prometheus with one target using query editor target spec', function() { - var results; - var urlExpected = '/api/v1/query_range?query=' + - encodeURIComponent('test{job="testjob"}') + - '&start=1443438675&end=1443460275&step=60s'; - var query = { - range: { from: moment(1443438674760), to: moment(1443460274760) }, - targets: [{ expr: 'test{job="testjob"}' }], - interval: '60s' - }; - - var response = { - "status":"success", - "data":{ - "resultType":"matrix", - "result":[{ - "metric":{"__name__":"test", "job":"testjob"}, - "values":[[1443454528,"3846"]] - }] - } - }; - - beforeEach(function() { - ctx.$httpBackend.expect('GET', urlExpected).respond(response); - ctx.ds.query(query).then(function(data) { results = data; }); - ctx.$httpBackend.flush(); - }); - - it('should generate the correct query', function() { - ctx.$httpBackend.verifyNoOutstandingExpectation(); - }); - - it('should return series list', function() { - expect(results.data.length).to.be(1); - expect(results.data[0].target).to.be('test{job="testjob"}'); - }); - - }); - - describe('When performing metricFindQuery', function() { - var results; - var response; - - it('label_values(resource) should generate label search query', function() { - response = { - status: "success", - data: ["value1", "value2", "value3"] - }; - ctx.$httpBackend.expect('GET', '/api/v1/label/resource/values').respond(response); - ctx.ds.metricFindQuery('label_values(resource)').then(function(data) { results = data; }); - ctx.$httpBackend.flush(); - ctx.$rootScope.$apply(); - expect(results.length).to.be(3); - }); - - it('label_values(metric, resource) should generate count metric query', function() { - response = { - status: "success", - data:{ - resultType: "vector", - result:[ - {metric:{resource:"value1"},value:[]}, - {metric:{resource:"value2"},value:[]}, - {metric:{resource:"value3"},value:[]} - ] - } - }; - ctx.$httpBackend.expect('GET', /\/api\/v1\/query\?query=count\(metric\)%20by%20\(resource\)&time=.*/).respond(response); - ctx.ds.metricFindQuery('label_values(metric, resource)').then(function(data) { results = data; }); - ctx.$httpBackend.flush(); - ctx.$rootScope.$apply(); - expect(results.length).to.be(3); - }); - - it('metrics(metric.*) should generate metric name query', function() { - response = { - status: "success", - data:["metric1","metric2","metric3","nomatch"] - }; - ctx.$httpBackend.expect('GET', '/api/v1/label/__name__/values').respond(response); - ctx.ds.metricFindQuery('metrics(metric.*)').then(function(data) { results = data; }); - ctx.$httpBackend.flush(); - ctx.$rootScope.$apply(); - expect(results.length).to.be(3); - }); - - }); - }); -}); -