[v10.0.x] Tempo: Fix get label values based on CoreApp type (#68468)

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

Fix and update test

(cherry picked from commit a1f76af15a)

Co-authored-by: Joey <90795735+joey-grafana@users.noreply.github.com>
This commit is contained in:
Grot (@grafanabot)
2023-05-15 14:53:04 +01:00
committed by GitHub
co-authored by Joey
parent 050b7e5e7b
commit 27059d710b
2 changed files with 18 additions and 2 deletions
@@ -11,6 +11,7 @@ import {
LoadingState,
MutableDataFrame,
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);
@@ -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);