Skip to content

Commit

Permalink
Change asynchronous policy to use asyncio
Browse files Browse the repository at this point in the history
  • Loading branch information
Blanca-Fuentes committed Jan 7, 2025
1 parent b575238 commit c25e50b
Show file tree
Hide file tree
Showing 57 changed files with 1,390 additions and 706 deletions.
20 changes: 13 additions & 7 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12']
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
Expand Down Expand Up @@ -48,12 +48,15 @@ jobs:
unittest-macos:
runs-on: macos-latest
strategy:
matrix:
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.9
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: 3.9
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
./bootstrap.sh
Expand All @@ -79,7 +82,7 @@ jobs:
docker build -f ci-scripts/dockerfiles/reframe-${{ matrix.modules-version }}.dockerfile -t reframe-${{ matrix.modules-version }}:latest .
- name: Run Unittests
run: |
docker run reframe-${{ matrix.modules-version }}:latest
docker run --init reframe-${{ matrix.modules-version }}:latest
eb-spack-howto:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -115,12 +118,15 @@ jobs:

wheelvalidation:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
steps:
- uses: actions/checkout@v4
- name: Setup up Python 3.8
- name: Setup up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: 3.8
python-version: ${{ matrix.python-version }}
- name: Generate Wheel
run: |
python -m pip install --upgrade pip setuptools build
Expand All @@ -137,7 +143,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12']
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
Expand Down
52 changes: 37 additions & 15 deletions docs/config_reference.rst
Original file line number Diff line number Diff line change
Expand Up @@ -601,7 +601,7 @@ System Partition Configuration
:required: No
:default: ``[]``

A list of job scheduler `resource specification <#custom-job-scheduler-resources>`__ objects.
A list of job scheduler :ref:`resource specification <scheduler-resources>` objects.


.. py:attribute:: systems.partitions.processor
Expand Down Expand Up @@ -639,12 +639,19 @@ System Partition Configuration

In case of errors during auto-detection, ReFrame will simply issue a warning and continue.

.. note::

The directory prefix for storing topology information is configurable through the :attr:`~config.general.topology_prefix` configuration option.


.. versionadded:: 3.5.0

.. versionchanged:: 3.7.0
ReFrame is now able to detect the processor information automatically.

.. versionchanged:: 4.7
Directory prefix for topology files is now configurable.


.. py:attribute:: systems.partitions.devices
Expand Down Expand Up @@ -747,6 +754,8 @@ ReFrame can launch containerized applications, but you need to configure properl
If specified in conjunction with :attr:`~systems.partitions.container_platforms.env_vars`, it will be ignored.


.. _scheduler-resources:

Custom Job Scheduler Resources
==============================

Expand Down Expand Up @@ -1142,7 +1151,7 @@ All logging handlers share the following set of common attributes:

Log record format string.

ReFrame accepts all log record attributes from Python's `logging <https://docs.python.org/3.8/library/logging.html#logrecord-attributes>`__ mechanism and adds the following attributes:
ReFrame accepts all log record placeholders from Python's `logging <https://docs.python.org/3.8/library/logging.html#logrecord-attributes>`__ mechanism and adds the following ones:

.. csv-table::

Expand Down Expand Up @@ -1201,16 +1210,17 @@ All logging handlers share the following set of common attributes:
``%(check_valid_prog_environs)s``, The value of the :attr:`~reframe.core.pipeline.RegressionTest.valid_prog_environs` attribute.
``%(check_valid_systems)s``, The value of the :attr:`~reframe.core.pipeline.RegressionTest.valid_systems` attribute.
``%(check_variables)s``, DEPRECATED: Please use ``%(check_env_vars)s`` instead.
``%(hostname)s``, The hostname where ReFrame runs.
``%(osuser)s``, The name of the OS user running ReFrame.
``%(osgroup)s``, The name of the OS group running ReFrame.
``%(version)s``, The ReFrame version.

ReFrame allows you to log any test variable, parameter or property if they are marked as "loggable".
The log record attribute will have the form ``%(check_NAME)s`` where ``NAME`` is the variable name, the parameter name or the property name that is marked as loggable.
The log record placeholder will have the form ``%(check_NAME)s`` where ``NAME`` is the variable name, the parameter name or the property name that is marked as loggable.

There is also the special ``%(check_#ALL)s`` format specifier which expands to all the loggable test attributes.
These include all the above specifiers and any additional loggable variables or parameters defined by the test.
On expanding this specifier, ReFrame will try to guess the delimiter to use for separating the different attributes based on the existing format.
There is also the special ``%(check_#ALL)s`` format placeholder which expands to all the loggable test attributes.
These include all the above placeholders and any additional loggable variables or parameters defined by the test.
On expanding this placeholder, ReFrame will try to guess the delimiter to use for separating the different attributes based on the existing format.
If it cannot guess it, it will default to ``|``.

Since this can lead to very long records, you may consider using it with the :attr:`~logging.handlers_perflog..filelog..ignore_keys` parameter to filter out some attributes that are not of interest.
Expand All @@ -1225,13 +1235,16 @@ All logging handlers share the following set of common attributes:
Limit the number of attributes that can be logged. User attributes or properties must be explicitly marked as "loggable" in order to be selectable for logging.

.. versionadded:: 4.0
The ``%(check_result)s`` specifier is added.
The ``%(check_result)s`` placeholder is added.

.. versionadded:: 4.3
The ``%(check_#ALL)s`` special specifier is added.
The ``%(check_#ALL)s`` special placeholder is added.

.. versionadded:: 4.7
The ``%(check_fail_phase)s`` and ``%(check_fail_reason)s`` specifiers are added.
The ``%(check_fail_phase)s`` and ``%(check_fail_reason)s`` placeholders are added.

.. versionadded:: 4.8
The ``%(hostname)s`` placeholder is added.


.. py:attribute:: logging.handlers.format_perfvars
Expand All @@ -1248,10 +1261,10 @@ All logging handlers share the following set of common attributes:
.. important::
The last character of this format will be interpreted as the final delimiter of the formatted performance variables to the rest of the record.

The following log record attributes are defined additionally by this format specifier:
The following log record placeholders are defined additionally by this format specifier:

.. csv-table::
:header: "Log record attribute", "Description"
:header: "Log record placeholders", "Description"

``%(check_perf_lower_thres)s``, The lower threshold of the logged performance variable.
``%(check_perf_ref)s``, The reference value of the logged performance variable.
Expand Down Expand Up @@ -1343,7 +1356,7 @@ The additional properties for the ``filelog`` handler are the following:

.. py:attribute:: logging.handlers_perflog..filelog..ignore_keys
A list of log record `format specifiers <#config.logging.handlers.format>`__ that will be ignored by the special ``%(check_#ALL)s`` specifier.
A list of log record `format placeholders <#config.logging.handlers.format>`__ that will be ignored by the special ``%(check_#ALL)s`` placeholder.

.. versionadded:: 4.3

Expand Down Expand Up @@ -1582,11 +1595,11 @@ This handler transmits the whole log record, meaning that all the information wi
.. py:function:: json_formatter(record: object, extras: Dict[str, str], ignore_keys: Set[str]) -> str
:arg record: The prepared log record.
The log record is a simple Python object with all the attributes listed in :attr:`~config.logging.handlers.format`, as well as all the default Python `log record <https://docs.python.org/3.8/library/logging.html#logrecord-attributes>`__ attributes.
The log record is a simple Python object with all the placeholders listed in :attr:`~config.logging.handlers.format`, as well as all the default Python `log record <https://docs.python.org/3.8/library/logging.html#logrecord-attributes>`__ placeholders.
In addition to those, there is also the special :attr:`__rfm_check__` attribute that contains a reference to the actual test for which the performance is being logged.
:arg extras: Any extra attributes specified in :attr:`~config.logging.handlers_perflog..httpjson..extras`.
:arg ignore_keys: The set of keys specified in :attr:`~config.logging.handlers_perflog..httpjson..ignore_keys`.
ReFrame always adds the default Python log record attributes in this set.
ReFrame always adds the default Python log record placeholders in this set.
:returns: A string representation of the JSON record to be sent to the server or :obj:`None` if the record should not be sent to the server.

.. note::
Expand Down Expand Up @@ -1855,6 +1868,16 @@ General Configuration



.. py:attribute:: general.topology_prefix
:required: No
:default: ``"${HOME}/.reframe/topology"``

Directory prefix for storing the auto-detected processor topology.

.. versionadded:: 4.7


.. py:attribute:: general.trap_job_errors
:required: No
Expand All @@ -1864,7 +1887,6 @@ General Configuration

.. versionadded:: 3.2


.. py:attribute:: general.keep_stage_files
:required: No
Expand Down
36 changes: 19 additions & 17 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -21,28 +21,30 @@ Publications
Presentations & Talks
---------------------

* Slides [`pdf <https://users.ugent.be/~kehoste/eum24/008_eum24_ReFrame.pdf>`__][`talk <https://www.youtube.com/live/uSEeU-VJf6k?si=YB19mFpG6aAEBOgH>`__] @ `9th EasyBuild User Meeting 2024 <https://easybuild.io/eum24/>`__.
* Slides [`part 1 <https://docs.google.com/presentation/d/1GmO2Uf29SaLg36bPB9g9eeaKMN-bLlDJ5IvLGLQJfD8/edit?usp=share_link>`__][`part 2 <https://drive.google.com/file/d/1gZwch0BPc1wDEkMwbM4vxCpMzWIx-Lo1/view?usp=sharing>`__][`talk <https://youtu.be/0ApEKc185Bw>`__] @ `8th EasyBuild User Meeting 2023 <https://easybuild.io/eum23/>`__.
* Slides [`pdf <https://drive.google.com/file/d/1vmaWyRHgtq3DrYhSCVBzR8U5ErKbxGNf/view?usp=sharing>`__] @ `7th EasyBuild User Meeting 2022 <https://easybuild.io/eum22/>`__.
* Slides [`pdf <https://drive.google.com/file/d/1kNZu1QNBDDsbKarzwNWYjTGKgOukg-96/view?usp=sharing>`__] @ `6th EasyBuild User Meeting 2021 <https://easybuild.io/eum21/>`__.
* Slides [`pdf <https://drive.google.com/open?id=1W7R5lfRkXvBpVDSZ7dVBadk_d3K4dFrS>`__] @ `5th EasyBuild User Meeting 2020 <https://github.com/easybuilders/easybuild/wiki/5th-EasyBuild-User-Meeting>`__.
* Slides [`pdf <https://drive.google.com/open?id=1Z3faPh9OSSXvlLHL07co3MRRn443dYsY>`__] @ `HPC System Testing BoF <https://sc19.supercomputing.org/session/?sess=sess324>`__, SC'19.
* Slides [`pdf <https://drive.google.com/open?id=1JOFqY3ejbR1X5kTn_IZyp1GlCd2ZZS58>`__] @ `HUST 2019 <https://sc19.supercomputing.org/session/?sess=sess116>`__, SC'19.
* Slides [`pdf <https://drive.google.com/open?id=1iwg1I48LVaWhhZCZIYPJSi3hdFLRcuhi>`__] @ `HPC Knowledge Meeting '19 <https://hpckp.org/>`__.
* Slides [`pdf <https://fosdem.org/2019/schedule/event/reframe/attachments/slides/3226/export/events/attachments/reframe/slides/3226/FOSDEM_2019.pdf>`__] & `Talk <https://fosdem.org/2019/schedule/event/reframe/>`__ @ `FOSDEM'19 <https://fosdem.org/2019/>`__.
* Slides [`pdf <https://indico.cism.ucl.ac.be/event/4/contributions/24/attachments/30/62/ReFrame_EUM_2019.pdf>`__] @ `4th EasyBuild User Meeting <https://github.com/easybuilders/easybuild/wiki/4th-EasyBuild-User-Meeting>`__.
* Slides [`pdf <https://drive.google.com/open?id=1bSykDrl1e2gPflf4jFJ8kfe_SZAtrJ_Q>`__] @ `HUST 2018 <https://sc18.supercomputing.org/>`__, SC'18.
* Slides [`pdf <https://github.com/eth-cscs/UserLabDay/blob/master/2018/slides/ci_and_regression/ReFrame_CI.pdf>`__] @ `CSCS User Lab Day 2018 <https://github.com/eth-cscs/UserLabDay>`__.
* Slides [`pdf <https://drive.google.com/open?id=1sZhibvUlGlT670aOHPdMlWFffWptYzLX>`__] @ `HPC Advisory Council 2018 <http://www.hpcadvisorycouncil.com/events/2018/swiss-workshop/>`__.
* Slides [`pdf <https://drive.google.com/open?id=1EyJ-siupkgLeVT54A4WlFpQtrJaU0xOy>`__] @ `SC17 <https://sc17.supercomputing.org/>`__.
* Slides [`pdf <https://cug.org/proceedings/cug2017_proceedings/includes/files/pap122s2-file2.pdf>`__] @ `CUG 2017 <https://cug.org/cug-2017/>`__.
* [`slides <https://drive.google.com/file/d/1cwlIipJtJoD-0xGcDMxbL4FQe3xtwAen/view?usp=sharing>`__] "Introduction to ReFrame," CINECA visit, Jun 2024.
* [`slides <https://users.ugent.be/~kehoste/eum24/008_eum24_ReFrame.pdf>`__][`recording <https://www.youtube.com/live/uSEeU-VJf6k?si=YB19mFpG6aAEBOgH>`__] "Recent Advances in ReFrame," `9th EasyBuild User Meeting 2024 <https://easybuild.io/eum24/>`__.
* [`slides <https://docs.google.com/presentation/d/1GmO2Uf29SaLg36bPB9g9eeaKMN-bLlDJ5IvLGLQJfD8/edit?usp=share_link>`__][`recording <https://youtu.be/0ApEKc185Bw>`__] "Recent Advances in ReFrame," `8th EasyBuild User Meeting 2023 <https://easybuild.io/eum23/>`__.
* [`slides <https://drive.google.com/file/d/1gZwch0BPc1wDEkMwbM4vxCpMzWIx-Lo1/view?usp=sharing>`__][`recording <https://youtu.be/0ApEKc185Bw?si=uxa_3QhMjTagS2to&t=1485>`__] "Embracing ReFrame Programmable Configurations," `8th EasyBuild User Meeting 2023 <https://easybuild.io/eum23/>`__.
* [`slides <https://drive.google.com/file/d/1vmaWyRHgtq3DrYhSCVBzR8U5ErKbxGNf/view?usp=sharing>`__] "ReFrame Update," `7th EasyBuild User Meeting 2022 <https://easybuild.io/eum22/>`__.
* [`slides <https://drive.google.com/file/d/1kNZu1QNBDDsbKarzwNWYjTGKgOukg-96/view?usp=sharing>`__] "Writing powerful HPC regression tests with ReFrame," `6th EasyBuild User Meeting 2021 <https://easybuild.io/eum21/.>`__
* [`slides <https://drive.google.com/open?id=1W7R5lfRkXvBpVDSZ7dVBadk_d3K4dFrS>`__] "ReFrame: A Framework for Writing Regression Tests for HPC Systems," `5th EasyBuild User Meeting 2020 <https://github.com/easybuilders/easybuild/wiki/5th-EasyBuild-User-Meeting>`__.
* [`slides <https://drive.google.com/open?id=1Z3faPh9OSSXvlLHL07co3MRRn443dYsY>`__] "Enabling Continuous Testing of HPC Systems using ReFrame," `HPC System Testing BoF <https://sc19.supercomputing.org/session/?sess=sess324>`__, SC'19.
* [`slides <https://drive.google.com/open?id=1JOFqY3ejbR1X5kTn_IZyp1GlCd2ZZS58>`__] "Enabling Continuous Testing of HPC Systems using ReFrame," `HUST 2019 <https://sc19.supercomputing.org/session/?sess=sess116>`__, SC'19.
* [`slides <https://drive.google.com/open?id=1iwg1I48LVaWhhZCZIYPJSi3hdFLRcuhi>`__] "ReFrame: A Tool for Enabling Regression Testing and Continuous Integration for HPC Systems," `HPC Knowledge Meeting '19 <https://hpckp.org/>`__.
* [`slides <https://fosdem.org/2019/schedule/event/reframe/attachments/slides/3226/export/events/attachments/reframe/slides/3226/FOSDEM_2019.pdf>`__][`recording <https://fosdem.org/2019/schedule/event/reframe/>`__] "ReFrame: A Regression Testing and Continuous Integration Framework for HPC systems," `FOSDEM'19 <https://fosdem.org/2019/>`__.
* [`slides <https://indico.cism.ucl.ac.be/event/4/contributions/24/attachments/30/62/ReFrame_EUM_2019.pdf>`__] "ReFrame: A Regression Testing and Continuous Integration Framework for HPC systems," `4th EasyBuild User Meeting <https://github.com/easybuilders/easybuild/wiki/4th-EasyBuild-User-Meeting>`__.
* [`slides <https://drive.google.com/open?id=1bSykDrl1e2gPflf4jFJ8kfe_SZAtrJ_Q>`__] "ReFrame: A Regression Testing and Continuous Integration Framework for HPC systems," `HUST 2018 <https://sc18.supercomputing.org/>`__, SC'18.
* [`slides <https://github.com/eth-cscs/UserLabDay/blob/master/2018/slides/ci_and_regression/ReFrame_CI.pdf>`__] "Regression Testing and Continuous Integration with ReFrame," `CSCS User Lab Day 2018 <https://github.com/eth-cscs/UserLabDay>`__.
* [`slides <https://drive.google.com/open?id=1sZhibvUlGlT670aOHPdMlWFffWptYzLX>`__] "ReFrame: A Regression Testing Framework Enabling Continuous Integration of Large HPC Systems," `HPC Advisory Council 2018 <http://www.hpcadvisorycouncil.com/events/2018/swiss-workshop/>`__.
* [`slides <https://drive.google.com/open?id=1EyJ-siupkgLeVT54A4WlFpQtrJaU0xOy>`__] "ReFrame: A Regression Testing Tool for HPC Systems," Regression testing BoF, `SC17 <https://sc17.supercomputing.org/>`__.
* [`slides <https://cug.org/proceedings/cug2017_proceedings/includes/files/pap122s2-file2.pdf>`__] "ReFrame: A regression framework for checking the health of large HPC systems" `CUG 2017 <https://cug.org/cug-2017/>`__.


Webinars & Tutorials
--------------------

* "ReFrame – Efficient System and Application Performance Testing," CSCS Webinar, Aug. 29, 2022 [`slides <https://drive.google.com/file/d/1nOS_daleR79ZB1IaToVdW5mDpJQYRcY2/view?usp=sharing>`__] [`recording <https://youtu.be/NDxlKATEcQk>`__] [`demo run <https://asciinema.org/a/517693>`__].
* Tutorial at 6th EasyBuild User Meeting 2021 [`YouTube <https://youtube.com/playlist?list=PLhnGtSmEGEQjySVEPTUSLpewpOWwX5mjb>`__]
* [`slides <https://drive.google.com/file/d/1nOS_daleR79ZB1IaToVdW5mDpJQYRcY2/view?usp=sharing>`__][`recording <https://youtu.be/NDxlKATEcQk>`__][`demo run <https://asciinema.org/a/517693>`__] "ReFrame – Efficient System and Application Performance Testing," CSCS Webinar, Aug. 29, 2022.
* [`recording <https://youtube.com/playlist?list=PLhnGtSmEGEQjySVEPTUSLpewpOWwX5mjb>`__] "ReFrame Tutorial," 6th EasyBuild User Meeting 2021.


Papers
Expand Down
12 changes: 4 additions & 8 deletions docs/manpage.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1043,7 +1043,7 @@ The way the tests are generated and how they interact with the test filtering op

Parameterize a test on an existing variable.

This option will create a new test with a parameter named ``$VAR`` with the values given in the comma-separated list ``VAL0,VAL1,...``.
The test will behave as if the variable ``VAR`` was a parameter taking the values ``VAL0,VAL1,...``.
The values will be converted based on the type of the target variable ``VAR``.
The ``TEST.`` prefix will only parameterize the variable ``VAR`` of test ``TEST``.

Expand Down Expand Up @@ -1163,19 +1163,15 @@ Miscellaneous options

This option can also be set using the :envvar:`RFM_SYSTEM` environment variable.

.. option:: --table-format=csv|plain|outline|grid
.. option:: --table-format=csv|plain|pretty

Set the formatting of tabular output printed by the options :option:`--performance-compare`, :option:`--performance-report` and the options controlling the stored sessions.

The acceptable values are the following:

- ``csv``: Generate CSV output
- ``grid``: Generate a table with grid lines
- ``outline``: (default) Generate a table with lines outlining the table and the header
- ``plain``: Generate a plain table without any lines

Note that the default ``outline`` format will not render correctly multi-line cells.
In this cases, prefer the ``grid`` or ``plain`` formats.
- ``plain``: Generate a plain table without any vertical lines allowing for easy ``grep``-ing
- ``pretty``: (default) Generate a pretty table

.. versionadded:: 4.7

Expand Down
Loading

0 comments on commit c25e50b

Please sign in to comment.