reframe-hpc 4.10.0.dev5__tar.gz → 4.10.1__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.
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/PKG-INFO +52 -28
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/README.md +49 -26
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/docs/man/man1/reframe.1 +32 -2
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/docs/man/man8/reframe.settings.8 +64 -2
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/config/cluster_perflogs_httpjson.py +1 -1
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/singlenode.Dockerfile +11 -20
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/slurm-cluster/docker-compose.yml +2 -4
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/slurm-cluster/reframe/Dockerfile +8 -10
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/pyproject.toml +3 -1
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/__init__.py +1 -1
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/exceptions.py +4 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/logging.py +8 -2
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/schedulers/slurm.py +18 -12
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/schedulers/ssh.py +4 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/frontend/cli.py +25 -8
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/frontend/reporting/__init__.py +4 -1
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/frontend/reporting/utility.py +3 -2
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/schemas/config.json +7 -2
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/.gitignore +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/CONTRIBUTING.md +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/LICENSE +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/cscs-webinar-2022/config/mysettings.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/cscs-webinar-2022/cscs-webinar-2022.cast +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/cscs-webinar-2022/tests/src/stream.c +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/cscs-webinar-2022/tests/stream1.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/cscs-webinar-2022/tests/stream2.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/cscs-webinar-2022/tests/stream3.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/cscs-webinar-2022/tests/stream4.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/cscs-webinar-2022/tests/stream5.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/cscs-webinar-2022/tests/stream6.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/cscs-webinar-2022/tests/stream7.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/cscs-webinar-2022/tests/stream8.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/cscs-webinar-2022/tests/stream9.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/howto/flux/README.md +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/howto/flux/example1.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/howto/flux/settings.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/howto/reference_index.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/howto/testlib/__init__.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/howto/testlib/simple.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/howto/testlib/utility/__init__.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/howto/testlib_example.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/config/baseline.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/config/baseline.yaml +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/config/baseline_contplatf.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/config/baseline_environs.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/config/baseline_modules.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/config/cluster.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/config/cluster_logging.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/config/cluster_mpi.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/config/cluster_perflogs.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/config/cluster_resources.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/config/multifile/common/settings.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/config/multifile/environments/settings.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/config/multifile/pseudo-cluster/settings.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/containers/container_test.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/deps/deps_complex.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/deps/parameterized.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/eb-spack.dockerfile +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/flux.dockerfile +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/slurm-cluster/README.txt +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/slurm-cluster/dbd/Dockerfile +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/slurm-cluster/dbd/cgroup.conf +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/slurm-cluster/dbd/docker-entrypoint.sh +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/slurm-cluster/dbd/slurm.conf +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/slurm-cluster/dbd/slurmdbd.conf +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/slurm-cluster/master/Dockerfile +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/slurm-cluster/master/docker-entrypoint.sh +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/slurm-cluster/munge/Dockerfile +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/slurm-cluster/munge/entrypoint.sh +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/slurm-cluster/node/Dockerfile +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/slurm-cluster/node/docker-entrypoint.sh +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/slurm-cluster/reframe/docker-entrypoint.sh +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dummy/params.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/easybuild/eb_test.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/mpi/osu.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/mpi/osu_deps.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/generic/default/builtin/stream_test/rfm_job.err +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/generic/default/builtin/stream_test/rfm_job.out +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/generic/default/builtin/stream_test/rfm_job.sh +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/baseline/stream_test/rfm_job.err +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/baseline/stream_test/rfm_job.out +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/baseline/stream_test/rfm_job.sh +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/builtin/ZlibEBCheck/rfm_build.err +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/builtin/ZlibEBCheck/rfm_build.out +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/builtin/ZlibEBCheck/rfm_build.sh +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/builtin/ZlibEBCheck/rfm_job.err +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/builtin/ZlibEBCheck/rfm_job.out +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/builtin/ZlibEBCheck/rfm_job.sh +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/clang/stream_build_test/rfm_build.err +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/clang/stream_build_test/rfm_build.out +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/clang/stream_build_test/rfm_build.sh +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/clang/stream_build_test/rfm_job.err +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/clang/stream_build_test/rfm_job.out +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/clang/stream_build_test/rfm_job.sh +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/gnu/stream_build_test/rfm_build.err +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/gnu/stream_build_test/rfm_build.out +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/gnu/stream_build_test/rfm_build.sh +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/gnu/stream_build_test/rfm_job.err +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/gnu/stream_build_test/rfm_job.out +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/output/tutorialsys/default/gnu/stream_build_test/rfm_job.sh +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/scripts/runall.sh +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/spack/spack_test.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/stream/src/stream.c +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/stream/stream_build_run.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/stream/stream_config.yaml +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/stream/stream_cpuinfo.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/stream/stream_fixtures.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/stream/stream_make.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/stream/stream_multistep.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/stream/stream_parameters.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/stream/stream_parameters_fixtures.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/stream/stream_runonly.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/stream/stream_runonly_xfail.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/stream/stream_runonly_xfail_cond.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/stream/stream_variables.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/stream/stream_variables_fixtures.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/stream/stream_workflows.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/backends.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/buildsystems.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/builtins.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/config.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/containers.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/decorators.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/deferrable.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/environments.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/fields.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/fixtures.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/hooks.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/launchers/__init__.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/launchers/local.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/launchers/mpi.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/launchers/rsh.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/meta.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/modules.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/namespaces.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/parameters.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/pipeline.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/runtime.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/schedulers/__init__.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/schedulers/flux.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/schedulers/local.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/schedulers/lsf.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/schedulers/oar.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/schedulers/pbs.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/schedulers/registry.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/schedulers/sge.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/settings.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/shell.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/systems.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/variables.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/core/warnings.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/frontend/__init__.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/frontend/argparse.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/frontend/autodetect.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/frontend/ci.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/frontend/dependencies.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/frontend/executors/__init__.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/frontend/executors/policies.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/frontend/filters.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/frontend/loader.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/frontend/printer.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/frontend/reporting/storage.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/frontend/testgenerators.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/schemas/junit.xsd +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/schemas/runreport.json +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/utility/__init__.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/utility/color.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/utility/cpuinfo.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/utility/jsonext.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/utility/osext.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/utility/profile.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/utility/sanity.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/utility/typecheck.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/utility/udeps.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/reframe/utility/versioning.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/share/completions/reframe.bash +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/share/completions/reframe.fish +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/share/completions/reframe.tcsh +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/tools/gendoclistings.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/tools/hatch_build.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/tools/plot_pipeline_progress.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/tools/plot_poll_rate.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/tools/publish_zenodo.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/tools/python/3.6/get-pip.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/tools/python/3.7/get-pip.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/tools/python/get-pip.py +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/tools/requirements.txt +0 -0
- {reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/tools/sleep_test.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: reframe-hpc
|
|
3
|
-
Version: 4.10.
|
|
3
|
+
Version: 4.10.1
|
|
4
4
|
Summary: ReFrame is a powerful framework for writing system regression tests and benchmarks, specifically targeted to HPC systems
|
|
5
5
|
Project-URL: documentation, https://reframe-hpc.readthedocs.io/
|
|
6
6
|
Project-URL: releasenotes, https://github.com/reframe-hpc/reframe/releases
|
|
@@ -28,34 +28,17 @@ Requires-Dist: fasteners~=0.20
|
|
|
28
28
|
Requires-Dist: jinja2~=3.1
|
|
29
29
|
Requires-Dist: jsonschema~=4.26
|
|
30
30
|
Requires-Dist: lxml~=6.0
|
|
31
|
-
Requires-Dist: polars~=1.39
|
|
31
|
+
Requires-Dist: polars~=1.39; extra != 'no-analytics'
|
|
32
32
|
Requires-Dist: pyyaml~=6.0
|
|
33
33
|
Requires-Dist: requests~=2.33
|
|
34
34
|
Requires-Dist: semver~=3.0
|
|
35
35
|
Requires-Dist: tabulate~=0.10
|
|
36
36
|
Provides-Extra: graylog
|
|
37
37
|
Requires-Dist: pygelf~=0.4; extra == 'graylog'
|
|
38
|
+
Provides-Extra: no-analytics
|
|
38
39
|
Description-Content-Type: text/markdown
|
|
39
40
|
|
|
40
|
-
<
|
|
41
|
-
<img src="docs/_static/img/reframe_logo-width400p.png#gh-light-mode-only" width="400px">
|
|
42
|
-
<img src="docs/_static/img/reframe-logo-dark-bg.png#gh-dark-mode-only" width="400px">
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
[](https://github.com/reframe-hpc/reframe/actions?query=workflow%3A%22ReFrame+CI%22)
|
|
46
|
-
[](https://reframe-hpc.readthedocs.io/en/latest/?badge=latest)
|
|
47
|
-
[](https://codecov.io/gh/reframe-hpc/reframe)<br/>
|
|
48
|
-

|
|
49
|
-

|
|
50
|
-
<br/>
|
|
51
|
-
[](https://badge.fury.io/py/ReFrame-HPC)
|
|
52
|
-

|
|
53
|
-
[](https://pepy.tech/project/reframe-hpc)
|
|
54
|
-
[](https://pepy.tech/project/reframe-hpc)<br/>
|
|
55
|
-
[](https://join.slack.com/t/reframetalk/shared_invite/zt-3706f0tj6-2CjHh07HdQNbmLw1qAasjg)
|
|
56
|
-
[](https://opensource.org/licenses/BSD-3-Clause)
|
|
57
|
-
[](https://zenodo.org/badge/latestdoi/89384186)<br/>
|
|
58
|
-
[](https://twitter.com/ReFrameHPC)
|
|
41
|
+
[](https://github.com/reframe-hpc/reframe)<br/>
|
|
59
42
|
|
|
60
43
|
# Overview
|
|
61
44
|
|
|
@@ -77,6 +60,27 @@ Please visit the project's documentation [page](https://reframe-hpc.readthedocs.
|
|
|
77
60
|
|
|
78
61
|
ReFrame is fairly easy to install as PyPI package.
|
|
79
62
|
|
|
63
|
+
### Installing using `pip`
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
pip install reframe-hpc
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
This will also install the manpages and the shell completions under your pip's virtual environment:
|
|
70
|
+
|
|
71
|
+
| | |
|
|
72
|
+
|---|---|
|
|
73
|
+
| `reframe` executable | `${VIRTUAL_ENV}/bin` |
|
|
74
|
+
| Man pages | `${VIRTUAL_ENV}/share/man` |
|
|
75
|
+
| Bash/Zsh completions | `${VIRTUAL_ENV}/share/bash-completion/completions/reframe` |
|
|
76
|
+
| Fish completions | `${VIRTUAL_ENV}/share/fish/vendor_completions.d/reframe.fish` |
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
### Installing using `uv`
|
|
80
|
+
|
|
81
|
+
You can use any package manager that understands `pyproject.toml`-based Python projects to install ReFrame.
|
|
82
|
+
In this section we describe in more detail handling an installation using `uv`.
|
|
83
|
+
|
|
80
84
|
```bash
|
|
81
85
|
# Fetch uv
|
|
82
86
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
@@ -91,7 +95,7 @@ reframe -V
|
|
|
91
95
|
This will place the `reframe` executable under `$HOME/.local/bin` and the package under `$HOME/.local/share/uv/tools/reframe-hpc`.
|
|
92
96
|
To make available the manpage and the shell completions add the following lines in your shell's profile script:
|
|
93
97
|
|
|
94
|
-
|
|
98
|
+
#### Bash/Zsh
|
|
95
99
|
|
|
96
100
|
Add the following lines to your `$HOME/.profile`:
|
|
97
101
|
|
|
@@ -100,7 +104,7 @@ export MANPATH=${HOME}/.local/share/uv/tools/reframe-hpc/share/man:${MANPATH}:
|
|
|
100
104
|
source ${HOME}/.local/share/uv/tools/reframe-hpc/share/bash-completion/completions/reframe
|
|
101
105
|
```
|
|
102
106
|
|
|
103
|
-
|
|
107
|
+
#### Fish
|
|
104
108
|
|
|
105
109
|
Add the following lines to your `$HOME/.config/fish/config.fish`:
|
|
106
110
|
|
|
@@ -109,10 +113,7 @@ set -apgx MANPATH ${HOME}/.local/share/uv/tools/reframe-hpc/share/man ""
|
|
|
109
113
|
source ${HOME}/.local/share/uv/tools/reframe-hpc/share/fish/vendor_completions.d/reframe.fish
|
|
110
114
|
```
|
|
111
115
|
|
|
112
|
-
|
|
113
|
-
> You can use any modern Python build system that recognizes the `pyproject.toml` file.
|
|
114
|
-
|
|
115
|
-
### Multi-architecture installations on shared filesystem
|
|
116
|
+
#### Multi-architecture installations on shared filesystem
|
|
116
117
|
|
|
117
118
|
If you plan to install ReFrame for multiple platforms in a shared installation, you should make sure each installation resides in a different prefix.
|
|
118
119
|
You can achieve this with `uv` as follows:
|
|
@@ -133,7 +134,30 @@ uvx reframe --version
|
|
|
133
134
|
|
|
134
135
|
This will pull ReFrame's dependencies and run it.
|
|
135
136
|
It also caches them, so that the next time you invoke it, it will not download and install them again.
|
|
136
|
-
The only "downside" of this method is that you have to always invoke ReFrame through `uvx`, as opposed to the `uv tool install` method, where the `reframe`
|
|
137
|
+
The only "downside" of this method is that you have to always invoke ReFrame through `uvx`, as opposed to the `uv tool install` method, where the `reframe` executable is installed in a standard path.
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
### Installation extras
|
|
141
|
+
|
|
142
|
+
When installing ReFrame you can opt-in or opt-out from certain features.
|
|
143
|
+
For example, using `pip` you can use the brackets syntax:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
# Opt-in for an extra
|
|
147
|
+
pip install reframe-hpc[extra]
|
|
148
|
+
|
|
149
|
+
# Opt-out from a feature
|
|
150
|
+
pip install reframe-hpc[no-feature]
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
With `uv` you can either use the brackets notation or use the `--extra` option.
|
|
154
|
+
|
|
155
|
+
Here is a list of the available extras during installation:
|
|
156
|
+
|
|
157
|
+
| Extra | Description |
|
|
158
|
+
|---|---|
|
|
159
|
+
| `graylog` | Install Graylog bindings |
|
|
160
|
+
| `no-analytics` | Do not install the analytics layers; this will disable results storage feature but will make the installation more compact. |
|
|
137
161
|
|
|
138
162
|
|
|
139
163
|
## Running from source
|
|
@@ -1,22 +1,4 @@
|
|
|
1
|
-
<
|
|
2
|
-
<img src="docs/_static/img/reframe_logo-width400p.png#gh-light-mode-only" width="400px">
|
|
3
|
-
<img src="docs/_static/img/reframe-logo-dark-bg.png#gh-dark-mode-only" width="400px">
|
|
4
|
-
</div>
|
|
5
|
-
|
|
6
|
-
[](https://github.com/reframe-hpc/reframe/actions?query=workflow%3A%22ReFrame+CI%22)
|
|
7
|
-
[](https://reframe-hpc.readthedocs.io/en/latest/?badge=latest)
|
|
8
|
-
[](https://codecov.io/gh/reframe-hpc/reframe)<br/>
|
|
9
|
-

|
|
10
|
-

|
|
11
|
-
<br/>
|
|
12
|
-
[](https://badge.fury.io/py/ReFrame-HPC)
|
|
13
|
-

|
|
14
|
-
[](https://pepy.tech/project/reframe-hpc)
|
|
15
|
-
[](https://pepy.tech/project/reframe-hpc)<br/>
|
|
16
|
-
[](https://join.slack.com/t/reframetalk/shared_invite/zt-3706f0tj6-2CjHh07HdQNbmLw1qAasjg)
|
|
17
|
-
[](https://opensource.org/licenses/BSD-3-Clause)
|
|
18
|
-
[](https://zenodo.org/badge/latestdoi/89384186)<br/>
|
|
19
|
-
[](https://twitter.com/ReFrameHPC)
|
|
1
|
+
[](https://github.com/reframe-hpc/reframe)<br/>
|
|
20
2
|
|
|
21
3
|
# Overview
|
|
22
4
|
|
|
@@ -38,6 +20,27 @@ Please visit the project's documentation [page](https://reframe-hpc.readthedocs.
|
|
|
38
20
|
|
|
39
21
|
ReFrame is fairly easy to install as PyPI package.
|
|
40
22
|
|
|
23
|
+
### Installing using `pip`
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
pip install reframe-hpc
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
This will also install the manpages and the shell completions under your pip's virtual environment:
|
|
30
|
+
|
|
31
|
+
| | |
|
|
32
|
+
|---|---|
|
|
33
|
+
| `reframe` executable | `${VIRTUAL_ENV}/bin` |
|
|
34
|
+
| Man pages | `${VIRTUAL_ENV}/share/man` |
|
|
35
|
+
| Bash/Zsh completions | `${VIRTUAL_ENV}/share/bash-completion/completions/reframe` |
|
|
36
|
+
| Fish completions | `${VIRTUAL_ENV}/share/fish/vendor_completions.d/reframe.fish` |
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### Installing using `uv`
|
|
40
|
+
|
|
41
|
+
You can use any package manager that understands `pyproject.toml`-based Python projects to install ReFrame.
|
|
42
|
+
In this section we describe in more detail handling an installation using `uv`.
|
|
43
|
+
|
|
41
44
|
```bash
|
|
42
45
|
# Fetch uv
|
|
43
46
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
@@ -52,7 +55,7 @@ reframe -V
|
|
|
52
55
|
This will place the `reframe` executable under `$HOME/.local/bin` and the package under `$HOME/.local/share/uv/tools/reframe-hpc`.
|
|
53
56
|
To make available the manpage and the shell completions add the following lines in your shell's profile script:
|
|
54
57
|
|
|
55
|
-
|
|
58
|
+
#### Bash/Zsh
|
|
56
59
|
|
|
57
60
|
Add the following lines to your `$HOME/.profile`:
|
|
58
61
|
|
|
@@ -61,7 +64,7 @@ export MANPATH=${HOME}/.local/share/uv/tools/reframe-hpc/share/man:${MANPATH}:
|
|
|
61
64
|
source ${HOME}/.local/share/uv/tools/reframe-hpc/share/bash-completion/completions/reframe
|
|
62
65
|
```
|
|
63
66
|
|
|
64
|
-
|
|
67
|
+
#### Fish
|
|
65
68
|
|
|
66
69
|
Add the following lines to your `$HOME/.config/fish/config.fish`:
|
|
67
70
|
|
|
@@ -70,10 +73,7 @@ set -apgx MANPATH ${HOME}/.local/share/uv/tools/reframe-hpc/share/man ""
|
|
|
70
73
|
source ${HOME}/.local/share/uv/tools/reframe-hpc/share/fish/vendor_completions.d/reframe.fish
|
|
71
74
|
```
|
|
72
75
|
|
|
73
|
-
|
|
74
|
-
> You can use any modern Python build system that recognizes the `pyproject.toml` file.
|
|
75
|
-
|
|
76
|
-
### Multi-architecture installations on shared filesystem
|
|
76
|
+
#### Multi-architecture installations on shared filesystem
|
|
77
77
|
|
|
78
78
|
If you plan to install ReFrame for multiple platforms in a shared installation, you should make sure each installation resides in a different prefix.
|
|
79
79
|
You can achieve this with `uv` as follows:
|
|
@@ -94,7 +94,30 @@ uvx reframe --version
|
|
|
94
94
|
|
|
95
95
|
This will pull ReFrame's dependencies and run it.
|
|
96
96
|
It also caches them, so that the next time you invoke it, it will not download and install them again.
|
|
97
|
-
The only "downside" of this method is that you have to always invoke ReFrame through `uvx`, as opposed to the `uv tool install` method, where the `reframe`
|
|
97
|
+
The only "downside" of this method is that you have to always invoke ReFrame through `uvx`, as opposed to the `uv tool install` method, where the `reframe` executable is installed in a standard path.
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
### Installation extras
|
|
101
|
+
|
|
102
|
+
When installing ReFrame you can opt-in or opt-out from certain features.
|
|
103
|
+
For example, using `pip` you can use the brackets syntax:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# Opt-in for an extra
|
|
107
|
+
pip install reframe-hpc[extra]
|
|
108
|
+
|
|
109
|
+
# Opt-out from a feature
|
|
110
|
+
pip install reframe-hpc[no-feature]
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
With `uv` you can either use the brackets notation or use the `--extra` option.
|
|
114
|
+
|
|
115
|
+
Here is a list of the available extras during installation:
|
|
116
|
+
|
|
117
|
+
| Extra | Description |
|
|
118
|
+
|---|---|
|
|
119
|
+
| `graylog` | Install Graylog bindings |
|
|
120
|
+
| `no-analytics` | Do not install the analytics layers; this will disable results storage feature but will make the installation more compact. |
|
|
98
121
|
|
|
99
122
|
|
|
100
123
|
## Running from source
|
|
@@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
28
28
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
29
29
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
30
30
|
..
|
|
31
|
-
.TH "REFRAME" "1" "
|
|
31
|
+
.TH "REFRAME" "1" "Jun 17, 2026" "4.10.0" "ReFrame"
|
|
32
32
|
.SH NAME
|
|
33
33
|
reframe \- The CLI frontend for managing and executing ReFrame tests
|
|
34
34
|
.SH SYNOPSIS
|
|
@@ -73,7 +73,7 @@ For more information, have a look in \fI\%Integrating into a CI pipeline\fP\&.
|
|
|
73
73
|
\fBNOTE:\fP
|
|
74
74
|
.INDENT 7.0
|
|
75
75
|
.INDENT 3.5
|
|
76
|
-
This option will not work with the \fI\%test generation options\fP
|
|
76
|
+
This option will not work with the \fI\%test generation options\fP or with test fixtures.
|
|
77
77
|
.UNINDENT
|
|
78
78
|
.UNINDENT
|
|
79
79
|
.sp
|
|
@@ -1460,6 +1460,16 @@ There are the following message levels in ReFrame listed in increasing verbosity
|
|
|
1460
1460
|
The base verbosity level of the output is defined by the \fI\%level\fP stream logging handler configuration parameter.
|
|
1461
1461
|
.sp
|
|
1462
1462
|
This option can also be set using the \fI\%RFM_VERBOSE\fP environment variable or the \fI\%verbose\fP general configuration parameter.
|
|
1463
|
+
.UNINDENT
|
|
1464
|
+
.INDENT 0.0
|
|
1465
|
+
.TP
|
|
1466
|
+
.B \-\-warn\-as\-error
|
|
1467
|
+
Treat warnings as errors.
|
|
1468
|
+
.sp
|
|
1469
|
+
This option can also be set using the \fI\%RFM_WARN_AS_ERROR\fP environment variable.
|
|
1470
|
+
.sp
|
|
1471
|
+
Added in version 4.10.
|
|
1472
|
+
|
|
1463
1473
|
.UNINDENT
|
|
1464
1474
|
.SH TEST NAMING SCHEME
|
|
1465
1475
|
.sp
|
|
@@ -3374,6 +3384,26 @@ T} T{
|
|
|
3374
3384
|
T}
|
|
3375
3385
|
.TE
|
|
3376
3386
|
.UNINDENT
|
|
3387
|
+
.INDENT 0.0
|
|
3388
|
+
.TP
|
|
3389
|
+
.B RFM_WARN_AS_ERROR
|
|
3390
|
+
Treat warnings as errors.
|
|
3391
|
+
.TS
|
|
3392
|
+
box center;
|
|
3393
|
+
l|l.
|
|
3394
|
+
T{
|
|
3395
|
+
Associated command line option
|
|
3396
|
+
T} T{
|
|
3397
|
+
\fI\%\-\-warn\-as\-error\fP
|
|
3398
|
+
T}
|
|
3399
|
+
_
|
|
3400
|
+
T{
|
|
3401
|
+
Associated configuration parameter
|
|
3402
|
+
T} T{
|
|
3403
|
+
N/A
|
|
3404
|
+
T}
|
|
3405
|
+
.TE
|
|
3406
|
+
.UNINDENT
|
|
3377
3407
|
.SH CONFIGURATION
|
|
3378
3408
|
.sp
|
|
3379
3409
|
ReFrame’s configuration can be stored in one or multiple configuration files.
|
|
@@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
28
28
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
29
29
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
30
30
|
..
|
|
31
|
-
.TH "REFRAME.SETTINGS" "8" "
|
|
31
|
+
.TH "REFRAME.SETTINGS" "8" "Jun 17, 2026" "4.10.0" "ReFrame"
|
|
32
32
|
.SH NAME
|
|
33
33
|
reframe.settings \- ReFrame Configuration Manual
|
|
34
34
|
.sp
|
|
@@ -543,6 +543,7 @@ Added in version 4.10: The \fBpbspro\fP scheduler is added.
|
|
|
543
543
|
The Slurm\-based backends unset all \fBSBATCH_*\fP environment variables before submitting a job.
|
|
544
544
|
This is done to avoid environment variables bypassing ReFrame’s configuration.
|
|
545
545
|
For example, if the \fI\%access\fP options for a partition used \fB\-A foo\fP and \fBSBATCH_ACCOUNT=bar\fP was set, then the environment variable would override the configuration, as ReFrame emits those (by default) in the submission script.
|
|
546
|
+
If this is not desired, environment variables can be explicitly whitelisted using the \fI\%slurm_envvar_whitelist\fP option.
|
|
546
547
|
.sp
|
|
547
548
|
Job submission in ReFrame is controlled exclusively by the system partition’s \fI\%access\fP options, the test job’s \fI\%options\fP and the \fI\%\-J\fP command\-line option.
|
|
548
549
|
.UNINDENT
|
|
@@ -781,6 +782,25 @@ This option is relevant for the \fBslurm\fP backend only.
|
|
|
781
782
|
.sp
|
|
782
783
|
Added in version 4.8.
|
|
783
784
|
|
|
785
|
+
.UNINDENT
|
|
786
|
+
.INDENT 0.0
|
|
787
|
+
.TP
|
|
788
|
+
.B systems.partitions.sched_options.slurm_envvar_whitelist
|
|
789
|
+
.INDENT 7.0
|
|
790
|
+
.TP
|
|
791
|
+
.B Required
|
|
792
|
+
No
|
|
793
|
+
.TP
|
|
794
|
+
.B Default
|
|
795
|
+
\fB[]\fP
|
|
796
|
+
.UNINDENT
|
|
797
|
+
.sp
|
|
798
|
+
List of Slurm environment variables that will not be unset when submitting a job.
|
|
799
|
+
.sp
|
|
800
|
+
This option is relevant for the Slurm backends only.
|
|
801
|
+
.sp
|
|
802
|
+
Added in version 4.10.
|
|
803
|
+
|
|
784
804
|
.UNINDENT
|
|
785
805
|
.INDENT 0.0
|
|
786
806
|
.TP
|
|
@@ -855,10 +875,13 @@ No
|
|
|
855
875
|
\X'tty: link https://docs.python.org/3/library/constants.html#False'\fI\%False\fP\X'tty: link'
|
|
856
876
|
.UNINDENT
|
|
857
877
|
.sp
|
|
858
|
-
Use unqualified hostnames in the \fBlocal\fP scheduler
|
|
878
|
+
Use unqualified hostnames in the \fBlocal\fP and \fBssh\fP scheduler backends.
|
|
859
879
|
.sp
|
|
860
880
|
Added in version 4.7.
|
|
861
881
|
|
|
882
|
+
.sp
|
|
883
|
+
Changed in version 4.10.1: Added support for the \fBssh\fP scheduler backend.
|
|
884
|
+
|
|
862
885
|
.UNINDENT
|
|
863
886
|
.INDENT 0.0
|
|
864
887
|
.TP
|
|
@@ -1884,6 +1907,13 @@ No
|
|
|
1884
1907
|
.sp
|
|
1885
1908
|
A list of systems or system/partitions combinations that this logging configuration is valid for.
|
|
1886
1909
|
For a detailed description of this property, have a look at the \fI\%target_systems\fP definition for environments.
|
|
1910
|
+
.sp
|
|
1911
|
+
\fBNOTE:\fP
|
|
1912
|
+
.INDENT 7.0
|
|
1913
|
+
.INDENT 3.5
|
|
1914
|
+
The scope of all logging options is system\-wide, so only system names can be specified in this list, otherwise the scope will be ignored.
|
|
1915
|
+
.UNINDENT
|
|
1916
|
+
.UNINDENT
|
|
1887
1917
|
.UNINDENT
|
|
1888
1918
|
.SS Common logging handler properties
|
|
1889
1919
|
.sp
|
|
@@ -3099,6 +3129,13 @@ No
|
|
|
3099
3129
|
.sp
|
|
3100
3130
|
A list of systems \fIonly\fP that this execution mode is valid for.
|
|
3101
3131
|
For a detailed description of this property, have a look at the \fI\%target_systems\fP definition for environments.
|
|
3132
|
+
.sp
|
|
3133
|
+
\fBNOTE:\fP
|
|
3134
|
+
.INDENT 7.0
|
|
3135
|
+
.INDENT 3.5
|
|
3136
|
+
The scope of all modes options is system\-wide, so only system names can be specified in this list, otherwise the scope will be ignored.
|
|
3137
|
+
.UNINDENT
|
|
3138
|
+
.UNINDENT
|
|
3102
3139
|
.UNINDENT
|
|
3103
3140
|
.SH RESULT STORAGE CONFIGURATION
|
|
3104
3141
|
.sp
|
|
@@ -3194,6 +3231,13 @@ No
|
|
|
3194
3231
|
A list of systems \fIonly\fP that this storage configuration is valid for.
|
|
3195
3232
|
.sp
|
|
3196
3233
|
For a detailed description of this property, have a look at the \fI\%target_systems\fP definition for environments.
|
|
3234
|
+
.sp
|
|
3235
|
+
\fBNOTE:\fP
|
|
3236
|
+
.INDENT 7.0
|
|
3237
|
+
.INDENT 3.5
|
|
3238
|
+
The scope of all storage options is system\-wide, so only system names can be specified in this list, otherwise the scope will be ignored.
|
|
3239
|
+
.UNINDENT
|
|
3240
|
+
.UNINDENT
|
|
3197
3241
|
.UNINDENT
|
|
3198
3242
|
.SH GENERAL CONFIGURATION
|
|
3199
3243
|
.INDENT 0.0
|
|
@@ -3762,6 +3806,24 @@ No
|
|
|
3762
3806
|
.sp
|
|
3763
3807
|
A list of systems or system/partitions combinations that these general options are valid for.
|
|
3764
3808
|
For a detailed description of this property, have a look at the \fI\%target_systems\fP definition for environments.
|
|
3809
|
+
.sp
|
|
3810
|
+
\fBNOTE:\fP
|
|
3811
|
+
.INDENT 7.0
|
|
3812
|
+
.INDENT 3.5
|
|
3813
|
+
The scope of all general options is system\-wide, so only system names can be specified in this list, otherwise the scope will be ignored.
|
|
3814
|
+
Exception to this rule are the following options, which have a partition scope:
|
|
3815
|
+
.INDENT 0.0
|
|
3816
|
+
.IP \(bu 2
|
|
3817
|
+
\fI\%git_timeout\fP
|
|
3818
|
+
.IP \(bu 2
|
|
3819
|
+
\fI\%use_login_shell\fP
|
|
3820
|
+
.IP \(bu 2
|
|
3821
|
+
\fI\%flex_alloc_strict\fP
|
|
3822
|
+
.IP \(bu 2
|
|
3823
|
+
\fI\%trap_job_errors\fP
|
|
3824
|
+
.UNINDENT
|
|
3825
|
+
.UNINDENT
|
|
3826
|
+
.UNINDENT
|
|
3765
3827
|
.UNINDENT
|
|
3766
3828
|
.INDENT 0.0
|
|
3767
3829
|
.TP
|
{reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/config/cluster_perflogs_httpjson.py
RENAMED
|
@@ -120,7 +120,7 @@ site_configuration = {
|
|
|
120
120
|
'ignore_keys': ['check_perfvalues'],
|
|
121
121
|
'json_formatter': (_format_record
|
|
122
122
|
if os.getenv('CUSTOM_JSON') else None),
|
|
123
|
-
'authorization_header': _get_authorization_header
|
|
123
|
+
'authorization_header': _get_authorization_header
|
|
124
124
|
}
|
|
125
125
|
]
|
|
126
126
|
}
|
{reframe_hpc-4.10.0.dev5 → reframe_hpc-4.10.1}/examples/tutorial/dockerfiles/singlenode.Dockerfile
RENAMED
|
@@ -1,40 +1,31 @@
|
|
|
1
|
-
FROM ubuntu:
|
|
1
|
+
FROM ubuntu:24.04
|
|
2
|
+
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /usr/local/bin/
|
|
2
3
|
|
|
3
4
|
RUN apt-get -y update && \
|
|
4
5
|
apt-get -y install curl && \
|
|
5
6
|
apt-get -y install sudo && \
|
|
6
|
-
apt-get -y install python3-pip && \
|
|
7
7
|
apt-get -y install clang gcc git jq libomp-dev tree vim
|
|
8
8
|
|
|
9
|
-
# Install reframe
|
|
10
|
-
ARG REFRAME_TAG=develop
|
|
11
|
-
ARG REFRAME_REPO=reframe-hpc
|
|
12
|
-
WORKDIR /usr/local/share
|
|
13
|
-
|
|
14
|
-
# Clone reframe
|
|
15
|
-
# RUN git clone --depth 1 --branch $REFRAME_TAG https://github.com/$REFRAME_REPO/reframe.git && \
|
|
16
|
-
# cd reframe/ && ./bootstrap.sh
|
|
17
|
-
|
|
18
|
-
# Comment the above line and uncomment the following two for development
|
|
19
|
-
|
|
20
|
-
COPY . /usr/local/share/reframe
|
|
21
|
-
RUN cd reframe && ./bootstrap.sh
|
|
22
|
-
|
|
23
|
-
ENV PATH=/usr/local/share/reframe/bin:$PATH
|
|
24
|
-
|
|
25
9
|
# Install stream
|
|
10
|
+
WORKDIR /usr/local/share
|
|
26
11
|
RUN mkdir -p stream/bin && \
|
|
27
12
|
cd stream && \
|
|
28
13
|
curl -fsSLJO https://www.cs.virginia.edu/stream/FTP/Code/stream.c && \
|
|
29
14
|
gcc -DSTREAM_ARRAY_SIZE=100000000 -O3 -Wall -fopenmp -o bin/stream.x stream.c
|
|
30
15
|
ENV PATH=/usr/local/share/stream/bin:$PATH
|
|
31
16
|
|
|
17
|
+
# Prepare reframe installation
|
|
18
|
+
WORKDIR /workspace
|
|
19
|
+
COPY . /workspace/reframe
|
|
20
|
+
|
|
32
21
|
# Add tutorial user
|
|
33
22
|
RUN useradd -ms /bin/bash -G sudo user && \
|
|
34
23
|
echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
|
35
24
|
|
|
36
|
-
# COPY examples /home/user/reframe-examples
|
|
37
|
-
# RUN chown -R user:user /home/user/reframe-examples
|
|
38
25
|
WORKDIR /home/user
|
|
39
26
|
|
|
27
|
+
# Install reframe
|
|
40
28
|
USER user
|
|
29
|
+
RUN uv tool install /workspace/reframe
|
|
30
|
+
ENV PATH=/home/user/.local/bin:$PATH
|
|
31
|
+
ENV MANPATH=/home/user/.local/share/uv/tools/reframe-hpc/share/man:
|
|
@@ -72,10 +72,8 @@ services:
|
|
|
72
72
|
frontend:
|
|
73
73
|
image: slurm-reframe
|
|
74
74
|
build:
|
|
75
|
-
context:
|
|
76
|
-
|
|
77
|
-
REFRAME_REPO: reframe-hpc
|
|
78
|
-
REFRAME_TAG: develop
|
|
75
|
+
context: .
|
|
76
|
+
dockerfile: examples/tutorial/dockerfiles/slurm-cluster/reframe/Dockerfile
|
|
79
77
|
container_name: frontend
|
|
80
78
|
hostname: login
|
|
81
79
|
user: admin
|
|
@@ -29,23 +29,21 @@ RUN useradd -m admin -s /usr/bin/bash -d /home/admin && \
|
|
|
29
29
|
echo "admin:admin" | chpasswd && adduser admin sudo && \
|
|
30
30
|
echo "admin ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
|
31
31
|
|
|
32
|
-
COPY docker-entrypoint.sh /usr/local/bin/
|
|
32
|
+
COPY examples/tutorial/dockerfiles/slurm-cluster/reframe/docker-entrypoint.sh /usr/local/bin/
|
|
33
33
|
|
|
34
34
|
RUN mkdir /scratch && \
|
|
35
35
|
chown -R admin:admin /scratch
|
|
36
36
|
|
|
37
37
|
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
|
|
38
38
|
|
|
39
|
-
#
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
WORKDIR /usr/local/share
|
|
43
|
-
RUN git clone --depth 1 --branch $REFRAME_TAG https://github.com/$REFRAME_REPO/reframe.git && \
|
|
44
|
-
cd reframe/ && uv tool install .
|
|
39
|
+
# Prepare reframe installation
|
|
40
|
+
WORKDIR /workspace
|
|
41
|
+
COPY . /workspace/reframe
|
|
45
42
|
|
|
46
43
|
WORKDIR /home/admin
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
44
|
+
USER admin
|
|
45
|
+
RUN uv tool install --reinstall /workspace/reframe && \
|
|
46
|
+
echo "export PATH=/home/admin/.local/bin:\$PATH" >> /home/admin/.profile && \
|
|
47
|
+
echo "export MANPATH=/home/admin/.local/share/uv/tools/reframe-hpc/share/man:" >> /home/admin/.profile
|
|
50
48
|
|
|
51
49
|
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
|
|
@@ -33,7 +33,7 @@ dependencies = [
|
|
|
33
33
|
"jinja2 ~= 3.1",
|
|
34
34
|
"jsonschema ~= 4.26",
|
|
35
35
|
"lxml ~= 6.0",
|
|
36
|
-
"polars ~= 1.39",
|
|
36
|
+
"polars ~= 1.39; extra != 'no-analytics'",
|
|
37
37
|
"PyYAML ~= 6.0",
|
|
38
38
|
"requests ~= 2.33",
|
|
39
39
|
"semver ~= 3.0",
|
|
@@ -57,10 +57,12 @@ reframe = "reframe.frontend.cli:main"
|
|
|
57
57
|
|
|
58
58
|
[project.optional-dependencies]
|
|
59
59
|
graylog = ["pygelf ~= 0.4"]
|
|
60
|
+
no-analytics = []
|
|
60
61
|
|
|
61
62
|
[dependency-groups]
|
|
62
63
|
dev = [
|
|
63
64
|
"coverage ~= 7.13",
|
|
65
|
+
"polars ~= 1.39",
|
|
64
66
|
"pytest ~= 9.0",
|
|
65
67
|
"pytest-forked ~= 1.6",
|
|
66
68
|
"pytest-rerunfailures ~= 16.1"
|
|
@@ -365,6 +365,10 @@ class ReferenceParseError(ReframeError):
|
|
|
365
365
|
'''
|
|
366
366
|
|
|
367
367
|
|
|
368
|
+
class WarningAsError(ReframeError):
|
|
369
|
+
'''Raised when a warning is treated as an error.'''
|
|
370
|
+
|
|
371
|
+
|
|
368
372
|
def user_frame():
|
|
369
373
|
'''Return the first user frame as a :py:class:`FrameInfo` object.
|
|
370
374
|
|
|
@@ -22,7 +22,8 @@ from datetime import datetime
|
|
|
22
22
|
import reframe.utility.color as color
|
|
23
23
|
import reframe.utility.jsonext as jsonext
|
|
24
24
|
import reframe.utility.osext as osext
|
|
25
|
-
from reframe.core.exceptions import ConfigError, LoggingError,
|
|
25
|
+
from reframe.core.exceptions import (ConfigError, LoggingError,
|
|
26
|
+
WarningAsError, what)
|
|
26
27
|
from reframe.core.warnings import suppress_deprecations
|
|
27
28
|
from reframe.utility import is_trivially_callable
|
|
28
29
|
from reframe.utility.profile import TimeProfiler
|
|
@@ -903,6 +904,7 @@ class LoggerAdapter(logging.LoggerAdapter):
|
|
|
903
904
|
)
|
|
904
905
|
self.check = check
|
|
905
906
|
self.colorize = False
|
|
907
|
+
self.warn_as_error = False
|
|
906
908
|
|
|
907
909
|
def setLevel(self, level):
|
|
908
910
|
if self.logger:
|
|
@@ -999,6 +1001,9 @@ class LoggerAdapter(logging.LoggerAdapter):
|
|
|
999
1001
|
self.log(VERBOSE, message, *args, **kwargs)
|
|
1000
1002
|
|
|
1001
1003
|
def warning(self, message, *args, cache=False, **kwargs):
|
|
1004
|
+
if self.warn_as_error:
|
|
1005
|
+
raise WarningAsError(message)
|
|
1006
|
+
|
|
1002
1007
|
if cache:
|
|
1003
1008
|
if message in _WARN_ONCE:
|
|
1004
1009
|
return
|
|
@@ -1082,7 +1087,7 @@ class logging_context:
|
|
|
1082
1087
|
_context_logger = self._orig_logger
|
|
1083
1088
|
|
|
1084
1089
|
|
|
1085
|
-
def configure_logging(site_config):
|
|
1090
|
+
def configure_logging(site_config, warn_as_error=False):
|
|
1086
1091
|
global _logger, _context_logger, _perf_logger
|
|
1087
1092
|
|
|
1088
1093
|
if site_config is None:
|
|
@@ -1095,6 +1100,7 @@ def configure_logging(site_config):
|
|
|
1095
1100
|
_logger = _create_logger(site_config, 'handlers$', 'handlers')
|
|
1096
1101
|
_perf_logger = _create_logger(site_config, 'handlers_perflog')
|
|
1097
1102
|
_context_logger = LoggerAdapter(_logger)
|
|
1103
|
+
_context_logger.warn_as_error = warn_as_error
|
|
1098
1104
|
|
|
1099
1105
|
|
|
1100
1106
|
def log_files():
|