Tempo: Don't modify the passed time range when using timeShiftEnabled (#87980)

Don't modify the passed range
This commit is contained in:
Andrej Ocenas 2024-05-21 13:12:27 +02:00 committed by GitHub
parent 9e6f18c947
commit a2aea70100
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 9 deletions

View File

@ -386,6 +386,12 @@ describe('Tempo data source', () => {
jsonData: { traceQuery: { timeShiftEnabled: true, spanStartTimeShift: '2m', spanEndTimeShift: '4m' } },
});
const range = {
from: dateTime(new Date(2022, 8, 13, 16, 0, 0, 0)),
to: dateTime(new Date(2022, 8, 13, 16, 15, 0, 0)),
raw: { from: '15m', to: 'now' },
};
const request = ds.traceIdQueryRequest(
{
requestId: 'test',
@ -396,17 +402,17 @@ describe('Tempo data source', () => {
timezone: '',
app: '',
startTime: 0,
range: {
from: dateTime(new Date(2022, 8, 13, 16, 0, 0, 0)),
to: dateTime(new Date(2022, 8, 13, 16, 15, 0, 0)),
raw: { from: '15m', to: 'now' },
},
range,
},
[{ refId: 'refid1', queryType: 'traceql', query: '' } as TempoQuery]
);
expect(request.range.from.unix()).toBe(dateTime(new Date(2022, 8, 13, 15, 58, 0, 0)).unix());
expect(request.range.to.unix()).toBe(dateTime(new Date(2022, 8, 13, 16, 19, 0, 0)).unix());
expect(request.range.from.valueOf()).toBe(new Date(2022, 8, 13, 15, 58, 0, 0).valueOf());
expect(request.range.to.valueOf()).toBe(new Date(2022, 8, 13, 16, 19, 0, 0).valueOf());
// Making sure we don't modify the original range
expect(range.from.valueOf()).toBe(new Date(2022, 8, 13, 16, 0, 0, 0).valueOf());
expect(range.to.valueOf()).toBe(new Date(2022, 8, 13, 16, 15, 0, 0).valueOf());
});
it('should not include time shift when querying for traceID and time shift config is off', () => {

View File

@ -669,11 +669,14 @@ export class TempoDatasource extends DataSourceWithBackend<TempoQuery, TempoJson
if (this.traceQuery?.timeShiftEnabled) {
request.range = options.range && {
...options.range,
from: options.range.from.subtract(
from: dateTime(options.range.from).subtract(
rangeUtil.intervalToMs(this.traceQuery?.spanStartTimeShift || '30m'),
'milliseconds'
),
to: options.range.to.add(rangeUtil.intervalToMs(this.traceQuery?.spanEndTimeShift || '30m'), 'milliseconds'),
to: dateTime(options.range.to).add(
rangeUtil.intervalToMs(this.traceQuery?.spanEndTimeShift || '30m'),
'milliseconds'
),
};
} else {
request.range = { from: dateTime(0), to: dateTime(0), raw: { from: dateTime(0), to: dateTime(0) } };