You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/config_reference.rst
+9-5Lines changed: 9 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -115,7 +115,7 @@ System Configuration
115
115
:required: Yes
116
116
117
117
A list of hostname regular expression patterns in Python `syntax <https://docs.python.org/3.8/library/re.html>`__, which will be used by the framework in order to automatically select a system configuration.
118
-
For the auto-selection process, see `here <configure.html#picking-a-system-configuration>`__.
118
+
For the auto-selection process, check the configuration of the :attr:`~config.autodetect_methods` option.
119
119
120
120
.. py:attribute:: systems.max_local_jobs
121
121
@@ -244,6 +244,8 @@ System Configuration
244
244
This option is broken in 4.0.
245
245
246
246
247
+
.. _system-partition-configuration:
248
+
247
249
System Partition Configuration
248
250
==============================
249
251
@@ -470,7 +472,7 @@ System Partition Configuration
470
472
.. versionadded:: 4.0.0
471
473
472
474
ReFrame also allows you to register your own custom launchers simply by defining them in the configuration.
473
-
You can follow a small tutorial `here <tutorial_advanced.html#adding-a-custom-launcher-to-a-partition>`__.
475
+
You can follow a small tutorial :ref:`here <custom-launchers>`.
474
476
475
477
476
478
.. py:attribute:: systems.partitions.access
@@ -550,7 +552,7 @@ System Partition Configuration
550
552
:default: ``8``
551
553
552
554
The maximum number of concurrent regression tests that may be active (i.e., not completed) on this partition.
553
-
This option is relevant only when ReFrame executes with the `asynchronous execution policy <pipeline.html#execution-policies>`__.
555
+
This option is relevant only when ReFrame executes with the :ref:`asynchronous execution policy <execution-policies>`.
554
556
555
557
556
558
.. py:attribute:: systems.partitions.prepare_cmds
@@ -568,7 +570,7 @@ System Partition Configuration
568
570
:required: No
569
571
:default: ``[]``
570
572
571
-
A list of job scheduler `resource specification <config_reference.html#custom-job-scheduler-resources>`__ objects.
573
+
A list of job scheduler `resource specification <#custom-job-scheduler-resources>`__ objects.
572
574
573
575
574
576
.. py:attribute:: systems.partitions.processor
@@ -976,7 +978,7 @@ They are associated with `system partitions <#system-partition-configuration>`__
976
978
:default: ``{}``
977
979
978
980
Scheduler resources associated with this environments.
979
-
981
+
980
982
This is the equivalent of a test's :attr:`~reframe.core.pipeline.RegressionTest.extra_resources`.
981
983
982
984
.. versionadded:: 4.6
@@ -1231,6 +1233,8 @@ All logging handlers share the following set of common attributes:
1231
1233
In addition to the format directives supported by the standard library's `time.strftime() <https://docs.python.org/3.8/library/time.html#time.strftime>`__ function, ReFrame allows you to use the ``%:z`` directive -- a GNU ``date`` extension -- that will print the time zone difference in a RFC3339 compliant way, i.e., ``+/-HH:MM`` instead of ``+/-HHMM``.
This section describes the mechanism behind deferrable functions, which in ReFrame, they are used for sanity and performance checking.
6
-
Generally, writing a new sanity function in a :class:`~reframe.core.pipeline.RegressionTest` is as straightforward as decorating a simple member function with the built-in :func:`~reframe.core.pipeline.RegressionMixin.sanity_function` decorator.
6
+
Generally, writing a new sanity function in a :class:`~reframe.core.pipeline.RegressionTest` is as straightforward as decorating a simple member function with the built-in :func:`~reframe.core.builtins.sanity_function` decorator.
7
7
Behind the scenes, this decorator will convert the Python function into a deferrable function and schedule its evaluation for the sanity stage of the test.
8
8
However, when dealing with more complex scenarios such as a deferrable function taking as an argument the results from other deferrable functions, it is crucial to understand how a deferrable function differs from a regular Python function, and when is it actually evaluated.
9
9
@@ -181,7 +181,7 @@ There are some exceptions to this rule, though.
181
181
The logical :keyword:`and`, :keyword:`or` and :keyword:`not` operators as well as the :keyword:`in` operator cannot be deferred automatically.
182
182
These operators try to take the truthy value of their arguments by calling :func:`bool <python:bool>` on them.
183
183
As we shall see later, applying the :func:`bool <python:bool>` function on a deferred expression causes its immediate evaluation and returns the result.
184
-
If you want to defer the execution of such operators, you should use the corresponding :func:`and_ <reframe.utility.sanity.and_>`, :func:`or_ <reframe.utility.sanity.or_>`, :func:`not_ <reframe.utility.sanity.not_>` and :func:`contains <reframe.utility.sanity.contains>` functions in :mod:`reframe.utility.sanity`, which basically wrap the expression in a deferrable function.
184
+
If you want to defer the execution of such operators, you should use the corresponding :func:`~reframe.utility.sanity.and_`, :func:`~reframe.utility.sanity.or_`, :func:`~reframe.utility.sanity.not_` and :func:`~reframe.utility.sanity.contains` functions in :mod:`reframe.utility.sanity`, which basically wrap the expression in a deferrable function.
185
185
186
186
In summary deferrable functions have the following characteristics:
Copy file name to clipboardExpand all lines: docs/dependencies.rst
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
How Test Dependencies Work In ReFrame
3
3
=====================================
4
4
5
-
Dependencies in ReFrame are defined at the test level using the :func:`depends_on` function, but are projected to the `test cases <pipeline.html>`__ space.
5
+
Dependencies in ReFrame are defined at the test level using the :func:`depends_on` function, but are projected to the :doc:`test cases <pipeline>` space.
6
6
We will see the rules of that projection in a while.
7
7
The dependency graph construction and the subsequent dependency analysis happen also at the level of the test cases.
Copy file name to clipboardExpand all lines: docs/howto.rst
+11-11Lines changed: 11 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,10 +25,10 @@ Finally, if none of the above build systems fits, users are allowed to use their
25
25
Using Make, CMake or Autotools
26
26
------------------------------
27
27
28
-
We have seen already in the `tutorial <tutorial.html#compiling-the-test-code>`__ how to build a test with a single source file.
28
+
We have seen already in the :ref:`tutorial <compiling-the-test-code>` how to build a test with a single source file.
29
29
ReFrame can also build test code using common build systems, such as `Make <https://www.gnu.org/software/make/>`__, `CMake <https://cmake.org/>`__ or `Autotools <https://www.gnu.org/software/automake/>`__.
30
30
The build system to be used is selected by the :attr:`build_system` test attribute.
31
-
This is a "magic" attribute where you assign it a string and ReFrame will create the appropriate `build system object <regression_test_api.html#build-systems>`__.
31
+
This is a "magic" attribute where you assign it a string and ReFrame will create the appropriate :ref:`build system object <build-systems>`.
32
32
Each build system can define its own properties, but some build systems have a common set of properties that are interpreted accordingly.
33
33
Let's see a version of the STREAM benchmark that uses ``make``:
34
34
@@ -84,7 +84,7 @@ In this case, only the flags requested by the test will be emitted.
84
84
85
85
The Autotools and CMake build systems are quite similar.
86
86
For passing ``configure`` options, the :attr:`~reframe.core.buildsystems.ConfigureBasedBuildSystem.config_opts` build system attribute should be set, whereas for ``make`` options the :attr:`~reframe.core.buildsystems.ConfigureBasedBuildSystem.make_opts` should be used.
87
-
The `OSU benchmarks <tutorial.html#multi-node-tests>`__ in the main tutorial use the Autotools build system.
87
+
The :ref:`OSU benchmarks <multi-node-tests>` in the main tutorial use the Autotools build system.
88
88
89
89
Finally, in all three build systems, the :attr:`~reframe.core.buildsystems.Make.max_concurrency` can be set to control the number of parallel make jobs.
90
90
@@ -118,7 +118,7 @@ For running this test, we need the following Docker image:
EasyBuild requires a `modules system <#working-with-environment-modules>`__ to run, so we need a configuration file that sets the modules system of the current system:
121
+
EasyBuild requires a :ref:`modules system <working-with-environment-modules>` to run, so we need a configuration file that sets the modules system of the current system:
@@ -404,10 +404,10 @@ If you used an environment module to load ReFrame, e.g., ``reframe``, you can us
404
404
Working with low-level dependencies
405
405
===================================
406
406
407
-
We have seen that `test fixtures <tutorial.html#test-fixtures>`__ fixtures introduce dependencies between tests along with a scope.
407
+
We have seen that :ref:`test fixtures <test-fixtures>` fixtures introduce dependencies between tests along with a scope.
408
408
It is possible to define test dependencies without a scope using the low-level test dependency API.
409
409
In fact, test fixtures translate to that low-level API.
410
-
In this how-to, we will rewrite the `OSU benchmarks example <tutorial.html#multi-node-tests>`__ of the main tutorial to use the low-level dependency API.
410
+
In this how-to, we will rewrite the :ref:`OSU benchmarks example <multi-node-tests>` of the main tutorial to use the low-level dependency API.
411
411
412
412
Here is the full code:
413
413
@@ -560,7 +560,7 @@ The following is an example of ``.gitlab-ci.yml`` file that does exactly that:
560
560
561
561
It defines two stages.
562
562
The first one, called ``generate``, will call ReFrame to generate the pipeline specification for the desired tests.
563
-
All the usual `test selection options <manpage.html#test-filtering>`__ can be used to select specific tests.
563
+
All the usual :ref:`test selection options <test-filtering>` can be used to select specific tests.
564
564
ReFrame will process them as usual, but instead of running the selected tests, it will generate the correct steps for running each test individually as a Gitlab job in a child pipeline.
565
565
The generated ReFrame command that will run each individual test reuses the :option:`-C`, :option:`-R`, :option:`-v` and :option:`--mode` options passed to the initial invocation of ReFrame that was used to generate the pipeline.
566
566
Users can define CI-specific execution modes in their configuration in order to pass arbitrary options to the ReFrame invocation in the child pipeline.
@@ -569,7 +569,7 @@ Finally, we pass the generated CI pipeline file to the second phase as an artifa
569
569
If ``image`` keyword is defined in ``.gitlab-ci.yml``, the emitted pipeline will use the same image as the one defined in the parent pipeline.
570
570
Besides, each job in the generated pipeline will output a separate junit report which can be used to create GitLab badges.
571
571
572
-
The following figure shows one part of the automatically generated pipeline for the test graph depicted `above <#fig-deps-complex>`__.
572
+
The following figure shows one part of an automatically generated pipeline.
573
573
574
574
.. figure:: _static/img/gitlab-ci.png
575
575
:align:center
@@ -1036,7 +1036,7 @@ Rerunning with increased verbosity as the message suggests will give a full trac
1036
1036
Debugging sanity and performance patterns
1037
1037
-----------------------------------------
1038
1038
1039
-
When creating a new test that requires a complex output parsing for the sanity checking or for extracting the figures of merit, tuning the functions decorated by :attr:`@sanity_function<reframe.core.pipeline.RegressionMixin.sanity_function>` or :attr:`@performance_function<reframe.core.pipeline.RegressionMixin.performance_function>` may involve some trial and error to debug the complex regular expressions required.
1039
+
When creating a new test that requires a complex output parsing for the sanity checking or for extracting the figures of merit, tuning the functions decorated by :attr:`@sanity_function<reframe.core.builtins.sanity_function>` or :attr:`@performance_function<reframe.core.builtins.performance_function>` may involve some trial and error to debug the complex regular expressions required.
1040
1040
For lightweight tests which execute in few seconds, this trial and error may not be an issue at all.
1041
1041
However, when dealing with tests which take longer to run, this method can quickly become tedious and inefficient.
1042
1042
@@ -1097,7 +1097,7 @@ After loading the configuration, ReFrame will print out its relevant environment
1097
1097
Before attempting to load a file, it will validate it and check if it looks like a ReFrame test.
1098
1098
If it does, it will load that file by importing it.
1099
1099
This is where any ReFrame tests are instantiated and initialized (see ``Loaded 3 test(s)``), as well as the actual test cases (combination of tests, system partitions and environments) are generated.
1100
-
Then the test cases are filtered based on the various `filtering command line options <manpage.html#test-filtering>`__ as well as the programming environments that are defined for the currently selected system.
1100
+
Then the test cases are filtered based on the various :ref:`filtering command line options <test-filtering>` as well as the programming environments that are defined for the currently selected system.
1101
1101
Finally, the test case dependency graph is built and everything is ready for running (or listing).
1102
1102
1103
1103
Try passing a specific system or partition with the :option:`--system` option or modify the test (e.g., removing the decorator that registers it) and see how the logs change.
@@ -1124,7 +1124,7 @@ The following is the actual implementation of the ``mpirun`` launcher in ReFrame
1124
1124
1125
1125
Each launcher must derive from the abstract base class :class:`~reframe.core.launchers.JobLauncher` ands needs to implement the :func:`~reframe.core.launchers.JobLauncher.command` method and, optionally, change the default :func:`~reframe.core.launchers.JobLauncher.run_command` method.
1126
1126
1127
-
The :func:`~reframe.core.launchers.JobLauncher.command` returns a list of command tokens that will be combined with any user-supplied `options <regression_test_api.html#reframe.core.launchers.JobLauncher.options>`__ by the :func:`~reframe.core.launchers.JobLauncher.run_command` method to generate the actual launcher command line.
1127
+
The :func:`~reframe.core.launchers.JobLauncher.command` returns a list of command tokens that will be combined with any user-supplied job launcher :attr:`~reframe.core.launchers.JobLauncher.options` by the :func:`~reframe.core.launchers.JobLauncher.run_command` method to generate the actual launcher command line.
1128
1128
Notice you can use the ``job`` argument to get job-specific information that will allow you to construct the correct launcher invocation.
1129
1129
1130
1130
If you use a Python-based configuration file, you can define your custom launcher directly inside your config as follows:
Copy file name to clipboardExpand all lines: docs/manpage.rst
+5-8Lines changed: 5 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ Synopsis
12
12
Description
13
13
-----------
14
14
15
-
ReFrame provides both a `programming interface <regression_test_api.html>`__ for writing regression tests and a command-line interface for managing and running the tests, which is detailed here.
15
+
ReFrame provides both a :doc:`programming interface <regression_test_api>` for writing regression tests and a command-line interface for managing and running the tests, which is detailed here.
16
16
The ``reframe`` command is part of ReFrame's frontend.
17
17
This frontend is responsible for loading and running regression tests written in ReFrame.
18
18
ReFrame executes tests by sending them down to a well defined pipeline.
This option is relevant only to the ``filelog`` `logging handler <config_reference.html#the-filelog-log-handler>`__.
388
+
This option is relevant only to the ``filelog`` :ref:`logging handler <filelog-handler>`.
389
389
390
390
This option can also be set using the :envvar:`RFM_PERFLOG_DIR` environment variable or the :attr:`~config.logging.handlers_perflog..filelog..basedir` logging handler configuration parameter.
Save ReFrame log files in the output directory before exiting.
443
443
444
-
Only log files generated by ``file`` `log handlers <config_reference.html#the-file-log-handler>`__ will be copied.
444
+
Only log files generated by ``file`` :ref:`log handlers <file-handler>` will be copied.
445
445
446
446
This option can also be set using the :envvar:`RFM_SAVE_LOG_FILES` environment variable or the :attr:`~config.general.save_log_files` general configuration parameter.
447
447
@@ -1175,7 +1175,7 @@ Notice that this example leads to a name conflict with the old naming scheme, si
1175
1175
1176
1176
Each test is also associated with a hash code that is derived from the test name, its parameters and their values.
1177
1177
As in the example listing above, the hash code of each test is printed with the :option:`-l` option and individual tests can be selected by their hash using the :option:`-n` option, e.g., ``-n /1c51609b``.
1178
-
The stage and output directories, as well as the performance log file of the ``filelog`` `performance log handler <config_reference.html#the-filelog-log-handler>`__ will use the hash code for the test-specific directories and files.
1178
+
The stage and output directories, as well as the performance log file of the ``filelog`` :ref:`performance log handler <filelog-handler>` will use the hash code for the test-specific directories and files.
1179
1179
This might lead to conflicts for tests as the one above when executing them with the asynchronous execution policy, but ensures consistency of performance record files when parameter values are added to or deleted from a test parameter.
1180
1180
More specifically, the test's hash will not change if a new parameter value is added or deleted or even if the parameter values are shuffled.
1181
1181
Test variants on the other side are more volatile and can change with such changes.
@@ -1843,13 +1843,10 @@ If no configuration file can be found in any of the predefined locations, ReFram
1843
1843
This configuration file is located in |reframe/core/settings.py|_.
1844
1844
Users may *not* modify this file.
1845
1845
1846
-
For a complete reference of the configuration, please refer to |reframe.settings(8)|_ man page.
1846
+
For a complete reference of the configuration, please refer to :doc:`reframe.settings(8)<config_reference>` man page.
0 commit comments