influx_series_specs.ts 6.2 KB

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