Tempo: Use timezone of selected range for timestamps (#75438)

* Use timezone of selected range for timestamps

* Fix tests
pull/75527/head^2
Fabrizio 2 years ago committed by GitHub
parent 92e0a986da
commit b1bc379a5c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 14
      public/app/plugins/datasource/tempo/resultTransformer.test.ts
  2. 19
      public/app/plugins/datasource/tempo/resultTransformer.ts

@ -117,8 +117,8 @@ describe('createTableFrameFromSearch()', () => {
expect(frame.fields[2].values[0]).toBe('app');
expect(frame.fields[3].name).toBe('startTime');
expect(frame.fields[3].values[0]).toBe('2022-01-28 03:00:28');
expect(frame.fields[3].values[1]).toBe('2022-01-27 22:56:06');
expect(frame.fields[3].values[0]).toBe(1643356828724);
expect(frame.fields[3].values[1]).toBe(1643342166678.0002);
expect(frame.fields[4].name).toBe('traceDuration');
expect(frame.fields[4].values[0]).toBe(65);
@ -135,8 +135,8 @@ describe('createTableFrameFromTraceQlQuery()', () => {
expect(frame.fields[0].config.unit).toBe('string');
// Start time field
expect(frame.fields[1].name).toBe('startTime');
expect(frame.fields[1].type).toBe('string');
expect(frame.fields[1].values[1]).toBe('2022-01-27 22:56:06');
expect(frame.fields[1].type).toBe('time');
expect(frame.fields[1].values[1]).toBe(1643342166678.0002);
// Trace service field
expect(frame.fields[2].name).toBe('traceService');
expect(frame.fields[2].type).toBe('string');
@ -158,7 +158,7 @@ describe('createTableFrameFromTraceQlQuery()', () => {
expect(frame.fields[5].values[0][0].fields[1].name).toBe('spanID');
expect(frame.fields[5].values[0][0].fields[1].values[0]).toBe('162a4adae63b61f1');
expect(frame.fields[5].values[0][0].fields[2].name).toBe('spanStartTime');
expect(frame.fields[5].values[0][0].fields[2].values[0]).toBe('2022-10-19 09:03:34');
expect(frame.fields[5].values[0][0].fields[2].values[0]).toBe(1666188214303.201);
expect(frame.fields[5].values[0][0].fields[4].name).toBe('http.method');
expect(frame.fields[5].values[0][0].fields[4].values[0]).toBe('GET');
expect(frame.fields[5].values[0][0].fields[5].name).toBe('service.name');
@ -171,7 +171,7 @@ describe('createTableFrameFromTraceQlQuery()', () => {
expect(frame.fields[5].values[1][0].fields[1].name).toBe('spanID');
expect(frame.fields[5].values[1][0].fields[1].values[0]).toBe('3b9a5c222d3ddd8f');
expect(frame.fields[5].values[1][0].fields[2].name).toBe('spanStartTime');
expect(frame.fields[5].values[1][0].fields[2].values[0]).toBe('2022-10-19 08:57:55');
expect(frame.fields[5].values[1][0].fields[2].values[0]).toBe(1666187875397.7212);
expect(frame.fields[5].values[1][0].fields[4].name).toBe('by(resource.service.name)');
expect(frame.fields[5].values[1][0].fields[4].values[0]).toBe('db');
expect(frame.fields[5].values[1][0].fields[5].name).toBe('http.method');
@ -186,7 +186,7 @@ describe('createTableFrameFromTraceQlQuery()', () => {
expect(frame.fields[5].values[1][1].fields[1].name).toBe('spanID');
expect(frame.fields[5].values[1][1].fields[1].values[0]).toBe('894d90db6b5807f');
expect(frame.fields[5].values[1][1].fields[2].name).toBe('spanStartTime');
expect(frame.fields[5].values[1][1].fields[2].values[0]).toBe('2022-10-19 08:57:55');
expect(frame.fields[5].values[1][1].fields[2].values[0]).toBe(1666187875393.293);
expect(frame.fields[5].values[1][1].fields[4].name).toBe('by(resource.service.name)');
expect(frame.fields[5].values[1][1].fields[4].values[0]).toBe('app');
expect(frame.fields[5].values[1][1].fields[5].name).toBe('http.method');

@ -12,7 +12,6 @@ import {
TraceLog,
TraceSpanReference,
TraceSpanRow,
dateTimeFormat,
FieldDTO,
createDataFrame,
getDisplayProcessor,
@ -533,7 +532,7 @@ export function createTableFrameFromSearch(data: TraceSearchMetadata[], instance
},
{ name: 'traceService', type: FieldType.string, config: { displayNameFromDS: 'Trace service' } },
{ name: 'traceName', type: FieldType.string, config: { displayNameFromDS: 'Trace name' } },
{ name: 'startTime', type: FieldType.string, config: { displayNameFromDS: 'Start time' } },
{ name: 'startTime', type: FieldType.time, config: { displayNameFromDS: 'Start time' } },
{ name: 'traceDuration', type: FieldType.number, config: { displayNameFromDS: 'Duration', unit: 'ms' } },
],
meta: {
@ -556,12 +555,9 @@ export function createTableFrameFromSearch(data: TraceSearchMetadata[], instance
}
function transformToTraceData(data: TraceSearchMetadata) {
const traceStartTime = parseInt(data.startTimeUnixNano!, 10) / 1000000;
const startTime = !isNaN(traceStartTime) ? dateTimeFormat(traceStartTime) : '';
return {
traceID: data.traceID,
startTime,
startTime: parseInt(data.startTimeUnixNano!, 10) / 1000000,
traceDuration: data.durationMs,
traceService: data.rootServiceName || '',
traceName: data.rootTraceName || '',
@ -603,7 +599,7 @@ export function createTableFrameFromTraceQlQuery(
},
{
name: 'startTime',
type: FieldType.string,
type: FieldType.time,
config: {
displayNameFromDS: 'Start time',
custom: {
@ -733,7 +729,7 @@ const traceSubFrame = (
},
{
name: 'spanStartTime',
type: FieldType.string,
type: FieldType.time,
config: {
displayNameFromDS: 'Start time',
custom: {
@ -780,19 +776,16 @@ interface TraceTableData {
[key: string]: string | number | boolean | undefined; // dynamic attribute name
traceID?: string;
spanID?: string;
startTime?: string;
startTime?: number;
name?: string;
traceDuration?: number;
}
function transformSpanToTraceData(span: Span, spanSet: Spanset, traceID: string): TraceTableData {
const spanStartTimeUnixMs = parseInt(span.startTimeUnixNano, 10) / 1000000;
let spanStartTime = dateTimeFormat(spanStartTimeUnixMs);
const data: TraceTableData = {
traceIdHidden: traceID,
spanID: span.spanID,
spanStartTime,
spanStartTime: parseInt(span.startTimeUnixNano, 10) / 1000000,
duration: parseInt(span.durationNanos, 10),
name: span.name,
};

Loading…
Cancel
Save