mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Tracing: Split name column in search results (#72449)
* Split name column * Add tests * Update test
This commit is contained in:
parent
c830c01e61
commit
e6c96e7308
@ -110,15 +110,18 @@ describe('createTableFrameFromSearch()', () => {
|
||||
// TraceID must have unit = 'string' to prevent the ID from rendering as Infinity
|
||||
expect(frame.fields[0].config.unit).toBe('string');
|
||||
|
||||
expect(frame.fields[1].name).toBe('traceName');
|
||||
expect(frame.fields[1].values[0]).toBe('c10d7ca4e3a00354 ');
|
||||
expect(frame.fields[1].name).toBe('traceService');
|
||||
expect(frame.fields[1].values[0]).toBe('requester');
|
||||
|
||||
expect(frame.fields[2].name).toBe('startTime');
|
||||
expect(frame.fields[2].values[0]).toBe('2022-01-28 03:00:28');
|
||||
expect(frame.fields[2].values[1]).toBe('2022-01-27 22:56:06');
|
||||
expect(frame.fields[2].name).toBe('traceName');
|
||||
expect(frame.fields[2].values[0]).toBe('app');
|
||||
|
||||
expect(frame.fields[3].name).toBe('traceDuration');
|
||||
expect(frame.fields[3].values[0]).toBe(65);
|
||||
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[4].name).toBe('traceDuration');
|
||||
expect(frame.fields[4].values[0]).toBe(65);
|
||||
});
|
||||
});
|
||||
|
||||
@ -134,60 +137,64 @@ describe('createTableFrameFromTraceQlQuery()', () => {
|
||||
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');
|
||||
// Trace name field
|
||||
expect(frame.fields[2].name).toBe('traceName');
|
||||
// Trace service field
|
||||
expect(frame.fields[2].name).toBe('traceService');
|
||||
expect(frame.fields[2].type).toBe('string');
|
||||
expect(frame.fields[2].values[0]).toBe('lb HTTP Client');
|
||||
expect(frame.fields[2].values[0]).toBe('lb');
|
||||
// Trace name field
|
||||
expect(frame.fields[3].name).toBe('traceName');
|
||||
expect(frame.fields[3].type).toBe('string');
|
||||
expect(frame.fields[3].values[0]).toBe('HTTP Client');
|
||||
// Duration field
|
||||
expect(frame.fields[3].name).toBe('traceDuration');
|
||||
expect(frame.fields[3].type).toBe('number');
|
||||
expect(frame.fields[3].values[2]).toBe(44);
|
||||
expect(frame.fields[4].name).toBe('traceDuration');
|
||||
expect(frame.fields[4].type).toBe('number');
|
||||
expect(frame.fields[4].values[2]).toBe(44);
|
||||
// Subframes field
|
||||
expect(frame.fields[4].name).toBe('nested');
|
||||
expect(frame.fields[4].type).toBe('nestedFrames');
|
||||
expect(frame.fields[5].name).toBe('nested');
|
||||
expect(frame.fields[5].type).toBe('nestedFrames');
|
||||
// Single spanset
|
||||
expect(frame.fields[4].values[0][0].fields[0].name).toBe('traceIdHidden');
|
||||
expect(frame.fields[4].values[0][0].fields[0].values[0]).toBe('b1586c3c8c34d');
|
||||
expect(frame.fields[4].values[0][0].fields[1].name).toBe('spanID');
|
||||
expect(frame.fields[4].values[0][0].fields[1].values[0]).toBe('162a4adae63b61f1');
|
||||
expect(frame.fields[4].values[0][0].fields[2].name).toBe('spanStartTime');
|
||||
expect(frame.fields[4].values[0][0].fields[2].values[0]).toBe('2022-10-19 09:03:34');
|
||||
expect(frame.fields[4].values[0][0].fields[4].name).toBe('http.method');
|
||||
expect(frame.fields[4].values[0][0].fields[4].values[0]).toBe('GET');
|
||||
expect(frame.fields[4].values[0][0].fields[5].name).toBe('service.name');
|
||||
expect(frame.fields[4].values[0][0].fields[5].values[0]).toBe('db');
|
||||
expect(frame.fields[4].values[0][0].fields[6].name).toBe('duration');
|
||||
expect(frame.fields[4].values[0][0].fields[6].values[0]).toBe(545000);
|
||||
expect(frame.fields[5].values[0][0].fields[0].name).toBe('traceIdHidden');
|
||||
expect(frame.fields[5].values[0][0].fields[0].values[0]).toBe('b1586c3c8c34d');
|
||||
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[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');
|
||||
expect(frame.fields[5].values[0][0].fields[5].values[0]).toBe('db');
|
||||
expect(frame.fields[5].values[0][0].fields[6].name).toBe('duration');
|
||||
expect(frame.fields[5].values[0][0].fields[6].values[0]).toBe(545000);
|
||||
// Multiple spansets - set 0
|
||||
expect(frame.fields[4].values[1][0].fields[0].name).toBe('traceIdHidden');
|
||||
expect(frame.fields[4].values[1][0].fields[0].values[0]).toBe('9161e77388f3e');
|
||||
expect(frame.fields[4].values[1][0].fields[1].name).toBe('spanID');
|
||||
expect(frame.fields[4].values[1][0].fields[1].values[0]).toBe('3b9a5c222d3ddd8f');
|
||||
expect(frame.fields[4].values[1][0].fields[2].name).toBe('spanStartTime');
|
||||
expect(frame.fields[4].values[1][0].fields[2].values[0]).toBe('2022-10-19 08:57:55');
|
||||
expect(frame.fields[4].values[1][0].fields[4].name).toBe('by(resource.service.name)');
|
||||
expect(frame.fields[4].values[1][0].fields[4].values[0]).toBe('db');
|
||||
expect(frame.fields[4].values[1][0].fields[5].name).toBe('http.method');
|
||||
expect(frame.fields[4].values[1][0].fields[5].values[0]).toBe('GET');
|
||||
expect(frame.fields[4].values[1][0].fields[6].name).toBe('service.name');
|
||||
expect(frame.fields[4].values[1][0].fields[6].values[0]).toBe('db');
|
||||
expect(frame.fields[4].values[1][0].fields[7].name).toBe('duration');
|
||||
expect(frame.fields[4].values[1][0].fields[7].values[0]).toBe(877000);
|
||||
expect(frame.fields[5].values[1][0].fields[0].name).toBe('traceIdHidden');
|
||||
expect(frame.fields[5].values[1][0].fields[0].values[0]).toBe('9161e77388f3e');
|
||||
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[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');
|
||||
expect(frame.fields[5].values[1][0].fields[5].values[0]).toBe('GET');
|
||||
expect(frame.fields[5].values[1][0].fields[6].name).toBe('service.name');
|
||||
expect(frame.fields[5].values[1][0].fields[6].values[0]).toBe('db');
|
||||
expect(frame.fields[5].values[1][0].fields[7].name).toBe('duration');
|
||||
expect(frame.fields[5].values[1][0].fields[7].values[0]).toBe(877000);
|
||||
// Multiple spansets - set 1
|
||||
expect(frame.fields[4].values[1][1].fields[0].name).toBe('traceIdHidden');
|
||||
expect(frame.fields[4].values[1][1].fields[0].values[0]).toBe('9161e77388f3e');
|
||||
expect(frame.fields[4].values[1][1].fields[1].name).toBe('spanID');
|
||||
expect(frame.fields[4].values[1][1].fields[1].values[0]).toBe('894d90db6b5807f');
|
||||
expect(frame.fields[4].values[1][1].fields[2].name).toBe('spanStartTime');
|
||||
expect(frame.fields[4].values[1][1].fields[2].values[0]).toBe('2022-10-19 08:57:55');
|
||||
expect(frame.fields[4].values[1][1].fields[4].name).toBe('by(resource.service.name)');
|
||||
expect(frame.fields[4].values[1][1].fields[4].values[0]).toBe('app');
|
||||
expect(frame.fields[4].values[1][1].fields[5].name).toBe('http.method');
|
||||
expect(frame.fields[4].values[1][1].fields[5].values[0]).toBe('GET');
|
||||
expect(frame.fields[4].values[1][1].fields[6].name).toBe('service.name');
|
||||
expect(frame.fields[4].values[1][1].fields[6].values[0]).toBe('app');
|
||||
expect(frame.fields[4].values[1][1].fields[7].name).toBe('duration');
|
||||
expect(frame.fields[4].values[1][1].fields[7].values[0]).toBe(11073000);
|
||||
expect(frame.fields[5].values[1][1].fields[0].name).toBe('traceIdHidden');
|
||||
expect(frame.fields[5].values[1][1].fields[0].values[0]).toBe('9161e77388f3e');
|
||||
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[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');
|
||||
expect(frame.fields[5].values[1][1].fields[5].values[0]).toBe('GET');
|
||||
expect(frame.fields[5].values[1][1].fields[6].name).toBe('service.name');
|
||||
expect(frame.fields[5].values[1][1].fields[6].values[0]).toBe('app');
|
||||
expect(frame.fields[5].values[1][1].fields[7].name).toBe('duration');
|
||||
expect(frame.fields[5].values[1][1].fields[7].values[0]).toBe(11073000);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -529,6 +529,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: 'traceDuration', type: FieldType.number, config: { displayNameFromDS: 'Duration', unit: 'ms' } },
|
||||
@ -553,23 +554,15 @@ export function createTableFrameFromSearch(data: TraceSearchMetadata[], instance
|
||||
}
|
||||
|
||||
function transformToTraceData(data: TraceSearchMetadata) {
|
||||
let traceName = '';
|
||||
if (data.rootServiceName) {
|
||||
traceName += data.rootServiceName + ' ';
|
||||
}
|
||||
if (data.rootTraceName) {
|
||||
traceName += data.rootTraceName;
|
||||
}
|
||||
|
||||
const traceStartTime = parseInt(data.startTimeUnixNano!, 10) / 1000000;
|
||||
|
||||
let startTime = !isNaN(traceStartTime) ? dateTimeFormat(traceStartTime) : '';
|
||||
const startTime = !isNaN(traceStartTime) ? dateTimeFormat(traceStartTime) : '';
|
||||
|
||||
return {
|
||||
traceID: data.traceID,
|
||||
startTime,
|
||||
traceDuration: data.durationMs,
|
||||
traceName,
|
||||
traceService: data.rootServiceName || '',
|
||||
traceName: data.rootTraceName || '',
|
||||
};
|
||||
}
|
||||
|
||||
@ -615,6 +608,7 @@ export function createTableFrameFromTraceQlQuery(
|
||||
},
|
||||
},
|
||||
},
|
||||
{ name: 'traceService', type: FieldType.string, config: { displayNameFromDS: 'Service' } },
|
||||
{ name: 'traceName', type: FieldType.string, config: { displayNameFromDS: 'Name' } },
|
||||
{
|
||||
name: 'traceDuration',
|
||||
@ -649,17 +643,18 @@ export function createTableFrameFromTraceQlQuery(
|
||||
const traceData: TraceTableData = transformToTraceData(trace);
|
||||
frame.fields[0].values.push(traceData.traceID);
|
||||
frame.fields[1].values.push(traceData.startTime);
|
||||
frame.fields[2].values.push(traceData.traceName);
|
||||
frame.fields[3].values.push(traceData.traceDuration);
|
||||
frame.fields[2].values.push(traceData.traceService);
|
||||
frame.fields[3].values.push(traceData.traceName);
|
||||
frame.fields[4].values.push(traceData.traceDuration);
|
||||
|
||||
if (trace.spanSets) {
|
||||
frame.fields[4].values.push(
|
||||
frame.fields[5].values.push(
|
||||
trace.spanSets.map((spanSet: Spanset) => {
|
||||
return traceSubFrame(trace, spanSet, instanceSettings);
|
||||
})
|
||||
);
|
||||
} else if (trace.spanSet) {
|
||||
frame.fields[4].values.push([traceSubFrame(trace, trace.spanSet, instanceSettings)]);
|
||||
frame.fields[5].values.push([traceSubFrame(trace, trace.spanSet, instanceSettings)]);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -2278,7 +2278,8 @@ export const tempoSearchResponse = {
|
||||
traces: [
|
||||
{
|
||||
traceID: 'e641dcac1c3a0565',
|
||||
rootServiceName: 'c10d7ca4e3a00354',
|
||||
rootServiceName: 'requester',
|
||||
rootTraceName: 'app',
|
||||
startTimeUnixNano: '1643356828724000000',
|
||||
durationMs: 65,
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user