Platform Verification#

You can use the NVIDIA Holoscan for Media Verification Tool to validate cluster readiness and assess key performance characteristics of the Holoscan for Media platform.

Prerequisites#

Cluster Environment#

You need one of the following environments:

  • A cluster certified for Holoscan for Media

  • A Holoscan for Media local development setup with Kubernetes

Workstation Tooling#

The jump node that runs the tool must have the following installed:

  • Python 3.10 or 3.12

  • kubectl installed and configured for the target cluster

  • oc installed, for token-based login to OpenShift clusters

Cluster Access and Permissions#

  • A valid kubeconfig for the target cluster. For OpenShift clusters, the kubeconfig must include a user token.

  • Permissions to create commonly used resources, such as namespaces, pods, jobs, ConfigMaps, and secrets

Verify Cluster Access#

Before proceeding, verify that you can access the cluster using a token:

  1. Check the current context:

    oc config view --minify --raw
    
  2. If the output does not include users > user > token, log in to the cluster with a token that you generate from the OpenShift web console:

    oc login --token=<token> --server=<cluster_url>
    

NGC API Key (NVIDIA Container Registry)#

The tool needs an NGC API key to pull container images from NVIDIA NGC:

  • Follow the steps in Create Image Pull Secret to create an NGC API key.

  • Make sure that an image pull secret exists in the default namespace and that the image-pull-secret parameter in the test configuration references it.

Rivermax License and Secret#

Network validation tests require the Rivermax license. Create a Kubernetes secret from the license file:

  1. Create the Rivermax license secret, replacing <path_to_license> with the actual path:

    kubectl create secret generic rivermax-license --from-file=<path_to_license>
    
  2. Verify that you created the secret:

    kubectl get secret rivermax-license
    

Installation of the Verification Tool#

  1. Download the h4m-verification-tool.tar.gz file from the Verification Tool resource using an NGC API key.

    Alternatively, download the file on the command line. Replace the <API-KEY> placeholder with your NGC API key:

    curl -fsSLO "https://api.ngc.nvidia.com/v2/org/nvidia/team/holoscan-for-media/resources/h4m-verification-tool/versions/0.1.1/files/h4m-verification-tool.tar.gz" -H "Authorization: Bearer <API-KEY>"
    
  2. Extract the archive:

    tar -xvf h4m-verification-tool.tar.gz
    

    The archive includes run_tests.py, requirements.txt, Python 3.10 and 3.12 binaries, and the standard and NVIDIA Cloud Native Stack sample configurations.

  3. Edit the supplied configuration for the deployed platform:

    • sample_test.yaml for a standard deployment

    • sample_test_cns.yaml for a Cloud Native Stack deployment

    Configure the common parameters as follows:

    Name

    Description

    Default

    image-pull-secret

    Name of the NGC secret
    Use kubectl get secrets to list the secrets

    ngc-api-key

    image-name

    Name of the image to use for the test

    nvcr.io/nvidia/holoscan-for-media/h4m-verification-tool-internals:0.1.0

Cluster-Specific Test Configuration#

By default, the Rivermax and Platform tests use worker nodes labeled for container workloads. For virtual machine (VM) Platform Checks, set workload-type: vm. To override automatic placement, set node-list to a list of node names, or set node-selector.

Use the sample configuration from the extracted archive as the source of truth, and edit it in place for the target cluster.

If a Rivermax test fails or underperforms, inspect its <Rivermax_test>/<timestamp>_<nodes>/device_topology.json file, which records the following:

  • Sender and receiver pods and nodes

  • NIC PCIe addresses and paths

  • For GPU tests, GPU PCIe addresses and paths

Use these paths to verify that the selected NIC and GPU share the expected PCIe switch or root complex. For GPUDirect failures, also inspect the Platform Checks gpu_topology, pcie_config, and nvidia_peermem artifacts, and the receiver-drop and SR-IOV metrics.

For a Cloud Native Stack deployment, set scheduler-name to default-scheduler.

  1. Set up a Python virtual environment:

    1. If they are not already installed, install pip and venv:

      sudo apt update && sudo apt install python3-pip python3-venv
      
    2. Run the following commands to create the Python virtual environment and install the requirements:

      python3 -m venv .venv
      source .venv/bin/activate
      pip install --upgrade pip
      pip install -r requirements.txt
      

Running the Verification Tool#

Run the tool using the following command:

python3 run_tests.py sample_test.yaml

The tool saves test results in a timestamped directory similar to the following:

cluster-validation-suite_<date_time>/
├── test_runner_<date_time>.log
├── Platform_Checks/
├── Rivermax_<test>/
│   └── <timestamp>_<nodes>/
│       └── device_topology.json
├── Global_Results_Summary.json
└── test_report.html
  • test_runner_<date_time>.log: Verification tool execution log

  • Platform_Checks/: Platform validation outputs and logs

  • Rivermax_<test>/: Rivermax logs and test artifacts

  • Global_Results_Summary.json: Summary of test outcomes

  • test_report.html: HTML report with the result of each test