| import type { Benchmark, MetricsCollection, Sampled, Standard } from "../types/benchmark.js"; |
| |
| export class BenchmarkWrapper { |
| constructor( |
| private benchmark: Benchmark, |
| private separator: string = '_' |
| ) { |
| |
| } |
| |
| datasetName(): string { |
| return `${this.className()}${this.separator}${this.benchmark.name}`; |
| } |
| |
| metric(label: string): Standard | undefined { |
| return this.benchmark?.metrics?.[label]; |
| } |
| |
| sampled(label: string): Sampled | undefined { |
| return this.benchmark?.sampledMetrics?.[label]; |
| } |
| |
| metricLabels(): string[] { |
| return BenchmarkWrapper.labels(this.benchmark.metrics); |
| } |
| |
| sampledLabels(): string[] { |
| return BenchmarkWrapper.labels(this.benchmark.sampledMetrics); |
| } |
| |
| className(): string { |
| const className = this.benchmark.className; |
| const parts = className.split('.'); |
| const lastIndex = parts.length - 1; |
| return parts[lastIndex]; |
| } |
| |
| testName(): string { |
| return this.benchmark.name; |
| } |
| |
| private static labels(collection: MetricsCollection | undefined): string[] { |
| const labels: string[] = []; |
| if (collection) { |
| for (const key in collection) { |
| if (collection.hasOwnProperty(key)) { |
| labels.push(key); |
| } |
| } |
| } |
| return labels; |
| } |
| |
| } |