mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
TestData: add option to increase the number of test streams (#17789)
* variable number of points * add variable number of bands
This commit is contained in:
committed by
Torkel Ödegaard
parent
0a3f977ea2
commit
021f5351fa
@@ -18,6 +18,7 @@ export const defaultQuery: StreamingQuery = {
|
||||
speed: 250, // ms
|
||||
spread: 3.5,
|
||||
noise: 2.2,
|
||||
bands: 1,
|
||||
};
|
||||
|
||||
type StreamWorkers = {
|
||||
@@ -42,7 +43,7 @@ export class StreamHandler {
|
||||
// set stream option defaults
|
||||
query.stream = defaults(query.stream, defaultQuery);
|
||||
// create stream key
|
||||
const key = req.dashboardId + '/' + req.panelId + '/' + query.refId;
|
||||
const key = req.dashboardId + '/' + req.panelId + '/' + query.refId + '@' + query.stream.bands;
|
||||
|
||||
if (this.workers[key]) {
|
||||
const existing = this.workers[key];
|
||||
@@ -146,39 +147,47 @@ export class StreamWorker {
|
||||
export class SignalWorker extends StreamWorker {
|
||||
value: number;
|
||||
|
||||
bands = 1;
|
||||
|
||||
constructor(key: string, query: TestDataQuery, request: DataQueryRequest, observer: DataStreamObserver) {
|
||||
super(key, query, request, observer);
|
||||
setTimeout(() => {
|
||||
this.stream.series = [this.initBuffer(query.refId)];
|
||||
this.looper();
|
||||
}, 10);
|
||||
|
||||
this.bands = query.stream.bands ? query.stream.bands : 0;
|
||||
}
|
||||
|
||||
nextRow = (time: number) => {
|
||||
const { spread, noise } = this.query;
|
||||
this.value += (Math.random() - 0.5) * spread;
|
||||
return [
|
||||
time,
|
||||
this.value, // Value
|
||||
this.value - Math.random() * noise, // MIN
|
||||
this.value + Math.random() * noise, // MAX
|
||||
];
|
||||
const row = [time, this.value];
|
||||
for (let i = 0; i < this.bands; i++) {
|
||||
const v = row[row.length - 1];
|
||||
row.push(v - Math.random() * noise); // MIN
|
||||
row.push(v + Math.random() * noise); // MAX
|
||||
}
|
||||
return row;
|
||||
};
|
||||
|
||||
initBuffer(refId: string): SeriesData {
|
||||
const { speed, buffer } = this.query;
|
||||
const data = {
|
||||
fields: [
|
||||
{ name: 'Time', type: FieldType.time },
|
||||
{ name: 'Value', type: FieldType.number },
|
||||
{ name: 'Min', type: FieldType.number },
|
||||
{ name: 'Max', type: FieldType.number },
|
||||
],
|
||||
fields: [{ name: 'Time', type: FieldType.time }, { name: 'Value', type: FieldType.number }],
|
||||
rows: [],
|
||||
refId,
|
||||
name: 'Signal ' + refId,
|
||||
} as SeriesData;
|
||||
|
||||
for (let i = 0; i < this.bands; i++) {
|
||||
const suffix = this.bands > 1 ? ` ${i + 1}` : '';
|
||||
data.fields.push({ name: 'Min' + suffix, type: FieldType.number });
|
||||
data.fields.push({ name: 'Max' + suffix, type: FieldType.number });
|
||||
}
|
||||
|
||||
console.log('START', data);
|
||||
|
||||
const request = this.stream.request;
|
||||
|
||||
this.value = Math.random() * 100;
|
||||
|
||||
Reference in New Issue
Block a user