squidient 3.0.2__tar.gz → 3.0.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {squidient-3.0.2 → squidient-3.0.4}/PKG-INFO +1 -1
- {squidient-3.0.2 → squidient-3.0.4}/pyproject.toml +1 -1
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/builds/build_definition.py +0 -3
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/builds/build_execution.py +8 -3
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/builds/build_orchestrator.py +0 -1
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/cli/staging.py +1 -1
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/code_coverage/gcovr_code_coverage.py +2 -2
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/connection/job.py +2 -15
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/definitions.py +1 -4
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/monitoring/monitoring.py +19 -2
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/reports/cases/base.py +0 -1
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/staging/staging.py +0 -1
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/systems/platform.py +0 -1
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/testing/benchmarks/failure_notifier.py +10 -5
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/testing/cases/instance_merger.py +0 -3
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/testing/test_orchestrator.py +0 -2
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/utils/watchdog.py +0 -1
- squidient-3.0.2/src/squidient/connection/build_lock.py +0 -32
- {squidient-3.0.2 → squidient-3.0.4}/.gitignore +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/LICENSE.txt +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/README.md +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/__init__.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/builds/benchmark_build_execution.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/builds/benchmark_build_orchestrator.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/builds/build_presets.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/cli/__init__.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/cli/__main__.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/cli/main.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/cli/monitoring.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/code_coverage/code_coverage.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/code_coverage/intel_code_coverage.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/compare/compare.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/compare/compare_with_diff_table.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/compare/methods/absolute.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/compare/methods/close.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/compare/methods/diff.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/compare/methods/l1_norm.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/compare/methods/l1_relative.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/compare/methods/l2_norm.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/compare/methods/l2_relative.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/compare/methods/linf_norm.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/compare/methods/linf_relative.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/compare/methods/power.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/compare/methods/relative.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/compare/methods/scalar_tolerance.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/compare/methods/tolerance.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/compare/methods/vector_tolerance.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/compilation/cmake_options.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/configuration/__init__.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/configuration/generator.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/configuration/prompts.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/configure.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/connection/ssh.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/connection/ssh_config_checker.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/.squidient-initialized +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/alya-config/cmake-alamak.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/alya-config/cmake-chemint.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/alya-config/cmake-clang.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/alya-config/cmake-commdom.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/alya-config/cmake-gnu.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/alya-config/cmake-intel.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/alya-config/cmake-mumps.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/alya-config/cmake-nvhpc.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/alya-config/cmake-talp.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/benchmarks/benchmarks.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/builds/builds.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/builds/cc.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/builds/defaults.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/builds/predefined-old.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/builds/predefined.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/configurations/projects.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/configurations/systems.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/configurations/tests.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/email/report.html +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/icons/big.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/icons/small.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/index.html +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/terraform/.gitignore +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small/.gitignore +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small/t3.small/cloud-init-slurm-fedora.sh +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small/t3.small/t3.small.tf +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small/t3.small/terraform.tfvars +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/.gitignore +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/cloud-init-slurm-fedora.sh +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/replace-var.sh +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/t3.small.tf +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/terraform.tfvars +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/.gitignore +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/cloud-init-slurm-fedora.sh +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/t3.small.tf +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/terraform.tfvars +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/version/version.json +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/btest.html +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/cc-gcovr.html +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/cc-intel.html +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/files.html +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/png/canceled.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/png/created.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/png/failed.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/png/failed_black.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/png/failed_green.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/png/file_cloud.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/png/file_config.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/png/file_ko.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/png/file_ok.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/png/skipped.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/png/squidient_logo.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/png/success.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/png/success_black.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/png/timeout.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/png/tolerance.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/png/warning.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/png/warning_black.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/png/warning_green.png +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/svg/canceled.svg +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/svg/created.svg +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/svg/failed.svg +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/svg/failed_black.svg +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/svg/failed_green.svg +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/svg/manual.svg +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/svg/running.svg +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/svg/skipped.svg +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/svg/success.svg +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/svg/success_black.svg +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/svg/warning.svg +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/svg/warning_black.svg +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/img/svg/warning_green.svg +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/index.html +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/jquery.dynatable.css +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/jquery.dynatable.js +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/monitoring.html +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/monitoring_build.html +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/monitoring_test.html +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/perf.html +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/staging_build.html +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/staging_test.html +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/test.html +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/testsuite.css +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/web/testsuite.js +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/deployment/initialization.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/deployment/module_generator.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/monitoring/monitoring_db.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/reports/__init__.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/reports/cases/__init__.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/reports/cases/case.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/reports/cases/detailed.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/reports/cases/full.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/reports/monitoring/__init__.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/reports/monitoring/report.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/reports/report.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/systems/partition.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/systems/qos.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/systems/queue_tester.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/systems/reservation.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/systems/system.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/systems/system_manager.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/terraform/terraform.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/testing/benchmarks/__init__.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/testing/benchmarks/instance.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/testing/benchmarks/test_case.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/testing/benchmarks/test_orchestrator.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/testing/cases/__init__.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/testing/cases/instance.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/testing/cases/test_case.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/timers/__init__.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/timers/timer.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/utils/arguments.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/utils/gitlab.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/utils/lock.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/utils/log.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/utils/message.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/utils/package.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/utils/utils.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/version_control/__init__.py +0 -0
- {squidient-3.0.2 → squidient-3.0.4}/src/squidient/version_control/git_repository.py +0 -0
|
@@ -46,7 +46,6 @@ class BuildDefinition:
|
|
|
46
46
|
self._file = ""
|
|
47
47
|
self._job_config = ""
|
|
48
48
|
self._platform = ""
|
|
49
|
-
self._lock = ""
|
|
50
49
|
self._runnable = ""
|
|
51
50
|
self._timeout = ""
|
|
52
51
|
self._timeoffset = ""
|
|
@@ -119,8 +118,6 @@ class BuildDefinition:
|
|
|
119
118
|
self._system = build["system"]
|
|
120
119
|
if self._platform == "" and "platform" in build:
|
|
121
120
|
self._platform = build["platform"]
|
|
122
|
-
if self._lock == "" and "lock" in build:
|
|
123
|
-
self._lock = build["lock"]
|
|
124
121
|
if self._runnable == "" and "runnable" in build:
|
|
125
122
|
self._runnable = build["runnable"]
|
|
126
123
|
if self._threads == "" and "threads" in build:
|
|
@@ -286,9 +286,14 @@ class BuildExecution(BuildDefinition):
|
|
|
286
286
|
self._ssh.scp_send(system=self._system, local=self._report_dir + "/*", remote=self._build_path + "/", server_path=True, critical=True)
|
|
287
287
|
|
|
288
288
|
def launch_job(self):
|
|
289
|
-
self._job_id = self._job_manager.launch_job(
|
|
290
|
-
|
|
291
|
-
|
|
289
|
+
self._job_id = self._job_manager.launch_job(
|
|
290
|
+
internal_job_id=self._build_id,
|
|
291
|
+
path=self._build_path + "/JOB.SB",
|
|
292
|
+
system=self._system,
|
|
293
|
+
platform=self._platform,
|
|
294
|
+
server_path=True,
|
|
295
|
+
max_jobs=self._max_jobs,
|
|
296
|
+
)
|
|
292
297
|
return self._job_id
|
|
293
298
|
|
|
294
299
|
def get_job_id(self):
|
|
@@ -42,7 +42,7 @@ class IgnoredInterrupts(object):
|
|
|
42
42
|
for sig in [signal.SIGINT, signal.SIGTERM]:
|
|
43
43
|
self._old_handlers[sig] = signal.signal(sig, self.handler)
|
|
44
44
|
|
|
45
|
-
def handler(self, sig,
|
|
45
|
+
def handler(self, sig, _frame):
|
|
46
46
|
logging.debug('Interrupt signal received. Delaying KeyboardInterrupt.')
|
|
47
47
|
|
|
48
48
|
def __exit__(self, type, value, traceback):
|
|
@@ -33,7 +33,7 @@ def read_base_xml(filename):
|
|
|
33
33
|
return cobertura
|
|
34
34
|
|
|
35
35
|
|
|
36
|
-
def create_package_file(cobertura, package
|
|
36
|
+
def create_package_file(cobertura, package):
|
|
37
37
|
filename = "cobertura-{}.xml".format(package.attrib['name'])
|
|
38
38
|
console.step("Creating package file {}".format(filename))
|
|
39
39
|
xml_to_write = copy.deepcopy(cobertura)
|
|
@@ -132,5 +132,5 @@ class GcovrCodeCoverage(CodeCoverage):
|
|
|
132
132
|
current_dir = os.getcwd()
|
|
133
133
|
os.chdir(xml_report_dir)
|
|
134
134
|
for package in cobertura_xml.find('packages'):
|
|
135
|
-
create_package_file(cobertura_xml, package
|
|
135
|
+
create_package_file(cobertura_xml, package)
|
|
136
136
|
os.chdir(current_dir)
|
|
@@ -25,7 +25,6 @@ import re
|
|
|
25
25
|
import threading
|
|
26
26
|
import time
|
|
27
27
|
|
|
28
|
-
from ..connection.build_lock import BuildLock
|
|
29
28
|
from ..definitions import actualize_time, check_jobs_every_normal, max_jobs_staging
|
|
30
29
|
from ..utils.log import logger
|
|
31
30
|
from ..utils.message import console
|
|
@@ -127,7 +126,6 @@ class Job:
|
|
|
127
126
|
self._run_id = run_id
|
|
128
127
|
self._ssh = ssh
|
|
129
128
|
self._time = -1
|
|
130
|
-
self._build_lock = BuildLock()
|
|
131
129
|
self._jobs = {}
|
|
132
130
|
self._jobs_not_actualized = {}
|
|
133
131
|
self._jobs_launched = {}
|
|
@@ -154,16 +152,7 @@ class Job:
|
|
|
154
152
|
shutil.rmtree("squeue", ignore_errors=True)
|
|
155
153
|
os.makedirs("squeue", exist_ok=True)
|
|
156
154
|
|
|
157
|
-
def launch_job(self, internal_job_id, path, system, platform, server_path=False,
|
|
158
|
-
dep = ""
|
|
159
|
-
if key_lock != "":
|
|
160
|
-
if asynchronous:
|
|
161
|
-
console.section("Job submission")
|
|
162
|
-
console.error("You cannot launch an asynchronous job with a dependency", level=1)
|
|
163
|
-
raise RuntimeError
|
|
164
|
-
lock_id = self._build_lock.get_lock(key_lock)
|
|
165
|
-
if lock_id != -1:
|
|
166
|
-
dep = "--dependency=afterany:" + str(lock_id) + " "
|
|
155
|
+
def launch_job(self, internal_job_id, path, system, platform, server_path=False, asynchronous=False, max_jobs=max_jobs_staging):
|
|
167
156
|
if platform not in self._job_threads[system]:
|
|
168
157
|
self._input_queues[system][platform] = queue.Queue()
|
|
169
158
|
self._output_queues[system][platform] = queue.Queue()
|
|
@@ -187,7 +176,7 @@ class Job:
|
|
|
187
176
|
job = {}
|
|
188
177
|
job["id"] = internal_job_id
|
|
189
178
|
job["launched"] = False
|
|
190
|
-
job["command"] = "sbatch " +
|
|
179
|
+
job["command"] = "sbatch " + path
|
|
191
180
|
job["server_path"] = server_path
|
|
192
181
|
self._input_queues[system][platform].put(job)
|
|
193
182
|
self._jobs_not_launched[system][platform][internal_job_id] = job
|
|
@@ -195,8 +184,6 @@ class Job:
|
|
|
195
184
|
while not self.is_launched(system, platform, internal_job_id):
|
|
196
185
|
time.sleep(1)
|
|
197
186
|
job_id = self.get_job_id(system, platform, internal_job_id)
|
|
198
|
-
if key_lock != "":
|
|
199
|
-
self._build_lock.set_lock(key_lock, job_id)
|
|
200
187
|
return job_id
|
|
201
188
|
else:
|
|
202
189
|
return -1
|
|
@@ -22,7 +22,6 @@ test_default_timeout = "00:01:00"
|
|
|
22
22
|
test_max_timeout = "00:05:00"
|
|
23
23
|
merged_max_timeout = "02:00:00"
|
|
24
24
|
queue_max_timeout = "02:00:00"
|
|
25
|
-
max_waiting_time = 2 # 2 hours
|
|
26
25
|
queue_test_sleep_before_get_launch_time = 30 # seconds
|
|
27
26
|
test_max_retry = 3
|
|
28
27
|
report_dir = "reports"
|
|
@@ -36,13 +35,10 @@ queue_report_dir = report_dir + "/queues"
|
|
|
36
35
|
terraform_dir = "terraform"
|
|
37
36
|
mpio2txt_bin = "mpio2txt"
|
|
38
37
|
actualize_time = 60
|
|
39
|
-
enable_svn = False
|
|
40
38
|
max_async_threads = 8
|
|
41
39
|
max_jobs_staging = 100
|
|
42
40
|
max_jobs_monitoring = 50
|
|
43
|
-
max_jobs_debug = 10
|
|
44
41
|
check_jobs_every_normal = 30
|
|
45
|
-
check_jobs_every_debug = 10
|
|
46
42
|
config_file = "configuration.json"
|
|
47
43
|
build_file = "builds/builds.json"
|
|
48
44
|
default_file = "builds/defaults.json"
|
|
@@ -70,6 +66,7 @@ max_advised_builds = 2
|
|
|
70
66
|
database_name = {"test": "rooster_test", "production": "rooster"}
|
|
71
67
|
benchmark_failure_sender = "damien.dosimont@bsc.es"
|
|
72
68
|
benchmark_failure_copy = ["damien.dosimont@bsc.es"]
|
|
69
|
+
benchmark_notification_failure_log = "log/benchmark_notification_failures.log"
|
|
73
70
|
benchmark_failure_log_files = [
|
|
74
71
|
"sbatch.out",
|
|
75
72
|
"sbatch.err",
|
|
@@ -19,10 +19,11 @@
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
import logging
|
|
22
|
+
import os
|
|
22
23
|
|
|
23
24
|
from ..builds.benchmark_build_execution import BenchmarkBuildExecution
|
|
24
25
|
from ..builds.benchmark_build_orchestrator import BenchmarkBuildOrchestrator
|
|
25
|
-
from ..definitions import benchmark_build_report_dir
|
|
26
|
+
from ..definitions import benchmark_build_report_dir, benchmark_notification_failure_log
|
|
26
27
|
from ..reports.monitoring import MonitoringReport
|
|
27
28
|
from ..staging.staging import Staging, WorkflowFailure
|
|
28
29
|
from ..testing.benchmarks.test_orchestrator import BenchmarkTestOrchestrator
|
|
@@ -122,6 +123,7 @@ class Monitoring(Staging):
|
|
|
122
123
|
return
|
|
123
124
|
failures = self._test_orchestrator.get_notification_failures()
|
|
124
125
|
if len(failures) > 0:
|
|
126
|
+
self.write_notification_failure_log(failures)
|
|
125
127
|
self._report.write_notification_failures(failures)
|
|
126
128
|
|
|
127
129
|
def validate(self):
|
|
@@ -130,12 +132,27 @@ class Monitoring(Staging):
|
|
|
130
132
|
failures = self._report.get_notification_failures()
|
|
131
133
|
if len(failures) > 0:
|
|
132
134
|
console.section("Notification failures")
|
|
135
|
+
self.write_notification_failure_log(failures)
|
|
133
136
|
for failure in failures:
|
|
134
|
-
|
|
137
|
+
message = failure.get("message", str(failure))
|
|
138
|
+
log_path = failure.get("log", benchmark_notification_failure_log)
|
|
139
|
+
console.error(message + "\nDetails written to " + log_path, level=1)
|
|
135
140
|
if len(failures) > 0:
|
|
136
141
|
raise WorkflowFailure("Benchmark notification email could not be sent")
|
|
137
142
|
super().validate()
|
|
138
143
|
|
|
144
|
+
def write_notification_failure_log(self, failures):
|
|
145
|
+
log_dir = os.path.dirname(benchmark_notification_failure_log)
|
|
146
|
+
if log_dir != "":
|
|
147
|
+
os.makedirs(log_dir, exist_ok=True)
|
|
148
|
+
with open(benchmark_notification_failure_log, "w", encoding="utf-8") as log:
|
|
149
|
+
for index, failure in enumerate(failures, start=1):
|
|
150
|
+
failure["log"] = benchmark_notification_failure_log
|
|
151
|
+
log.write("Notification failure " + str(index) + "\n")
|
|
152
|
+
log.write("=" * 80 + "\n")
|
|
153
|
+
log.write(failure.get("details", failure.get("message", str(failure))))
|
|
154
|
+
log.write("\n\n")
|
|
155
|
+
|
|
139
156
|
def build(self, terraform):
|
|
140
157
|
with self.timer("monitoring.build"):
|
|
141
158
|
self._monitoring_db = MonitoringDB(self._config, enable=False)
|
|
@@ -72,7 +72,6 @@ class Staging:
|
|
|
72
72
|
self._arguments = arguments
|
|
73
73
|
self._test_list = arguments.get_test_list()
|
|
74
74
|
self._test_directories = arguments.get_test_directories()
|
|
75
|
-
self._generic_arguments = arguments.get_generic_arg()
|
|
76
75
|
self._gitlab = arguments.get_gitlab()
|
|
77
76
|
self._config = open_critical_json(config_file)
|
|
78
77
|
self._benchmarks = open_critical_json(benchmark_file)
|
|
@@ -39,12 +39,12 @@ class BenchmarkFailureNotificationError(Exception):
|
|
|
39
39
|
"Benchmark failure email could not be sent.\n"
|
|
40
40
|
"Recipients: " + ", ".join(self.recipients) + "\n"
|
|
41
41
|
"Subject: " + self.subject + "\n"
|
|
42
|
-
"Transport error: " + self.error
|
|
43
|
-
"\n"
|
|
44
|
-
"Mail body:\n"
|
|
45
|
-
+ self.body
|
|
42
|
+
"Transport error: " + self.error
|
|
46
43
|
)
|
|
47
44
|
|
|
45
|
+
def details(self):
|
|
46
|
+
return self.message() + "\n\nMail body:\n" + self.body
|
|
47
|
+
|
|
48
48
|
def as_dict(self):
|
|
49
49
|
return {
|
|
50
50
|
"recipients": self.recipients,
|
|
@@ -52,6 +52,7 @@ class BenchmarkFailureNotificationError(Exception):
|
|
|
52
52
|
"body": self.body,
|
|
53
53
|
"error": self.error,
|
|
54
54
|
"message": self.message(),
|
|
55
|
+
"details": self.details(),
|
|
55
56
|
}
|
|
56
57
|
|
|
57
58
|
|
|
@@ -140,7 +141,11 @@ class BenchmarkFailureNotifier:
|
|
|
140
141
|
message.set_content(body)
|
|
141
142
|
sendmail = shutil.which("sendmail")
|
|
142
143
|
if sendmail is not None:
|
|
143
|
-
|
|
144
|
+
command = [sendmail]
|
|
145
|
+
if self._from_address is not None:
|
|
146
|
+
command.extend(["-f", self._from_address])
|
|
147
|
+
command.append("-t")
|
|
148
|
+
subprocess.run(command, input=message.as_string(), text=True, check=True)
|
|
144
149
|
return
|
|
145
150
|
with smtplib.SMTP("localhost") as smtp:
|
|
146
151
|
smtp.send_message(message)
|
|
@@ -57,7 +57,6 @@ class InstanceMerger:
|
|
|
57
57
|
self._job_launched = False
|
|
58
58
|
self._job_id = 0
|
|
59
59
|
self._job_submission = {}
|
|
60
|
-
self._waiting_job_id = False
|
|
61
60
|
self._exec_modules = []
|
|
62
61
|
|
|
63
62
|
self._queue = ""
|
|
@@ -102,8 +101,6 @@ class InstanceMerger:
|
|
|
102
101
|
self.generate_job()
|
|
103
102
|
|
|
104
103
|
def generate_job(self):
|
|
105
|
-
gpu = False
|
|
106
|
-
gpus = 0
|
|
107
104
|
tasks = 0
|
|
108
105
|
self.set_queue()
|
|
109
106
|
spath = self._server_path + "/"
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
#########################################################################
|
|
2
|
-
# #
|
|
3
|
-
# This file is part of squidient. #
|
|
4
|
-
# #
|
|
5
|
-
# squidient is free software: you can redistribute it and/or modify #
|
|
6
|
-
# it under the terms of the GNU General Public License as published by #
|
|
7
|
-
# the Free Software Foundation, either version 3 of the License, or #
|
|
8
|
-
# (at your option) any later version. #
|
|
9
|
-
# #
|
|
10
|
-
# squidient is distributed in the hope that it will be useful, #
|
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
|
13
|
-
# GNU General Public License for more details. #
|
|
14
|
-
# #
|
|
15
|
-
# You should have received a copy of the GNU General Public License #
|
|
16
|
-
# along with squidient. If not, see <https://www.gnu.org/licenses/>. #
|
|
17
|
-
# #
|
|
18
|
-
#########################################################################
|
|
19
|
-
|
|
20
|
-
class BuildLock:
|
|
21
|
-
|
|
22
|
-
def __init__(self):
|
|
23
|
-
self._locks = {}
|
|
24
|
-
|
|
25
|
-
def get_lock(self, key):
|
|
26
|
-
if key in self._locks:
|
|
27
|
-
return self._locks[key]
|
|
28
|
-
else:
|
|
29
|
-
return -1
|
|
30
|
-
|
|
31
|
-
def set_lock(self, key, value):
|
|
32
|
-
self._locks[key] = value
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{squidient-3.0.2 → squidient-3.0.4}/src/squidient/data/terraform/aws-ec2-t3.small/.gitignore
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|