StarlingX Test tools
Go to file
Marcelo Daride Gaspar 3279ccd3d3 Add test case for lock/unlock 'Compute' type nodes.
This test case verifies lock and unlock operations on a 'Compute' type node in a Central controller.

Change-Id: I90e4b5a0b9cdd56357d4528a4c1284fccf2cd1f9
2024-12-17 13:02:40 -03:00
config Add test case for lock/unlock 'Compute' type nodes. 2024-12-17 13:02:40 -03:00
doc New StarlingX Automation Framework 2024-11-29 16:01:57 -05:00
framework Allow user to override the appending of lab name and timestamp to log 2024-12-05 13:51:37 -05:00
keywords Add test case for lock/unlock 'Compute' type nodes. 2024-12-17 13:02:40 -03:00
portal New StarlingX Automation Framework 2024-11-29 16:01:57 -05:00
pre-commit New StarlingX Automation Framework 2024-11-29 16:01:57 -05:00
releasenotes/source [Release Notes] Setup and Build 2019-02-28 07:13:09 -06:00
resources New StarlingX Automation Framework 2024-11-29 16:01:57 -05:00
scripts Remove hard coded value for config file 2024-12-02 16:14:07 -05:00
testcases Add test case for lock/unlock 'Compute' type nodes. 2024-12-17 13:02:40 -03:00
unit_tests Resource Finder to get full path to resource files 2024-12-02 11:42:37 -05:00
web_pages New StarlingX Automation Framework 2024-11-29 16:01:57 -05:00
__init__.py New StarlingX Automation Framework 2024-11-29 16:01:57 -05:00
.gitignore New StarlingX Automation Framework 2024-11-29 16:01:57 -05:00
.gitreview OpenDev Migration Patch 2019-04-19 19:52:38 +00:00
.pre-commit-config.yaml New StarlingX Automation Framework 2024-11-29 16:01:57 -05:00
.zuul.yaml New StarlingX Automation Framework 2024-11-29 16:01:57 -05:00
DB_SETUP.txt New StarlingX Automation Framework 2024-11-29 16:01:57 -05:00
Pipfile Make Python version explicit in Pipfile (3.11) 2024-12-04 15:31:35 -05:00
Pipfile.lock Make Python version explicit in Pipfile (3.11) 2024-12-04 15:31:35 -05:00
README.rst Update README.rst 2024-12-09 15:53:39 -05:00
tox.ini New StarlingX Automation Framework 2024-11-29 16:01:57 -05:00

stx-test

StarlingX Test repository for automated test cases.

This repository contains the test framework and test cases for verifying StarlingX. The test framework provides tools for configuration, automation, and execution of tests, with the ability to run against diverse StarlingX lab environments.

Pre-Requisites

To use this repository, ensure the following requirements are met:

  1. Operating System:

    • Ubuntu 22.04 or later.
  2. Network Requirements:

    • The RunAgent (test execution machine) must:
      • Have internet access for pulling images and dependencies.
      • Be able to connect to your StarlingX system(s) via SSH.
  3. Required Tools: Install the following tools:

    # Python 3.11
    sudo apt update
    sudo apt install -y python3.11 python3-pip
    
    # pipenv
    pip install --user pipenv

Setup and Installation

  1. Clone the Repository:

    git clone https://opendev.org/starlingx/test.git
    cd test
  2. Setup Gerrit for Code Review: The procedure to set up Gerrit for StarlingX is the same as for other projects hosted on OpenDev, such as OpenStack. Refer to the OpenStack Contributor Guide for detailed instructions.

    • Key Setup and Repository Configuration:

      # Generate an SSH key (recommended: ED25519; RSA is also supported)
      ssh-keygen -t ed25519 -C "<your email address>"
      ssh-add ~/.ssh/id_ed25519
      
      # Alternatively, generate an RSA key for compatibility with older systems:
      ssh-keygen -t rsa -b 4096 -C "<your email address>"
      ssh-add ~/.ssh/id_rsa
      • Add your SSH key to Gerrit:
    • Sign the Individual Contributor License Agreement (ICLA): Projects hosted on OpenDev, including StarlingX, require signing the OpenStack Individual Contributor License Agreement (ICLA). This step is outlined in the OpenStack Contributor Guide and the OpenDev Developer Documentation. Follow these instructions to complete the process before submitting changes.

    • Fetch Gerrit Hooks: Fetch Gerrit hooks immediately after cloning to enable automatic Change-Id generation during commits and verify your SSH key setup:

      git review -s

      Example output:

      Creating a git remote called 'gerrit' that maps to:
              ssh://<open-review-email-or-username>@review.opendev.org:29418/starlingx/test.git

      If there is an issue with your SSH configuration (e.g., missing or incorrect SSH key), you will see an error message indicating the problem, such as "Permission denied (publickey)".

      • (Optional) If you cloned the repository using HTTPS or need Gerrit hooks:
        • Add a Gerrit remote (only needed if the default remote does not point to Gerrit).

          git remote add gerrit ssh://<your-gerrit-username>@review.opendev.org/starlingx/test.git
  3. Install Python Dependencies:

    # Create and activate a virtual environment
    pipenv shell
    
    # Sync project dependencies
    pipenv sync
  4. Install Pre-Commit Hooks:

    # Install pre-commit hooks for linting and formatting (run in the repository's root directory)
    pre-commit install

Configuration

The framework relies on configuration files found under the config directory. These include settings for labs, Docker, Kubernetes, and logging. Default files are provided, but you can customize configurations using CLI options.

Steps to Configure

  1. Lab Configuration (`config/lab/files/default.json5`):
    • Holds lab details such as floating IPs, type, and capabilities.
    • For custom setups:
      • Use a template file (e.g., template_simplex.json5) as a base.
      • Update use_jump_host and jump_server_config if a jump server is used.
  2. Docker Configuration (`config/docker/files/default.json5`):
    • Specify credentials for Docker registries used during testing.
  3. Lab Capability Scanner:
    • Automatically detect and update lab capabilities:

      python scripts/lab_capability_scanner.py --lab_config_file=<lab_config_file>

You are now ready to execute tests!

Running Tests

  1. Basic Example: Run a specific test case:

    python framework/runner/scripts/test_executor.py --tests_location=<testcase_location>
  2. Custom Configurations: Use non-default configurations:

    python framework/runner/scripts/test_executor.py \
      --tests_location=<testcase_location> \
      --lab_config_file=<config_location>

    Example:

    python framework/runner/scripts/test_executor.py \
      --tests_location=testcases/cloud_platform/sanity \
      --lab_config_file=config/lab/files/custom_config.json5
  3. UI Testing (Optional): Install Chrome for running WebDriver-based UI tests:

    wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    sudo dpkg -i google-chrome-stable_current_amd64.deb
    sudo apt -f install
    google-chrome --version

Contribution

  1. Coding Standards:
    • Ensure your code adheres to project conventions. While more detailed best practices are being refined and will be provided in future updates, the following standards are currently enforced:
    • Pre-commit hooks will run automatically on every commit once installed to ensure formatting and linting.
    • Tools Enforced by Pre-Commit Hooks:
  2. Submitting Changes:
    • Ensure your commit messages adhere to the guidelines in the OpenStack Git Commit Message Guidelines.

    • Submit changes for Gerrit review using the following example:

      git commit -s # include sign-off
      git review

References