Belle II Software  release-05-01-25
collector_execution.py
1 import os
2 import subprocess
3 import sys
4 
5 from hlt.clean_execution import CleanBasf2Execution
6 from argparse import ArgumentParser
7 
8 
9 def main(script_name):
10  """Shortcut method to do the basf2 execution on hltout"""
11  os.chdir(sys.path[0])
12 
13  parser = ArgumentParser()
14  parser.add_argument("input_ring_buffer", help="Name of the input ring buffer")
15  parser.add_argument("output_ring_buffer", help="Name of the output ring buffer")
16  parser.add_argument("unused-histoport", help="Unused in the moment")
17  parser.add_argument("--number-of-collectors", help="Number of collectors to start", default=3, type=int)
18 
19  args = parser.parse_args()
20 
21  input_ring_buffer_list = [f"{args.input_ring_buffer}{i + 1}" for i in range(0, args.number_of_collectors)]
22  output_ring_buffer_list = [f"{args.output_ring_buffer}{i + 1}" for i in range(0, args.number_of_collectors)]
23  message_queue_list = [f"/roi{i}" for i in range(0, args.number_of_collectors)]
24 
25  for input_rb in input_ring_buffer_list:
26  subprocess.run(["removerb", input_rb])
27  for output_rb in output_ring_buffer_list:
28  subprocess.run(["removerb", output_rb])
29 
30  execution = CleanBasf2Execution()
31  try:
32  execution.start(["hlt_rb2mrb", args.input_ring_buffer] + input_ring_buffer_list)
33  execution.start(["hlt_mrb2rb"] + output_ring_buffer_list + [args.output_ring_buffer])
34  for input_rb, output_rb, roi_message_queue in zip(input_ring_buffer_list, output_ring_buffer_list,
35  message_queue_list):
36  execution.start(["basf2", "--no-stats", script_name, "--", input_rb, output_rb, roi_message_queue])
37  return_code = execution.wait()
38  finally:
39  execution.kill()
40  subprocess.run(["framework-pcore-clear_ipcs"])
41  for input_rb in input_ring_buffer_list:
42  subprocess.run(["removerb", input_rb])
43  for output_rb in output_ring_buffer_list:
44  subprocess.run(["removerb", output_rb])
45 
46  exit(return_code)
hlt.clean_execution
Definition: clean_execution.py:1
main
int main(int argc, char **argv)
Run all tests.
Definition: test_main.cc:77