rosotacom-dev 2.5.dev13__tar.gz → 2.5.dev16__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/workflows/nightly-e2e.yml +20 -4
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/workflows/pr-merge-gate.yml +19 -228
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/PKG-INFO +21 -1
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/README.md +20 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/justfile +10 -10
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/session-configuration.md +37 -1
- rosotacom_dev-2.5.dev16/src/rosotacom/benchmark_delta.py +279 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/cli_benchmark.py +62 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/session/creation/generate_session_files.py +22 -14
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom_dev.egg-info/PKG-INFO +21 -1
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom_dev.egg-info/SOURCES.txt +3 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom_dev.egg-info/scm_file_list.json +3 -0
- rosotacom_dev-2.5.dev16/src/rosotacom_dev.egg-info/scm_version.json +8 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/contract/test_security_maintenance_config.py +23 -24
- rosotacom_dev-2.5.dev16/tests/contract/test_session_configuration_doc.py +44 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/contract/test_workflow_contracts.py +51 -2
- rosotacom_dev-2.5.dev16/tests/unit/test_benchmark_delta.py +172 -0
- rosotacom_dev-2.5.dev13/src/rosotacom_dev.egg-info/scm_version.json +0 -8
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.devcontainer/devcontainer.json.template +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.devcontainer/re_generate_devcontainer_json.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/CODEOWNERS +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/ISSUE_TEMPLATE/documentation-audit.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/ISSUE_TEMPLATE/implementation-cleanup.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/ISSUE_TEMPLATE/quality-workflow.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/ISSUE_TEMPLATE/redesign.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/ISSUE_TEMPLATE/release-process.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/ISSUE_TEMPLATE/repository-diagnosis.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/ISSUE_TEMPLATE/test-ci-audit.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/ISSUE_TEMPLATE/work-item.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/dependabot.yml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/workflows/benchmark-calibrate.yml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/workflows/benchmark-gate.yml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/workflows/dev-release.yml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/workflows/image-scan.yml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/workflows/pr-lightweight.yml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.github/workflows/release.yml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/.pre-commit-config.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/AGENTS.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/CONCURRENCY.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/CONTRIBUTING.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/DEVELOPMENT_PRINCIPLES.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/MANIFEST.in +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/budgets.jsonl +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/calibration/README.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/calibration/capacity-size-tight-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/calibration/probe-loss-gop-tight-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/calibration/probe-loss-nominal-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/calibration/probe-loss-tight-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/calibration/probe-loss-tight-fastdds.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/calibration/probe-loss-tight-zenoh.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/codecov.yml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/deployment-configuration.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/benchmark-ab.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/benchmark-bag-as-load.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/ci.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/ffmpeg-keyframes.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/findings/README.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/findings/cyclone-spdp-discovery-bursts.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/findings/delay-alone-no-loss.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/findings/head-of-line-irregularity.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/findings/jitter-loss-bandwidth-latency.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/findings/lighter-message-loss.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/findings/zero-loss-boundaries-18kb-20hz.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/forensics-report.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/geo-link-map.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/github-repository-settings.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/link-trace.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/owner-runbook.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/performance-bands.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/playbooks/README.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/quality-model.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/release-notes/TEMPLATE.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/release-notes/v2.1.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/release-notes/v2.2.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/release-notes/v2.3.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/release-notes/v2.4.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/release.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/rfcs/0001-expectation-driven-test-suite.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/rfcs/0002-expectation-concepts.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/rfcs/0003-metric-backbone.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/rfcs/0004-network-profiles.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/rfcs/0005-benchmark-genres-and-ci.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/rfcs/0006-dynamic-qos.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/rfcs/0007-regression-gate.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/rfcs/README.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/testing.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/docs/work-items.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/install.sh +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/media/control_center.png +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/media/echo_test.png +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/media/forensics-report-example.png +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/media/host.png +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/media/vehicle.png +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/pyproject.toml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/requirements.txt +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/rosotacom.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/run_session_in_container.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/setup.cfg +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/__init__.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/__main__.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/anonymize.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/bag_ground_truth.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/benched_set.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/benchmark.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/bundle_check.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/cli.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/deployment.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/ffmpeg_packet.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/forensics.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/geomap.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/network_profiles.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/network_shaper.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/plots.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/py.typed +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/benched-set.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/.gitignore +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/README.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/__init__.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/bags/8_drop_reference/metadata.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/deployment.example.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/profiles.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/rosotacom.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scenarios/2_native_chatter/scenario-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/1_heartbeat/run_machine_a.sh +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/1_heartbeat/run_machine_b.sh +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/wait_for_echo_topic.sh +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/foxglove.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/costmap_1second/costmap_1second_0.mcap +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/costmap_1second/metadata.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/foxglove.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/costmap_1second/costmap_1second_0.mcap +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/costmap_1second/metadata.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/10_restamp/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/11_trickle/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/12_content_integrity/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/13_link_latency/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/14_remote_assist_anonymized/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/15_remote_assist_anonymized_costmap/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/16_remote_assist_anonymized_camera/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/17_synthetic_camera_quality/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/1_heartbeat/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/1_heartbeat_status/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/2_native_chatter/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/3_comp_occ_grid/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/4_comp_occ_grid_zen/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/5_sized_payload/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/6_sized_payload_zen/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/7_latched_static/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/8_drop/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/9_throttle/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/bench_1_1_capacity/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/bench_1_2_load_sweep/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/bench_1_3_ramp/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/bench_1_4_recovery/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/examples/sessions/bench_1_5_camera/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ros2docker.json.example +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/.vscode/c_cpp_properties.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/.vscode/settings.json +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_easy_mode.xml.template +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_initial_peer_list.xml.template +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v2.xml.template +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v3.xml.template +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v4.xml.template +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v5.xml.template +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ota_configs/create_zenoh_json5.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ota_configs/cyclonedds_minimal.xml.template +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ota_configs/cyclonedds_tuned.xml.template +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ota_configs/fastdds_unicast.xml.template +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ota_configs/get_ota_xml.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ota_configs/utils.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ota_configs/zenoh.json5.template +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/.gitkeep +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_cpp/CMakeLists.txt +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_cpp/COLCON_IGNORE +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_cpp/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_cpp/package.xml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_cpp/src/hz_monitor.cpp +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_cpp/src/universal_compressor.cpp +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_cpp/src/universal_decompressor.cpp +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_msgs/CMakeLists.txt +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_msgs/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/CompressedData.msg +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/EchoHeartbeat.msg +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/OtaStamped.msg +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/SizedPayload.msg +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_msgs/package.xml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/__init__.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/base_bridge_relay.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/bridge_in.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/bridge_out.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/heartbeat_echo.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/hz_monitor.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/image_bandwidth_reducer.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/image_pixel_capper.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/lanelet_saver.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/latch_relay.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/costmap_remapper.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/marker_remapper.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/speed_test.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/tf_remapper.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/traffic_monitor.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/wifi_network_analysis_1.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/link_bytes.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/link_trace.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/local_global_frame_bridge.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/localization_map_split_reduce_saver.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/msg_transform.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/pair_management.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/pub_sub_pair.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/qos.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/relay_in.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/relay_out.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/restamp.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/sized_publisher.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/stage_latency.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/stage_latency_core.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/status_overview.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/status_overview_core.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/tf_map_to_cart_saver.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/topic_monitor.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/topic_resolution.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/trickle.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_compressor.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_decompressor.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_ota_unwrapper.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_ota_wrapper.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/package.xml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/resource/com_py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/setup.cfg +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/setup.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/test/test_copyright.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/test/test_flake8.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/ros2src/com_py/test/test_pep257.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/session/content/base/session_plugin_base.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/session/content/network/up_connectivity.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/session/content/network/wifi_network_analysis_2.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/session/creation/anonymize_bag.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/session/creation/catmux_log_setup.sh +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/session/creation/create_session_yaml.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/session/creation/run_session.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/session/creation/run_session_in_external_terminal.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/resources/ws/session/creation/strip_ansi.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/status_eval.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/stream_stats.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/trace_profiles.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/transit.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom/video_quality.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom_dev.egg-info/dependency_links.txt +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom_dev.egg-info/entry_points.txt +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom_dev.egg-info/requires.txt +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/src/rosotacom_dev.egg-info/top_level.txt +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/stop_session_in_container.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/terminology.md +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/contract/test_benched_set_registry.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/contract/test_findings.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/contract/test_markdown_links.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/contract/test_ota_source_bundle.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/contract/test_package_metadata.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/contract/test_packaged_resources.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/contract/test_profile_covers_generated_commands.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/contract/test_pytest_policy.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/contract/test_readme_examples.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/e2e/conftest.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/e2e/test_anonymize_e2e.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/e2e/test_benchmark_ab.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/e2e/test_benchmark_capacity.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/e2e/test_benchmark_replay.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/e2e/test_parallel_smoke.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/e2e/test_smoke.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/e2e/test_timeline_stepping.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/e2e/test_video_quality_e2e.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/sessions/generate_rmw_matrix.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-local_zenoh-ros2dds-ota/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-ota/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-ota-tuned/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/sessions/rmw_matrix/1_heartbeat_fastdds/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/sessions/rmw_matrix/1_heartbeat_zen-endpoints/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_anonymize.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_bag_ground_truth.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_benched_set.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_benchmark.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_bundle_check.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_cli.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_cli_benchmark.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_concurrency.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_deployment.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_ffmpeg_packet.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_forensics.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_geomap.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_link_bytes.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_link_trace.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_network_profiles.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_network_shaper.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_ota_xml.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_plots.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_stage_latency.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_status_eval.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_status_overview.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_stream_stats.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_trace_profiles.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_transit.py +0 -0
- {rosotacom_dev-2.5.dev13 → rosotacom_dev-2.5.dev16}/tests/unit/test_video_quality.py +0 -0
|
@@ -19,9 +19,25 @@ concurrency:
|
|
|
19
19
|
|
|
20
20
|
jobs:
|
|
21
21
|
smoke-e2e:
|
|
22
|
-
|
|
22
|
+
# The same six slices the merge gate and the release run, instead of one
|
|
23
|
+
# sequential `just test-e2e-smoke` over the whole suite (#198). Keeping the
|
|
24
|
+
# monolith here was deliberate while the slices were hand-maintained `-k`
|
|
25
|
+
# expressions that had silently stopped covering three files; #197's
|
|
26
|
+
# test_e2e_slices_partition_the_whole_suite closed that, so the union is
|
|
27
|
+
# now guaranteed to be the monolith.
|
|
28
|
+
#
|
|
29
|
+
# The gain is diagnosis: a red monolith says "e2e broke", six slices say
|
|
30
|
+
# which area did. It also removes a load-induced flake. On 2026-08-11 the
|
|
31
|
+
# nightly failed with nine "Timed out waiting for container readiness"
|
|
32
|
+
# errors after 1h12m on one runner, while the same tests on the same commit
|
|
33
|
+
# passed in the merge gate — where they are spread over six.
|
|
34
|
+
name: smoke-e2e-${{ matrix.slice }}
|
|
23
35
|
runs-on: ubuntu-latest
|
|
24
36
|
timeout-minutes: 90
|
|
37
|
+
strategy:
|
|
38
|
+
fail-fast: false
|
|
39
|
+
matrix:
|
|
40
|
+
slice: [core, transforms, remote-assist, runtime-tools, concurrency, media]
|
|
25
41
|
|
|
26
42
|
steps:
|
|
27
43
|
- name: Check out repository
|
|
@@ -46,14 +62,14 @@ jobs:
|
|
|
46
62
|
- name: Show Docker environment
|
|
47
63
|
run: docker info
|
|
48
64
|
|
|
49
|
-
- name: Run
|
|
50
|
-
run: just test-e2e-
|
|
65
|
+
- name: Run E2E slice
|
|
66
|
+
run: just test-e2e-slice ${{ matrix.slice }}
|
|
51
67
|
|
|
52
68
|
- name: Upload smoke session artifacts
|
|
53
69
|
if: failure()
|
|
54
70
|
uses: actions/upload-artifact@v7
|
|
55
71
|
with:
|
|
56
|
-
name: session-instances-smoke
|
|
72
|
+
name: session-instances-smoke-${{ matrix.slice }}
|
|
57
73
|
path: session-instances/
|
|
58
74
|
if-no-files-found: ignore
|
|
59
75
|
|
|
@@ -189,212 +189,24 @@ jobs:
|
|
|
189
189
|
fi
|
|
190
190
|
echo "All preflight checks passed"
|
|
191
191
|
|
|
192
|
-
e2e
|
|
193
|
-
|
|
192
|
+
e2e:
|
|
193
|
+
# One matrix job, not six near-identical copies. The copies were how
|
|
194
|
+
# `e2e-media` ended up listed in ci-success's `needs` with no check on its
|
|
195
|
+
# result: a failing media slice did not fail the gate. A matrix has one
|
|
196
|
+
# result for all slices, so that hole cannot be reopened by forgetting a
|
|
197
|
+
# paragraph. The slice list is the same one release.yml expands, and
|
|
198
|
+
# tests/contract/test_workflow_contracts.py keeps the three workflows and
|
|
199
|
+
# the justfile agreeing.
|
|
200
|
+
name: e2e-${{ matrix.slice }}
|
|
194
201
|
runs-on: ubuntu-latest
|
|
195
202
|
timeout-minutes: 90
|
|
196
203
|
needs: preflight-success
|
|
197
204
|
if: always() && !cancelled() && needs.preflight-success.result == 'success'
|
|
198
|
-
|
|
199
|
-
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
fetch-depth: 0
|
|
203
|
-
|
|
204
|
-
- name: Set up Python
|
|
205
|
-
uses: actions/setup-python@v6
|
|
206
|
-
with:
|
|
207
|
-
python-version: "3.12"
|
|
208
|
-
cache: pip
|
|
209
|
-
|
|
210
|
-
- name: Install just and tmux
|
|
211
|
-
run: |
|
|
212
|
-
sudo apt-get update
|
|
213
|
-
sudo apt-get install -y just tmux
|
|
214
|
-
|
|
215
|
-
- name: Set up local environment
|
|
216
|
-
run: just setup
|
|
217
|
-
|
|
218
|
-
- name: Show Docker environment
|
|
219
|
-
run: docker info
|
|
220
|
-
|
|
221
|
-
- name: Run core E2E tests
|
|
222
|
-
run: just test-e2e-core
|
|
223
|
-
|
|
224
|
-
- name: Upload session artifacts
|
|
225
|
-
if: failure()
|
|
226
|
-
uses: actions/upload-artifact@v7
|
|
227
|
-
with:
|
|
228
|
-
name: session-instances-e2e-core
|
|
229
|
-
path: session-instances/
|
|
230
|
-
if-no-files-found: ignore
|
|
231
|
-
|
|
232
|
-
e2e-transforms:
|
|
233
|
-
name: e2e-transforms
|
|
234
|
-
runs-on: ubuntu-latest
|
|
235
|
-
timeout-minutes: 90
|
|
236
|
-
needs: preflight-success
|
|
237
|
-
if: always() && !cancelled() && needs.preflight-success.result == 'success'
|
|
238
|
-
steps:
|
|
239
|
-
- name: Check out repository
|
|
240
|
-
uses: actions/checkout@v6
|
|
241
|
-
with:
|
|
242
|
-
fetch-depth: 0
|
|
243
|
-
|
|
244
|
-
- name: Set up Python
|
|
245
|
-
uses: actions/setup-python@v6
|
|
246
|
-
with:
|
|
247
|
-
python-version: "3.12"
|
|
248
|
-
cache: pip
|
|
249
|
-
|
|
250
|
-
- name: Install just and tmux
|
|
251
|
-
run: |
|
|
252
|
-
sudo apt-get update
|
|
253
|
-
sudo apt-get install -y just tmux
|
|
254
|
-
|
|
255
|
-
- name: Set up local environment
|
|
256
|
-
run: just setup
|
|
257
|
-
|
|
258
|
-
- name: Show Docker environment
|
|
259
|
-
run: docker info
|
|
260
|
-
|
|
261
|
-
- name: Run transform E2E tests
|
|
262
|
-
run: just test-e2e-transforms
|
|
263
|
-
|
|
264
|
-
- name: Upload session artifacts
|
|
265
|
-
if: failure()
|
|
266
|
-
uses: actions/upload-artifact@v7
|
|
267
|
-
with:
|
|
268
|
-
name: session-instances-e2e-transforms
|
|
269
|
-
path: session-instances/
|
|
270
|
-
if-no-files-found: ignore
|
|
271
|
-
|
|
272
|
-
e2e-remote-assist:
|
|
273
|
-
name: e2e-remote-assist
|
|
274
|
-
runs-on: ubuntu-latest
|
|
275
|
-
timeout-minutes: 90
|
|
276
|
-
needs: preflight-success
|
|
277
|
-
if: always() && !cancelled() && needs.preflight-success.result == 'success'
|
|
278
|
-
steps:
|
|
279
|
-
- name: Check out repository
|
|
280
|
-
uses: actions/checkout@v6
|
|
281
|
-
with:
|
|
282
|
-
fetch-depth: 0
|
|
283
|
-
|
|
284
|
-
- name: Set up Python
|
|
285
|
-
uses: actions/setup-python@v6
|
|
286
|
-
with:
|
|
287
|
-
python-version: "3.12"
|
|
288
|
-
cache: pip
|
|
289
|
-
|
|
290
|
-
- name: Install just and tmux
|
|
291
|
-
run: |
|
|
292
|
-
sudo apt-get update
|
|
293
|
-
sudo apt-get install -y just tmux
|
|
294
|
-
|
|
295
|
-
- name: Set up local environment
|
|
296
|
-
run: just setup
|
|
297
|
-
|
|
298
|
-
- name: Show Docker environment
|
|
299
|
-
run: docker info
|
|
300
|
-
|
|
301
|
-
- name: Run remote assist E2E tests
|
|
302
|
-
run: just test-e2e-remote-assist
|
|
303
|
-
|
|
304
|
-
- name: Upload session artifacts
|
|
305
|
-
if: failure()
|
|
306
|
-
uses: actions/upload-artifact@v7
|
|
307
|
-
with:
|
|
308
|
-
name: session-instances-e2e-remote-assist
|
|
309
|
-
path: session-instances/
|
|
310
|
-
if-no-files-found: ignore
|
|
311
|
-
|
|
312
|
-
e2e-runtime-tools:
|
|
313
|
-
name: e2e-runtime-tools
|
|
314
|
-
runs-on: ubuntu-latest
|
|
315
|
-
timeout-minutes: 90
|
|
316
|
-
needs: preflight-success
|
|
317
|
-
if: always() && !cancelled() && needs.preflight-success.result == 'success'
|
|
318
|
-
steps:
|
|
319
|
-
- name: Check out repository
|
|
320
|
-
uses: actions/checkout@v6
|
|
321
|
-
with:
|
|
322
|
-
fetch-depth: 0
|
|
323
|
-
|
|
324
|
-
- name: Set up Python
|
|
325
|
-
uses: actions/setup-python@v6
|
|
326
|
-
with:
|
|
327
|
-
python-version: "3.12"
|
|
328
|
-
cache: pip
|
|
329
|
-
|
|
330
|
-
- name: Install just and tmux
|
|
331
|
-
run: |
|
|
332
|
-
sudo apt-get update
|
|
333
|
-
sudo apt-get install -y just tmux
|
|
334
|
-
|
|
335
|
-
- name: Set up local environment
|
|
336
|
-
run: just setup
|
|
337
|
-
|
|
338
|
-
- name: Show Docker environment
|
|
339
|
-
run: docker info
|
|
340
|
-
|
|
341
|
-
- name: Run runtime tools E2E tests
|
|
342
|
-
run: just test-e2e-runtime-tools
|
|
343
|
-
|
|
344
|
-
- name: Upload session artifacts
|
|
345
|
-
if: failure()
|
|
346
|
-
uses: actions/upload-artifact@v7
|
|
347
|
-
with:
|
|
348
|
-
name: session-instances-e2e-runtime-tools
|
|
349
|
-
path: session-instances/
|
|
350
|
-
if-no-files-found: ignore
|
|
351
|
-
|
|
352
|
-
e2e-concurrency:
|
|
353
|
-
name: e2e-concurrency
|
|
354
|
-
runs-on: ubuntu-latest
|
|
355
|
-
timeout-minutes: 90
|
|
356
|
-
needs: preflight-success
|
|
357
|
-
if: always() && !cancelled() && needs.preflight-success.result == 'success'
|
|
358
|
-
steps:
|
|
359
|
-
- name: Check out repository
|
|
360
|
-
uses: actions/checkout@v6
|
|
361
|
-
with:
|
|
362
|
-
fetch-depth: 0
|
|
363
|
-
|
|
364
|
-
- name: Set up Python
|
|
365
|
-
uses: actions/setup-python@v6
|
|
366
|
-
with:
|
|
367
|
-
python-version: "3.12"
|
|
368
|
-
cache: pip
|
|
369
|
-
|
|
370
|
-
- name: Install just and tmux
|
|
371
|
-
run: |
|
|
372
|
-
sudo apt-get update
|
|
373
|
-
sudo apt-get install -y just tmux
|
|
374
|
-
|
|
375
|
-
- name: Set up local environment
|
|
376
|
-
run: just setup
|
|
377
|
-
|
|
378
|
-
- name: Show Docker environment
|
|
379
|
-
run: docker info
|
|
380
|
-
|
|
381
|
-
- name: Run concurrency E2E tests
|
|
382
|
-
run: just test-e2e-concurrency
|
|
383
|
-
|
|
384
|
-
- name: Upload session artifacts
|
|
385
|
-
if: failure()
|
|
386
|
-
uses: actions/upload-artifact@v7
|
|
387
|
-
with:
|
|
388
|
-
name: session-instances-e2e-concurrency
|
|
389
|
-
path: session-instances/
|
|
390
|
-
if-no-files-found: ignore
|
|
205
|
+
strategy:
|
|
206
|
+
fail-fast: false
|
|
207
|
+
matrix:
|
|
208
|
+
slice: [core, transforms, remote-assist, runtime-tools, concurrency, media]
|
|
391
209
|
|
|
392
|
-
e2e-media:
|
|
393
|
-
name: e2e-media
|
|
394
|
-
runs-on: ubuntu-latest
|
|
395
|
-
timeout-minutes: 90
|
|
396
|
-
needs: preflight-success
|
|
397
|
-
if: always() && !cancelled() && needs.preflight-success.result == 'success'
|
|
398
210
|
steps:
|
|
399
211
|
- name: Check out repository
|
|
400
212
|
uses: actions/checkout@v6
|
|
@@ -418,14 +230,14 @@ jobs:
|
|
|
418
230
|
- name: Show Docker environment
|
|
419
231
|
run: docker info
|
|
420
232
|
|
|
421
|
-
- name: Run
|
|
422
|
-
run: just test-e2e-
|
|
233
|
+
- name: Run E2E slice
|
|
234
|
+
run: just test-e2e-slice ${{ matrix.slice }}
|
|
423
235
|
|
|
424
236
|
- name: Upload session artifacts
|
|
425
237
|
if: failure()
|
|
426
238
|
uses: actions/upload-artifact@v7
|
|
427
239
|
with:
|
|
428
|
-
name: session-instances-e2e
|
|
240
|
+
name: session-instances-e2e-${{ matrix.slice }}
|
|
429
241
|
path: session-instances/
|
|
430
242
|
if-no-files-found: ignore
|
|
431
243
|
|
|
@@ -439,12 +251,7 @@ jobs:
|
|
|
439
251
|
- merge-lightweight
|
|
440
252
|
- package
|
|
441
253
|
- preflight-success
|
|
442
|
-
- e2e
|
|
443
|
-
- e2e-transforms
|
|
444
|
-
- e2e-remote-assist
|
|
445
|
-
- e2e-runtime-tools
|
|
446
|
-
- e2e-concurrency
|
|
447
|
-
- e2e-media
|
|
254
|
+
- e2e
|
|
448
255
|
if: always() && (github.event_name != 'pull_request' || github.event.pull_request.draft == false)
|
|
449
256
|
|
|
450
257
|
steps:
|
|
@@ -474,24 +281,8 @@ jobs:
|
|
|
474
281
|
echo "preflight-success failed or was skipped: ${{ needs.preflight-success.result }}"
|
|
475
282
|
exit 1
|
|
476
283
|
fi
|
|
477
|
-
if [[ "${{ needs.e2e
|
|
478
|
-
echo "e2e
|
|
479
|
-
exit 1
|
|
480
|
-
fi
|
|
481
|
-
if [[ "${{ needs.e2e-transforms.result }}" != "success" ]]; then
|
|
482
|
-
echo "e2e-transforms failed or was skipped: ${{ needs.e2e-transforms.result }}"
|
|
483
|
-
exit 1
|
|
484
|
-
fi
|
|
485
|
-
if [[ "${{ needs.e2e-remote-assist.result }}" != "success" ]]; then
|
|
486
|
-
echo "e2e-remote-assist failed or was skipped: ${{ needs.e2e-remote-assist.result }}"
|
|
487
|
-
exit 1
|
|
488
|
-
fi
|
|
489
|
-
if [[ "${{ needs.e2e-runtime-tools.result }}" != "success" ]]; then
|
|
490
|
-
echo "e2e-runtime-tools failed or was skipped: ${{ needs.e2e-runtime-tools.result }}"
|
|
491
|
-
exit 1
|
|
492
|
-
fi
|
|
493
|
-
if [[ "${{ needs.e2e-concurrency.result }}" != "success" ]]; then
|
|
494
|
-
echo "e2e-concurrency failed or was skipped: ${{ needs.e2e-concurrency.result }}"
|
|
284
|
+
if [[ "${{ needs.e2e.result }}" != "success" ]]; then
|
|
285
|
+
echo "one or more e2e slices failed or were skipped: ${{ needs.e2e.result }}"
|
|
495
286
|
exit 1
|
|
496
287
|
fi
|
|
497
288
|
echo "ci-success passed"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rosotacom-dev
|
|
3
|
-
Version: 2.5.
|
|
3
|
+
Version: 2.5.dev16
|
|
4
4
|
Summary: Host CLI for ROS OTA communication sessions.
|
|
5
5
|
Author: develNor
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -778,6 +778,26 @@ performance bands in `budgets.jsonl` via `rosotacom benchmark compare`, and
|
|
|
778
778
|
bands move only through `rosotacom benchmark ratchet` — see
|
|
779
779
|
[docs/performance-bands.md](docs/performance-bands.md) for the band schema,
|
|
780
780
|
verdicts, and the ratchet workflow (RFC 0007).
|
|
781
|
+
|
|
782
|
+
Two result sets taken in **different environments** — emulated versus a real
|
|
783
|
+
link, or shaped versus unshaped — are compared with `rosotacom benchmark delta`:
|
|
784
|
+
|
|
785
|
+
```bash
|
|
786
|
+
rosotacom benchmark delta emulated/ ota/ \
|
|
787
|
+
--label-reference emulated --label-measured ota \
|
|
788
|
+
--out delta.json --markdown delta.md
|
|
789
|
+
```
|
|
790
|
+
|
|
791
|
+
It pairs runs on genre, profile, RMW and session name, so a row that ran in one
|
|
792
|
+
environment and not the other is reported as unmatched rather than silently
|
|
793
|
+
dropped — "it got faster" and "it did not run" must not look the same. Every
|
|
794
|
+
report is labelled `monitor_only` and carries each side's command and profile
|
|
795
|
+
file, so a table pasted into a paper or an issue can be traced back without the
|
|
796
|
+
directory it came from.
|
|
797
|
+
|
|
798
|
+
It exits 0 whatever the numbers say, and non-zero only when the two sets share
|
|
799
|
+
no rows at all — a delta is an observation to explain, and an exit code would
|
|
800
|
+
turn "explain this" into "re-run until it is quiet".
|
|
781
801
|
For live benchmark probes, `--duration` is the shaped publish window; after that
|
|
782
802
|
rosotacom stops synthetic publishers and waits `--drain-s` seconds before
|
|
783
803
|
tearing down shaping, so delayed in-flight messages are not miscounted as loss.
|
|
@@ -733,6 +733,26 @@ performance bands in `budgets.jsonl` via `rosotacom benchmark compare`, and
|
|
|
733
733
|
bands move only through `rosotacom benchmark ratchet` — see
|
|
734
734
|
[docs/performance-bands.md](docs/performance-bands.md) for the band schema,
|
|
735
735
|
verdicts, and the ratchet workflow (RFC 0007).
|
|
736
|
+
|
|
737
|
+
Two result sets taken in **different environments** — emulated versus a real
|
|
738
|
+
link, or shaped versus unshaped — are compared with `rosotacom benchmark delta`:
|
|
739
|
+
|
|
740
|
+
```bash
|
|
741
|
+
rosotacom benchmark delta emulated/ ota/ \
|
|
742
|
+
--label-reference emulated --label-measured ota \
|
|
743
|
+
--out delta.json --markdown delta.md
|
|
744
|
+
```
|
|
745
|
+
|
|
746
|
+
It pairs runs on genre, profile, RMW and session name, so a row that ran in one
|
|
747
|
+
environment and not the other is reported as unmatched rather than silently
|
|
748
|
+
dropped — "it got faster" and "it did not run" must not look the same. Every
|
|
749
|
+
report is labelled `monitor_only` and carries each side's command and profile
|
|
750
|
+
file, so a table pasted into a paper or an issue can be traced back without the
|
|
751
|
+
directory it came from.
|
|
752
|
+
|
|
753
|
+
It exits 0 whatever the numbers say, and non-zero only when the two sets share
|
|
754
|
+
no rows at all — a delta is an observation to explain, and an exit code would
|
|
755
|
+
turn "explain this" into "re-run until it is quiet".
|
|
736
756
|
For live benchmark probes, `--duration` is the shaped publish window; after that
|
|
737
757
|
rosotacom stops synthetic publishers and waits `--drain-s` seconds before
|
|
738
758
|
tearing down shaping, so delayed in-flight messages are not miscounted as loss.
|
|
@@ -38,34 +38,34 @@ test-nondocker-cov:
|
|
|
38
38
|
{{python}} -m pytest -q tests/unit tests/contract --cov=rosotacom --cov-report=term-missing --cov-report=xml:coverage.xml
|
|
39
39
|
|
|
40
40
|
test-e2e-smoke:
|
|
41
|
-
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q tests/e2e/ -m e2e
|
|
41
|
+
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q --durations=0 tests/e2e/ -m e2e
|
|
42
42
|
|
|
43
43
|
test-e2e-fast: test-e2e-smoke
|
|
44
44
|
|
|
45
45
|
test-e2e-core:
|
|
46
|
-
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q tests/e2e/test_smoke.py -k "heartbeat or chatter"
|
|
46
|
+
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q --durations=0 tests/e2e/test_smoke.py -k "heartbeat or chatter"
|
|
47
47
|
|
|
48
48
|
test-e2e-transforms:
|
|
49
|
-
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q tests/e2e/test_smoke.py -k "occupancy_grid or sized_payload"
|
|
49
|
+
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q --durations=0 tests/e2e/test_smoke.py -k "occupancy_grid or sized_payload"
|
|
50
50
|
|
|
51
51
|
test-e2e-remote-assist:
|
|
52
|
-
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q tests/e2e/test_smoke.py -k "remote_assist"
|
|
52
|
+
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q --durations=0 tests/e2e/test_smoke.py -k "remote_assist"
|
|
53
53
|
|
|
54
54
|
# Two invocations on purpose: a shared `-k` filter would silently deselect
|
|
55
55
|
# every test in the other files (contract-tested in test_benched_set_registry).
|
|
56
56
|
test-e2e-runtime-tools:
|
|
57
|
-
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q tests/e2e/test_smoke.py -k "link_latency"
|
|
58
|
-
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q tests/e2e/test_timeline_stepping.py tests/e2e/test_benchmark_capacity.py tests/e2e/test_benchmark_ab.py tests/e2e/test_benchmark_replay.py
|
|
57
|
+
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q --durations=0 tests/e2e/test_smoke.py -k "link_latency"
|
|
58
|
+
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q --durations=0 tests/e2e/test_timeline_stepping.py tests/e2e/test_benchmark_capacity.py tests/e2e/test_benchmark_ab.py tests/e2e/test_benchmark_replay.py
|
|
59
59
|
|
|
60
60
|
# The remaining e2e files. Without this slice the partition is not one: the
|
|
61
61
|
# monolithic `test-e2e-smoke` collects 28 tests, the other five collect 25, and
|
|
62
62
|
# anonymization/video-quality/replay ran only in nightly and the release.
|
|
63
63
|
test-e2e-media:
|
|
64
|
-
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q tests/e2e/test_anonymize_e2e.py tests/e2e/test_video_quality_e2e.py
|
|
65
|
-
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q tests/e2e/test_smoke.py -k "anonymized"
|
|
64
|
+
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q --durations=0 tests/e2e/test_anonymize_e2e.py tests/e2e/test_video_quality_e2e.py
|
|
65
|
+
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q --durations=0 tests/e2e/test_smoke.py -k "anonymized"
|
|
66
66
|
|
|
67
67
|
test-e2e-concurrency:
|
|
68
|
-
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q tests/e2e/test_parallel_smoke.py
|
|
68
|
+
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q --durations=0 tests/e2e/test_parallel_smoke.py
|
|
69
69
|
|
|
70
70
|
# The five slices partition `test-e2e-smoke`; the merge gate and the release
|
|
71
71
|
# both run them in parallel. This wrapper exists so a workflow matrix can select
|
|
@@ -77,7 +77,7 @@ test-e2e-slice slice:
|
|
|
77
77
|
just test-e2e-{{slice}}
|
|
78
78
|
|
|
79
79
|
test-e2e-node nodeid:
|
|
80
|
-
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q "{{nodeid}}"
|
|
80
|
+
ROSOTACOM_RUN_E2E=1 {{python}} -m pytest -q --durations=0 "{{nodeid}}"
|
|
81
81
|
|
|
82
82
|
test-e2e-rmw session:
|
|
83
83
|
ROSOTACOM_RUN_E2E=1 ROSOTACOM_RUN_FULL_E2E=1 {{python}} -m pytest -q "tests/e2e/test_smoke.py::test_full_rmw_heartbeat_smoke_matrix[{{session}}]"
|
|
@@ -417,17 +417,22 @@ message types for `/com/...` topics. For that reason, user-defined topic entries
|
|
|
417
417
|
The auto-generated heartbeat topic is the only exception because its type is known by the generator.
|
|
418
418
|
|
|
419
419
|
#### Allowed `processing` keys
|
|
420
|
-
Only these keys are allowed
|
|
420
|
+
Only these keys are allowed. The list is checked against the generator's
|
|
421
|
+
`KNOWN_PROCESSING_KEYS` by `tests/contract/test_session_configuration_doc.py`,
|
|
422
|
+
so a new knob cannot ship undocumented.
|
|
421
423
|
|
|
422
424
|
```yaml
|
|
423
425
|
processing:
|
|
424
426
|
restamp_if: true # bool OR common bool strings OR "<VAR_NAME>" (template param name)
|
|
427
|
+
latch: false # bool, re-publish on value change only
|
|
428
|
+
trickle_hz: 1 # number > 0, receiver-side periodic re-publish
|
|
425
429
|
drop: # optional, message drop configuration
|
|
426
430
|
drop_count: 2 # int >= 0, number of messages to drop
|
|
427
431
|
window_size: 3 # int > 0, window size (drop_count must be < window_size)
|
|
428
432
|
framebridge: local_to_global # local_to_global | global_to_local
|
|
429
433
|
normalize_on_target: false # bool
|
|
430
434
|
compress: false # bool
|
|
435
|
+
use_ota_wrapper: false # bool, wrap the payload for the OTA hop
|
|
431
436
|
throttle_hz: 10 # int > 0
|
|
432
437
|
pixel_cap_preset: "wsvga" # scalar, used as suffix only,
|
|
433
438
|
transport:
|
|
@@ -436,6 +441,37 @@ processing:
|
|
|
436
441
|
# plus type-specific params (see below)
|
|
437
442
|
```
|
|
438
443
|
|
|
444
|
+
##### `latch` and `trickle_hz`: two answers to "the value did not change"
|
|
445
|
+
|
|
446
|
+
Both address a topic that publishes rarely, and they sit on opposite ends of
|
|
447
|
+
the link:
|
|
448
|
+
|
|
449
|
+
- **`latch` is a sender-side filter.** The latch stage forwards a message only
|
|
450
|
+
when its value differs from the last one, to `<topic>{shared.processing_suffixes.latched}`
|
|
451
|
+
(default `/latched`). It saves OTA bandwidth on a state topic that repeats
|
|
452
|
+
itself. Its cost is that a receiver which subscribes *after* the last change
|
|
453
|
+
gets nothing — what the delivered value is then depends entirely on the OTA
|
|
454
|
+
QoS for the role (`depth`, `lifespan`, `durability`).
|
|
455
|
+
- **`trickle_hz` is a receiver-side re-publish.** A local timer republishes the
|
|
456
|
+
last *delivered* value to `<final>/trickle` at that rate, whether or not
|
|
457
|
+
anything new arrived. Nothing extra crosses the link: the trickle topic is
|
|
458
|
+
not in the OTA topic lists. It exists for consumers that expect a steady
|
|
459
|
+
stream — visualization, state diagrams, watchdogs — and would otherwise treat
|
|
460
|
+
an unchanged value as a dead one.
|
|
461
|
+
|
|
462
|
+
They compose: `latch: true` with `trickle_hz: 1` sends a message only on change
|
|
463
|
+
and still gives the receiving side a 1 Hz stream.
|
|
464
|
+
|
|
465
|
+
Because the trickle output is the real delivered topic, it is the monitored
|
|
466
|
+
`native_in` stage rather than the pre-trickle `final` — otherwise the
|
|
467
|
+
re-publish would be an observability blind spot whose rate no `expect` could
|
|
468
|
+
assert. `expect.hz` on such a topic therefore describes the trickle rate plus
|
|
469
|
+
whatever arrives over the link, which is why `examples/sessions/11_trickle`
|
|
470
|
+
asserts `hz: {min: 2, max: 8}` for a 1 Hz source at `trickle_hz: 4`.
|
|
471
|
+
|
|
472
|
+
`trickle_hz` must be greater than 0. It also sets the expected rate for a topic
|
|
473
|
+
that has no `throttle_hz`.
|
|
474
|
+
|
|
439
475
|
#### Processing pipeline order (exact)
|
|
440
476
|
Given a base topic like `/tf`, stages are applied in this order:
|
|
441
477
|
|