rosotacom-dev 2.5.dev2__tar.gz → 2.5.dev4__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.dev2 → rosotacom_dev-2.5.dev4}/PKG-INFO +1 -1
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/cli.py +14 -2
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/session/content/base/session_plugin_base.yaml +5 -5
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom_dev.egg-info/PKG-INFO +1 -1
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom_dev.egg-info/scm_version.json +2 -2
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_cli.py +59 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.devcontainer/devcontainer.json.template +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.devcontainer/re_generate_devcontainer_json.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/CODEOWNERS +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/ISSUE_TEMPLATE/documentation-audit.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/ISSUE_TEMPLATE/implementation-cleanup.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/ISSUE_TEMPLATE/quality-workflow.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/ISSUE_TEMPLATE/redesign.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/ISSUE_TEMPLATE/release-process.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/ISSUE_TEMPLATE/repository-diagnosis.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/ISSUE_TEMPLATE/test-ci-audit.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/ISSUE_TEMPLATE/work-item.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/dependabot.yml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/workflows/benchmark-calibrate.yml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/workflows/benchmark-gate.yml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/workflows/dev-release.yml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/workflows/image-scan.yml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/workflows/nightly-e2e.yml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/workflows/pr-lightweight.yml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/workflows/pr-merge-gate.yml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/workflows/release.yml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.pre-commit-config.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/AGENTS.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/CONCURRENCY.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/CONTRIBUTING.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/DEVELOPMENT_PRINCIPLES.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/MANIFEST.in +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/README.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/budgets.jsonl +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/calibration/README.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/calibration/capacity-size-tight-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/calibration/probe-loss-gop-tight-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/calibration/probe-loss-nominal-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/calibration/probe-loss-tight-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/calibration/probe-loss-tight-fastdds.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/calibration/probe-loss-tight-zenoh.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/codecov.yml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/deployment-configuration.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/benchmark-ab.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/benchmark-bag-as-load.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/ci.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/ffmpeg-keyframes.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/findings/README.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/findings/cyclone-spdp-discovery-bursts.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/findings/delay-alone-no-loss.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/findings/head-of-line-irregularity.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/findings/jitter-loss-bandwidth-latency.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/findings/lighter-message-loss.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/findings/zero-loss-boundaries-18kb-20hz.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/forensics-report.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/geo-link-map.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/github-repository-settings.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/link-trace.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/owner-runbook.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/performance-bands.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/playbooks/README.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/quality-model.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/release-notes/TEMPLATE.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/release-notes/v2.1.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/release-notes/v2.2.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/release-notes/v2.3.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/release-notes/v2.4.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/release.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/rfcs/0001-expectation-driven-test-suite.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/rfcs/0002-expectation-concepts.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/rfcs/0003-metric-backbone.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/rfcs/0004-network-profiles.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/rfcs/0005-benchmark-genres-and-ci.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/rfcs/0006-dynamic-qos.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/rfcs/0007-regression-gate.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/rfcs/README.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/testing.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/work-items.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/install.sh +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/justfile +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/media/control_center.png +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/media/echo_test.png +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/media/forensics-report-example.png +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/media/host.png +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/media/vehicle.png +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/pyproject.toml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/requirements.txt +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/rosotacom.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/run_session_in_container.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/session-configuration.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/setup.cfg +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/__init__.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/__main__.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/anonymize.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/bag_ground_truth.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/benched_set.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/benchmark.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/bundle_check.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/cli_benchmark.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/deployment.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/ffmpeg_packet.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/forensics.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/geomap.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/network_profiles.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/network_shaper.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/plots.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/py.typed +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/benched-set.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/.gitignore +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/README.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/__init__.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/bags/8_drop_reference/metadata.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/deployment.example.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/profiles.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/rosotacom.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scenarios/2_native_chatter/scenario-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/1_heartbeat/run_machine_a.sh +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/1_heartbeat/run_machine_b.sh +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/wait_for_echo_topic.sh +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/foxglove.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/costmap_1second/costmap_1second_0.mcap +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/costmap_1second/metadata.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/foxglove.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/costmap_1second/costmap_1second_0.mcap +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/costmap_1second/metadata.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/10_restamp/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/11_trickle/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/12_content_integrity/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/13_link_latency/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/14_remote_assist_anonymized/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/15_remote_assist_anonymized_costmap/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/16_remote_assist_anonymized_camera/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/17_synthetic_camera_quality/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/1_heartbeat/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/1_heartbeat_status/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/2_native_chatter/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/3_comp_occ_grid/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/4_comp_occ_grid_zen/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/5_sized_payload/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/6_sized_payload_zen/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/7_latched_static/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/8_drop/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/9_throttle/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/bench_1_1_capacity/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/bench_1_2_load_sweep/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/bench_1_3_ramp/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/bench_1_4_recovery/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/sessions/bench_1_5_camera/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ros2docker.json.example +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/.vscode/c_cpp_properties.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/.vscode/settings.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_easy_mode.xml.template +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_initial_peer_list.xml.template +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v2.xml.template +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v3.xml.template +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v4.xml.template +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v5.xml.template +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ota_configs/create_zenoh_json5.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ota_configs/cyclonedds_minimal.xml.template +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ota_configs/cyclonedds_tuned.xml.template +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ota_configs/fastdds_unicast.xml.template +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ota_configs/get_ota_xml.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ota_configs/utils.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ota_configs/zenoh.json5.template +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/.gitkeep +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_cpp/CMakeLists.txt +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_cpp/COLCON_IGNORE +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_cpp/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_cpp/package.xml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_cpp/src/hz_monitor.cpp +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_cpp/src/universal_compressor.cpp +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_cpp/src/universal_decompressor.cpp +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_msgs/CMakeLists.txt +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_msgs/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/CompressedData.msg +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/EchoHeartbeat.msg +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/OtaStamped.msg +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/SizedPayload.msg +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_msgs/package.xml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/__init__.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/base_bridge_relay.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/bridge_in.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/bridge_out.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/heartbeat_echo.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/hz_monitor.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/image_bandwidth_reducer.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/image_pixel_capper.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/lanelet_saver.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/latch_relay.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/costmap_remapper.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/marker_remapper.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/speed_test.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/tf_remapper.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/traffic_monitor.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/wifi_network_analysis_1.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/link_bytes.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/link_trace.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/local_global_frame_bridge.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/localization_map_split_reduce_saver.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/msg_transform.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/pair_management.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/pub_sub_pair.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/qos.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/relay_in.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/relay_out.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/restamp.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/sized_publisher.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/stage_latency.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/stage_latency_core.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/status_overview.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/status_overview_core.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/tf_map_to_cart_saver.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/topic_monitor.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/topic_resolution.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/trickle.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_compressor.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_decompressor.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_ota_unwrapper.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_ota_wrapper.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/package.xml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/resource/com_py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/setup.cfg +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/setup.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/test/test_copyright.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/test/test_flake8.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/ros2src/com_py/test/test_pep257.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/session/content/network/up_connectivity.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/session/content/network/wifi_network_analysis_2.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/session/creation/anonymize_bag.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/session/creation/catmux_log_setup.sh +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/session/creation/create_session_yaml.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/session/creation/generate_session_files.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/session/creation/run_session.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/session/creation/run_session_in_external_terminal.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/ws/session/creation/strip_ansi.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/status_eval.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/stream_stats.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/trace_profiles.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/transit.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/video_quality.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom_dev.egg-info/SOURCES.txt +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom_dev.egg-info/dependency_links.txt +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom_dev.egg-info/entry_points.txt +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom_dev.egg-info/requires.txt +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom_dev.egg-info/scm_file_list.json +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom_dev.egg-info/top_level.txt +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/stop_session_in_container.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/terminology.md +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/contract/test_benched_set_registry.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/contract/test_findings.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/contract/test_markdown_links.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/contract/test_ota_source_bundle.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/contract/test_package_metadata.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/contract/test_packaged_resources.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/contract/test_profile_covers_generated_commands.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/contract/test_pytest_policy.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/contract/test_readme_examples.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/contract/test_security_maintenance_config.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/contract/test_workflow_contracts.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/e2e/conftest.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/e2e/test_anonymize_e2e.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/e2e/test_benchmark_ab.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/e2e/test_benchmark_capacity.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/e2e/test_benchmark_replay.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/e2e/test_parallel_smoke.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/e2e/test_smoke.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/e2e/test_timeline_stepping.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/e2e/test_video_quality_e2e.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/sessions/generate_rmw_matrix.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-local_zenoh-ros2dds-ota/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-ota/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-ota-tuned/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/sessions/rmw_matrix/1_heartbeat_fastdds/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/sessions/rmw_matrix/1_heartbeat_zen-endpoints/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_anonymize.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_bag_ground_truth.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_benched_set.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_benchmark.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_bundle_check.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_cli_benchmark.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_concurrency.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_deployment.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_ffmpeg_packet.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_forensics.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_geomap.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_link_bytes.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_link_trace.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_network_profiles.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_network_shaper.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_ota_xml.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_plots.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_stage_latency.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_status_eval.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_status_overview.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_stream_stats.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_trace_profiles.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_transit.py +0 -0
- {rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/tests/unit/test_video_quality.py +0 -0
|
@@ -98,7 +98,19 @@ SESSION_CONFIG_CONTAINER_DIR = "/session/configs"
|
|
|
98
98
|
SESSION_DEFINITION_CONTAINER_DIR = "/session/definitions"
|
|
99
99
|
SESSION_INSTANCE_CONTAINER_DIR = "/session/instances"
|
|
100
100
|
EXTERNAL_SESSION_CONTAINER_DIR = "/session/current"
|
|
101
|
-
|
|
101
|
+
# Run through the interpreter, never as a bare path. `docker exec` on a bare
|
|
102
|
+
# path relies on the file's executable bit, and a wheel does not carry
|
|
103
|
+
# executable bits for package data: the bit is present in a checkout and gone
|
|
104
|
+
# after an install. Every packaged machine therefore failed with
|
|
105
|
+
# `exec: "/ws/session/creation/run_session.py": permission denied` and exit 126,
|
|
106
|
+
# while the development laptop — an editable install over the checkout — worked.
|
|
107
|
+
# That is the one shape no test exercised, and the only shape a control centre,
|
|
108
|
+
# a vehicle or a bench machine ever runs.
|
|
109
|
+
#
|
|
110
|
+
# Not relying on the bit beats making the bit survive packaging: one is a
|
|
111
|
+
# property of this command, the other a property of every tool in the chain.
|
|
112
|
+
# `anonymize_bag.py` two thousand lines below already does it this way.
|
|
113
|
+
RUN_SESSION_CONTAINER_ARGV = ("python3", "/ws/session/creation/run_session.py")
|
|
102
114
|
DEFAULT_SMOKE_SESSION = "1_heartbeat"
|
|
103
115
|
OTA_SUDO_MODES = ("passwordless", "askpass")
|
|
104
116
|
|
|
@@ -4299,7 +4311,7 @@ def _session_command(
|
|
|
4299
4311
|
link_trace_modem_command: str | None = None,
|
|
4300
4312
|
) -> list[str]:
|
|
4301
4313
|
parts = [
|
|
4302
|
-
|
|
4314
|
+
*RUN_SESSION_CONTAINER_ARGV,
|
|
4303
4315
|
"--session-dir",
|
|
4304
4316
|
session.container_dir,
|
|
4305
4317
|
"--output-dir",
|
|
@@ -243,7 +243,7 @@ common:
|
|
|
243
243
|
before_commands:
|
|
244
244
|
- if [ '${local_domain_id}' != "None" ] && [ -n '${local_domain_id}' ]; then export ROS_DOMAIN_ID='${local_domain_id}'; fi
|
|
245
245
|
- if [ '${rmw_local}' != "None" ]; then case ${rmw_local} in cyclone) export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp;; fastdds) export RMW_IMPLEMENTATION=rmw_fastrtps_cpp; export FASTDDS_BUILTIN_TRANSPORTS=${FASTDDS_BUILTIN_TRANSPORTS:-UDPv4};; zenoh) export RMW_IMPLEMENTATION=rmw_zenoh_cpp;; *) export RMW_IMPLEMENTATION='${rmw_local}';; esac; fi
|
|
246
|
-
- if [ '${local_config_template}' != "None" ] && [ -n '${local_config_template}' ]; then local_args=(--config "${local_config_template}" --host-ip "${ip_local}" --peer "${ip_remote}"); [ '${local_easy_mode_ip}' != "None" ] && [ -n '${local_easy_mode_ip}' ] && local_args+=(--easy-mode-ip "${local_easy_mode_ip}"); [ '${local_spdp_interval}' != "None" ] && [ -n '${local_spdp_interval}' ] && local_args+=(--spdp-interval "${local_spdp_interval}"); /ws/ota_configs/get_ota_xml.py "${local_args[@]}" > "${local_config_file}"; case ${rmw_local} in cyclone) export CYCLONEDDS_URI="file://${local_config_file}";; fastdds) export FASTDDS_DEFAULT_PROFILES_FILE="${local_config_file}"; export RMW_FASTRTPS_USE_QOS_FROM_XML=1;; esac; fi
|
|
246
|
+
- if [ '${local_config_template}' != "None" ] && [ -n '${local_config_template}' ]; then local_args=(--config "${local_config_template}" --host-ip "${ip_local}" --peer "${ip_remote}"); [ '${local_easy_mode_ip}' != "None" ] && [ -n '${local_easy_mode_ip}' ] && local_args+=(--easy-mode-ip "${local_easy_mode_ip}"); [ '${local_spdp_interval}' != "None" ] && [ -n '${local_spdp_interval}' ] && local_args+=(--spdp-interval "${local_spdp_interval}"); python3 /ws/ota_configs/get_ota_xml.py "${local_args[@]}" > "${local_config_file}"; case ${rmw_local} in cyclone) export CYCLONEDDS_URI="file://${local_config_file}";; fastdds) export FASTDDS_DEFAULT_PROFILES_FILE="${local_config_file}"; export RMW_FASTRTPS_USE_QOS_FROM_XML=1;; esac; fi
|
|
247
247
|
- if [ '${before_command}' != "None" ]; then ${before_command}; fi
|
|
248
248
|
|
|
249
249
|
windows:
|
|
@@ -254,7 +254,7 @@ windows:
|
|
|
254
254
|
- commands:
|
|
255
255
|
- if [ '${ota_domain_id}' != "None" ] && [ -n '${ota_domain_id}' ]; then export ROS_DOMAIN_ID='${ota_domain_id}'; fi
|
|
256
256
|
- export RUST_LOG=zenoh=debug,zenoh_bridge_ros2dds=debug
|
|
257
|
-
- /ws/ota_configs/create_zenoh_json5.py -m ${zen_mode} -e ${zen_endpoint_role} -t ${zen_transport} -i ${zen_main_ip} -r ${zen_main_port} -p ${zen_pub_allow} -s ${zen_sub_allow} -q '${zen_qos_pub}' -f ${zen_config_file}
|
|
257
|
+
- python3 /ws/ota_configs/create_zenoh_json5.py -m ${zen_mode} -e ${zen_endpoint_role} -t ${zen_transport} -i ${zen_main_ip} -r ${zen_main_port} -p ${zen_pub_allow} -s ${zen_sub_allow} -q '${zen_qos_pub}' -f ${zen_config_file}
|
|
258
258
|
- zenohd -c ${zen_config_file}
|
|
259
259
|
# Debugging commands:
|
|
260
260
|
# - zenohd -c ${zen_config_file} --rest-http-port 8000 2>&1 | tee ${zen_config_file}.log
|
|
@@ -277,7 +277,7 @@ windows:
|
|
|
277
277
|
if: use_domain_bridge
|
|
278
278
|
splits:
|
|
279
279
|
- commands:
|
|
280
|
-
- if [ '${ota_config_template}' != "None" ] && [ -n '${ota_config_template}' ]; then ota_args=(--config "${ota_config_template}" --host-ip "${ip_local}" --peer "${ip_remote}"); [ '${ota_easy_mode_ip}' != "None" ] && [ -n '${ota_easy_mode_ip}' ] && ota_args+=(--easy-mode-ip "${ota_easy_mode_ip}"); [ '${ota_spdp_interval}' != "None" ] && [ -n '${ota_spdp_interval}' ] && ota_args+=(--spdp-interval "${ota_spdp_interval}"); /ws/ota_configs/get_ota_xml.py "${ota_args[@]}" > "${ota_config_file}"; case ${rmw_ota} in cyclone) export CYCLONEDDS_URI="file://${ota_config_file}";; fastdds) export FASTDDS_DEFAULT_PROFILES_FILE="${ota_config_file}"; export RMW_FASTRTPS_USE_QOS_FROM_XML=1;; esac; fi
|
|
280
|
+
- if [ '${ota_config_template}' != "None" ] && [ -n '${ota_config_template}' ]; then ota_args=(--config "${ota_config_template}" --host-ip "${ip_local}" --peer "${ip_remote}"); [ '${ota_easy_mode_ip}' != "None" ] && [ -n '${ota_easy_mode_ip}' ] && ota_args+=(--easy-mode-ip "${ota_easy_mode_ip}"); [ '${ota_spdp_interval}' != "None" ] && [ -n '${ota_spdp_interval}' ] && ota_args+=(--spdp-interval "${ota_spdp_interval}"); python3 /ws/ota_configs/get_ota_xml.py "${ota_args[@]}" > "${ota_config_file}"; case ${rmw_ota} in cyclone) export CYCLONEDDS_URI="file://${ota_config_file}";; fastdds) export FASTDDS_DEFAULT_PROFILES_FILE="${ota_config_file}"; export RMW_FASTRTPS_USE_QOS_FROM_XML=1;; esac; fi
|
|
281
281
|
- ros2 run domain_bridge domain_bridge --wait-for-publisher false ${domain_bridge_config_file}
|
|
282
282
|
- name: IN
|
|
283
283
|
if: in
|
|
@@ -285,7 +285,7 @@ windows:
|
|
|
285
285
|
- commands:
|
|
286
286
|
- if [ '${ota_domain_id}' != "None" ] && [ -n '${ota_domain_id}' ]; then export ROS_DOMAIN_ID='${ota_domain_id}'; fi
|
|
287
287
|
- case ${rmw_ota} in cyclone) export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp;; fastdds) export RMW_IMPLEMENTATION=rmw_fastrtps_cpp; export FASTDDS_BUILTIN_TRANSPORTS=${FASTDDS_BUILTIN_TRANSPORTS:-UDPv4};; zenoh) export RMW_IMPLEMENTATION=rmw_zenoh_cpp;; esac
|
|
288
|
-
- if [ '${ota_config_template}' != "None" ] && [ -n '${ota_config_template}' ]; then ota_args=(--config "${ota_config_template}" --host-ip "${ip_local}" --peer "${ip_remote}"); [ '${ota_easy_mode_ip}' != "None" ] && [ -n '${ota_easy_mode_ip}' ] && ota_args+=(--easy-mode-ip "${ota_easy_mode_ip}"); [ '${ota_spdp_interval}' != "None" ] && [ -n '${ota_spdp_interval}' ] && ota_args+=(--spdp-interval "${ota_spdp_interval}"); /ws/ota_configs/get_ota_xml.py "${ota_args[@]}" > "${ota_config_file}"; case ${rmw_ota} in cyclone) export CYCLONEDDS_URI="file://${ota_config_file}";; fastdds) export FASTDDS_DEFAULT_PROFILES_FILE="${ota_config_file}"; export RMW_FASTRTPS_USE_QOS_FROM_XML=1;; esac; fi
|
|
288
|
+
- if [ '${ota_config_template}' != "None" ] && [ -n '${ota_config_template}' ]; then ota_args=(--config "${ota_config_template}" --host-ip "${ip_local}" --peer "${ip_remote}"); [ '${ota_easy_mode_ip}' != "None" ] && [ -n '${ota_easy_mode_ip}' ] && ota_args+=(--easy-mode-ip "${ota_easy_mode_ip}"); [ '${ota_spdp_interval}' != "None" ] && [ -n '${ota_spdp_interval}' ] && ota_args+=(--spdp-interval "${ota_spdp_interval}"); python3 /ws/ota_configs/get_ota_xml.py "${ota_args[@]}" > "${ota_config_file}"; case ${rmw_ota} in cyclone) export CYCLONEDDS_URI="file://${ota_config_file}";; fastdds) export FASTDDS_DEFAULT_PROFILES_FILE="${ota_config_file}"; export RMW_FASTRTPS_USE_QOS_FROM_XML=1;; esac; fi
|
|
289
289
|
# For zenoh_ros2dds the OTA domain is loopback-only (zenoh is the inter-host
|
|
290
290
|
# transport), so confine discovery to localhost instead of statically peering
|
|
291
291
|
# the remote host — otherwise the OTA-domain DDS double-delivers alongside zenoh.
|
|
@@ -310,7 +310,7 @@ windows:
|
|
|
310
310
|
- commands:
|
|
311
311
|
- if [ '${ota_domain_id}' != "None" ] && [ -n '${ota_domain_id}' ]; then export ROS_DOMAIN_ID='${ota_domain_id}'; fi
|
|
312
312
|
- case ${rmw_ota} in cyclone) export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp;; fastdds) export RMW_IMPLEMENTATION=rmw_fastrtps_cpp; export FASTDDS_BUILTIN_TRANSPORTS=${FASTDDS_BUILTIN_TRANSPORTS:-UDPv4};; zenoh) export RMW_IMPLEMENTATION=rmw_zenoh_cpp;; esac
|
|
313
|
-
- if [ '${ota_config_template}' != "None" ] && [ -n '${ota_config_template}' ]; then ota_args=(--config "${ota_config_template}" --host-ip "${ip_local}" --peer "${ip_remote}"); [ '${ota_easy_mode_ip}' != "None" ] && [ -n '${ota_easy_mode_ip}' ] && ota_args+=(--easy-mode-ip "${ota_easy_mode_ip}"); [ '${ota_spdp_interval}' != "None" ] && [ -n '${ota_spdp_interval}' ] && ota_args+=(--spdp-interval "${ota_spdp_interval}"); /ws/ota_configs/get_ota_xml.py "${ota_args[@]}" > "${ota_config_file}"; case ${rmw_ota} in cyclone) export CYCLONEDDS_URI="file://${ota_config_file}";; fastdds) export FASTDDS_DEFAULT_PROFILES_FILE="${ota_config_file}"; export RMW_FASTRTPS_USE_QOS_FROM_XML=1;; esac; fi
|
|
313
|
+
- if [ '${ota_config_template}' != "None" ] && [ -n '${ota_config_template}' ]; then ota_args=(--config "${ota_config_template}" --host-ip "${ip_local}" --peer "${ip_remote}"); [ '${ota_easy_mode_ip}' != "None" ] && [ -n '${ota_easy_mode_ip}' ] && ota_args+=(--easy-mode-ip "${ota_easy_mode_ip}"); [ '${ota_spdp_interval}' != "None" ] && [ -n '${ota_spdp_interval}' ] && ota_args+=(--spdp-interval "${ota_spdp_interval}"); python3 /ws/ota_configs/get_ota_xml.py "${ota_args[@]}" > "${ota_config_file}"; case ${rmw_ota} in cyclone) export CYCLONEDDS_URI="file://${ota_config_file}";; fastdds) export FASTDDS_DEFAULT_PROFILES_FILE="${ota_config_file}"; export RMW_FASTRTPS_USE_QOS_FROM_XML=1;; esac; fi
|
|
314
314
|
# For zenoh_ros2dds the OTA domain is loopback-only (zenoh is the inter-host
|
|
315
315
|
# transport), so confine discovery to localhost instead of statically peering
|
|
316
316
|
# the remote host — otherwise the OTA-domain DDS double-delivers alongside zenoh.
|
|
@@ -1759,6 +1759,7 @@ def test_peer_binding_identity_and_command_helpers(tmp_path: Path, monkeypatch:
|
|
|
1759
1759
|
peer_address_overrides={"a": "10.0.0.1", "b": "10.0.0.2"},
|
|
1760
1760
|
attach_mode="attach",
|
|
1761
1761
|
) == [
|
|
1762
|
+
"python3",
|
|
1762
1763
|
"/ws/session/creation/run_session.py",
|
|
1763
1764
|
"--session-dir",
|
|
1764
1765
|
"/session/current",
|
|
@@ -1801,6 +1802,64 @@ def test_peer_binding_identity_and_command_helpers(tmp_path: Path, monkeypatch:
|
|
|
1801
1802
|
rosotacom._parse_peer_address_overrides(["a=1.1.1.1", "a=2.2.2.2"])
|
|
1802
1803
|
|
|
1803
1804
|
|
|
1805
|
+
def test_container_scripts_run_through_the_interpreter() -> None:
|
|
1806
|
+
"""No `docker exec` may depend on a file's executable bit.
|
|
1807
|
+
|
|
1808
|
+
A wheel does not carry executable bits for package data, so a bare script
|
|
1809
|
+
path works from a checkout and fails from an install with
|
|
1810
|
+
|
|
1811
|
+
exec: "/ws/session/creation/run_session.py": permission denied
|
|
1812
|
+
|
|
1813
|
+
and exit 126. That broke `rosotacom start` on every packaged machine —
|
|
1814
|
+
bench, control centre, vehicle — while the development laptop's editable
|
|
1815
|
+
install kept working, which is why it survived to a two-host bring-up on
|
|
1816
|
+
2026-08-09 before anyone saw it.
|
|
1817
|
+
|
|
1818
|
+
Asserted as a property rather than as one literal command, so a second
|
|
1819
|
+
script added later fails here instead of on a machine.
|
|
1820
|
+
|
|
1821
|
+
The first version of this test looked only at `cli.py`, and the session
|
|
1822
|
+
templates carried two more of exactly the same call — `get_ota_xml.py` and
|
|
1823
|
+
`create_zenoh_json5.py`. Those failed the same way and cost the same
|
|
1824
|
+
bring-up a second time: the redirect made the failure silent, leaving a
|
|
1825
|
+
zero-byte DDS profile, so the symptom was an unexplained XML parser error
|
|
1826
|
+
and an OTA layer that never came up. Anything that runs inside a container
|
|
1827
|
+
is in scope here, not just what `cli.py` spawns.
|
|
1828
|
+
"""
|
|
1829
|
+
assert rosotacom.RUN_SESSION_CONTAINER_ARGV[0] == "python3"
|
|
1830
|
+
assert rosotacom.RUN_SESSION_CONTAINER_ARGV[1].endswith("/run_session.py")
|
|
1831
|
+
|
|
1832
|
+
# The session content templates run commands in the container too, and a
|
|
1833
|
+
# failure there is worse than an exec error: the call is redirected into a
|
|
1834
|
+
# config file, so a non-executable script leaves an empty one and the next
|
|
1835
|
+
# component reports a parse error instead of a missing interpreter.
|
|
1836
|
+
content = Path(rosotacom.__file__).parent / "resources" / "ws" / "session" / "content"
|
|
1837
|
+
for template in sorted(content.rglob("*.yaml")):
|
|
1838
|
+
text = template.read_text(encoding="utf-8")
|
|
1839
|
+
for match in re.finditer(r"(?<![\w/])(/ws/[\w/.-]+\.py)", text):
|
|
1840
|
+
preceding = text[max(0, match.start() - 40) : match.start()]
|
|
1841
|
+
assert "python3 " in preceding, (
|
|
1842
|
+
f"{template.name}: {match.group(1)} is run by path. In a wheel "
|
|
1843
|
+
"install it is not executable, and here the output is "
|
|
1844
|
+
"redirected into a config file, so the failure is silent."
|
|
1845
|
+
)
|
|
1846
|
+
|
|
1847
|
+
# And the same for any container script added later. Comment lines are
|
|
1848
|
+
# dropped first: the explanation above quotes the failing path, and a test
|
|
1849
|
+
# that reads prose as code would fail on the wrong thing.
|
|
1850
|
+
code = "\n".join(
|
|
1851
|
+
line
|
|
1852
|
+
for line in Path(rosotacom.__file__).read_text(encoding="utf-8").splitlines()
|
|
1853
|
+
if not line.lstrip().startswith("#")
|
|
1854
|
+
)
|
|
1855
|
+
for match in re.finditer(r'"(/ws/[^"]*\.py)"', code):
|
|
1856
|
+
preceding = code[max(0, match.start() - 200) : match.start()]
|
|
1857
|
+
assert '"python3"' in preceding, (
|
|
1858
|
+
f"{match.group(1)} is handed to the container without an interpreter; "
|
|
1859
|
+
"a wheel install has no executable bit and this fails with exit 126"
|
|
1860
|
+
)
|
|
1861
|
+
|
|
1862
|
+
|
|
1804
1863
|
def test_resolve_session_and_base_extra_run_args(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None:
|
|
1805
1864
|
session = tmp_path / "sessions" / "1_heartbeat"
|
|
1806
1865
|
session.mkdir(parents=True)
|
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.devcontainer/re_generate_devcontainer_json.py
RENAMED
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/ISSUE_TEMPLATE/documentation-audit.md
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/ISSUE_TEMPLATE/implementation-cleanup.md
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/ISSUE_TEMPLATE/quality-workflow.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/.github/ISSUE_TEMPLATE/repository-diagnosis.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/calibration/capacity-size-tight-cyclone.json
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/calibration/probe-loss-gop-tight-cyclone.json
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/calibration/probe-loss-nominal-cyclone.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/findings/cyclone-spdp-discovery-bursts.md
RENAMED
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/findings/head-of-line-irregularity.md
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/findings/jitter-loss-bandwidth-latency.md
RENAMED
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/findings/zero-loss-boundaries-18kb-20hz.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/docs/rfcs/0001-expectation-driven-test-suite.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/.gitignore
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/README.md
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/profiles.yaml
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/ros2docker.json
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev2 → rosotacom_dev-2.5.dev4}/src/rosotacom/resources/examples/rosotacom.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|