influxSeries08-specs.js 6.4 KB

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