prometheus-datasource-specs.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. define([
  2. './helpers',
  3. 'moment',
  4. 'app/plugins/datasource/prometheus/datasource',
  5. 'app/services/backendSrv',
  6. 'app/services/alertSrv'
  7. ], function(helpers, moment) {
  8. 'use strict';
  9. describe('PrometheusDatasource', function() {
  10. var ctx = new helpers.ServiceTestContext();
  11. beforeEach(module('grafana.services'));
  12. beforeEach(ctx.providePhase(['templateSrv']));
  13. beforeEach(ctx.createService('PrometheusDatasource'));
  14. beforeEach(function() {
  15. ctx.ds = new ctx.service({ url: '', user: 'test', password: 'mupp' });
  16. });
  17. describe('When querying prometheus with one target using query editor target spec', function() {
  18. var results;
  19. var urlExpected = '/api/v1/query_range?query=' +
  20. encodeURIComponent('test{job="testjob"}') +
  21. '&start=1443438675&end=1443460275&step=60s';
  22. var query = {
  23. range: { from: moment(1443438674760), to: moment(1443460274760) },
  24. targets: [{ expr: 'test{job="testjob"}' }],
  25. interval: '60s'
  26. };
  27. var response = {
  28. "status":"success",
  29. "data":{
  30. "resultType":"matrix",
  31. "result":[{
  32. "metric":{"__name__":"test", "job":"testjob"},
  33. "values":[[1443454528,"3846"]]
  34. }]
  35. }
  36. };
  37. beforeEach(function() {
  38. ctx.$httpBackend.expect('GET', urlExpected).respond(response);
  39. ctx.ds.query(query).then(function(data) { results = data; });
  40. ctx.$httpBackend.flush();
  41. });
  42. it('should generate the correct query', function() {
  43. ctx.$httpBackend.verifyNoOutstandingExpectation();
  44. });
  45. it('should return series list', function() {
  46. expect(results.data.length).to.be(1);
  47. expect(results.data[0].target).to.be('test{job="testjob"}');
  48. });
  49. });
  50. });
  51. });