2022-06-08 01:14:34 -05:00
|
|
|
import { CircularDataFrame, FieldType } from '@grafana/data';
|
2022-04-22 08:33:13 -05:00
|
|
|
|
2022-09-13 03:16:04 -05:00
|
|
|
import * as ResultTransformer from './liveStreamsResultTransformer';
|
2022-06-08 01:14:34 -05:00
|
|
|
import { LokiTailResponse } from './types';
|
2020-12-01 12:10:23 -06:00
|
|
|
|
2019-12-02 06:05:40 -06:00
|
|
|
describe('loki result transformer', () => {
|
|
|
|
describe('appendResponseToBufferedData', () => {
|
2020-02-12 11:44:26 -06:00
|
|
|
it('should return a dataframe with ts in iso format', () => {
|
|
|
|
const tailResponse: LokiTailResponse = {
|
|
|
|
streams: [
|
|
|
|
{
|
|
|
|
stream: {
|
|
|
|
filename: '/var/log/grafana/grafana.log',
|
|
|
|
job: 'grafana',
|
|
|
|
},
|
|
|
|
values: [
|
|
|
|
[
|
|
|
|
'1581519914265798400',
|
|
|
|
't=2020-02-12T15:04:51+0000 lvl=info msg="Starting Grafana" logger=server version=6.7.0-pre commit=6f09bc9fb4 branch=issue-21929 compiled=2020-02-11T20:43:28+0000',
|
|
|
|
],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
};
|
|
|
|
|
|
|
|
const data = new CircularDataFrame({ capacity: 1 });
|
2020-05-12 06:52:53 -05:00
|
|
|
data.addField({ name: 'ts', type: FieldType.time, config: { displayName: 'Time' } });
|
2020-02-12 11:44:26 -06:00
|
|
|
data.addField({ name: 'line', type: FieldType.string }).labels = { job: 'grafana' };
|
|
|
|
data.addField({ name: 'id', type: FieldType.string });
|
|
|
|
|
|
|
|
ResultTransformer.appendResponseToBufferedData(tailResponse, data);
|
|
|
|
expect(data.get(0)).toEqual({
|
|
|
|
ts: '2020-02-12T15:05:14.265Z',
|
2022-02-02 06:02:32 -06:00
|
|
|
line: 't=2020-02-12T15:04:51+0000 lvl=info msg="Starting Grafana" logger=server version=6.7.0-pre commit=6f09bc9fb4 branch=issue-21929 compiled=2020-02-11T20:43:28+0000',
|
2021-05-18 07:42:57 -05:00
|
|
|
id: '07f0607c-04ee-51bd-8a0c-fc0f85d37489',
|
2020-02-12 11:44:26 -06:00
|
|
|
});
|
|
|
|
});
|
2020-12-15 08:18:12 -06:00
|
|
|
|
|
|
|
it('should always generate unique ids for logs', () => {
|
|
|
|
const tailResponse: LokiTailResponse = {
|
|
|
|
streams: [
|
|
|
|
{
|
|
|
|
stream: {
|
|
|
|
filename: '/var/log/grafana/grafana.log',
|
|
|
|
job: 'grafana',
|
|
|
|
},
|
|
|
|
values: [
|
|
|
|
['1581519914265798400', 't=2020-02-12T15:04:51+0000 lvl=info msg="Dupplicated 1"'],
|
|
|
|
['1581519914265798400', 't=2020-02-12T15:04:51+0000 lvl=info msg="Dupplicated 1"'],
|
|
|
|
['1581519914265798400', 't=2020-02-12T15:04:51+0000 lvl=info msg="Dupplicated 2"'],
|
|
|
|
['1581519914265798400', 't=2020-02-12T15:04:51+0000 lvl=info msg="Not dupplicated"'],
|
|
|
|
['1581519914265798400', 't=2020-02-12T15:04:51+0000 lvl=info msg="Dupplicated 1"'],
|
|
|
|
['1581519914265798400', 't=2020-02-12T15:04:51+0000 lvl=info msg="Dupplicated 2"'],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
};
|
|
|
|
|
|
|
|
const data = new CircularDataFrame({ capacity: 6 });
|
|
|
|
data.addField({ name: 'ts', type: FieldType.time, config: { displayName: 'Time' } });
|
|
|
|
data.addField({ name: 'line', type: FieldType.string }).labels = { job: 'grafana' };
|
|
|
|
data.addField({ name: 'id', type: FieldType.string });
|
2021-01-22 04:09:09 -06:00
|
|
|
data.refId = 'C';
|
2020-12-15 08:18:12 -06:00
|
|
|
|
|
|
|
ResultTransformer.appendResponseToBufferedData(tailResponse, data);
|
2023-05-17 08:28:25 -05:00
|
|
|
expect(data.get(0).id).toEqual('C_75e72b25-8589-5f99-8d10-ccb5eb27c1b4');
|
|
|
|
expect(data.get(1).id).toEqual('C_75e72b25-8589-5f99-8d10-ccb5eb27c1b4_1');
|
|
|
|
expect(data.get(2).id).toEqual('C_3ca99d6b-3ab5-5970-93c0-eb3c9449088e');
|
|
|
|
expect(data.get(3).id).toEqual('C_ec9bea1d-70cb-556c-8519-d5d6ae18c004');
|
|
|
|
expect(data.get(4).id).toEqual('C_75e72b25-8589-5f99-8d10-ccb5eb27c1b4_2');
|
|
|
|
expect(data.get(5).id).toEqual('C_3ca99d6b-3ab5-5970-93c0-eb3c9449088e_1');
|
2020-12-15 08:18:12 -06:00
|
|
|
});
|
2019-03-29 03:41:37 -05:00
|
|
|
});
|
2020-04-20 08:48:38 -05:00
|
|
|
});
|