ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tools
WorkflowTestRunner
python
Tools/WorkflowTestRunner/python/Helpers.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
2
from
glob
import
glob
3
from
logging
import
Logger
4
from
os
import
environ, path
5
from
pathlib
import
Path
6
7
8
def
get_release_setup
(logger: Logger, no_setup=
False
) -> str:
9
"""Get release setup."""
10
if
no_setup:
11
logger.info(
"No release information is available when a release is not set-up.\n"
)
12
return
""
13
14
current_nightly = environ[
"AtlasBuildStamp"
]
15
release_base = environ[
"AtlasBuildBranch"
]
16
release_head = environ[
"AtlasVersion"
]
17
platform = environ[
"LCG_PLATFORM"
]
18
project = environ[
"AtlasProject"
]
19
builds_dir_search_str = f
"/cvmfs/atlas-nightlies.cern.ch/repo/sw/{release_base}_{project}_{platform}/[!latest_]*/{project}/{release_head}"
20
# finds all directories matching above search pattern, and sorts by modification time
21
# suggest to use latest opt over dbg
22
sorted_list = sorted(glob(builds_dir_search_str), key=path.getmtime)
23
latest_nightly =
""
24
for
folder
in
reversed(sorted_list):
25
if
not
glob(f
"{folder}/../../{release_base}__{project}*-opt*.log"
):
26
continue
27
latest_nightly = folder.split(
"/"
)[-3]
28
break
29
30
if
current_nightly != latest_nightly:
31
logger.info(f
"Please be aware that you are not testing your tags in the latest available nightly, which is {latest_nightly}"
)
32
33
setup =
"{},{},{},Athena"
.format(release_base, platform.replace(
"-"
,
","
), current_nightly)
34
35
logger.info(f
"Your tags will be tested in environment {setup}"
)
36
37
return
setup
38
39
40
def
list_changed_packages
(logger: Logger, no_setup=
False
) ->
None
:
41
"""List packages that have changed."""
42
if
no_setup:
43
logger.info(
"The list of changed packages is not available when the relase is not set-up.\n"
)
44
return
45
46
if
"WorkDir_DIR"
in
environ:
47
logger.info(
"Changed packages in your build to be tested:\n"
)
48
file_path = Path(environ[
"WorkDir_DIR"
])
49
fname = file_path /
"packages.txt"
50
with
fname.open()
as
fp:
51
lines = fp.readlines()
52
last_line = lines[-1].
strip
()
if
lines
else
None
53
for
line
in
lines:
54
line = line.strip()
55
if
"#"
not
in
line:
56
if
line == last_line:
57
logger.info(f
"{line}\n"
)
58
else
:
59
logger.info(line)
60
else
:
61
logger.warning(
"A release area with locally installed packages has not been setup."
)
62
logger.warning(
"quit by executing <CONTROL-C> if this is not your intention, and"
)
63
logger.warning(
"source <YOUR_CMake_BUILD_AREA>/setup.sh"
)
64
logger.warning(
"to pickup locally built packages in your environment.\n"
)
65
66
67
def
warnings_count
(file_name: Path) -> list[str]:
68
"""Run a WARNING helper function."""
69
warnings = []
70
with
file_name.open()
as
file:
71
for
line
in
file:
72
if
"WARNING"
in
line
and
"| WARNING |"
not
in
line:
73
warnings.append(line)
74
return
warnings
SiliconTech::strip
@ strip
Definition
FPGATrackSimTypes.h:25
python.Helpers.list_changed_packages
None list_changed_packages(Logger logger, no_setup=False)
Definition
Tools/WorkflowTestRunner/python/Helpers.py:40
python.Helpers.get_release_setup
str get_release_setup(Logger logger, no_setup=False)
Definition
Tools/WorkflowTestRunner/python/Helpers.py:8
python.Helpers.warnings_count
list[str] warnings_count(Path file_name)
Definition
Tools/WorkflowTestRunner/python/Helpers.py:67
Generated on
for ATLAS Offline Software by
1.17.0