converted influx-series to TS, converted test to jest

This commit is contained in:
Patrick O'Carroll 2017-11-20 14:31:51 +01:00
parent b1de1e6f26
commit 59cebca4b2
3 changed files with 83 additions and 85 deletions

View File

@ -1,2 +0,0 @@
declare var test: any;
export default test;

View File

@ -1,28 +1,27 @@
define([
'lodash',
'app/core/table_model',
],
function (_, TableModel) {
'use strict';
import _ from 'lodash';
import TableModel from 'app/core/table_model';
function InfluxSeries(options) {
export default class InfluxSeries {
series: any;
alias: any;
annotation: any;
constructor(options) {
this.series = options.series;
this.alias = options.alias;
this.annotation = options.annotation;
}
var p = InfluxSeries.prototype;
p.getTimeSeries = function() {
getTimeSeries() {
var output = [];
var self = this;
var i, j;
if (self.series.length === 0) {
if (this.series.length === 0) {
return output;
}
_.each(self.series, function(series) {
_.each(this.series, (series) => {
var columns = series.columns.length;
var tags = _.map(series.tags, function(value, key) {
return key + ': ' + value;
@ -35,8 +34,8 @@ function (_, TableModel) {
seriesName = seriesName + '.' + columnName;
}
if (self.alias) {
seriesName = self._getSeriesName(series, j);
if (this.alias) {
seriesName = this._getSeriesName(series, j);
} else if (series.tags) {
seriesName = seriesName + ' {' + tags.join(', ') + '}';
}
@ -53,9 +52,9 @@ function (_, TableModel) {
});
return output;
};
}
p._getSeriesName = function(series, index) {
_getSeriesName(series, index) {
var regex = /\$(\w+)|\[\[([\s\S]+?)\]\]/g;
var segments = series.name.split('.');
@ -72,30 +71,29 @@ function (_, TableModel) {
if (!series.tags) { return match; }
return series.tags[tag];
});
};
}
p.getAnnotations = function () {
getAnnotations() {
var list = [];
var self = this;
_.each(this.series, function (series) {
_.each(this.series, (series) => {
var titleCol = null;
var timeCol = null;
var tagsCol = [];
var textCol = null;
_.each(series.columns, function(column, index) {
_.each(series.columns, (column, index) => {
if (column === 'time') { timeCol = index; return; }
if (column === 'sequence_number') { return; }
if (!titleCol) { titleCol = index; }
if (column === self.annotation.titleColumn) { titleCol = index; return; }
if (_.includes((self.annotation.tagsColumn || '').replace(' ', '').split(","), column)) { tagsCol.push(index); return; }
if (column === self.annotation.textColumn) { textCol = index; return; }
if (column === this.annotation.titleColumn) { titleCol = index; return; }
if (_.includes((this.annotation.tagsColumn || '').replace(' ', '').split(","), column)) { tagsCol.push(index); return; }
if (column === this.annotation.textColumn) { textCol = index; return; }
});
_.each(series.values, function (value) {
_.each(series.values, (value) => {
var data = {
annotation: self.annotation,
annotation: this.annotation,
time: + new Date(value[timeCol]),
title: value[titleCol],
// Remove empty values, then split in different tags for comma separated values
@ -108,18 +106,17 @@ function (_, TableModel) {
});
return list;
};
}
p.getTable = function() {
var table = new TableModel.default();
var self = this;
getTable() {
var table = new TableModel();
var i, j;
if (self.series.length === 0) {
if (this.series.length === 0) {
return table;
}
_.each(self.series, function(series, seriesIndex) {
_.each(this.series, (series, seriesIndex) => {
if (seriesIndex === 0) {
table.columns.push({text: 'Time', type: 'time'});
@ -151,7 +148,11 @@ function (_, TableModel) {
});
return table;
};
}
}
return InfluxSeries;
});

View File

@ -1,4 +1,3 @@
import {describe, it, expect} from 'test/lib/common';
import InfluxSeries from '../influx_series';
describe('when generating timeseries from influxdb response', function() {
@ -19,24 +18,24 @@ describe('when generating timeseries from influxdb response', function() {
var series = new InfluxSeries(options);
var result = series.getTimeSeries();
expect(result.length).to.be(3);
expect(result[0].target).to.be('cpu.mean {app: test, server: server1}');
expect(result[0].datapoints[0][0]).to.be(10);
expect(result[0].datapoints[0][1]).to.be(1431946625000);
expect(result[0].datapoints[1][0]).to.be(20);
expect(result[0].datapoints[1][1]).to.be(1431946626000);
expect(result.length).toBe(3);
expect(result[0].target).toBe('cpu.mean {app: test, server: server1}');
expect(result[0].datapoints[0][0]).toBe(10);
expect(result[0].datapoints[0][1]).toBe(1431946625000);
expect(result[0].datapoints[1][0]).toBe(20);
expect(result[0].datapoints[1][1]).toBe(1431946626000);
expect(result[1].target).to.be('cpu.max {app: test, server: server1}');
expect(result[1].datapoints[0][0]).to.be(11);
expect(result[1].datapoints[0][1]).to.be(1431946625000);
expect(result[1].datapoints[1][0]).to.be(21);
expect(result[1].datapoints[1][1]).to.be(1431946626000);
expect(result[1].target).toBe('cpu.max {app: test, server: server1}');
expect(result[1].datapoints[0][0]).toBe(11);
expect(result[1].datapoints[0][1]).toBe(1431946625000);
expect(result[1].datapoints[1][0]).toBe(21);
expect(result[1].datapoints[1][1]).toBe(1431946626000);
expect(result[2].target).to.be('cpu.min {app: test, server: server1}');
expect(result[2].datapoints[0][0]).to.be(9);
expect(result[2].datapoints[0][1]).to.be(1431946625000);
expect(result[2].datapoints[1][0]).to.be(19);
expect(result[2].datapoints[1][1]).to.be(1431946626000);
expect(result[2].target).toBe('cpu.min {app: test, server: server1}');
expect(result[2].datapoints[0][0]).toBe(9);
expect(result[2].datapoints[0][1]).toBe(1431946625000);
expect(result[2].datapoints[1][0]).toBe(19);
expect(result[2].datapoints[1][1]).toBe(1431946626000);
});
});
@ -47,9 +46,9 @@ describe('when generating timeseries from influxdb response', function() {
var series = new InfluxSeries(options);
var result = series.getTimeSeries();
expect(result[0].target).to.be('new series');
expect(result[1].target).to.be('new series');
expect(result[2].target).to.be('new series');
expect(result[0].target).toBe('new series');
expect(result[1].target).toBe('new series');
expect(result[2].target).toBe('new series');
});
});
@ -60,9 +59,9 @@ describe('when generating timeseries from influxdb response', function() {
var series = new InfluxSeries(options);
var result = series.getTimeSeries();
expect(result[0].target).to.be('alias: cpu -> server1 (cpu)');
expect(result[1].target).to.be('alias: cpu -> server1 (cpu)');
expect(result[2].target).to.be('alias: cpu -> server1 (cpu)');
expect(result[0].target).toBe('alias: cpu -> server1 (cpu)');
expect(result[1].target).toBe('alias: cpu -> server1 (cpu)');
expect(result[2].target).toBe('alias: cpu -> server1 (cpu)');
});
});
@ -90,8 +89,8 @@ describe('when generating timeseries from influxdb response', function() {
var series = new InfluxSeries(options);
var result = series.getTimeSeries();
expect(result[0].target).to.be('cpu {app: test, server: server1}');
expect(result[1].target).to.be('cpu {app: test2, server: server2}');
expect(result[0].target).toBe('cpu {app: test, server: server1}');
expect(result[1].target).toBe('cpu {app: test2, server: server2}');
});
});
@ -122,18 +121,18 @@ describe('when generating timeseries from influxdb response', function() {
var series = new InfluxSeries(options);
var result = series.getTimeSeries();
expect(result.length).to.be(2);
expect(result[0].target).to.be('cpu.mean {app: test, server: server1}');
expect(result[0].datapoints[0][0]).to.be(10);
expect(result[0].datapoints[0][1]).to.be(1431946625000);
expect(result[0].datapoints[1][0]).to.be(12);
expect(result[0].datapoints[1][1]).to.be(1431946626000);
expect(result.length).toBe(2);
expect(result[0].target).toBe('cpu.mean {app: test, server: server1}');
expect(result[0].datapoints[0][0]).toBe(10);
expect(result[0].datapoints[0][1]).toBe(1431946625000);
expect(result[0].datapoints[1][0]).toBe(12);
expect(result[0].datapoints[1][1]).toBe(1431946626000);
expect(result[1].target).to.be('cpu.mean {app: test2, server: server2}');
expect(result[1].datapoints[0][0]).to.be(15);
expect(result[1].datapoints[0][1]).to.be(1431946625000);
expect(result[1].datapoints[1][0]).to.be(16);
expect(result[1].datapoints[1][1]).to.be(1431946626000);
expect(result[1].target).toBe('cpu.mean {app: test2, server: server2}');
expect(result[1].datapoints[0][0]).toBe(15);
expect(result[1].datapoints[0][1]).toBe(1431946625000);
expect(result[1].datapoints[1][0]).toBe(16);
expect(result[1].datapoints[1][1]).toBe(1431946626000);
});
});
@ -143,7 +142,7 @@ describe('when generating timeseries from influxdb response', function() {
var series = new InfluxSeries(options);
var result = series.getTimeSeries();
expect(result[0].target).to.be('new series');
expect(result[0].target).toBe('new series');
});
});
@ -154,8 +153,8 @@ describe('when generating timeseries from influxdb response', function() {
var series = new InfluxSeries(options);
var result = series.getTimeSeries();
expect(result[0].target).to.be('alias: cpu -> server1 (cpu)');
expect(result[1].target).to.be('alias: cpu -> server2 (cpu)');
expect(result[0].target).toBe('alias: cpu -> server1 (cpu)');
expect(result[1].target).toBe('alias: cpu -> server2 (cpu)');
});
});
@ -180,7 +179,7 @@ describe('when generating timeseries from influxdb response', function() {
var series = new InfluxSeries(options);
var result = series.getTimeSeries();
expect(result[0].target).to.be('alias: prod -> count');
expect(result[0].target).toBe('alias: prod -> count');
});
});
@ -201,9 +200,9 @@ describe('when generating timeseries from influxdb response', function() {
var series = new InfluxSeries(options);
var table = series.getTable();
expect(table.type).to.be('table');
expect(table.columns.length).to.be(5);
expect(table.rows[0]).to.eql([1431946625000, 'Africa', 'server2', 23, 10]);
expect(table.type).toBe('table');
expect(table.columns.length).toBe(5);
expect(table.rows[0]).toEqual([1431946625000, 'Africa', 'server2', 23, 10]);
});
});
@ -228,7 +227,7 @@ describe('when generating timeseries from influxdb response', function() {
var series = new InfluxSeries(options);
var annotations = series.getAnnotations();
expect(annotations[0].tags.length).to.be(0);
expect(annotations[0].tags.length).toBe(0);
});
});
@ -254,9 +253,9 @@ describe('when generating timeseries from influxdb response', function() {
var series = new InfluxSeries(options);
var annotations = series.getAnnotations();
expect(annotations[0].tags.length).to.be(2);
expect(annotations[0].tags[0]).to.be('America');
expect(annotations[0].tags[1]).to.be('backend');
expect(annotations[0].tags.length).toBe(2);
expect(annotations[0].tags[0]).toBe('America');
expect(annotations[0].tags[1]).toBe('backend');
});
});
});