datasource-specs.ts 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. import {
  2. describe,
  3. beforeEach,
  4. it,
  5. expect,
  6. angularMocks,
  7. } from 'test/lib/common';
  8. import helpers from 'test/specs/helpers';
  9. import OpenTsDatasource from '../datasource';
  10. describe('opentsdb', function() {
  11. var ctx = new helpers.ServiceTestContext();
  12. var instanceSettings = { url: '', jsonData: { tsdbVersion: 1 } };
  13. beforeEach(angularMocks.module('grafana.core'));
  14. beforeEach(angularMocks.module('grafana.services'));
  15. beforeEach(ctx.providePhase(['backendSrv']));
  16. beforeEach(
  17. angularMocks.inject(function($q, $rootScope, $httpBackend, $injector) {
  18. ctx.$q = $q;
  19. ctx.$httpBackend = $httpBackend;
  20. ctx.$rootScope = $rootScope;
  21. ctx.ds = $injector.instantiate(OpenTsDatasource, {
  22. instanceSettings: instanceSettings,
  23. });
  24. $httpBackend.when('GET', /\.html$/).respond('');
  25. })
  26. );
  27. describe('When performing metricFindQuery', function() {
  28. var results;
  29. var requestOptions;
  30. beforeEach(function() {
  31. ctx.backendSrv.datasourceRequest = function(options) {
  32. requestOptions = options;
  33. return ctx.$q.when({
  34. data: [{ target: 'prod1.count', datapoints: [[10, 1], [12, 1]] }],
  35. });
  36. };
  37. });
  38. it('metrics() should generate api suggest query', function() {
  39. ctx.ds.metricFindQuery('metrics(pew)').then(function(data) {
  40. results = data;
  41. });
  42. ctx.$rootScope.$apply();
  43. expect(requestOptions.url).to.be('/api/suggest');
  44. expect(requestOptions.params.type).to.be('metrics');
  45. expect(requestOptions.params.q).to.be('pew');
  46. expect(results).not.to.be(null);
  47. });
  48. it('tag_names(cpu) should generate lookup query', function() {
  49. ctx.ds.metricFindQuery('tag_names(cpu)').then(function(data) {
  50. results = data;
  51. });
  52. ctx.$rootScope.$apply();
  53. expect(requestOptions.url).to.be('/api/search/lookup');
  54. expect(requestOptions.params.m).to.be('cpu');
  55. });
  56. it('tag_values(cpu, test) should generate lookup query', function() {
  57. ctx.ds.metricFindQuery('tag_values(cpu, hostname)').then(function(data) {
  58. results = data;
  59. });
  60. ctx.$rootScope.$apply();
  61. expect(requestOptions.url).to.be('/api/search/lookup');
  62. expect(requestOptions.params.m).to.be('cpu{hostname=*}');
  63. });
  64. it('tag_values(cpu, test) should generate lookup query', function() {
  65. ctx.ds
  66. .metricFindQuery('tag_values(cpu, hostname, env=$env)')
  67. .then(function(data) {
  68. results = data;
  69. });
  70. ctx.$rootScope.$apply();
  71. expect(requestOptions.url).to.be('/api/search/lookup');
  72. expect(requestOptions.params.m).to.be('cpu{hostname=*,env=$env}');
  73. });
  74. it('tag_values(cpu, test) should generate lookup query', function() {
  75. ctx.ds
  76. .metricFindQuery('tag_values(cpu, hostname, env=$env, region=$region)')
  77. .then(function(data) {
  78. results = data;
  79. });
  80. ctx.$rootScope.$apply();
  81. expect(requestOptions.url).to.be('/api/search/lookup');
  82. expect(requestOptions.params.m).to.be(
  83. 'cpu{hostname=*,env=$env,region=$region}'
  84. );
  85. });
  86. it('suggest_tagk() should generate api suggest query', function() {
  87. ctx.ds.metricFindQuery('suggest_tagk(foo)').then(function(data) {
  88. results = data;
  89. });
  90. ctx.$rootScope.$apply();
  91. expect(requestOptions.url).to.be('/api/suggest');
  92. expect(requestOptions.params.type).to.be('tagk');
  93. expect(requestOptions.params.q).to.be('foo');
  94. });
  95. it('suggest_tagv() should generate api suggest query', function() {
  96. ctx.ds.metricFindQuery('suggest_tagv(bar)').then(function(data) {
  97. results = data;
  98. });
  99. ctx.$rootScope.$apply();
  100. expect(requestOptions.url).to.be('/api/suggest');
  101. expect(requestOptions.params.type).to.be('tagv');
  102. expect(requestOptions.params.q).to.be('bar');
  103. });
  104. });
  105. });