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' } }, 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( const request = ds.traceIdQueryRequest(
{ {
requestId: 'test', requestId: 'test',
@ -396,17 +402,17 @@ describe('Tempo data source', () => {
timezone: '', timezone: '',
app: '', app: '',
startTime: 0, startTime: 0,
range: { 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' },
},
}, },
[{ refId: 'refid1', queryType: 'traceql', query: '' } as TempoQuery] [{ 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.from.valueOf()).toBe(new Date(2022, 8, 13, 15, 58, 0, 0).valueOf());
expect(request.range.to.unix()).toBe(dateTime(new Date(2022, 8, 13, 16, 19, 0, 0)).unix()); 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', () => { 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) { if (this.traceQuery?.timeShiftEnabled) {
request.range = options.range && { request.range = options.range && {
...options.range, ...options.range,
from: options.range.from.subtract( from: dateTime(options.range.from).subtract(
rangeUtil.intervalToMs(this.traceQuery?.spanStartTimeShift || '30m'), rangeUtil.intervalToMs(this.traceQuery?.spanStartTimeShift || '30m'),
'milliseconds' '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 { } else {
request.range = { from: dateTime(0), to: dateTime(0), raw: { from: dateTime(0), to: dateTime(0) } }; request.range = { from: dateTime(0), to: dateTime(0), raw: { from: dateTime(0), to: dateTime(0) } };