elasticsearch-specs.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. define([
  2. 'helpers',
  3. 'plugins/datasource/elasticsearch/datasource',
  4. 'aws-sdk',
  5. ], function(helpers) {
  6. 'use strict';
  7. describe('ElasticDatasource', function() {
  8. var ctx = new helpers.ServiceTestContext();
  9. beforeEach(module('grafana.services'));
  10. beforeEach(ctx.providePhase(['templateSrv']));
  11. beforeEach(ctx.createService('ElasticDatasource'));
  12. beforeEach(function() {
  13. ctx.ds = new ctx.service({});
  14. });
  15. describe('When processing es response', function() {
  16. describe('simple query', function() {
  17. var result;
  18. beforeEach(function() {
  19. result = ctx.ds._processTimeSeries([{
  20. refId: 'A',
  21. groupByFields: [],
  22. }], {
  23. responses: [{
  24. aggregations: {
  25. histogram: {
  26. buckets: [
  27. {
  28. doc_count: 10,
  29. key: 1000
  30. },
  31. {
  32. doc_count: 15,
  33. key: 2000
  34. }
  35. ]
  36. }
  37. }
  38. }]
  39. })
  40. });
  41. it('should return 1 series', function() {
  42. expect(result.data.length).to.be(1);
  43. expect(result.data[0].datapoints.length).to.be(2);
  44. expect(result.data[0].datapoints[0][0]).to.be(10);
  45. expect(result.data[0].datapoints[0][1]).to.be(1000);
  46. });
  47. });
  48. describe('single group by query', function() {
  49. var result;
  50. beforeEach(function() {
  51. result = ctx.ds._processTimeSeries([{refId: 'A', groupByFields: [{field: 'host' }]}], {
  52. responses: [{
  53. aggregations: {
  54. histogram: {
  55. buckets: [
  56. {
  57. host: {
  58. buckets: [
  59. {doc_count: 4, key: 'server1'},
  60. {doc_count: 6, key: 'server2'},
  61. ]
  62. },
  63. doc_count: 10,
  64. key: 1000
  65. },
  66. {
  67. host: {
  68. buckets: [
  69. {doc_count: 4, key: 'server1'},
  70. {doc_count: 6, key: 'server2'},
  71. ]
  72. },
  73. doc_count: 15,
  74. key: 2000
  75. }
  76. ]
  77. }
  78. }
  79. }]
  80. })
  81. });
  82. it('should return 2 series', function() {
  83. expect(result.data.length).to.be(2);
  84. expect(result.data[0].datapoints.length).to.be(2);
  85. expect(result.data[0].target).to.be('server1');
  86. expect(result.data[1].target).to.be('server2');
  87. });
  88. });
  89. describe('group by query 2 fields', function() {
  90. var result;
  91. beforeEach(function() {
  92. result = ctx.ds._processTimeSeries([{refId: 'A', groupByFields: [{field: 'host'}, {field: 'site'}]}], {
  93. responses: [{
  94. aggregations: {
  95. histogram: {
  96. buckets: [
  97. {
  98. host: {
  99. buckets: [
  100. {
  101. site: {
  102. buckets: [
  103. {doc_count: 3, key: 'backend'},
  104. {doc_count: 1, key: 'frontend'},
  105. ],
  106. },
  107. doc_count: 4, key: 'server1'
  108. },
  109. {
  110. site: {
  111. buckets: [
  112. {doc_count: 3, key: 'backend'},
  113. {doc_count: 1, key: 'frontend'},
  114. ],
  115. },
  116. doc_count: 6, key: 'server2'
  117. },
  118. ]
  119. },
  120. doc_count: 10,
  121. key: 1000
  122. },
  123. {
  124. host: {
  125. buckets: [
  126. {
  127. site: {
  128. buckets: [
  129. {doc_count: 3, key: 'backend'},
  130. {doc_count: 1, key: 'frontend'},
  131. ],
  132. },
  133. doc_count: 4,
  134. key: 'server1'
  135. },
  136. {
  137. site: {
  138. buckets: [
  139. {doc_count: 3, key: 'backend'},
  140. {doc_count: 1, key: 'frontend'},
  141. ],
  142. },
  143. doc_count: 6,
  144. key: 'server2'
  145. },
  146. ]
  147. },
  148. doc_count: 15,
  149. key: 2000
  150. }
  151. ]
  152. }
  153. }
  154. }]
  155. })
  156. });
  157. it('should return 2 series', function() {
  158. expect(result.data.length).to.be(4);
  159. expect(result.data[0].datapoints.length).to.be(2);
  160. expect(result.data[0].target).to.be('server1 backend');
  161. expect(result.data[1].target).to.be('server1 frontend');
  162. expect(result.data[2].target).to.be('server2 backend');
  163. expect(result.data[3].target).to.be('server2 frontend');
  164. });
  165. });
  166. });
  167. });
  168. });