Tempo: Fix get label values based on CoreApp type (#68463)

Fix and update test
This commit is contained in:
Joey 2023-05-15 14:27:27 +01:00 committed by GitHub
parent 47b7b05591
commit a1f76af15a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 2 deletions

View File

@ -11,6 +11,7 @@ import {
LoadingState,
createDataFrame,
PluginType,
CoreApp,
} from '@grafana/data';
import {
BackendDataSourceResponse,
@ -449,7 +450,7 @@ describe('Tempo service graph view', () => {
});
setDataSourceSrv(backendSrvWithPrometheus as any);
const response = await lastValueFrom(
ds.query({ targets: [{ queryType: 'serviceMap' }], range: getDefaultTimeRange() } as any)
ds.query({ targets: [{ queryType: 'serviceMap' }], range: getDefaultTimeRange(), app: CoreApp.Explore } as any)
);
expect(response.data).toHaveLength(3);

View File

@ -3,6 +3,8 @@ import { EMPTY, from, lastValueFrom, merge, Observable, of, throwError } from 'r
import { catchError, concatMap, map, mergeMap, toArray } from 'rxjs/operators';
import {
CoreApp,
DataFrame,
DataQueryRequest,
DataQueryResponse,
DataQueryResponseData,
@ -597,7 +599,20 @@ function errorAndDurationQuery(
let serviceGraphViewMetrics = [];
let errorRateBySpanName = '';
let durationsBySpanName: string[] = [];
const spanNames = getEscapedSpanNames(rateResponse.data[0][0]?.fields[1]?.values ?? []);
let labels = [];
if (request.app === CoreApp.Explore) {
if (rateResponse.data[0][0]?.fields[1]?.values) {
labels = rateResponse.data[0][0]?.fields[1]?.values;
}
} else if (rateResponse.data[0]) {
rateResponse.data[0].map((df: DataFrame) => {
if (df.fields[1]?.labels && df.fields[1]?.labels['span_name']) {
labels.push(df.fields[1]?.labels['span_name']);
}
});
}
const spanNames = getEscapedSpanNames(labels);
if (spanNames.length > 0) {
errorRateBySpanName = buildExpr(errorRateMetric, 'span_name=~"' + spanNames.join('|') + '"', request);