influxSeries-specs.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. define([
  2. 'services/influxdb/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 with group by field', function() {
  69. var series = new InfluxSeries({
  70. seriesList: [
  71. {
  72. columns: ['time', 'mean', 'host'],
  73. name: 'prod.cpu',
  74. points: [[1402596000, 10, 'A']]
  75. }
  76. ],
  77. groupByField: 'host',
  78. alias: '$g.$1'
  79. });
  80. var result = series.getTimeSeries();
  81. it('should generate correct series name', function() {
  82. expect(result[0].target).to.be('A.cpu');
  83. });
  84. });
  85. describe('given group by column', function() {
  86. var series = new InfluxSeries({
  87. seriesList: [
  88. {
  89. columns: ['time', 'mean', 'host'],
  90. name: 'prod.cpu',
  91. points: [
  92. [1402596000, 10, 'A'],
  93. [1402596001, 11, 'A'],
  94. [1402596000, 5, 'B'],
  95. [1402596001, 6, 'B'],
  96. ]
  97. }
  98. ],
  99. groupByField: 'host'
  100. });
  101. var result = series.getTimeSeries();
  102. it('should generate two time series', function() {
  103. expect(result.length).to.be(2);
  104. expect(result[0].target).to.be('prod.cpu.A');
  105. expect(result[0].datapoints[0][0]).to.be(10);
  106. expect(result[0].datapoints[0][1]).to.be(1402596000);
  107. expect(result[0].datapoints[1][0]).to.be(11);
  108. expect(result[0].datapoints[1][1]).to.be(1402596001);
  109. expect(result[1].target).to.be('prod.cpu.B');
  110. expect(result[1].datapoints[0][0]).to.be(5);
  111. expect(result[1].datapoints[0][1]).to.be(1402596000);
  112. expect(result[1].datapoints[1][0]).to.be(6);
  113. expect(result[1].datapoints[1][1]).to.be(1402596001);
  114. });
  115. });
  116. });
  117. describe("when creating annotations from influxdb response", function() {
  118. describe('given column mapping for all columns', function() {
  119. var series = new InfluxSeries({
  120. seriesList: [
  121. {
  122. columns: ['time', 'text', 'sequence_number', 'title', 'tags'],
  123. name: 'events1',
  124. points: [[1402596000, 'some text', 1, 'Hello', 'B'], [1402596001, 'asd', 2, 'Hello2', 'B']]
  125. }
  126. ],
  127. annotation: {
  128. query: 'select',
  129. titleColumn: 'title',
  130. tagsColumn: 'tags',
  131. textColumn: 'text',
  132. }
  133. });
  134. var result = series.getAnnotations();
  135. it(' should generate 2 annnotations ', function() {
  136. expect(result.length).to.be(2);
  137. expect(result[0].annotation.query).to.be('select');
  138. expect(result[0].title).to.be('Hello');
  139. expect(result[0].time).to.be(1402596000000);
  140. expect(result[0].tags).to.be('B');
  141. expect(result[0].text).to.be('some text');
  142. });
  143. });
  144. describe('given no column mapping', function() {
  145. var series = new InfluxSeries({
  146. seriesList: [
  147. {
  148. columns: ['time', 'text', 'sequence_number'],
  149. name: 'events1',
  150. points: [[1402596000, 'some text', 1]]
  151. }
  152. ],
  153. annotation: { query: 'select' }
  154. });
  155. var result = series.getAnnotations();
  156. it('should generate 1 annnotation', function() {
  157. expect(result.length).to.be(1);
  158. expect(result[0].title).to.be('some text');
  159. expect(result[0].time).to.be(1402596000000);
  160. expect(result[0].tags).to.be(undefined);
  161. expect(result[0].text).to.be(undefined);
  162. });
  163. });
  164. });
  165. });