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[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[1].values.toArray()).toStrictEqual([4, null, 6, null, 8, null]);
expect(result.fields[2].values.toArray()).toStrictEqual(['a', null, 'b', null, 'c', 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 // TODO: make this work
@ -132,12 +148,12 @@ describe('nullInsertThreshold Transformer', () => {
expect(result.fields[2].values.toArray()).toStrictEqual(['a', null, 'b', null, 'c']); 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({ const df = new MutableDataFrame({
refId: 'A', refId: 'A',
fields: [ fields: [
{ name: 'Time', type: FieldType.time, config: { interval: 1 }, values: [1] }, { name: 'Time', type: FieldType.time, config: { interval: 1 }, values: [] },
{ name: 'Value', type: FieldType.number, values: [1] }, { name: 'Value', type: FieldType.number, values: [] },
], ],
}); });

View File

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