influx_series_specs.ts 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. import {describe, beforeEach, it, sinon, expect} from 'test/lib/common';
  2. import InfluxSeries from '../influx_series';
  3. describe('when generating timeseries from influxdb response', function() {
  4. describe('given multiple fields for series', function() {
  5. var options = {
  6. alias: '',
  7. 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. };
  16. describe('and no alias', function() {
  17. it('should generate multiple datapoints for each column', function() {
  18. var series = new InfluxSeries(options);
  19. var result = series.getTimeSeries();
  20. expect(result.length).to.be(3);
  21. expect(result[0].target).to.be('cpu.mean {app: test, server: server1}');
  22. expect(result[0].datapoints[0][0]).to.be(10);
  23. expect(result[0].datapoints[0][1]).to.be(1431946625000);
  24. expect(result[0].datapoints[1][0]).to.be(20);
  25. expect(result[0].datapoints[1][1]).to.be(1431946626000);
  26. expect(result[1].target).to.be('cpu.max {app: test, server: server1}');
  27. expect(result[1].datapoints[0][0]).to.be(11);
  28. expect(result[1].datapoints[0][1]).to.be(1431946625000);
  29. expect(result[1].datapoints[1][0]).to.be(21);
  30. expect(result[1].datapoints[1][1]).to.be(1431946626000);
  31. expect(result[2].target).to.be('cpu.min {app: test, server: server1}');
  32. expect(result[2].datapoints[0][0]).to.be(9);
  33. expect(result[2].datapoints[0][1]).to.be(1431946625000);
  34. expect(result[2].datapoints[1][0]).to.be(19);
  35. expect(result[2].datapoints[1][1]).to.be(1431946626000);
  36. });
  37. });
  38. describe('and simple alias', function() {
  39. it('should use alias', function() {
  40. options.alias = 'new series';
  41. var series = new InfluxSeries(options);
  42. var result = series.getTimeSeries();
  43. expect(result[0].target).to.be('new series');
  44. expect(result[1].target).to.be('new series');
  45. expect(result[2].target).to.be('new series');
  46. });
  47. });
  48. describe('and alias patterns', function() {
  49. it('should replace patterns', function() {
  50. options.alias = 'alias: $m -> $tag_server ([[measurement]])';
  51. var series = new InfluxSeries(options);
  52. var result = series.getTimeSeries();
  53. expect(result[0].target).to.be('alias: cpu -> server1 (cpu)');
  54. expect(result[1].target).to.be('alias: cpu -> server1 (cpu)');
  55. expect(result[2].target).to.be('alias: cpu -> server1 (cpu)');
  56. });
  57. });
  58. });
  59. describe('given measurement with default fieldname', function() {
  60. var options = { series: [
  61. {
  62. name: 'cpu',
  63. tags: {app: 'test', server: 'server1'},
  64. columns: ['time', 'value'],
  65. values: [["2015-05-18T10:57:05Z", 10], ["2015-05-18T10:57:06Z", 12]]
  66. },
  67. {
  68. name: 'cpu',
  69. tags: {app: 'test2', server: 'server2'},
  70. columns: ['time', 'value'],
  71. values: [["2015-05-18T10:57:05Z", 15], ["2015-05-18T10:57:06Z", 16]]
  72. }
  73. ]};
  74. describe('and no alias', function() {
  75. it('should generate label with no field', function() {
  76. var series = new InfluxSeries(options);
  77. var result = series.getTimeSeries();
  78. expect(result[0].target).to.be('cpu {app: test, server: server1}');
  79. expect(result[1].target).to.be('cpu {app: test2, server: server2}');
  80. });
  81. });
  82. });
  83. describe('given two series', function() {
  84. var options = {
  85. alias: '',
  86. series: [
  87. {
  88. name: 'cpu',
  89. tags: {app: 'test', server: 'server1'},
  90. columns: ['time', 'mean'],
  91. values: [[1431946625000, 10], [1431946626000, 12]]
  92. },
  93. {
  94. name: 'cpu',
  95. tags: {app: 'test2', server: 'server2'},
  96. columns: ['time', 'mean'],
  97. values: [[1431946625000, 15], [1431946626000, 16]]
  98. }
  99. ]
  100. };
  101. describe('and no alias', function() {
  102. it('should generate two time series', function() {
  103. var series = new InfluxSeries(options);
  104. var result = series.getTimeSeries();
  105. expect(result.length).to.be(2);
  106. expect(result[0].target).to.be('cpu.mean {app: test, server: server1}');
  107. expect(result[0].datapoints[0][0]).to.be(10);
  108. expect(result[0].datapoints[0][1]).to.be(1431946625000);
  109. expect(result[0].datapoints[1][0]).to.be(12);
  110. expect(result[0].datapoints[1][1]).to.be(1431946626000);
  111. expect(result[1].target).to.be('cpu.mean {app: test2, server: server2}');
  112. expect(result[1].datapoints[0][0]).to.be(15);
  113. expect(result[1].datapoints[0][1]).to.be(1431946625000);
  114. expect(result[1].datapoints[1][0]).to.be(16);
  115. expect(result[1].datapoints[1][1]).to.be(1431946626000);
  116. });
  117. });
  118. describe('and simple alias', function() {
  119. it('should use alias', function() {
  120. options.alias = 'new series';
  121. var series = new InfluxSeries(options);
  122. var result = series.getTimeSeries();
  123. expect(result[0].target).to.be('new series');
  124. });
  125. });
  126. describe('and alias patterns', function() {
  127. it('should replace patterns', function() {
  128. options.alias = 'alias: $m -> $tag_server ([[measurement]])';
  129. var series = new InfluxSeries(options);
  130. var result = series.getTimeSeries();
  131. expect(result[0].target).to.be('alias: cpu -> server1 (cpu)');
  132. expect(result[1].target).to.be('alias: cpu -> server2 (cpu)');
  133. });
  134. });
  135. });
  136. describe('given measurement with dots', function() {
  137. var options = {
  138. alias: '',
  139. series: [
  140. {
  141. name: 'app.prod.server1.count',
  142. tags: {},
  143. columns: ['time', 'mean'],
  144. values: [[1431946625000, 10], [1431946626000, 12]]
  145. }
  146. ]
  147. };
  148. it('should replace patterns', function() {
  149. options.alias = 'alias: $1 -> [[3]]';
  150. var series = new InfluxSeries(options);
  151. var result = series.getTimeSeries();
  152. expect(result[0].target).to.be('alias: prod -> count');
  153. });
  154. });
  155. describe('given table response', function() {
  156. var options = {
  157. alias: '',
  158. series: [
  159. {
  160. name: 'app.prod.server1.count',
  161. tags: {datacenter: 'Africa', server: 'server2'},
  162. columns: ['time', 'value2', 'value'],
  163. values: [[1431946625000, 23, 10], [1431946626000, 25, 12]]
  164. }
  165. ]
  166. };
  167. it('should return table', function() {
  168. var series = new InfluxSeries(options);
  169. var table = series.getTable();
  170. expect(table.type).to.be('table');
  171. expect(table.columns.length).to.be(5);
  172. expect(table.rows[0]).to.eql([1431946625000, 'Africa', 'server2', 23, 10]);
  173. });
  174. });
  175. describe('given annotation response', function() {
  176. describe('with empty tagsColumn', function() {
  177. var options = {
  178. alias: '',
  179. annotation: {},
  180. series: [
  181. {
  182. name: "logins.count",
  183. tags: {datacenter: 'Africa', server: 'server2'},
  184. columns: ["time", "datacenter", "hostname", "source", "value"],
  185. values: [
  186. [1481549440372, "America", "10.1.100.10", "backend", 215.7432653659507],
  187. ]
  188. }
  189. ]
  190. };
  191. it('should multiple tags', function() {
  192. var series = new InfluxSeries(options);
  193. var annotations = series.getAnnotations();
  194. expect(annotations[0].tags.length).to.be(0);
  195. });
  196. });
  197. describe('given annotation response', function() {
  198. var options = {
  199. alias: '',
  200. annotation: {
  201. tagsColumn: 'datacenter, source'
  202. },
  203. series: [
  204. {
  205. name: "logins.count",
  206. tags: {datacenter: 'Africa', server: 'server2'},
  207. columns: ["time", "datacenter", "hostname", "source", "value"],
  208. values: [
  209. [1481549440372, "America", "10.1.100.10", "backend", 215.7432653659507],
  210. ]
  211. }
  212. ]
  213. };
  214. it('should multiple tags', function() {
  215. var series = new InfluxSeries(options);
  216. var annotations = series.getAnnotations();
  217. expect(annotations[0].tags.length).to.be(2);
  218. expect(annotations[0].tags[0]).to.be('America');
  219. expect(annotations[0].tags[1]).to.be('backend');
  220. });
  221. });
  222. });
  223. });