influxdb/ui/spec/utils/timeSeriesToDygraphSpec.js

295 lines
6.4 KiB
JavaScript
Raw Normal View History

2017-03-30 22:28:36 +00:00
import timeSeriesToDygraph from 'src/utils/timeSeriesToDygraph'
describe('timeSeriesToDygraph', () => {
it('parses a raw InfluxDB response into a dygraph friendly data format', () => {
const influxResponse = [
{
2017-06-07 16:23:53 +00:00
response: {
2017-03-30 22:28:36 +00:00
results: [
{
2017-03-30 22:28:36 +00:00
series: [
{
2017-06-07 16:23:53 +00:00
name: 'm1',
columns: ['time', 'f1'],
2017-03-30 22:28:36 +00:00
values: [[1000, 1], [2000, 2]],
},
2017-03-30 22:28:36 +00:00
],
},
{
2017-03-30 22:28:36 +00:00
series: [
{
2017-06-07 16:23:53 +00:00
name: 'm1',
columns: ['time', 'f2'],
2017-03-30 22:28:36 +00:00
values: [[2000, 3], [4000, 4]],
},
2017-03-30 22:28:36 +00:00
],
},
],
},
2017-03-30 22:28:36 +00:00
},
]
2017-03-30 22:28:36 +00:00
const actual = timeSeriesToDygraph(influxResponse)
const expected = {
2017-06-07 16:23:53 +00:00
labels: ['time', `m1.f1`, `m1.f2`],
timeSeries: [
[new Date(1000), 1, null],
[new Date(2000), 2, 3],
[new Date(4000), null, 4],
],
2017-01-25 21:25:03 +00:00
dygraphSeries: {
'm1.f1': {
2017-01-25 21:25:03 +00:00
axis: 'y',
},
'm1.f2': {
2017-01-25 21:25:03 +00:00
axis: 'y',
},
},
2017-03-30 22:28:36 +00:00
}
2017-03-30 22:28:36 +00:00
expect(actual).to.deep.equal(expected)
})
it('can sort numerical timestamps correctly', () => {
const influxResponse = [
{
2017-06-07 16:23:53 +00:00
response: {
2017-03-30 22:28:36 +00:00
results: [
{
2017-03-30 22:28:36 +00:00
series: [
{
2017-06-07 16:23:53 +00:00
name: 'm1',
columns: ['time', 'f1'],
2017-03-30 22:28:36 +00:00
values: [[100, 1], [3000, 3], [200, 2]],
},
2017-03-30 22:28:36 +00:00
],
},
],
},
2017-03-30 22:28:36 +00:00
},
]
2017-03-30 22:28:36 +00:00
const actual = timeSeriesToDygraph(influxResponse)
const expected = {
2017-06-07 16:23:53 +00:00
labels: ['time', 'm1.f1'],
timeSeries: [[new Date(100), 1], [new Date(200), 2], [new Date(3000), 3]],
2017-03-30 22:28:36 +00:00
}
2017-03-30 22:28:36 +00:00
expect(actual.timeSeries).to.deep.equal(expected.timeSeries)
})
2016-11-28 20:53:03 +00:00
it('can parse multiple responses into two axes', () => {
const influxResponse = [
{
2017-06-07 16:23:53 +00:00
response: {
2017-03-30 22:28:36 +00:00
results: [
2016-11-28 20:53:03 +00:00
{
2017-03-30 22:28:36 +00:00
series: [
2016-11-28 20:53:03 +00:00
{
2017-06-07 16:23:53 +00:00
name: 'm1',
columns: ['time', 'f1'],
2017-03-30 22:28:36 +00:00
values: [[1000, 1], [2000, 2]],
2016-11-28 20:53:03 +00:00
},
2017-03-30 22:28:36 +00:00
],
2016-11-28 20:53:03 +00:00
},
{
2017-03-30 22:28:36 +00:00
series: [
2016-11-28 20:53:03 +00:00
{
2017-06-07 16:23:53 +00:00
name: 'm1',
columns: ['time', 'f2'],
2017-03-30 22:28:36 +00:00
values: [[2000, 3], [4000, 4]],
2016-11-28 20:53:03 +00:00
},
2017-03-30 22:28:36 +00:00
],
2016-11-28 20:53:03 +00:00
},
],
},
},
{
2017-06-07 16:23:53 +00:00
response: {
2017-03-30 22:28:36 +00:00
results: [
2016-11-28 20:53:03 +00:00
{
2017-03-30 22:28:36 +00:00
series: [
2016-11-28 20:53:03 +00:00
{
2017-06-07 16:23:53 +00:00
name: 'm3',
columns: ['time', 'f3'],
2017-03-30 22:28:36 +00:00
values: [[1000, 1], [2000, 2]],
2016-11-28 20:53:03 +00:00
},
2017-03-30 22:28:36 +00:00
],
2016-11-28 20:53:03 +00:00
},
],
},
},
2017-03-30 22:28:36 +00:00
]
2016-11-28 20:53:03 +00:00
2017-03-30 22:28:36 +00:00
const actual = timeSeriesToDygraph(influxResponse)
2016-11-28 20:53:03 +00:00
2017-01-05 23:47:37 +00:00
const expected = {
2017-03-30 22:28:36 +00:00
'm1.f1': {
axis: 'y',
},
'm1.f2': {
axis: 'y',
},
'm3.f3': {
axis: 'y2',
},
}
2017-01-05 23:47:37 +00:00
2017-03-30 22:28:36 +00:00
expect(actual.dygraphSeries).to.deep.equal(expected)
})
2017-01-05 23:47:37 +00:00
it('can parse multiple responses with the same field and measurement', () => {
const influxResponse = [
{
2017-06-07 16:23:53 +00:00
response: {
2017-03-30 22:28:36 +00:00
results: [
2017-01-05 23:47:37 +00:00
{
2017-03-30 22:28:36 +00:00
series: [
2017-01-05 23:47:37 +00:00
{
2017-06-07 16:23:53 +00:00
name: 'm1',
columns: ['time', 'f1'],
2017-03-30 22:28:36 +00:00
values: [[1000, 1], [2000, 2]],
2017-01-05 23:47:37 +00:00
},
2017-03-30 22:28:36 +00:00
],
2017-01-05 23:47:37 +00:00
},
],
},
},
{
2017-06-07 16:23:53 +00:00
response: {
2017-03-30 22:28:36 +00:00
results: [
2017-01-05 23:47:37 +00:00
{
2017-03-30 22:28:36 +00:00
series: [
2017-01-05 23:47:37 +00:00
{
2017-06-07 16:23:53 +00:00
name: 'm1',
columns: ['time', 'f1'],
2017-03-30 22:28:36 +00:00
values: [[2000, 3], [4000, 4]],
2017-01-05 23:47:37 +00:00
},
2017-03-30 22:28:36 +00:00
],
2017-01-05 23:47:37 +00:00
},
],
},
},
2017-03-30 22:28:36 +00:00
]
2017-01-05 23:47:37 +00:00
2017-03-30 22:28:36 +00:00
const actual = timeSeriesToDygraph(influxResponse)
2017-01-05 23:47:37 +00:00
2016-11-28 20:53:03 +00:00
const expected = {
2017-06-07 16:23:53 +00:00
labels: ['time', `m1.f1`, `m1.f1`],
2016-11-28 20:53:03 +00:00
timeSeries: [
2017-01-05 23:47:37 +00:00
[new Date(1000), 1, null],
[new Date(2000), 2, 3],
[new Date(4000), null, 4],
2016-11-28 20:53:03 +00:00
],
2017-01-25 21:25:03 +00:00
dygraphSeries: {
'm1.f1': {
axis: 'y2',
},
},
2017-03-30 22:28:36 +00:00
}
2016-11-28 20:53:03 +00:00
2017-03-30 22:28:36 +00:00
expect(actual).to.deep.equal(expected)
})
2017-01-05 23:47:37 +00:00
it('it does not use multiple axes if being used for the DataExplorer', () => {
const influxResponse = [
{
2017-06-07 16:23:53 +00:00
response: {
2017-03-30 22:28:36 +00:00
results: [
2017-01-05 23:47:37 +00:00
{
2017-03-30 22:28:36 +00:00
series: [
2017-01-05 23:47:37 +00:00
{
2017-06-07 16:23:53 +00:00
name: 'm1',
columns: ['time', 'f1'],
2017-03-30 22:28:36 +00:00
values: [[1000, 1], [2000, 2]],
2017-01-05 23:47:37 +00:00
},
2017-03-30 22:28:36 +00:00
],
2017-01-05 23:47:37 +00:00
},
],
},
},
{
2017-06-07 16:23:53 +00:00
response: {
2017-03-30 22:28:36 +00:00
results: [
2017-01-05 23:47:37 +00:00
{
2017-03-30 22:28:36 +00:00
series: [
2017-01-05 23:47:37 +00:00
{
2017-06-07 16:23:53 +00:00
name: 'm1',
columns: ['time', 'f2'],
2017-03-30 22:28:36 +00:00
values: [[2000, 3], [4000, 4]],
2017-01-05 23:47:37 +00:00
},
2017-03-30 22:28:36 +00:00
],
2017-01-05 23:47:37 +00:00
},
],
},
},
2017-03-30 22:28:36 +00:00
]
2017-01-05 23:47:37 +00:00
2017-03-30 22:28:36 +00:00
const isInDataExplorer = true
2017-06-07 16:23:53 +00:00
const actual = timeSeriesToDygraph(
influxResponse,
undefined,
isInDataExplorer
)
2017-01-05 23:47:37 +00:00
2017-03-30 22:28:36 +00:00
const expected = {}
2017-01-05 23:47:37 +00:00
2017-03-30 22:28:36 +00:00
expect(actual.dygraphSeries).to.deep.equal(expected)
})
2017-01-06 19:56:38 +00:00
it('parses a raw InfluxDB response into a dygraph friendly data format', () => {
2017-01-06 19:56:38 +00:00
const influxResponse = [
{
2017-06-07 16:23:53 +00:00
response: {
2017-03-30 22:28:36 +00:00
results: [
2017-01-06 19:56:38 +00:00
{
2017-03-30 22:28:36 +00:00
series: [
2017-01-06 19:56:38 +00:00
{
2017-06-07 16:23:53 +00:00
name: 'mb',
columns: ['time', 'f1'],
2017-03-30 22:28:36 +00:00
values: [[1000, 1], [2000, 2]],
},
2017-03-30 22:28:36 +00:00
],
},
{
2017-03-30 22:28:36 +00:00
series: [
{
2017-06-07 16:23:53 +00:00
name: 'ma',
columns: ['time', 'f1'],
2017-03-30 22:28:36 +00:00
values: [[1000, 1], [2000, 2]],
},
2017-03-30 22:28:36 +00:00
],
},
{
2017-03-30 22:28:36 +00:00
series: [
{
2017-06-07 16:23:53 +00:00
name: 'mc',
columns: ['time', 'f2'],
2017-03-30 22:28:36 +00:00
values: [[2000, 3], [4000, 4]],
2017-01-06 19:56:38 +00:00
},
2017-03-30 22:28:36 +00:00
],
2017-01-06 19:56:38 +00:00
},
{
2017-03-30 22:28:36 +00:00
series: [
2017-01-06 19:56:38 +00:00
{
2017-06-07 16:23:53 +00:00
name: 'mc',
columns: ['time', 'f1'],
2017-03-30 22:28:36 +00:00
values: [[2000, 3], [4000, 4]],
2017-01-06 19:56:38 +00:00
},
2017-03-30 22:28:36 +00:00
],
2017-01-06 19:56:38 +00:00
},
],
},
2017-03-30 22:28:36 +00:00
},
]
2017-01-06 19:56:38 +00:00
2017-03-30 22:28:36 +00:00
const actual = timeSeriesToDygraph(influxResponse)
2017-01-06 19:56:38 +00:00
2017-06-07 16:23:53 +00:00
const expected = ['time', `ma.f1`, `mb.f1`, `mc.f1`, `mc.f2`]
2017-01-06 19:56:38 +00:00
2017-03-30 22:28:36 +00:00
expect(actual.labels).to.deep.equal(expected)
})
})