SimReady Benchmark, the engine-agnostic core for validating SimReady USD assets
Project description
simready-benchmark
Engine-agnostic Python framework for benchmarking SimReady USD assets. Discovers applicable tests, executes them across one or more engine sessions in parallel, and produces HTML and JSON reports.
Part of the SimReady Python Library Suite
alongside simready-validate and simready-search.
Installation
pip install simready-benchmark # framework + CLI only
pip install simready-benchmark[kit] # + Kit / Isaac Sim engine plugin
The bundled FET test suite (simready-benchmark-kit-suite) is part of the
simready_foundations repository. Refer to the install runbook in the
package documentation for the setup.
Python 3.11 or newer is required.
Quick Start
# Plan + run + report on every asset in the project, in one pass
simready-benchmark --project-config /path/to/project_config.toml
# Or pass paths ad-hoc, scoped to one feature
simready-benchmark --sr-specs /path/to/sr_specs \
--assets /path/to/asset.usd \
--features FET003
Outputs land in _testing/ next to the project config (or the current
directory if no config is set):
plan.json. The resolved planstate/events.jsonl. Live JSON-Lines event streamresults/<asset-dir>/<asset>.usd. Stamped mirror copyresults/<asset-dir>/.simready/validation.json.runtime_tests[]receiptresults/<asset-dir>/.simready/runtime/<test>/result.json. Per-test artifactslogs/<engine>_<n>.log. Per-engine subprocess logsindex.html(HTML report at the output-dir root) plusreport/test_results_index.json. Aggregated reports
The original asset directory is never modified.
Key Concepts
Plan / Run / Report Pipeline
A single simready-benchmark invocation runs three phases by default:
- Plan. Scan installed test packs and the active sr_specs; match assets to applicable tests; write
plan.json. - Run. Execute the plan across one or more engine sessions in parallel; stream JSON events; write per-test
result.json. - Report. Aggregate per-test results into HTML and JSON reports.
A final stamp phase (default-on, suppress with --no-stamp) writes
benchmark metadata into the mirror-copy USDs and merges a runtime_tests[]
array into .simready/validation.json. Refer to the
stamp-results skill.
Engines and Test Packs
Engines are registered through the simready_benchmark.engines entry-point group;
test packs through simready_benchmark.tests. The framework discovers both at
import time. No per-install configuration is needed for installed wheels.
Out of the box, simready-benchmark registers an nvcf engine plugin for
NVIDIA Cloud Functions execution. simready-benchmark-engine-kit adds the kit engine
plugin for Kit / Isaac Sim. Third-party engines and test packs slot in cleanly
through the same mechanism. Refer to the
write-test-pack skill.
Engine Configuration
Scaffold a starter engines.toml and edit the placeholders:
simready-benchmark --init-engines-toml # writes ~/.simready-benchmark/engines.toml
simready-benchmark --init-engines-toml ./ # writes ./engines.toml (per-project)
The framework reads engine paths from engines.toml using a 4-tier lookup
(first match wins):
--engines-toml <FILE>CLI flag$SIMREADY_ENGINES_TOMLenv var (missing file is a hard error)engines.tomlin the current working directory~/.simready-benchmark/engines.toml
A [engines.toml] <path> line goes to stderr one time per process so the user
can identify which file is in effect (suppress with SIMREADY_QUIET_ENGINES_TOML=1).
[kit.isaac_sim]
executable_path = "C:/Program Files/NVIDIA/IsaacSim/2025.1/isaac-sim.bat"
version = "5.1.0"
tags = ["isaac", "kit"]
# Optional: fixed output location (otherwise <CWD>/_testing).
[paths]
output_dir = "/path/to/_testing"
In the common case engines.toml carries only the engine. sr_specs and the
on-disk test packs come from project_config.toml (set SIMREADY_PROJECT_CONFIG
or pass --project-config). engines.toml can also carry [paths].sr_specs
and [tests].paths, but those are overrides for when there is no project config
or a machine needs a different value; resolution is first-non-empty-wins in the
order CLI flag, environment variable, engines.toml, then project_config.toml.
Verify with simready-benchmark --show-config. This prints the resolved engines.toml,
sr_specs source, project_config, and discoverable test packs with
[ok]/[missing] markers.
CLI
simready-benchmark is a single command with mutually-exclusive mode flags
rather than subcommands. The default invocation runs the full pipeline.
Mode Flags
| Flag | Behavior |
|---|---|
| (default) | Plan + run + report in one pass |
--plan-only |
Generate plan.json and stop |
--edit-plan ... |
Edit an existing plan.json (no run, no report) |
--resume |
Run + report against an existing plan.json |
--report-only |
Regenerate the report from existing per-test result.json files |
--list-tests |
Print the registered features and tests |
--show-config |
Print the resolved configuration (engines.toml + tier, sr_specs source, test packs discoverable) and exit |
--init-engines-toml [PATH] |
Run the setup wizard and write a complete engines.toml. Overwrites an existing file by default; pass --no-overwrite to refuse |
Plus the stamp subcommand:
simready-benchmark stamp --output-dir _testing
Common Flags
| Flag | Description |
|---|---|
--project-config <PATH> |
Load content roots, sr_specs, profiles, features, and [tests].paths from project_config.toml |
--sr-specs <PATH> |
Path to sr_specs (overrides project config and engines.toml) |
--assets <PATH> [<PATH>...] |
One or more files or directories of assets |
--engines-toml <FILE> |
Override the engines.toml lookup chain |
--tests-path <PATH> [<PATH>...] |
Extra directories scanned for @test-decorated functions |
--output-dir <DIR> |
Override the default _testing/ location |
--features <ID> [<ID>...] |
Match feature ID prefixes; also bypasses the validation gate for matches |
--tests <NAME> [<NAME>...] |
Exact test names to keep |
--max-concurrent <N> |
Up to N engine sessions in parallel (default 2) |
--workers <url1,url2,...> |
NVCF worker endpoints (additive to local Kit engines) |
--no-local-engines |
NVCF-only mode (use ONLY explicitly-constructed engines) |
--runtime <NAME> [<NAME>...] |
Pin execution to one or more named engines from engines.toml (for example --runtime isaac_sim); unknown names hard-fail |
--no-stamp |
Skip the stamp phase after a successful run |
Exit Codes
| Code | Meaning |
|---|---|
0 |
All tests passed |
1 |
One or more tests failed, or a runtime error |
2 |
CLI usage error |
3 |
--resume / --report-only invoked but no plan.json or results found |
4 |
Setup or environment not ready (no engine could run part of the plan, or an engine failed preflight). 4 outranks 1. |
130 |
Interrupted by user (Ctrl-C) |
Python API (Advanced)
The CLI is the recommended entry point. The Python surfaces are low-level and intended for advanced integrations:
simready_benchmark.Planner. Static-method class;Planner.plan(sr_specs_path, test_dirs, discovery, validation_source, ...) -> Plan.simready_benchmark.Runner. Static-method class;Runner.start(plan, output_dir, ...) -> RunHandle.simready_benchmark.Reporter. Static-method class;Reporter.generate(output_dir, fmt="both") -> dict.simready_benchmark.PlanEditor. Wraps aPlan; appends overrides. Load and save throughsimready_benchmark.core.models.load_plan/save_plan.simready_benchmark.test. The@testdecorator. Functions MUST beasync def. Required kwargs:features,requirement,name,description,expected_video,version.simready_benchmark.RunContext,simready_benchmark.SceneHandle. Runtime types used by tests.
Refer to the ten packaged skills under src/simready_benchmark/skills/ for
ready-to-use recipes: configure-engines-toml, run-tests, edit-plan,
stamp-results, embed-in-pipeline, diagnose-failures, remediate-assets,
write-test-pack, write-engine-plugin, and write-online-runner.
Metadata Ownership
simready.test owns only the runtime_testing sub-key of SimReady_Metadata
in USD customLayerData, and the runtime_tests[] array in
.simready/validation.json. It never reads or writes asset_id,
validation, or any other section.
customLayerData["SimReady_Metadata"]
├── asset_id <- simready.create
├── validation <- simready.validate
└── runtime_testing <- simready.test
.simready/validation.json
├── schema_version, profile, passed, issues, ... <- simready.validate
└── runtime_tests[] <- simready.test
License
Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. SPDX-License-Identifier: Apache-2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file simready_benchmark-2026.6.5-py3-none-any.whl.
File metadata
- Download URL: simready_benchmark-2026.6.5-py3-none-any.whl
- Upload date:
- Size: 382.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd9571ef19a457ebba79d6c444b9cf9b29612e3698191f3e2b683d580dd92da7
|
|
| MD5 |
656e9934acab863223ef72a8134a3255
|
|
| BLAKE2b-256 |
db0f9277ee133b487d0af54f270e51f3ec58159abcfe18526b88289fa8c1775a
|