Run A Very Simple Check.
Definition at line 454 of file Checks.py.
◆ __init__()
def python.Checks.SimpleCheck.__init__ |
( |
|
self, |
|
|
TestSetup |
setup, |
|
|
str |
name, |
|
|
str |
quantity, |
|
|
str |
unit, |
|
|
int |
field, |
|
|
float |
threshold |
|
) |
| |
Definition at line 457 of file Checks.py.
457 def __init__(self, setup: TestSetup, name: str, quantity: str, unit: str, field: int, threshold: float):
460 self.quantity = quantity
463 self.threshold = threshold
◆ reference_file()
Optional[Path] python.Test.WorkflowCheck.reference_file |
( |
|
self, |
|
|
"WorkflowTest" |
test, |
|
|
str |
file_name |
|
) |
| |
|
inherited |
Definition at line 91 of file Tools/WorkflowTestRunner/python/Test.py.
91 def reference_file(self, test:
"WorkflowTest", file_name: str) -> Optional[Path]:
92 reference_path: Path = test.reference_path
93 reference_file = reference_path / file_name
96 if self.setup.validation_only:
98 reference_revision = references_map[f
"{test.ID}"]
99 cvmfs_path = Path(references_CVMFS_path)
100 rel_path = Path(self.setup.release_ID) / test.ID / reference_revision
101 reference_path = cvmfs_path / rel_path
102 reference_file = reference_path / file_name
104 if not reference_path.exists():
105 self.logger.
error(f
"CVMFS reference location {reference_path} does not exist!")
108 if references_override_url
is not None:
111 url = references_override_url
112 if not url.endswith(
"/"): url +=
"/"
113 url +=
str(rel_path / file_name)
114 self.logger.
info(
"Checking for reference override at %s", url)
115 if requests.head(url).ok:
116 reference_file = Path.cwd() / f
"reference_{file_name}"
117 self.logger.
info(
"Downloading reference from %s to %s", url, reference_file)
118 r = requests.get(url, stream=
True)
119 with reference_file.open(
'wb')
as f:
120 for chunk
in r.iter_content(chunk_size=1024):
124 self.logger.
info(
"No reference override found")
126 return reference_file
◆ run()
bool python.Checks.SimpleCheck.run |
( |
|
self, |
|
|
WorkflowTest |
test |
|
) |
| |
Definition at line 465 of file Checks.py.
465 def run(self, test: WorkflowTest) -> bool:
466 self.logger.
info(
"-----------------------------------------------------")
467 self.logger.
info(f
"Running {test.ID} {self.name} Check")
470 for step
in test.steps:
471 log_name = f
"log.{step}"
472 reference_log = test.reference_path / log_name
473 validation_log = test.validation_path / log_name
476 with reference_log.open()
as file:
479 if self.quantity
in line:
480 reference_value =
float(line.split()[self.field])
484 self.logger.
error(f
"No data available in {reference_log}. Job failed.")
488 with validation_log.open()
as file:
491 if self.quantity
in line:
492 validation_value =
float(line.split()[self.field])
496 self.logger.
error(f
"No data available in {validation_log}. Job failed.")
499 if reference_value != 0:
500 factor = validation_value / reference_value
504 if factor > 1. + self.threshold:
505 self.logger.
error(f
"{self.quantity} in the {step} step with(out) your change is {validation_value} ({reference_value}) {self.unit}")
506 self.logger.
error(f
"Your change changes {self.quantity} by a factor {factor}")
507 self.logger.
error(
"Is this an expected outcome of your change(s)?")
509 self.logger.
error(f
"{step}: {self.name}")
510 self.logger.
error(f
"ref {reference_value} {self.unit}")
511 self.logger.
error(f
"val {validation_value} {self.unit}")
512 if factor < 1. - self.threshold:
513 self.logger.warning(f
"{self.quantity} in the {step} step with(out) your change is {validation_value} ({reference_value}) {self.unit}")
514 self.logger.warning(f
"Your change changes {self.quantity} by a factor {factor}")
515 self.logger.warning(
"Is this an expected outcome of your change(s)?")
517 self.logger.warning(f
"{step}: {self.name}")
518 self.logger.warning(f
"ref {reference_value} {self.unit}")
519 self.logger.warning(f
"val {validation_value} {self.unit}")
522 self.logger.
info(
"Passed!\n")
524 self.logger.
error(
"Failed!\n")
◆ field
python.Checks.SimpleCheck.field |
◆ logger
python.Test.WorkflowCheck.logger |
|
inherited |
◆ name
python.Checks.SimpleCheck.name |
◆ quantity
python.Checks.SimpleCheck.quantity |
◆ setup
python.Test.WorkflowCheck.setup |
|
inherited |
◆ threshold
python.Checks.SimpleCheck.threshold |
◆ unit
python.Checks.SimpleCheck.unit |
The documentation for this class was generated from the following file: