2021-04-01 10:30:08 -07:00
|
|
|
import { DataFrame, dataFrameToJSON, DataSourceInstanceSettings, MutableDataFrame, PluginType } from '@grafana/data';
|
2021-03-22 19:09:15 +01:00
|
|
|
import { Observable, of } from 'rxjs';
|
2021-03-05 14:28:17 +01:00
|
|
|
import { createFetchResponse } from 'test/helpers/createFetchResponse';
|
|
|
|
|
import { TempoDatasource } from './datasource';
|
2021-03-22 19:09:15 +01:00
|
|
|
import { FetchResponse, setBackendSrv, BackendDataSourceResponse } from '@grafana/runtime';
|
2021-03-05 14:28:17 +01:00
|
|
|
|
|
|
|
|
describe('Tempo data source', () => {
|
2021-03-22 19:09:15 +01:00
|
|
|
it('parses json fields from backend', async () => {
|
|
|
|
|
setupBackendSrv(
|
|
|
|
|
new MutableDataFrame({
|
|
|
|
|
fields: [
|
|
|
|
|
{ name: 'serviceTags', values: ['{"key":"servicetag1","value":"service"}'] },
|
|
|
|
|
{ name: 'logs', values: ['{"timestamp":12345,"fields":[{"key":"count","value":1}]}'] },
|
|
|
|
|
{ name: 'tags', values: ['{"key":"tag1","value":"val1"}'] },
|
|
|
|
|
{ name: 'serviceName', values: ['service'] },
|
|
|
|
|
],
|
|
|
|
|
})
|
|
|
|
|
);
|
2021-03-05 14:28:17 +01:00
|
|
|
const ds = new TempoDatasource(defaultSettings);
|
2021-03-31 08:35:03 -07:00
|
|
|
await expect(ds.query({ targets: [{ refId: 'refid1' }] } as any)).toEmitValuesWith((response) => {
|
2021-03-22 19:09:15 +01:00
|
|
|
const fields = (response[0].data[0] as DataFrame).fields;
|
|
|
|
|
expect(
|
|
|
|
|
fields.map((f) => ({
|
|
|
|
|
name: f.name,
|
|
|
|
|
values: f.values.toArray(),
|
|
|
|
|
}))
|
|
|
|
|
).toMatchObject([
|
|
|
|
|
{ name: 'serviceTags', values: [{ key: 'servicetag1', value: 'service' }] },
|
|
|
|
|
{ name: 'logs', values: [{ timestamp: 12345, fields: [{ key: 'count', value: 1 }] }] },
|
|
|
|
|
{ name: 'tags', values: [{ key: 'tag1', value: 'val1' }] },
|
|
|
|
|
{ name: 'serviceName', values: ['service'] },
|
|
|
|
|
]);
|
2020-10-13 19:12:49 +02:00
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2021-03-22 19:09:15 +01:00
|
|
|
function setupBackendSrv(frame: DataFrame) {
|
|
|
|
|
setBackendSrv({
|
|
|
|
|
fetch(): Observable<FetchResponse<BackendDataSourceResponse>> {
|
|
|
|
|
return of(
|
|
|
|
|
createFetchResponse({
|
|
|
|
|
results: {
|
|
|
|
|
refid1: {
|
2021-04-01 10:30:08 -07:00
|
|
|
frames: [dataFrameToJSON(frame)],
|
2021-03-22 19:09:15 +01:00
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
} as any);
|
|
|
|
|
}
|
2020-10-13 19:12:49 +02:00
|
|
|
|
|
|
|
|
const defaultSettings: DataSourceInstanceSettings = {
|
|
|
|
|
id: 0,
|
|
|
|
|
uid: '0',
|
|
|
|
|
type: 'tracing',
|
|
|
|
|
name: 'jaeger',
|
|
|
|
|
meta: {
|
|
|
|
|
id: 'jaeger',
|
|
|
|
|
name: 'jaeger',
|
|
|
|
|
type: PluginType.datasource,
|
|
|
|
|
info: {} as any,
|
|
|
|
|
module: '',
|
|
|
|
|
baseUrl: '',
|
|
|
|
|
},
|
|
|
|
|
jsonData: {},
|
|
|
|
|
};
|