StateTimeline: insert terminating null value for 1-datapoint frames (#47240)

This commit is contained in:
Leon Sorokin 2022-04-04 08:22:00 -06:00 committed by GitHub
parent 5ba9ccb5a7
commit c55be51f1e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 4 deletions

View File

@ -112,6 +112,22 @@ describe('nullInsertThreshold Transformer', () => {
expect(result.fields[0].values.toArray()).toStrictEqual([1, 2, 3, 4, 10, 11]);
expect(result.fields[1].values.toArray()).toStrictEqual([4, null, 6, null, 8, null]);
expect(result.fields[2].values.toArray()).toStrictEqual(['a', null, 'b', null, 'c', null]);
// should work for frames with 1 datapoint
const df2 = new MutableDataFrame({
refId: 'A',
fields: [
{ name: 'Time', type: FieldType.time, config: { interval: 1 }, values: [1] },
{ name: 'One', type: FieldType.number, values: [1] },
{ name: 'Two', type: FieldType.string, values: ['a'] },
],
});
const result2 = applyNullInsertThreshold(df2, null, 13);
expect(result2.fields[0].values.toArray()).toStrictEqual([1, 2]);
expect(result2.fields[1].values.toArray()).toStrictEqual([1, null]);
expect(result2.fields[2].values.toArray()).toStrictEqual(['a', null]);
});
// TODO: make this work
@ -132,12 +148,12 @@ describe('nullInsertThreshold Transformer', () => {
expect(result.fields[2].values.toArray()).toStrictEqual(['a', null, 'b', null, 'c']);
});
test('should noop on fewer than two values', () => {
test('should noop on 0 datapoints', () => {
const df = new MutableDataFrame({
refId: 'A',
fields: [
{ name: 'Time', type: FieldType.time, config: { interval: 1 }, values: [1] },
{ name: 'Value', type: FieldType.number, values: [1] },
{ name: 'Time', type: FieldType.time, config: { interval: 1 }, values: [] },
{ name: 'Value', type: FieldType.number, values: [] },
],
});

View File

@ -15,7 +15,7 @@ export function applyNullInsertThreshold(
refFieldPseudoMax: number | null = null,
insertMode: InsertMode = INSERT_MODES.threshold
): DataFrame {
if (frame.length < 2) {
if (frame.length === 0) {
return frame;
}