datasource-specs.ts 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. ///<amd-dependency path="app/plugins/datasource/influxdb_08/datasource"/>
  2. ///<amd-dependency path="app/core/services/backend_srv"/>
  3. ///<amd-dependency path="app/core/services/alert_srv"/>
  4. ///<amd-dependency path="test/specs/helpers" name="helpers" />
  5. import {describe, beforeEach, it, sinon, expect, angularMocks} from 'test/lib/common';
  6. declare var helpers: any;
  7. describe('InfluxDatasource', function() {
  8. var ctx = new helpers.ServiceTestContext();
  9. beforeEach(angularMocks.module('grafana.core'));
  10. beforeEach(angularMocks.module('grafana.services'));
  11. beforeEach(ctx.providePhase(['templateSrv']));
  12. beforeEach(ctx.createService('InfluxDatasource_08'));
  13. beforeEach(function() {
  14. ctx.ds = new ctx.service({ url: '', user: 'test', password: 'mupp' });
  15. });
  16. describe('When querying influxdb with one target using query editor target spec', function() {
  17. var results;
  18. var urlExpected = "/series?p=mupp&q=select+mean(value)+from+%22test%22+where+time+%3E+now()-1h+group+by+time(1s)+order+asc";
  19. var query = {
  20. rangeRaw: { from: 'now-1h', to: 'now' },
  21. targets: [{ series: 'test', column: 'value', function: 'mean' }],
  22. interval: '1s'
  23. };
  24. var response = [{
  25. columns: ["time", "sequence_nr", "value"],
  26. name: 'test',
  27. points: [[10, 1, 1]],
  28. }];
  29. beforeEach(function() {
  30. ctx.$httpBackend.expect('GET', urlExpected).respond(response);
  31. ctx.ds.query(query).then(function(data) { results = data; });
  32. ctx.$httpBackend.flush();
  33. });
  34. it('should generate the correct query', function() {
  35. ctx.$httpBackend.verifyNoOutstandingExpectation();
  36. });
  37. it('should return series list', function() {
  38. expect(results.data.length).to.be(1);
  39. expect(results.data[0].target).to.be('test.value');
  40. });
  41. });
  42. describe('When querying influxdb with one raw query', function() {
  43. var results;
  44. var urlExpected = "/series?p=mupp&q=select+value+from+series+where+time+%3E+now()-1h";
  45. var query = {
  46. rangeRaw: { from: 'now-1h', to: 'now' },
  47. targets: [{ query: "select value from series where $timeFilter", rawQuery: true }]
  48. };
  49. var response = [];
  50. beforeEach(function() {
  51. ctx.$httpBackend.expect('GET', urlExpected).respond(response);
  52. ctx.ds.query(query).then(function(data) { results = data; });
  53. ctx.$httpBackend.flush();
  54. });
  55. it('should generate the correct query', function() {
  56. ctx.$httpBackend.verifyNoOutstandingExpectation();
  57. });
  58. });
  59. describe('When issuing annotation query', function() {
  60. var results;
  61. var urlExpected = "/series?p=mupp&q=select+title+from+events.backend_01+where+time+%3E+now()-1h";
  62. var range = { from: 'now-1h', to: 'now' };
  63. var annotation = { query: 'select title from events.$server where $timeFilter' };
  64. var response = [];
  65. beforeEach(function() {
  66. ctx.templateSrv.replace = function(str) {
  67. return str.replace('$server', 'backend_01');
  68. };
  69. ctx.$httpBackend.expect('GET', urlExpected).respond(response);
  70. ctx.ds.annotationQuery({annotation: annotation, rangeRaw: range}).then(function(data) { results = data; });
  71. ctx.$httpBackend.flush();
  72. });
  73. it('should generate the correct query', function() {
  74. ctx.$httpBackend.verifyNoOutstandingExpectation();
  75. });
  76. });
  77. });