Skip to content

Add RunManager

Andrei Muresan requested to merge feature/config into develop

Context

Our new architecture design introduced the concept of a RunManager class that orchestrates the other subsystems (Reader, Pulse Finding, Pulse Analysis). We also planned to extract magic numbers, runtime parameters, etc. to a RunConfig class.

Summary

Config via JSON

We decided to use a flexible JSON-based config file system instead of hard-coding members for the RunConfig class in our original design. With this new system, RunManager will only have to read a JSON file passed as a command line argument and pass its nested objects (named "PulseFinding", "PulseAnalysis", etc.) to the appropriate subsystems. Classes that expect certain parameters are responsible for validating the schema of the JSON config object they receive, making the system more dynamic and reducing the need for recompilation

Building

We had to add a new dependency (jsoncpp) to help us handle JSON data. The library is built and baked into the container image, so builds should work as before. The new make target bin/vanwftk builds an executable called vanwftk that will use RunManager.cxx as a the program's entrypoint. We're aiming for this to replace PulseFinding.exe by the end of the reimplementation, but for now it's useful for us to be able to run both binaries side by side.

How was this tested

Tested that RunManager can correctly read the sample JSON file experiments/example.json

Edited by Andrei Muresan

Merge request reports