Skip to content

TCKs for HLT1

Roel Aaij requested to merge standalone_property_default_values into master

Support creation of TCKs corresponding to an Allen configuration and configuration of Allen from TCKs (only in stack builds).

  • TCKs can be created with Rec/Allen/scripts/create_hlt1_tck.py
  • A TCK can be used by passing --sequence repository.git:TCK to Allen or allen.py
  • --run-from-json is gone, pass --sequence some_file.json instead.

create_hlt1_tck.py takes five required arguments: stack_name, stack_version, sequence, repository and tck; and two optional arguments: --label=some_label and --sequence-type=some_type. The stack version should be formatted as M.N.P where .P is optional. If the --sequence-type argument is omitted the name of the sequence is used. Sequence can be:

  • a JSON file
  • the name of the python module in AllenSequences
  • a python file

A small python module built with pybind11 has been added (for stack builds) that allows retrieval of a JSON configuration from a git repository. Since the layout of the JSON is not the same as what Allen expects, it is converted to an Allen configuration before being used. An inverse conversion is applied when creating a TCK from an Allen configuration. The hlttck_cdb_listkeys tool is used to insert new TCKs into a git repository.

A prerequisite was to have all default properties in both the JSON files and the Python configuration views. To achieve that, the implementation of the AlgorithmDB has been moved to a cpp file and it has been added to the Stream library. This allows algorithms to be instantiated from different compilation units.

A default_properties executable has been added that is passed a ;-separated list of algorithm namespace::type through stdin, instantiates each algorithm and retrieves its properties. Properties are saved to a JSON representation as strings with the algorithm namespace::type as key. This JSON representation is used to add the property default values to their Python views - as an appropriate Python object - when the views are generated. This is the only way to properly support custom serializers (to and from JSON) for algorithm properties.

Please note that TCKs for MC productions are not yet supported. Support will come at the same time as (or very quickly after) support of TCKs in HLT2.

Depends on LHCb!4050 (merged)

Needed for MooreOnline!212 (merged)

Closes #366 (closed)

FYI @mfontana @cagapopo

TODO:

  • Add tests that create TCKs and compare them to the respective JSON configuration files
  • Add a test that compares the TCK to a JSON file written by Allen using --write-configuration some_file.json
Edited by Roel Aaij

Merge request reports