result_transformer.jest.ts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. import { ResultTransformer } from '../result_transformer';
  2. describe('Prometheus Result Transformer', () => {
  3. let ctx: any = {};
  4. beforeEach(() => {
  5. ctx.templateSrv = {
  6. replace: str => str,
  7. };
  8. ctx.resultTransformer = new ResultTransformer(ctx.templateSrv);
  9. });
  10. describe('When resultFormat is table', () => {
  11. var response = {
  12. status: 'success',
  13. data: {
  14. resultType: 'matrix',
  15. result: [
  16. {
  17. metric: { __name__: 'test', job: 'testjob' },
  18. values: [[1443454528, '3846']],
  19. },
  20. {
  21. metric: {
  22. __name__: 'test',
  23. instance: 'localhost:8080',
  24. job: 'otherjob',
  25. },
  26. values: [[1443454529, '3847']],
  27. },
  28. ],
  29. },
  30. };
  31. it('should return table model', () => {
  32. var table = ctx.resultTransformer.transformMetricDataToTable(response.data.result);
  33. expect(table.type).toBe('table');
  34. expect(table.rows).toEqual([
  35. [1443454528000, 'test', '', 'testjob', 3846],
  36. [1443454529000, 'test', 'localhost:8080', 'otherjob', 3847],
  37. ]);
  38. expect(table.columns).toEqual([
  39. { text: 'Time', type: 'time' },
  40. { text: '__name__' },
  41. { text: 'instance' },
  42. { text: 'job' },
  43. { text: 'Value' },
  44. ]);
  45. });
  46. });
  47. describe('When resultFormat is table and instant = true', () => {
  48. var response = {
  49. status: 'success',
  50. data: {
  51. resultType: 'vector',
  52. result: [
  53. {
  54. metric: { __name__: 'test', job: 'testjob' },
  55. value: [1443454528, '3846'],
  56. },
  57. ],
  58. },
  59. };
  60. it('should return table model', () => {
  61. var table = ctx.resultTransformer.transformMetricDataToTable(response.data.result);
  62. expect(table.type).toBe('table');
  63. expect(table.rows).toEqual([[1443454528000, 'test', 'testjob', 3846]]);
  64. expect(table.columns).toEqual([
  65. { text: 'Time', type: 'time' },
  66. { text: '__name__' },
  67. { text: 'job' },
  68. { text: 'Value' },
  69. ]);
  70. });
  71. });
  72. describe('When resultFormat is heatmap', () => {
  73. var response = {
  74. status: 'success',
  75. data: {
  76. resultType: 'matrix',
  77. result: [
  78. {
  79. metric: { __name__: 'test', job: 'testjob', le: '1' },
  80. values: [[1445000010, '10'], [1445000020, '10'], [1445000030, '0']],
  81. },
  82. {
  83. metric: { __name__: 'test', job: 'testjob', le: '2' },
  84. values: [[1445000010, '20'], [1445000020, '10'], [1445000030, '30']],
  85. },
  86. {
  87. metric: { __name__: 'test', job: 'testjob', le: '3' },
  88. values: [[1445000010, '30'], [1445000020, '10'], [1445000030, '40']],
  89. },
  90. ],
  91. },
  92. };
  93. it('should convert cumulative histogram to regular', () => {
  94. let result = [];
  95. let options = {
  96. format: 'heatmap',
  97. start: 1445000010,
  98. end: 1445000030,
  99. legendFormat: '{{le}}',
  100. };
  101. ctx.resultTransformer.transform(result, { data: response }, options);
  102. expect(result).toEqual([
  103. { target: '1', datapoints: [[10, 1445000010000], [10, 1445000020000], [0, 1445000030000]] },
  104. { target: '2', datapoints: [[10, 1445000010000], [0, 1445000020000], [30, 1445000030000]] },
  105. { target: '3', datapoints: [[10, 1445000010000], [0, 1445000020000], [10, 1445000030000]] },
  106. ]);
  107. });
  108. });
  109. });