1. Unclebench architecture
1.1. Class diagram
The Unclebench architecture is described on the following figure:
1.2. Main Unclebench classes
Ubench_cmd manages user commands and handles the different avaible options. It uses a SchedulerInterface to handle scheduler dependent commandes (like choosing to run on specific nodes with the -w option).
BenchmarkerManager: Abstract class defining available benchmark operations like run, listing parameters or getting results.
BenchmarkManagerSet: Implementation of BenchmarkManager that manages a collection of benchmarks. BenchmarkManager, BenchmarkManagerSet and StdBenchmarkManager are organised as a composite design pattern.
StdBenchmarkManager: Partial implementation of BenchmarkManager that implements evry operation except the part related to the benchmarking engine. It contains a benchmarking_api that is set by abstract factory method get_benchmarking_api.
JubeBenchmarkManager: Implements StdBenchmarkManger by defining get_benchmark_api method to retrieve a JubeBenchmarkingApi instance.
JubeBenchmarkingAPI: Implements BenchmarkingAPI interface to provide an API that can manage Jube benchmarks.