From c0cbf1188c9d1d89f65741b0d59eb9ffee4b95bf Mon Sep 17 00:00:00 2001 From: Angel Martinez Date: Tue, 11 Jun 2024 13:23:35 -0700 Subject: [PATCH] Create an html webpage that is uploaded as a github page (#39) --- ...n.yml => 1_run_interoperability_tests.yml} | 13 +- .github/workflows/2_upload_artifact.yml | 46 ++++ .github/workflows/3_generate_doc.yml | 55 +++++ .github/workflows/4_publish_doc.yml | 42 ++++ .gitignore | 11 +- COPYRIGHT.md | 21 ++ README.md | 46 ++-- doc/_static/css/custom.css | 28 +++ doc/_static/img/DDS-logo-nobg.png | Bin 0 -> 46506 bytes doc/_static/img/favicon.ico | Bin 0 -> 15406 bytes doc/_static/img/show_all_test_suites.png | Bin 0 -> 53362 bytes doc/_static/img/show_pretty_output.png | Bin 0 -> 89098 bytes doc/conf.py | 200 ++++++++++++++++++ doc/copyright.rst | 25 +++ doc/detailed_report.template.rst | 65 ++++++ doc/index.rst | 16 ++ doc/introduction.rst | 55 +++++ doc/test_results.template.rst | 24 +++ doc/vars.rst | 24 +++ get_latest_file_urls.py | 125 +++++++++++ requirements_doc.txt | 5 + {doc => resource/_md}/img/img1.png | Bin {doc => resource/_md}/img/img10.png | Bin {doc => resource/_md}/img/img11.png | Bin {doc => resource/_md}/img/img12.png | Bin {doc => resource/_md}/img/img13.png | Bin {doc => resource/_md}/img/img14.png | Bin {doc => resource/_md}/img/img15.png | Bin {doc => resource/_md}/img/img16.png | Bin {doc => resource/_md}/img/img17.png | Bin {doc => resource/_md}/img/img18.png | Bin {doc => resource/_md}/img/img19.png | Bin {doc => resource/_md}/img/img2.png | Bin {doc => resource/_md}/img/img20.png | Bin {doc => resource/_md}/img/img21.png | Bin {doc => resource/_md}/img/img3.png | Bin {doc => resource/_md}/img/img4.png | Bin {doc => resource/_md}/img/img5.png | Bin {doc => resource/_md}/img/img6.png | Bin {doc => resource/_md}/img/img7.png | Bin {doc => resource/_md}/img/img8.png | Bin {doc => resource/_md}/img/img9.png | Bin 42 files changed, 772 insertions(+), 29 deletions(-) rename .github/workflows/{main.yml => 1_run_interoperability_tests.yml} (83%) create mode 100644 .github/workflows/2_upload_artifact.yml create mode 100644 .github/workflows/3_generate_doc.yml create mode 100644 .github/workflows/4_publish_doc.yml create mode 100644 COPYRIGHT.md create mode 100644 doc/_static/css/custom.css create mode 100644 doc/_static/img/DDS-logo-nobg.png create mode 100644 doc/_static/img/favicon.ico create mode 100644 doc/_static/img/show_all_test_suites.png create mode 100644 doc/_static/img/show_pretty_output.png create mode 100644 doc/conf.py create mode 100644 doc/copyright.rst create mode 100644 doc/detailed_report.template.rst create mode 100644 doc/index.rst create mode 100644 doc/introduction.rst create mode 100644 doc/test_results.template.rst create mode 100644 doc/vars.rst create mode 100644 get_latest_file_urls.py create mode 100644 requirements_doc.txt rename {doc => resource/_md}/img/img1.png (100%) rename {doc => resource/_md}/img/img10.png (100%) rename {doc => resource/_md}/img/img11.png (100%) rename {doc => resource/_md}/img/img12.png (100%) rename {doc => resource/_md}/img/img13.png (100%) rename {doc => resource/_md}/img/img14.png (100%) rename {doc => resource/_md}/img/img15.png (100%) rename {doc => resource/_md}/img/img16.png (100%) rename {doc => resource/_md}/img/img17.png (100%) rename {doc => resource/_md}/img/img18.png (100%) rename {doc => resource/_md}/img/img19.png (100%) rename {doc => resource/_md}/img/img2.png (100%) rename {doc => resource/_md}/img/img20.png (100%) rename {doc => resource/_md}/img/img21.png (100%) rename {doc => resource/_md}/img/img3.png (100%) rename {doc => resource/_md}/img/img4.png (100%) rename {doc => resource/_md}/img/img5.png (100%) rename {doc => resource/_md}/img/img6.png (100%) rename {doc => resource/_md}/img/img7.png (100%) rename {doc => resource/_md}/img/img8.png (100%) rename {doc => resource/_md}/img/img9.png (100%) diff --git a/.github/workflows/main.yml b/.github/workflows/1_run_interoperability_tests.yml similarity index 83% rename from .github/workflows/main.yml rename to .github/workflows/1_run_interoperability_tests.yml index 0c2d2b9..ed21967 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/1_run_interoperability_tests.yml @@ -1,4 +1,4 @@ -name: Testing Interoperability +name: 1 - Run Interoperability Tests run-name: ${{ github.actor }} is testing out GitHub Actions 🚀 on: workflow_dispatch jobs: @@ -6,12 +6,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.11.4' - name: Downloads assets - uses: robinraju/release-downloader@v1.7 + uses: robinraju/release-downloader@v1.10 with: latest: true fileName: "*" @@ -22,6 +22,8 @@ jobs: python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt + - name: Generate timestamp file + run: date '+%Y-%m-%d-%H_%M_%S' > timestamp - name: Run Interoperability script run: | source .venv/bin/activate @@ -39,7 +41,7 @@ jobs: - name: Generate xlsx report run: | source .venv/bin/activate - python3 generate_xlsx_report.py --input junit_interoperability_report.xml --output interoperability_report_$(date '+%Y-%m-%d-%H_%M_%S').xlsx + python3 generate_xlsx_report.py --input junit_interoperability_report.xml --output interoperability_report.xlsx - name: XUnit Viewer id: xunit-viewer uses: AutoModality/action-xunit-viewer@v1 @@ -53,4 +55,5 @@ jobs: path: | ./index.html ./junit_interoperability_report.xml - ./interoperability_report*.xlsx + ./interoperability_report.xlsx + ./timestamp diff --git a/.github/workflows/2_upload_artifact.yml b/.github/workflows/2_upload_artifact.yml new file mode 100644 index 0000000..635dcf0 --- /dev/null +++ b/.github/workflows/2_upload_artifact.yml @@ -0,0 +1,46 @@ +name: 2 - Upload Test Results to Drive +run-name: ${{ github.actor }} is testing out GitHub Actions 🚀 +on: workflow_dispatch +jobs: + upload_artifact: + runs-on: ubuntu-latest + steps: + - name: Get Artifact + uses: dawidd6/action-download-artifact@v3 + with: + name: interoperability_report + workflow: main.yml + - name: Create files to upload + run: | + current_date=$(cat timestamp) + mv index.html interoperability_report.html + for file in *; do \ + mv "$file" "${file%.*}_$current_date.${file##*.}"; \ + done + zip interoperability_report_$current_date.zip * + mkdir report_$current_date + mv *.zip report_$current_date/ + mv *.xlsx report_$current_date/ + - name: Upload zip artifact + uses: adityak74/google-drive-upload-git-action@main + with: + credentials: ${{ secrets.GCP_CREDENTIAL }} + filename: report_*/*.zip + folderId: ${{ secrets.DRIVE_FOLDER_ID }} + overwrite: "true" + mirrorDirectoryStructure: "true" + - name: Upload spreadsheet + uses: adityak74/google-drive-upload-git-action@main + with: + credentials: ${{ secrets.GCP_CREDENTIAL }} + filename: report_*/*.xlsx + folderId: ${{ secrets.DRIVE_FOLDER_ID }} + overwrite: "true" + mirrorDirectoryStructure: "true" + mimeType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + - name: Attach detailed report html + uses: actions/upload-artifact@v4 + with: + name: detailed_report + path: | + ./interoperability_report*.html diff --git a/.github/workflows/3_generate_doc.yml b/.github/workflows/3_generate_doc.yml new file mode 100644 index 0000000..932e782 --- /dev/null +++ b/.github/workflows/3_generate_doc.yml @@ -0,0 +1,55 @@ +name: 3 - Generate Test Report +run-name: ${{ github.actor }} is generating doc in GitHub Actions 🚀 +on: workflow_dispatch +jobs: + generate_doc: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Get Artifact + uses: dawidd6/action-download-artifact@v3 + with: + name: detailed_report + workflow: upload_artifact.yml + + - name: Move the detailed report to output folder + run: | + mkdir -p doc/_static/html/ + mv *.html doc/_static/html/ + ls doc/_static/html + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.11.4' + + - name: Create virtual environment + run: | + python -m venv .venv + source .venv/bin/activate + + - name: Setting up environment + run: | + pip install -r requirements_doc.txt + + - name: Get latest XLSX and ZIP urls + env: + GCP_CREDENTIAL_STR: ${{ secrets.GCP_CREDENTIAL_STR }} + DRIVE_FOLDER_ID: ${{ secrets.DRIVE_FOLDER_ID }} + run: python get_latest_file_urls.py gdrive_url.py + + - name: Build documentation + run: sphinx-build -b html doc html + + - name: Zip the documentation + run: | + cd html + zip -r ../documentation.zip . + + - name: Attach html documentation + uses: actions/upload-artifact@v4 + with: + name: documentation + path: documentation.zip diff --git a/.github/workflows/4_publish_doc.yml b/.github/workflows/4_publish_doc.yml new file mode 100644 index 0000000..a556cb8 --- /dev/null +++ b/.github/workflows/4_publish_doc.yml @@ -0,0 +1,42 @@ +# Simple workflow for deploying static content to GitHub Pages +name: 4 - Publish Test Report (GitHub pages) + +on: workflow_dispatch + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Single deploy job since we're just deploying + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Get Artifact + uses: dawidd6/action-download-artifact@v3 + with: + name: documentation + workflow: generate_doc.yml + - run: | + mkdir html + unzip documentation.zip -d html + - name: Setup Pages + uses: actions/configure-pages@v5 + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: './html/' + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index af034ab..8a7084c 100644 --- a/.gitignore +++ b/.gitignore @@ -57,9 +57,18 @@ build/ .cache/ # Generated reports -*.html *.xlsx *.xml *.zip +*.html + +# Do not ignore templates +!doc/_templates/*.html .DS_Store + +# Generated documentation files +gdrive_url.py +html/ +doc/detailed_report.rst +doc/test_results.rst diff --git a/COPYRIGHT.md b/COPYRIGHT.md new file mode 100644 index 0000000..1481505 --- /dev/null +++ b/COPYRIGHT.md @@ -0,0 +1,21 @@ +Copyright and license policy +============================ + +License +------- + +Use and redistribution is source and binary forms is permitted subject to the +OMG-DDS INTEROPERABILITY TESTING LICENSE found at the following URL: + +https://github.com/omg-dds/dds-rtps/blob/master/LICENSE.md + +Copyright holders +----------------- + +© 2024 Real-Time Innovations, Inc. +© 2024 Atostek Oy. +© 2024 Proyectos y Sistemas de Mantenimiento SL (eProsima). +© 2024 Kongsberg Defence & Aerospace. +© 2024 Object Computing, Inc. +© 2024 OpenDDS Foundation. +© 2024 Twin Oaks Computing, Inc. diff --git a/README.md b/README.md index 0e1e2e6..144fdba 100644 --- a/README.md +++ b/README.md @@ -449,34 +449,34 @@ The GitHub Actions process must be launched in the following cases: To generate the report you should follow the next steps: 1. Go to *Actions*. -![Actions](./doc/img/img1.png) +![Actions](./doc/resource/_md/img/img1.png) 2. Go to *Testing Interoperability*. -![Testing-Interoperability](./doc/img/img2.png) +![Testing-Interoperability](./doc/resource/_md/img/img2.png) 3. Press *Run workflow*, select master branch (for the official tests). -![Run-workflow](./doc/img/img3.png) +![Run-workflow](./doc/resource/_md/img/img3.png) 4. Wait a few minutes until the new task is finished and then press it.\ Example of a successful and a failed test: -![Succeeded test](./doc/img/img4.png) -![Failed test](./doc/img/img5.png) +![Succeeded test](./doc/resource/_md/img/img4.png) +![Failed test](./doc/resource/_md/img/img5.png) 5. At the bottom of the page you can find the attached artifacts in the **Artifacts** section that contains the generated report. -![Artifacts-1](./doc/img/img6.png) -![Artifacts-2](./doc/img/img7.png) +![Artifacts-1](./doc/resource/_md/img/img6.png) +![Artifacts-2](./doc/resource/_md/img/img7.png) 6. Download and unzip it. There is file called `index.html`, inside `report.zip` that is the generated report. It will look something like this (set pretty option): -![report-1](./doc/img/img8.png) -![report-2](./doc/img/img9.png) +![report-1](./doc/resource/_md/img/img8.png) +![report-2](./doc/resource/_md/img/img9.png) > **Note**: The status of the GitHub Action will be **Failure** :x:, if any of the Test Cases that we are testing has an error, @@ -514,7 +514,7 @@ file. Example: -![zip](./doc/img/img10.png) +![zip](./doc/resource/_md/img/img10.png) Then, the executable should be uploaded to the corresponding release: @@ -522,17 +522,17 @@ Then, the executable should be uploaded to the corresponding release: 1. In the main page, go to *Releases*. -![Releases](./doc/img/img11.png) +![Releases](./doc/resource/_md/img/img11.png) 2. Inside the latest release, go to *Edit*. -![Edit](./doc/img/img12.png) +![Edit](./doc/resource/_md/img/img12.png) 3. Upload the executables in *Attach binaries by dropping them here or selecting them* (leave all the other fields as they were). Keep marked *Set as the latest release*, and press *Update release*. -![Attach](./doc/img/img13.png) +![Attach](./doc/resource/_md/img/img13.png) > **Note**: once the executable is uploaded, the user should run > GitHub Actions to generate a new report. @@ -603,11 +603,11 @@ The name of the release and the tag should be as explained in 1. In the main page, go to *Releases*. -![Releases](./doc/img/img11.png) +![Releases](./doc/resource/_md/img/img11.png) 2. Go to *Draft a new release*. -![Draft a new release](./doc/img/img14.png) +![Draft a new release](./doc/resource/_md/img/img14.png) 3. Do: * In *Choose a tag* write the name of the tag and select @@ -621,7 +621,7 @@ The name of the release and the tag should be as explained in * Make sure *Set as pre-release* is **not selected**. * Press *Publish release*. -![Create release](./doc/img/img15.png) +![Create release](./doc/resource/_md/img/img15.png) ## Report Bugs @@ -633,16 +633,16 @@ in the following way. * Go to *Issues*. -![Issues](./doc/img/img16.png) +![Issues](./doc/resource/_md/img/img16.png) * **Check the issue is not already submitted**. * Select *New Issue*. -![New issue](./doc/img/img17.png) +![New issue](./doc/resource/_md/img/img17.png) * Select Interoperability issue template, *Get Started*. -![Issue-Get started](./doc/img/img18.png) +![Issue-Get started](./doc/resource/_md/img/img18.png) * Fill out the corresponding information: * Title: `Problem with ` @@ -651,16 +651,16 @@ in the following way. * Copy the link to the GitHub Action workflow run. * Example, from this page: - ![Artifacts-1](./doc/img/img6.png) + ![Artifacts-1](./doc/resource/_md/img/img6.png) * Add any suggestion about how to fix it, or why this is happening [Optional]. * Add another comment [Optional]. * In the section *Labels*, assign them to the vendors involved. - ![Label-1](./doc/img/img19.png) - ![Label-2](./doc/img/img20.png) + ![Label-1](./doc/resource/_md/img/img19.png) + ![Label-2](./doc/resource/_md/img/img20.png) * Press *Submit new issue*. - ![Template](./doc/img/img21.png) + ![Template](./doc/resource/_md/img/img21.png) diff --git a/doc/_static/css/custom.css b/doc/_static/css/custom.css new file mode 100644 index 0000000..2fa774e --- /dev/null +++ b/doc/_static/css/custom.css @@ -0,0 +1,28 @@ +.wy-nav-content { + max-width: none !important; +} + +table { + width: 100% !important; +} + +table a { + color: #a1ae14 !important; + font-weight: bold !important; + font-size: 18px !important; +} + +table p { + white-space: normal !important; + margin-bottom: 0 !important; + display: inline-block; +} + +table input { + float: right !important; +} + +.icon { + height: auto !important; + width: auto !important; +} diff --git a/doc/_static/img/DDS-logo-nobg.png b/doc/_static/img/DDS-logo-nobg.png new file mode 100644 index 0000000000000000000000000000000000000000..610315ca2658cd24b7716646b04af8bec76975ce GIT binary patch literal 46506 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 literal 0 HcmV?d00001 diff --git a/doc/_static/img/favicon.ico b/doc/_static/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..20f73b327b5222d8b7cae9293438914a1f2a4ce0 GIT binary patch literal 15406 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 I^ya|-0&k(G=l}o! literal 0 HcmV?d00001 diff --git a/doc/_static/img/show_all_test_suites.png b/doc/_static/img/show_all_test_suites.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba5d3eec218f78182aa917ed9b377c9fa34f05d GIT binary patch literal 53362 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 literal 0 HcmV?d00001 diff --git a/doc/_static/img/show_pretty_output.png b/doc/_static/img/show_pretty_output.png new file mode 100644 index 0000000000000000000000000000000000000000..3742102de02ec8f0df8a25eb6273de253b4269bc GIT binary patch literal 89098 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 literal 0 HcmV?d00001 diff --git a/doc/conf.py b/doc/conf.py new file mode 100644 index 0000000..8e4bd73 --- /dev/null +++ b/doc/conf.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +# +# DDS Interoperability Tests documentation build configuration file, created by +# sphinx-quickstart +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys +import glob +# sys.path.insert(0, os.path.abspath('.')) +import sphinx_rtd_theme + +sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) + +from gdrive_url import xlsx_url, zip_url + +def find_index_html(): + # Get the directory of the script + script_directory = os.path.dirname(os.path.abspath(__file__)) + + # Define the pattern to search for + pattern = os.path.join(script_directory, + '_static/html/interoperability_report_*.html') + + # Use glob to find files matching the pattern + matching_files = glob.glob(pattern) + + # Return the first matching file, if any + if matching_files: + return os.path.relpath(matching_files[0], script_directory) + return None + + +# replacement is defined as +# replacements = { +# '|VARIABLE_NAME|': 'replacement_value', +# # Add more replacements as needed +# } + +def replace_in_rst_files(replacements): + # Get the directory of the script + directory = os.path.dirname(os.path.abspath(__file__)) + + # Get a list of all .template.rst files in the directory + template_files = [f for f in os.listdir(directory) if f.endswith('.template.rst')] + + for template_file in template_files: + # Construct paths for template and output files + template_file_path = os.path.join(directory, template_file) + output_file_path = os.path.join(directory, template_file.replace('.template.rst', '.rst')) + + # Read the content of the template file + with open(template_file_path, 'r') as file: + content = file.read() + + # Perform replacements in the content + for target, replacement in replacements.items(): + content = content.replace(target, replacement) + + # Write the modified content to the output file + with open(output_file_path, 'w') as file: + file.write(content) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = ['sphinx.ext.imgmath', + 'sphinx.ext.extlinks', + 'sphinx.ext.imgconverter',] + +# Add any paths that contain templates here, relative to this directory. +# templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = 'DDS Interoperability Tests' +html_show_sphinx = False +html_show_copyright = False + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The full version, including alpha/beta/rc tags. +release = '1.1.2024' +version = release + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = "en" + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This patterns also effect to html_static_path and html_extra_path +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', '*.template.rst'] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = False + +numfig = True +numfig_format = {'figure': 'Figure %s', + 'table': 'Table %s', + 'code-block': 'Listing %s', + 'section': 'Section %s'} + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = "sphinx_rtd_theme" +# Override default css to get a larger width for local build + +def setup(app): + app.add_css_file('css/custom.css') + #app.add_javascript('js/custom.js') +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} +html_logo = "_static/img/DDS-logo-nobg.png" +html_favicon = "_static/img/favicon.ico" +html_css_files = ['css/custom.css'] +html_js_files = ['js/custom.js'] + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# This is required for the alabaster theme +# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars +html_sidebars = { + '**': [ + 'relations.html', # needs 'show_related': True theme option to display + 'searchbox.html', + ] +} + +# -- links +LINK_XLSX_URL = xlsx_url +LINK_ZIP_URL = zip_url +INDEX_HTML_PATH = find_index_html() +if INDEX_HTML_PATH is None: + print ('Error getting INDEX_HTML_PATH') + exit(1) + +replacements = { + '|LINK_XLSX_URL|': LINK_XLSX_URL, + '|INDEX_HTML_PATH|': INDEX_HTML_PATH, + # Add more replacements as needed +} +replace_in_rst_files(replacements) + +rst_epilog = """ +.. |LINK_ZIP_URL| replace:: {zip_url} +""".format( +zip_url = LINK_ZIP_URL, +) + +# -- Options for HTMLHelp output ------------------------------------------ + +# Output file base name for HTML help builder. +htmlhelp_basename = 'DDS_Interoperability_Tests' + diff --git a/doc/copyright.rst b/doc/copyright.rst new file mode 100644 index 0000000..ef20e94 --- /dev/null +++ b/doc/copyright.rst @@ -0,0 +1,25 @@ +.. include:: vars.rst + +.. _section-copyright: + +Copyrights +********** + +|COPYRIGHT_HEADER| |br| +All rights reserved. |br| +Printed in U.S.A. First printing. |br| +May |COPYRIGHT_YEAR|. + +.. rubric:: Trademarks + +All products or company names mentioned are used for identification purposes +only, and may be trademarks of their respective owners. + + +.. rubric:: Copy and Use Restrictions + +Use and redistribution is source and binary forms is permitted subject to the +OMG-DDS INTEROPERABILITY TESTING LICENSE found at the following URL: + +https://github.com/omg-dds/dds-rtps/blob/master/LICENSE.md + diff --git a/doc/detailed_report.template.rst b/doc/detailed_report.template.rst new file mode 100644 index 0000000..a184787 --- /dev/null +++ b/doc/detailed_report.template.rst @@ -0,0 +1,65 @@ +.. include:: vars.rst + +.. _section-detailed-report: + +Detailed Report +=============== + +This test report displays individual test results for all products regarding +DDS interoperability. By default, it only shows test suites containing +tests with errors. For each test, the report includes detailed information +about the test case. If the test has failed, it also shows the observed error +and the corresponding program output. + +|br| + +.. raw:: html + +
Using the Detailed Report
+ +|br| + +To display all test suites, click on ``Advanced Filter`` / ``Suites`` / +``Empty hidden``. As shown in the image: + +|br| + +.. image:: _static/img/show_all_test_suites.png + :alt: Show All Tests + :align: center + +|br| + +The name of the test suite contains two product names separated by 3 dashes. It +represents the product used as a **Publisher** (on the left) and the +product used as a **Subscriber** (on the right): + + * \\-\-\-\ + +|br| + +By default, in case of an error in a test case, the |SHAPE_APP| output is shown +as raw HTML code. You can enable a pretty print of that text by clicking the +``raw`` button. However, you may want to enable this option for all test output +by clicking the option ``raw`` in ``Advanced Filter`` / ``Tests`` / ``All`` row. + +|br| + +.. image:: _static/img/show_pretty_output.png + :alt: Show All Tests + :align: center + +|br| + +.. raw:: html + +
Detailed Report HTML
+ +|br| + +The following section is the HTML report that you can interact with: + +|br| + +.. raw:: html + :file: |INDEX_HTML_PATH| diff --git a/doc/index.rst b/doc/index.rst new file mode 100644 index 0000000..1940983 --- /dev/null +++ b/doc/index.rst @@ -0,0 +1,16 @@ +.. include:: vars.rst + +Welcome to |INTEROPERABILITY_TESTS| +*********************************** + + +.. toctree:: + :maxdepth: 2 + :numbered: + :glob: + :caption: Contents + + introduction + test_results + detailed_report + copyright diff --git a/doc/introduction.rst b/doc/introduction.rst new file mode 100644 index 0000000..9ebf1a8 --- /dev/null +++ b/doc/introduction.rst @@ -0,0 +1,55 @@ +.. include:: vars.rst + +.. _section-introduction: + +Introduction +============ + +The |INTEROPERABILITY_TESTS_CP| provides a testing framework for different +implementations of the Data Distribution Service® (DDS) standard in terms of +interoperability. This ensures that DDS implementations are tested across a +variety of Quality of Service (QoS) policies and other features among different +products. + +The DDS Interoperability Tests are publicly available on this repository: +https://github.com/omg-dds/dds-rtps/ + +Test Descriptions +----------------- + +All these tests are based on an application that allows users to create +different test scenarios by setting various QoS policies and enabling/disabling +DDS features, such as content filtering. This application is called |SHAPE_APP|. +More information about the options of this application is available in the +README file's Shape Application parameters section: +`Shape Application Parameters Section in README +`__. + +A test suite is composed of a set of test cases, which are run with the +|SHAPE_APP| acting as a **Publisher** or a **Subscriber** application. + +A test scenario or test case is determined by the parameters used in the +|SHAPE_APP| and the expected test result (return code). The produced return code +depends on the output of the |SHAPE_APP|. More information is available in the +README file's Return Code section: +`Return Code Section in README +`__. + +The different test cases that are currently tested are defined in a +`test suite `__ +that is part of this repository. By default, a test case is considered as +*passed* if there is communication between the **Publisher** and **Subscriber** +applications. Additionally, some test cases may require additional checks to +ensure that the behavior is correct. Each test case may include a +``checking_function`` to do so. These ``checking functions`` are defined in the test +suite as well and determine whether the test case should be considered as +*passed* or *error* depending on some additional checks. + +Test Performed +-------------- + +The |INTEROPERABILITY_TESTS| run the test suite mentioned above with all +combinations of all DDS implementations as **Publisher** and as **Subscriber** +applications. The products used are the |SHAPE_APPS| uploaded to the +`latest release of the repository `__, +including a test of the same product as **Publisher** and as **Subscriber**. diff --git a/doc/test_results.template.rst b/doc/test_results.template.rst new file mode 100644 index 0000000..3c00d6b --- /dev/null +++ b/doc/test_results.template.rst @@ -0,0 +1,24 @@ +.. include:: vars.rst + +.. _section-test-results: + +Test Results +============ + +This page contains a summary of the interoperability test results. The test +results are organized in the following spreadsheet in different tabs. The first +tab presents a comprehensive summary of the tests per product. The first table +delineates the number of passed tests versus total tests, offering a quick +overview of vendor compliance. The second table delineates the tests performed +between products acting as **Publishers** (rows) and **Subscribers** (columns), +providing insights into interoperability between different DDS implementations. + +The subsequent tabs represent individual test case results per product. Each tab +is named after the respective product and contains two tables: + +* Left-side table: Current product as publisher and all products as subscribers. +* Righ-side table: Current product as subscriber and all products as publishers. + +.. raw:: html + + diff --git a/doc/vars.rst b/doc/vars.rst new file mode 100644 index 0000000..859c3c4 --- /dev/null +++ b/doc/vars.rst @@ -0,0 +1,24 @@ +.. |br| raw:: html + +
+ +.. |SHAPE_APP| replace:: ``Shape Application`` +.. |SHAPE_APPS| replace:: ``Shape Applications`` +.. |INTEROPERABILITY_TESTS_CP| replace:: OMG® DDS® Interoperability Tests +.. |INTEROPERABILITY_TESTS| replace:: OMG DDS Interoperability Tests +.. |COPYRIGHT_YEAR| replace:: 2024 +.. |COPYRIGHT_HEADER_RTI| replace:: © |COPYRIGHT_YEAR| Real-Time Innovations, Inc. +.. |COPYRIGHT_HEADER_ATOSTEK| replace:: © |COPYRIGHT_YEAR| Atostek Oy. +.. |COPYRIGHT_HEADER_EPROSIMA| replace:: © |COPYRIGHT_YEAR| Proyectos y Sistemas de Mantenimiento SL (eProsima). +.. |COPYRIGHT_HEADER_KONGSBERG| replace:: © |COPYRIGHT_YEAR| Kongsberg Defence & Aerospace. +.. |COPYRIGHT_HEADER_OCI| replace:: © |COPYRIGHT_YEAR| Object Computing, Inc. +.. |COPYRIGHT_HEADER_OPENDDS| replace:: © |COPYRIGHT_YEAR| OpenDDS Foundation. +.. |COPYRIGHT_HEADER_TOC| replace:: © |COPYRIGHT_YEAR| Twin Oaks Computing, Inc. +.. |COPYRIGHT_HEADER| replace:: |COPYRIGHT_HEADER_RTI| |br| + |COPYRIGHT_HEADER_ATOSTEK| |br| + |COPYRIGHT_HEADER_EPROSIMA| |br| + |COPYRIGHT_HEADER_KONGSBERG| |br| + |COPYRIGHT_HEADER_OCI| |br| + |COPYRIGHT_HEADER_OPENDDS| |br| + |COPYRIGHT_HEADER_TOC| |br| + diff --git a/get_latest_file_urls.py b/get_latest_file_urls.py new file mode 100644 index 0000000..2bffd23 --- /dev/null +++ b/get_latest_file_urls.py @@ -0,0 +1,125 @@ +#!/usr/bin/python +################################################################# +# Use and redistribution is source and binary forms is permitted +# subject to the OMG-DDS INTEROPERABILITY TESTING LICENSE found +# at the following URL: +# +# https://github.com/omg-dds/dds-rtps/blob/master/LICENSE.md +# +################################################################# + +import os +import sys +import json +from google.oauth2 import service_account +from googleapiclient.discovery import build + + +class GoogleDriveClient: + def __init__(self): + # Load Google Drive credentials from environment variable + self.credentials_str = os.getenv('GCP_CREDENTIAL_STR') + + # Load folder ID from environment variable + self.folder_id = os.getenv('DRIVE_FOLDER_ID') + + # Create credentials object + self.credentials = service_account.Credentials.from_service_account_info( + json.loads(self.credentials_str), + scopes=['https://www.googleapis.com/auth/drive'] + ) + + # Create Google Drive service + self.drive_service = build('drive', 'v3', credentials=self.credentials) + + + def get_latest_files_url(self): + # List to store XLSX files + xlsx_files, zip_files = self.get_subfolder_files(self.folder_id) + + # Find the latest XLSX and ZIP files URL + xlsx_url = None + zip_url = None + if xlsx_files: + # Find the latest XLSX file based on modification time + latest_file = max(xlsx_files, key=lambda x: x['modifiedTime']) + xlsx_url = latest_file.get('webViewLink') + if zip_files: + # Find the latest zip file based on modification time + latest_file = max(zip_files, key=lambda x: x['modifiedTime']) + zip_url = latest_file.get('webViewLink') + + return xlsx_url, zip_url + + def get_subfolder_files(self, folder_id): + page_token = None + + # Retrieve all files and folders within the subfolder + while True: + response = self.drive_service.files().list( + q=f"'{folder_id}' in parents", + includeItemsFromAllDrives=True, + supportsAllDrives=True, + fields='nextPageToken, files(id, name, webViewLink, mimeType, modifiedTime)', + pageToken=page_token + ).execute() + + # Extract files and folders from response + items = response.get('files', []) + + # Check if there are more pages of results + page_token = response.get('nextPageToken') + if not page_token: + break + + # List to store XLSX or ZIP files within subfolder + xlsx_files = [] + zip_files = [] + + # Iterate through files and folders + for item in items: + # Check if current item is a folder + if item['mimeType'] == 'application/vnd.google-apps.folder': + # Recursively search for XLSX files within sub-subfolder + subfolder_xlsx_files, subfolder_zip_files = self.get_subfolder_files(item['id']) + if subfolder_xlsx_files: + xlsx_files.extend(subfolder_xlsx_files) + if subfolder_zip_files: + zip_files.extend(subfolder_zip_files) + # Check if current item is an XLSX file + elif item['mimeType'] == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': + # Add XLSX file to list + xlsx_files.append(item) + elif item['mimeType'] == 'application/zip': + # Add ZIP file to list + zip_files.append(item) + + # Return list of XLSX files within subfolder + return xlsx_files, zip_files + +def main(): + """This requires a filename to save the URL of the XLSX and ZIP files""" + # Check if the file name is provided as a command-line argument + if len(sys.argv) < 2: + print("Usage: python get_latest_files.py ") + sys.exit(1) + + # Get the file name from the command-line arguments + file_name = sys.argv[1] + + if not file_name.endswith('.py'): + print("Error: File must have .py extension") + sys.exit(1) + + client = GoogleDriveClient() + + xlsx_file_url, zip_file_url = client.get_latest_files_url() + + with open(file_name, 'w') as file: + if xlsx_file_url is not None: + file.write(f'xlsx_url = \'{xlsx_file_url}\'\n') + if zip_file_url is not None: + file.write(f'zip_url = \'{zip_file_url}\'\n') + +if __name__ == '__main__': + main() diff --git a/requirements_doc.txt b/requirements_doc.txt new file mode 100644 index 0000000..d941fc9 --- /dev/null +++ b/requirements_doc.txt @@ -0,0 +1,5 @@ +google-auth==2.29.0 +google-auth-httplib2==0.2.0 +google-api-python-client==2.127.0 +sphinx==7.3.7 +sphinx_rtd_theme==2.0.0 diff --git a/doc/img/img1.png b/resource/_md/img/img1.png similarity index 100% rename from doc/img/img1.png rename to resource/_md/img/img1.png diff --git a/doc/img/img10.png b/resource/_md/img/img10.png similarity index 100% rename from doc/img/img10.png rename to resource/_md/img/img10.png diff --git a/doc/img/img11.png b/resource/_md/img/img11.png similarity index 100% rename from doc/img/img11.png rename to resource/_md/img/img11.png diff --git a/doc/img/img12.png b/resource/_md/img/img12.png similarity index 100% rename from doc/img/img12.png rename to resource/_md/img/img12.png diff --git a/doc/img/img13.png b/resource/_md/img/img13.png similarity index 100% rename from doc/img/img13.png rename to resource/_md/img/img13.png diff --git a/doc/img/img14.png b/resource/_md/img/img14.png similarity index 100% rename from doc/img/img14.png rename to resource/_md/img/img14.png diff --git a/doc/img/img15.png b/resource/_md/img/img15.png similarity index 100% rename from doc/img/img15.png rename to resource/_md/img/img15.png diff --git a/doc/img/img16.png b/resource/_md/img/img16.png similarity index 100% rename from doc/img/img16.png rename to resource/_md/img/img16.png diff --git a/doc/img/img17.png b/resource/_md/img/img17.png similarity index 100% rename from doc/img/img17.png rename to resource/_md/img/img17.png diff --git a/doc/img/img18.png b/resource/_md/img/img18.png similarity index 100% rename from doc/img/img18.png rename to resource/_md/img/img18.png diff --git a/doc/img/img19.png b/resource/_md/img/img19.png similarity index 100% rename from doc/img/img19.png rename to resource/_md/img/img19.png diff --git a/doc/img/img2.png b/resource/_md/img/img2.png similarity index 100% rename from doc/img/img2.png rename to resource/_md/img/img2.png diff --git a/doc/img/img20.png b/resource/_md/img/img20.png similarity index 100% rename from doc/img/img20.png rename to resource/_md/img/img20.png diff --git a/doc/img/img21.png b/resource/_md/img/img21.png similarity index 100% rename from doc/img/img21.png rename to resource/_md/img/img21.png diff --git a/doc/img/img3.png b/resource/_md/img/img3.png similarity index 100% rename from doc/img/img3.png rename to resource/_md/img/img3.png diff --git a/doc/img/img4.png b/resource/_md/img/img4.png similarity index 100% rename from doc/img/img4.png rename to resource/_md/img/img4.png diff --git a/doc/img/img5.png b/resource/_md/img/img5.png similarity index 100% rename from doc/img/img5.png rename to resource/_md/img/img5.png diff --git a/doc/img/img6.png b/resource/_md/img/img6.png similarity index 100% rename from doc/img/img6.png rename to resource/_md/img/img6.png diff --git a/doc/img/img7.png b/resource/_md/img/img7.png similarity index 100% rename from doc/img/img7.png rename to resource/_md/img/img7.png diff --git a/doc/img/img8.png b/resource/_md/img/img8.png similarity index 100% rename from doc/img/img8.png rename to resource/_md/img/img8.png diff --git a/doc/img/img9.png b/resource/_md/img/img9.png similarity index 100% rename from doc/img/img9.png rename to resource/_md/img/img9.png