ATLAS Offline Software
RunWorkflowTests_Run3.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 
4 from sys import exit
5 
6 from WorkflowTestRunner.ScriptUtils import setup_logger, setup_parser, get_test_setup, get_standard_performance_checks, \
7  run_tests, run_checks, run_summary
8 from WorkflowTestRunner.StandardTests import DataOverlayPreparationTest, DerivationTest, GenerationTest, OverlayTest, DataOverlayTest, PileUpTest, QTest, SimulationTest
9 from WorkflowTestRunner.Test import WorkflowRun, WorkflowType
10 
11 
12 def main():
13  name = "Run3Tests"
14  run = WorkflowRun.Run3
15 
16  # Setup the environment
17  log = setup_logger(name)
18  parser = setup_parser()
19  options = parser.parse_args()
20  setup = get_test_setup(name, options, log)
21 
22  # Define which tests to run
23  tests_to_run = []
24  if options.generation:
25  dsid = "421356" if not options.dsid else options.dsid
26  tests_to_run.append(GenerationTest(f"gen{dsid}", run, WorkflowType.Generation, ["generate"], setup, options.extra_args))
27  elif options.simulation:
28  if not options.workflow or options.workflow is WorkflowType.FullSim:
29  ami_tag = "s4006" if not options.ami_tag else options.ami_tag
30  tests_to_run.append(SimulationTest(ami_tag, run, WorkflowType.FullSim, ["EVNTtoHITS"], setup, options.extra_args + " --conditionsTag 'default:OFLCOND-MC21-SDR-RUN3-07' --geometryVersion 'default:ATLAS-R3S-2021-03-02-00'"))
31  if options.workflow is WorkflowType.AF3:
32  ami_tag = "a913" if not options.ami_tag else options.ami_tag
33  tests_to_run.append(SimulationTest(ami_tag, run, WorkflowType.AF3, ["EVNTtoHITS"], setup, options.extra_args))
34  if options.workflow is WorkflowType.HitsMerge:
35  ami_tag = "s4007" if not options.ami_tag else options.ami_tag
36  tests_to_run.append(SimulationTest(ami_tag, run, WorkflowType.HitsMerge, ["HITSMerge"], setup, options.extra_args))
37  if options.workflow is WorkflowType.HitsFilter:
38  ami_tag = "s4008" if not options.ami_tag else options.ami_tag
39  tests_to_run.append(SimulationTest(ami_tag, run, WorkflowType.HitsFilter, ["FilterHitTf"], setup, options.extra_args))
40  elif options.overlay:
41  if not options.workflow or options.workflow is WorkflowType.MCOverlay:
42  ami_tag = "d1759" if not options.ami_tag else options.ami_tag
43  tests_to_run.append(OverlayTest(ami_tag, run, WorkflowType.MCOverlay, ["Overlay"], setup, options.extra_args + " --runNumber 601229 --conditionsTag 'default:OFLCOND-MC23-SDR-RUN3-08'"))
44  if not options.workflow or options.workflow is WorkflowType.DataOverlay:
45  ami_tag = "d2029" if not options.ami_tag else options.ami_tag
46  tests_to_run.append(DataOverlayTest(ami_tag, run, WorkflowType.DataOverlay, ["Overlay"], setup, options.extra_args + " --runNumber 601229 --postInclude \"default:PyJobTransforms.UseFrontier\""))
47  if not options.workflow or options.workflow is WorkflowType.DataOverlayChain:
48  ami_tag = "d2030" if not options.ami_tag else options.ami_tag
49  tests_to_run.append(DataOverlayTest(ami_tag, run, WorkflowType.DataOverlayChain, ["EVNTtoRDO"], setup, options.extra_args + " --runNumber 603398 --postInclude \"default:PyJobTransforms.UseFrontier\""))
50  elif options.pileup:
51  if setup.parallel_execution:
52  log.error("Parallel execution not supported for pile-up workflow")
53  exit(1)
54  if not options.workflow or options.workflow is WorkflowType.PileUpPresampling:
55  ami_tag = "d1919" if not options.ami_tag else options.ami_tag
56  tests_to_run.append(PileUpTest(ami_tag, run, WorkflowType.PileUpPresampling, ["HITtoRDO"], setup, options.extra_args))
57  if not options.workflow or options.workflow is WorkflowType.MCPileUpReco:
58  tests_to_run.append(QTest("q455", run, WorkflowType.MCPileUpReco, ["Overlay", "RDOtoRDOTrigger", "RAWtoALL"], setup, options.extra_args))
59  if options.workflow is WorkflowType.MinbiasPreprocessing:
60  ami_tag = "d2008" if not options.ami_tag else options.ami_tag
61  tests_to_run.append(DataOverlayPreparationTest(ami_tag, run, WorkflowType.MinbiasPreprocessing, ["BStoRDO"], setup, options.extra_args))
62  elif options.derivation:
63  test_id = "MC_PHYS" if not options.ami_tag else options.ami_tag
64  test_id = f"{test_id}_{run.value}"
65  tests_to_run.append(DerivationTest(test_id, run, WorkflowType.Derivation, ["Derivation"], setup, options.extra_args))
66  else:
67  if not options.workflow or options.workflow is WorkflowType.MCReco:
68  ami_tag = "q454" if not options.ami_tag else options.ami_tag
69  tests_to_run.append(QTest(ami_tag, run, WorkflowType.MCReco, ["HITtoRDO", "RDOtoRDOTrigger", "RAWtoALL"], setup, options.extra_args))
70  if not options.workflow or options.workflow is WorkflowType.DataReco:
71  ami_tag = "q449" if not options.ami_tag else options.ami_tag
72  tests_to_run.append(QTest(ami_tag, run, WorkflowType.DataReco, ["RAWtoALL", "DQHistogramMerge"], setup, options.extra_args))
73  if options.workflow is WorkflowType.DataOverlayReco:
74  ami_tag = "q458" if not options.ami_tag else options.ami_tag
75  tests_to_run.append(QTest(ami_tag, run, WorkflowType.DataOverlayReco, ["RAWtoALL"], setup, options.extra_args))
76 
77  # Define which perfomance checks to run
78  performance_checks = get_standard_performance_checks(setup)
79 
80  # Define and run jobs
81  run_tests(setup, tests_to_run)
82 
83  # Run post-processing checks
84  all_passed = run_checks(setup, tests_to_run, performance_checks)
85 
86  # final report
87  run_summary(setup, tests_to_run, all_passed)
88 
89 
90 if __name__ == "__main__":
91  main()
92 
python.ScriptUtils.setup_logger
logging.Logger setup_logger(str name)
Definition: ScriptUtils.py:15
python.ScriptUtils.get_standard_performance_checks
List[WorkflowCheck] get_standard_performance_checks(TestSetup setup)
Definition: ScriptUtils.py:224
python.ScriptUtils.run_summary
None run_summary(TestSetup setup, List[WorkflowTest] tests, bool status)
Definition: ScriptUtils.py:284
calibdata.exit
exit
Definition: calibdata.py:235
python.ScriptUtils.setup_parser
ArgumentParser setup_parser()
Definition: ScriptUtils.py:63
RunWorkflowTests_Run3.main
def main()
Definition: RunWorkflowTests_Run3.py:12
python.ScriptUtils.get_test_setup
TestSetup get_test_setup(str name, Namespace options, logging.Logger log)
Definition: ScriptUtils.py:135
python.ScriptUtils.run_tests
None run_tests(TestSetup setup, List[WorkflowTest] tests)
Definition: ScriptUtils.py:234
python.ScriptUtils.run_checks
bool run_checks(TestSetup setup, List[WorkflowTest] tests, List[WorkflowCheck] performance_checks)
Definition: ScriptUtils.py:269