influxSeries-specs.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. define([
  2. 'app/plugins/datasource/influxdb/influxSeries'
  3. ], function(InfluxSeries) {
  4. 'use strict';
  5. describe('when generating timeseries from influxdb response', function() {
  6. describe('given multiple fields for series', function() {
  7. var options = { series: [
  8. {
  9. name: 'cpu',
  10. tags: {app: 'test', server: 'server1'},
  11. columns: ['time', 'mean', 'max', 'min'],
  12. values: [[1431946625000, 10, 11, 9], [1431946626000, 20, 21, 19]]
  13. }
  14. ]};
  15. describe('and no alias', function() {
  16. it('should generate multiple datapoints for each column', function() {
  17. var series = new InfluxSeries(options);
  18. var result = series.getTimeSeries();
  19. expect(result.length).to.be(3);
  20. expect(result[0].target).to.be('cpu.mean {app: test, server: server1}');
  21. expect(result[0].datapoints[0][0]).to.be(10);
  22. expect(result[0].datapoints[0][1]).to.be(1431946625000);
  23. expect(result[0].datapoints[1][0]).to.be(20);
  24. expect(result[0].datapoints[1][1]).to.be(1431946626000);
  25. expect(result[1].target).to.be('cpu.max {app: test, server: server1}');
  26. expect(result[1].datapoints[0][0]).to.be(11);
  27. expect(result[1].datapoints[0][1]).to.be(1431946625000);
  28. expect(result[1].datapoints[1][0]).to.be(21);
  29. expect(result[1].datapoints[1][1]).to.be(1431946626000);
  30. expect(result[2].target).to.be('cpu.min {app: test, server: server1}');
  31. expect(result[2].datapoints[0][0]).to.be(9);
  32. expect(result[2].datapoints[0][1]).to.be(1431946625000);
  33. expect(result[2].datapoints[1][0]).to.be(19);
  34. expect(result[2].datapoints[1][1]).to.be(1431946626000);
  35. });
  36. });
  37. describe('and simple alias', function() {
  38. it('should use alias', function() {
  39. options.alias = 'new series';
  40. var series = new InfluxSeries(options);
  41. var result = series.getTimeSeries();
  42. expect(result[0].target).to.be('new series');
  43. expect(result[1].target).to.be('new series');
  44. expect(result[2].target).to.be('new series');
  45. });
  46. });
  47. describe('and alias patterns', function() {
  48. it('should replace patterns', function() {
  49. options.alias = 'alias: $m -> $tag_server ([[measurement]])';
  50. var series = new InfluxSeries(options);
  51. var result = series.getTimeSeries();
  52. expect(result[0].target).to.be('alias: cpu -> server1 (cpu)');
  53. expect(result[1].target).to.be('alias: cpu -> server1 (cpu)');
  54. expect(result[2].target).to.be('alias: cpu -> server1 (cpu)');
  55. });
  56. });
  57. });
  58. describe('given measurement with default fieldname', function() {
  59. var options = { series: [
  60. {
  61. name: 'cpu',
  62. tags: {app: 'test', server: 'server1'},
  63. columns: ['time', 'value'],
  64. values: [["2015-05-18T10:57:05Z", 10], ["2015-05-18T10:57:06Z", 12]]
  65. },
  66. {
  67. name: 'cpu',
  68. tags: {app: 'test2', server: 'server2'},
  69. columns: ['time', 'value'],
  70. values: [["2015-05-18T10:57:05Z", 15], ["2015-05-18T10:57:06Z", 16]]
  71. }
  72. ]};
  73. describe('and no alias', function() {
  74. it('should generate label with no field', function() {
  75. var series = new InfluxSeries(options);
  76. var result = series.getTimeSeries();
  77. expect(result[0].target).to.be('cpu {app: test, server: server1}');
  78. expect(result[1].target).to.be('cpu {app: test2, server: server2}');
  79. });
  80. });
  81. });
  82. describe('given two series', function() {
  83. var options = { series: [
  84. {
  85. name: 'cpu',
  86. tags: {app: 'test', server: 'server1'},
  87. columns: ['time', 'mean'],
  88. values: [[1431946625000, 10], [1431946626000, 12]]
  89. },
  90. {
  91. name: 'cpu',
  92. tags: {app: 'test2', server: 'server2'},
  93. columns: ['time', 'mean'],
  94. values: [[1431946625000, 15], [1431946626000, 16]]
  95. }
  96. ]};
  97. describe('and no alias', function() {
  98. it('should generate two time series', function() {
  99. var series = new InfluxSeries(options);
  100. var result = series.getTimeSeries();
  101. expect(result.length).to.be(2);
  102. expect(result[0].target).to.be('cpu.mean {app: test, server: server1}');
  103. expect(result[0].datapoints[0][0]).to.be(10);
  104. expect(result[0].datapoints[0][1]).to.be(1431946625000);
  105. expect(result[0].datapoints[1][0]).to.be(12);
  106. expect(result[0].datapoints[1][1]).to.be(1431946626000);
  107. expect(result[1].target).to.be('cpu.mean {app: test2, server: server2}');
  108. expect(result[1].datapoints[0][0]).to.be(15);
  109. expect(result[1].datapoints[0][1]).to.be(1431946625000);
  110. expect(result[1].datapoints[1][0]).to.be(16);
  111. expect(result[1].datapoints[1][1]).to.be(1431946626000);
  112. });
  113. });
  114. describe('and simple alias', function() {
  115. it('should use alias', function() {
  116. options.alias = 'new series';
  117. var series = new InfluxSeries(options);
  118. var result = series.getTimeSeries();
  119. expect(result[0].target).to.be('new series');
  120. });
  121. });
  122. describe('and alias patterns', function() {
  123. it('should replace patterns', function() {
  124. options.alias = 'alias: $m -> $tag_server ([[measurement]])';
  125. var series = new InfluxSeries(options);
  126. var result = series.getTimeSeries();
  127. expect(result[0].target).to.be('alias: cpu -> server1 (cpu)');
  128. expect(result[1].target).to.be('alias: cpu -> server2 (cpu)');
  129. });
  130. });
  131. });
  132. describe('given measurement with dots', function() {
  133. var options = { series: [
  134. {
  135. name: 'app.prod.server1.count',
  136. tags: {},
  137. columns: ['time', 'mean'],
  138. values: [[1431946625000, 10], [1431946626000, 12]]
  139. }
  140. ]};
  141. it('should replace patterns', function() {
  142. options.alias = 'alias: $1 -> [[3]]';
  143. var series = new InfluxSeries(options);
  144. var result = series.getTimeSeries();
  145. expect(result[0].target).to.be('alias: prod -> count');
  146. });
  147. });
  148. });
  149. });