/*
* SysDeck - Benchmark Panel (v0.0.11)
* Author: Jeremy Anderson (https://dcos.net)
*
* System benchmarking via sysbench. Attributes the cockpit-benchmark
* plugin (MIT, ealier) whose standalone plugin lives at
* https://github.com/ealier/cockpit-benchmark.
*
* This panel invokes sysbench via cockpit.spawn as a separate process —
* no cockpit-benchmark or sysbench code is bundled. sysbench is GPL-2.0
* licensed; the suite (MIT) and sysbench remain independent programs.
*
* Shows available tests, run controls, and results history.
*/
export async function mount(panel, { bridge, EventBus }) {
panel.innerHTML = renderSkeleton();
let tests = [];
try {
tests = await bridge.benchmark.listTests();
} catch (err) {
panel.innerHTML = renderError(err);
return;
}
panel.innerHTML = `
sysbench + cockpit-benchmark integrationSystem Benchmark
| Test | Tool | Actions |
|---|---|---|
| ${t.name} | ${t.tool} | |
| No benchmarks available. Install sysbench. | ||
Events/sec: ${result.events_per_sec ?? 'N/A'}
Avg latency: ${result.latency_ms != null ? result.latency_ms.toFixed(2) + ' ms' : 'N/A'}
${result.raw || 'N/A'}${result}`;
} catch (err) {
resultsDiv.innerHTML = `${err.message || err}`;
}
btn.disabled = false;
});
});
panel.querySelector('#btn-benchmark-refresh')?.addEventListener('click', () => {
mount(panel, { bridge, EventBus });
});
}
function renderSkeleton() {
return `${err.message || err}. Install sysbench for system benchmarking.
cockpit-benchmark (MIT) by ealier — https://github.com/ealier/cockpit-benchmark
sysbench (GPL-2.0) — https://github.com/akopytov/sysbench