Improve gateway traffic dashboard and connection branding
This commit is contained in:
@@ -38,24 +38,31 @@ test('Grafana dashboard uses one all-or-one device scope and shows active device
|
||||
const topDevices = dashboard.panels.find(({ id }) => id === 5);
|
||||
const sourceSpeed = dashboard.panels.find(({ id }) => id === 6);
|
||||
const deviceSpeed = dashboard.panels.find(({ id }) => id === 14);
|
||||
const sourceTraffic = dashboard.panels.find(({ id }) => id === 7);
|
||||
const services = dashboard.panels.find(({ id }) => id === 8);
|
||||
const domains = dashboard.panels.find(({ id }) => id === 9);
|
||||
const totalTraffic = dashboard.panels.find(({ id }) => id === 1);
|
||||
const trafficBySource = dashboard.panels.find(({ id }) => id === 4);
|
||||
const speedPanels = [globalSpeed, deviceSpeed, sourceSpeed];
|
||||
|
||||
assert.equal(dashboard.title, 'Harbor Gateway: трафик');
|
||||
assert.equal(dashboard.refresh, '30s');
|
||||
assert.equal(dashboard.version, 7);
|
||||
assert.deepEqual(titles.filter((title) => ['Обзор', 'Устройства', 'Сервисы и домены', 'Техническая детализация'].includes(title)), [
|
||||
'Обзор',
|
||||
'Устройства',
|
||||
'Сервисы и домены',
|
||||
'Техническая детализация',
|
||||
]);
|
||||
assert.ok(titles.includes('Скорость сейчас, средняя за 5 минут'));
|
||||
assert.ok(titles.includes('Скорость по устройствам сейчас'));
|
||||
assert.ok(titles.includes('Скорость по источникам и направлениям сейчас'));
|
||||
assert.ok(titles.includes('Скорость за выбранный период'));
|
||||
assert.ok(titles.includes('Скорость по устройствам'));
|
||||
assert.ok(titles.includes('Скорость по источникам и направлениям'));
|
||||
assert.ok(titles.includes('Топ-10 устройств за выбранный период'));
|
||||
assert.ok(titles.includes('Накоплено по источникам и направлениям'));
|
||||
assert.ok(titles.includes('Трафик по источникам и направлениям за выбранный период'));
|
||||
assert.ok(titles.includes('Сервисы за выбранный период'));
|
||||
assert.ok(titles.includes('Домены за выбранный период'));
|
||||
assert.ok(titles.includes('Весь Harbor за выбранный период'));
|
||||
assert.ok(titles.includes('Источники за выбранный период'));
|
||||
assert.ok(expressions.some((expression) => expression.includes('harbor_traffic_bytes_total')));
|
||||
assert.ok(expressions.some((expression) => expression.includes('harbor_device_traffic_bytes_total')));
|
||||
assert.ok(expressions.some((expression) => expression.includes('harbor_device_domain_traffic_bytes_total{device_id=~"$device_id"}[$__range]')));
|
||||
@@ -66,24 +73,40 @@ test('Grafana dashboard uses one all-or-one device scope and shows active device
|
||||
assert.doesNotMatch(topDevices.fieldConfig.overrides[1].properties[0].value[0].url, /domain_device_id/);
|
||||
assert.deepEqual(freshness.fieldConfig.defaults.thresholds.steps.map(({ value }) => value), [null, 60, 120]);
|
||||
assert.equal(freshness.fieldConfig.defaults.noValue, 'Нет данных');
|
||||
assert.equal(freshness.title, 'Свежесть данных в конце выбранного периода');
|
||||
assert.equal(deviceVariable.name, 'device_id');
|
||||
assert.equal(deviceVariable.multi, false);
|
||||
assert.equal(deviceVariable.includeAll, true);
|
||||
assert.equal(deviceVariable.allValue, '.*');
|
||||
assert.equal(deviceVariable.current.value, '$__all');
|
||||
assert.equal(deviceVariable.refresh, 2);
|
||||
assert.equal(dashboard.templating.list.length, 1);
|
||||
assert.match(deviceVariable.query.query, /query_result\(label_join\(/);
|
||||
assert.match(deviceVariable.regex, /<text>/);
|
||||
assert.match(deviceVariable.regex, /<value>/);
|
||||
for (const panel of speedPanels) {
|
||||
assert.equal(panel.fieldConfig.defaults.custom.axisCenteredZero, true);
|
||||
assert.deepEqual(panel.fieldConfig.defaults.custom.scaleDistribution, {
|
||||
linearThreshold: 1048576,
|
||||
log: 2,
|
||||
type: 'symlog',
|
||||
});
|
||||
assert.deepEqual(panel.targets.map(({ refId }) => refId), ['A', 'B']);
|
||||
assert.ok(panel.targets.every(({ expr }) => expr.includes('[$__rate_interval]') && !expr.includes('[5m]')));
|
||||
assert.ok(panel.fieldConfig.overrides.some((override) => (
|
||||
override.matcher.id === 'byFrameRefID'
|
||||
&& override.matcher.options === 'B'
|
||||
&& override.properties.some(({ id, value }) => id === 'custom.transform' && value === 'negative-Y')
|
||||
)));
|
||||
}
|
||||
assert.ok(globalSpeed.targets.every(({ expr }) => expr.includes('device_id=~"$device_id"') && expr.endsWith('> 0')));
|
||||
assert.match(deviceSpeed.targets[0].expr, /sum by \(device_id\)[\s\S]*device_id=~"\$device_id"[\s\S]*> 0[\s\S]*group_left \(name, ip\)/);
|
||||
assert.match(deviceSpeed.targets[0].legendFormat, /\{\{name\}\} · \{\{ip\}\}/);
|
||||
assert.deepEqual(deviceSpeed.fieldConfig.defaults.custom.scaleDistribution, {
|
||||
linearThreshold: 1048576,
|
||||
log: 2,
|
||||
type: 'symlog',
|
||||
});
|
||||
assert.match(sourceSpeed.targets[0].expr, /device_id=~"\$device_id"[\s\S]*> 0$/);
|
||||
assert.ok(deviceSpeed.targets.every(({ expr }) => /sum by \(device_id\)[\s\S]*device_id=~"\$device_id"[\s\S]*> 0[\s\S]*group_left \(name, ip\)/.test(expr)));
|
||||
assert.ok(deviceSpeed.targets.every(({ legendFormat }) => /\{\{name\}\} · \{\{ip\}\}/.test(legendFormat)));
|
||||
assert.ok(sourceSpeed.targets.every(({ expr }) => /device_id=~"\$device_id"[\s\S]*> 0$/.test(expr)));
|
||||
assert.equal(totalTraffic.targets[0].expr, 'sum(increase(harbor_traffic_bytes_total[$__range]))');
|
||||
assert.equal(trafficBySource.targets[0].expr, 'sum by (source) (increase(harbor_traffic_bytes_total[$__range])) > 0');
|
||||
assert.match(sourceTraffic.targets[0].expr, /increase\(harbor_device_traffic_bytes_total\{device_id=~"\$device_id"\}\[\$__range\]\)/);
|
||||
assert.ok(dashboard.panels.every(({ title = '', description = '' }) => !/Накоплено|за всё время/.test(`${title} ${description}`)));
|
||||
assert.match(services.targets[0].expr, /device_id=~"\$device_id"[\s\S]*> 0\)$/);
|
||||
assert.deepEqual(domains.transformations[0].options.indexByName, { service: 0, domain: 1, Value: 2 });
|
||||
assert.match(domains.targets[0].expr, /^topk\(15,[\s\S]*device_id=~"\$device_id"[\s\S]*> 0\)$/);
|
||||
|
||||
Reference in New Issue
Block a user