influx_series_specs.ts 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. ///<amd-dependency path="app/plugins/datasource/influxdb_08/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 two series', function() {
  6. var series = new InfluxSeries({
  7. seriesList: [
  8. {
  9. columns: ['time', 'mean', 'sequence_number'],
  10. name: 'prod.server1.cpu',
  11. points: [[1402596000, 10, 1], [1402596001, 12, 2]]
  12. },
  13. {
  14. columns: ['time', 'mean', 'sequence_number'],
  15. name: 'prod.server2.cpu',
  16. points: [[1402596000, 15, 1], [1402596001, 16, 2]]
  17. }
  18. ]
  19. });
  20. var result = series.getTimeSeries();
  21. it('should generate two time series', function() {
  22. expect(result.length).to.be(2);
  23. expect(result[0].target).to.be('prod.server1.cpu.mean');
  24. expect(result[0].datapoints[0][0]).to.be(10);
  25. expect(result[0].datapoints[0][1]).to.be(1402596000);
  26. expect(result[0].datapoints[1][0]).to.be(12);
  27. expect(result[0].datapoints[1][1]).to.be(1402596001);
  28. expect(result[1].target).to.be('prod.server2.cpu.mean');
  29. expect(result[1].datapoints[0][0]).to.be(15);
  30. expect(result[1].datapoints[0][1]).to.be(1402596000);
  31. expect(result[1].datapoints[1][0]).to.be(16);
  32. expect(result[1].datapoints[1][1]).to.be(1402596001);
  33. });
  34. });
  35. describe('given an alias format', function() {
  36. var series = new InfluxSeries({
  37. seriesList: [
  38. {
  39. columns: ['time', 'mean', 'sequence_number'],
  40. name: 'prod.server1.cpu',
  41. points: [[1402596000, 10, 1], [1402596001, 12, 2]]
  42. }
  43. ],
  44. alias: '$s.testing'
  45. });
  46. var result = series.getTimeSeries();
  47. it('should generate correct series name', function() {
  48. expect(result[0].target).to.be('prod.server1.cpu.testing');
  49. });
  50. });
  51. describe('given an alias format with segment numbers', function() {
  52. var series = new InfluxSeries({
  53. seriesList: [
  54. {
  55. columns: ['time', 'mean', 'sequence_number'],
  56. name: 'prod.server1.cpu',
  57. points: [[1402596000, 10, 1], [1402596001, 12, 2]]
  58. }
  59. ],
  60. alias: '$1.mean'
  61. });
  62. var result = series.getTimeSeries();
  63. it('should generate correct series name', function() {
  64. expect(result[0].target).to.be('server1.mean');
  65. });
  66. });
  67. describe('given an alias format and many segments', function() {
  68. var series = new InfluxSeries({
  69. seriesList: [
  70. {
  71. columns: ['time', 'mean', 'sequence_number'],
  72. name: 'a0.a1.a2.a3.a4.a5.a6.a7.a8.a9.a10.a11.a12',
  73. points: [[1402596000, 10, 1], [1402596001, 12, 2]]
  74. }
  75. ],
  76. alias: '$5.$11.mean'
  77. });
  78. var result = series.getTimeSeries();
  79. it('should generate correct series name', function() {
  80. expect(result[0].target).to.be('a5.a11.mean');
  81. });
  82. });
  83. describe('given an alias format with group by field', function() {
  84. var series = new InfluxSeries({
  85. seriesList: [
  86. {
  87. columns: ['time', 'mean', 'host'],
  88. name: 'prod.cpu',
  89. points: [[1402596000, 10, 'A']]
  90. }
  91. ],
  92. groupByField: 'host',
  93. alias: '$g.$1'
  94. });
  95. var result = series.getTimeSeries();
  96. it('should generate correct series name', function() {
  97. expect(result[0].target).to.be('A.cpu');
  98. });
  99. });
  100. describe('given group by column', function() {
  101. var series = new InfluxSeries({
  102. seriesList: [
  103. {
  104. columns: ['time', 'mean', 'host'],
  105. name: 'prod.cpu',
  106. points: [
  107. [1402596000, 10, 'A'],
  108. [1402596001, 11, 'A'],
  109. [1402596000, 5, 'B'],
  110. [1402596001, 6, 'B'],
  111. ]
  112. }
  113. ],
  114. groupByField: 'host'
  115. });
  116. var result = series.getTimeSeries();
  117. it('should generate two time series', function() {
  118. expect(result.length).to.be(2);
  119. expect(result[0].target).to.be('prod.cpu.A');
  120. expect(result[0].datapoints[0][0]).to.be(10);
  121. expect(result[0].datapoints[0][1]).to.be(1402596000);
  122. expect(result[0].datapoints[1][0]).to.be(11);
  123. expect(result[0].datapoints[1][1]).to.be(1402596001);
  124. expect(result[1].target).to.be('prod.cpu.B');
  125. expect(result[1].datapoints[0][0]).to.be(5);
  126. expect(result[1].datapoints[0][1]).to.be(1402596000);
  127. expect(result[1].datapoints[1][0]).to.be(6);
  128. expect(result[1].datapoints[1][1]).to.be(1402596001);
  129. });
  130. });
  131. });
  132. describe("when creating annotations from influxdb response", function() {
  133. describe('given column mapping for all columns', function() {
  134. var series = new InfluxSeries({
  135. seriesList: [
  136. {
  137. columns: ['time', 'text', 'sequence_number', 'title', 'tags'],
  138. name: 'events1',
  139. points: [[1402596000000, 'some text', 1, 'Hello', 'B'], [1402596001000, 'asd', 2, 'Hello2', 'B']]
  140. }
  141. ],
  142. annotation: {
  143. query: 'select',
  144. titleColumn: 'title',
  145. tagsColumn: 'tags',
  146. textColumn: 'text',
  147. }
  148. });
  149. var result = series.getAnnotations();
  150. it(' should generate 2 annnotations ', function() {
  151. expect(result.length).to.be(2);
  152. expect(result[0].annotation.query).to.be('select');
  153. expect(result[0].title).to.be('Hello');
  154. expect(result[0].time).to.be(1402596000000);
  155. expect(result[0].tags).to.be('B');
  156. expect(result[0].text).to.be('some text');
  157. });
  158. });
  159. describe('given no column mapping', function() {
  160. var series = new InfluxSeries({
  161. seriesList: [
  162. {
  163. columns: ['time', 'text', 'sequence_number'],
  164. name: 'events1',
  165. points: [[1402596000000, 'some text', 1]]
  166. }
  167. ],
  168. annotation: { query: 'select' }
  169. });
  170. var result = series.getAnnotations();
  171. it('should generate 1 annnotation', function() {
  172. expect(result.length).to.be(1);
  173. expect(result[0].title).to.be('some text');
  174. expect(result[0].time).to.be(1402596000000);
  175. expect(result[0].tags).to.be(undefined);
  176. expect(result[0].text).to.be(undefined);
  177. });
  178. });
  179. });