1. Unclebench architecture

1.1. Class diagram

The Unclebench architecture is described on the following figure:

classDiagram.png
Figure 1. Unclebench class diagram

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.