TraceViewer: Make sure it does not break when no trace is passed (#28909)

* TraceViewer: Make sure it does not break when no trace is passed

- exit trace conversion early when there is no trace data
- added test to cover missing trace for trace viewer

* Review feedback

* Use RTL for new test

* Exit early if trace or traceID is not there
This commit is contained in:
David
2020-11-11 12:10:12 +01:00
committed by GitHub
parent 145901c0db
commit 28383bcfac
5 changed files with 23 additions and 8 deletions

View File

@@ -17,7 +17,7 @@ import _isEqual from 'lodash/isEqual';
// @ts-ignore
import { getTraceSpanIdsAsTree } from '../selectors/trace';
import { getConfigValue } from '../utils/config/get-config';
import { TraceKeyValuePair, TraceSpan, TraceSpanData, Trace, TraceData } from '@grafana/data';
import { TraceKeyValuePair, TraceSpan, Trace, TraceViewData } from '@grafana/data';
// @ts-ignore
import TreeNode from '../utils/TreeNode';
@@ -71,12 +71,11 @@ export function orderTags(spanTags: TraceKeyValuePair[], topPrefixes?: string[])
* NOTE: Mutates `data` - Transform the HTTP response data into the form the app
* generally requires.
*/
export default function transformTraceData(data: TraceData & { spans: TraceSpanData[] }): Trace | null {
let { traceID } = data;
if (!traceID) {
export default function transformTraceData(data: TraceViewData | undefined): Trace | null {
if (!data?.traceID) {
return null;
}
traceID = traceID.toLowerCase();
const traceID = data.traceID.toLowerCase();
let traceEndTime = 0;
let traceStartTime = Number.MAX_SAFE_INTEGER;