Skip to main content

This project implements the Open Test sequence eXchange Checker for the ASAM Quality Checker project.

Project description

asam-qc-otx

This project implements the OTX Checker Bundle for the ASAM Quality Checker project.

The ASAM Quality Checker OTX library contains a short representative list of check examples for Open Test sequence eXchange (OTX) to showcase the functionality and implementation (it shall not be a reference implementation) for the ASAM Quality Checker project.

Disclaimer: The current version is a release candidate. The first official release is expected to be in November.

Installation and usage

asam-qc-otx can be installed using pip or from source.

Installation using pip

asam-qc-otx can be installed using pip.

From PyPi repository

pip install asam-qc-otx

From GitHub repository

pip install asam-qc-otx@git+https://github.com/asam-ev/qc-otx@main

The above command will install asam-qc-otx from the main branch. If you want to install asam-qc-otx from another branch or tag, replace @main with the desired branch or tag.

From a local repository

pip install /home/user/qc-otx

To run the application:

qc_otx --help
usage: QC OTX Checker [-h] (-d | -c CONFIG_PATH)
This is a collection of scripts for checking validity of Open Test sequence eXchange format (.otx) files.
options:
  -h, --help            show this help message and exit
  -d, --default_config
  -c CONFIG_PATH, --config_path CONFIG_PATH

The following commands are equivalent:

qc_otx --help
python qc_otx/main.py --help
python -m qc_otx.main --help

Installation from source

After cloning the repository, the project can be installed using Poetry.

poetry install

After installing from source, the usage are similar to above.

qc_otx --help
python qc_otx/main.py --help
python -m qc_otx.main --help

Register Checker Bundle to ASAM Quality Checker Framework

Manifest file templates are provided in the manifest_templates folder to register the ASAM OTX Checker Bundle with the ASAM Quality Checker Framework.

Linux Manifest Template

To register this Checker Bundle in Linux, use the linux_otx_manifest.json template file.

If the asam-qc-otx is installed in a virtual environment, the exec_command needs to be adjusted as follows:

"exec_command": "source <venv>/bin/activate && cd $ASAM_QC_FRAMEWORK_WORKING_DIR && qc_otx -c $ASAM_QC_FRAMEWORK_CONFIG_FILE"

Replace <venv>/bin/activate by the path to your virtual environment.

Windows Manifest Template

To register this Checker Bundle in Windows, use the windows_otx_manifest.json template file.

If the asam-qc-otx is installed in a virtual environment, the exec_command needs to be adjusted as follows:

"exec_command": "C:\\> <venv>\\Scripts\\activate.bat && cd %ASAM_QC_FRAMEWORK_WORKING_DIR% && qc_otx -c %ASAM_QC_FRAMEWORK_CONFIG_FILE%"

Replace C:\\> <venv>\\Scripts\\activate.bat by the path to your virtual environment.

Example Configuration File

An example configuration file for using this Checker Bundle within the ASAM Quality Checker Framework is as follows.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Config>

    <Param name="InputFile" value="test.otx" />

    <CheckerBundle application="otxBundle">
        <Param name="resultFile" value="otx_bundle_report.xqar" />
        <Checker checkerId="check_asam_otx_core_chk_001_document_name_matches_filename" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_core_chk_002_document_name_package_uniqueness" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_core_chk_003_no_dead_import_links" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_core_chk_004_no_unused_imports" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_core_chk_005_no_use_of_undefined_import_prefixes" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_core_chk_006_match_of_imported_document_data_model_version" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_core_chk_007_have_specification_if_no_realisation_exists" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_core_chk_008_public_main_procedure" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_core_chk_009_mandatory_constant_initialization" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_core_chk_010_unique_node_names" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_data_type_chk_001_accessing_structure_elements" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_data_type_chk_008_correct_target_for_structure_element" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_zip_file_chk_002_type_safe_zip_file" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_zip_file_chk_001_type_safe_unzip_file" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_state_machine_chk_001_no_procedure_realization" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_state_machine_chk_002_mandatory_target_state" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_state_machine_chk_003_no_target_state_for_completed_state" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_state_machine_chk_005_mandatory_transition" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_state_machine_chk_004_mandatory_trigger" maxLevel="1" minLevel="3" />
        <Checker checkerId="check_asam_otx_state_machine_chk_006_distinguished_initial_and_completed_state" maxLevel="1" minLevel="3" />
    </CheckerBundle>

    <ReportModule application="TextReport">
        <Param name="strInputFile" value="Result.xqar" />
        <Param name="strReportFile" value="Report.txt" />
    </ReportModule>

</Config>

Tests

To run the tests, you need to install the extra test dependency after installing from source.

poetry install --with dev

To execute tests:

python -m pytest -vv

or

poetry run pytest -vv

They should output something similar to:

===================== test session starts =====================
platform linux -- Python 3.11.9, pytest-8.2.2, pluggy-1.5.0

You can check more options for pytest at its own documentation.

Contributing

For contributing, you need to install the development requirements besides the test and installation requirements, for that run:

poetry install --with dev

You need to have pre-commit installed and install the hooks:

pre-commit install

To implement a new checker:

  1. Create a new Python module for each checker.
  2. Specify the following global variables for the Python module
Variable Meaning
CHECKER_ID The ID of the checker
CHECKER_DESCRIPTION The description of the checker
CHECKER_PRECONDITIONS A set of other checkers in which if any of them raise an issue, the current checker will be skipped
RULE_UID The rule UID of the rule that the checker will check
  1. Implement the checker logic in the following function:
def check_rule(checker_data: models.CheckerData) -> None:
    pass
  1. Register the checker module in the following function in main.py.
def run_checks(config: Configuration, result: Result) -> None:
    ...
    # Add the following line to register your checker module
    execute_checker(your_checker_module, checker_data)
    ...

All the checkers in this checker bundle are implemented in this way. Take a look at some of them before implementing your first checker.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asam_qc_otx-1.0.0rc1.tar.gz (24.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

asam_qc_otx-1.0.0rc1-py3-none-any.whl (46.9 kB view details)

Uploaded Python 3

File details

Details for the file asam_qc_otx-1.0.0rc1.tar.gz.

File metadata

  • Download URL: asam_qc_otx-1.0.0rc1.tar.gz
  • Upload date:
  • Size: 24.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.3

File hashes

Hashes for asam_qc_otx-1.0.0rc1.tar.gz
Algorithm Hash digest
SHA256 b1149bfef2020b5ba21fa6ad59a9b175cfed65f9584253f63e96ed6114164d8e
MD5 b9eedca8af0078ce48b8c2a5895f45cd
BLAKE2b-256 60d31c447af93799a72767b17b9e4911a95303d53f8ec4e9c3b716ddadde6ed0

See more details on using hashes here.

File details

Details for the file asam_qc_otx-1.0.0rc1-py3-none-any.whl.

File metadata

  • Download URL: asam_qc_otx-1.0.0rc1-py3-none-any.whl
  • Upload date:
  • Size: 46.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.3

File hashes

Hashes for asam_qc_otx-1.0.0rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 c33537faf7b283abcacf62fddbc03da6f907484721e54dfe1137f8f9fe9c4ca9
MD5 e83df2cd905f4e0c6ef0112ca2009158
BLAKE2b-256 d19dab97f46ede542ecef232ee3c6b191977b6719c99e2e79e364c0473825084

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page