Skip to content

Add CI pipeline, testing infrastructure, and code quality tooling#16

Merged
wcoleman-rti merged 15 commits intomainfrom
Testing-Infrastructure
Apr 20, 2026
Merged

Add CI pipeline, testing infrastructure, and code quality tooling#16
wcoleman-rti merged 15 commits intomainfrom
Testing-Infrastructure

Conversation

@franporcel
Copy link
Copy Markdown
Collaborator

Adds a comprehensive GitHub Actions CI pipeline and pytest test suites across Modules 01, 02, and 04, along with project-wide code quality tooling.

CI Pipeline

  • 10-job GitHub Actions workflow: lint, C++ build, Module 01 (unit, integration, secure, GUI), Module 02, Module 04, and artifact upload
  • Installs RTI Connext DDS 7.3.1 via apt on Ubuntu
  • Auto-skips secure tests when the Security Plugins license is unavailable; strictly fails when expected prerequisites are missing

Test Suites

  • Module 01 (7 test files, ~60 tests): build validation, script/environment setup, XML/QoS parsing, app launch, DDS pub/sub communication, end-to-end demo flow (secure and non-secure)
  • Module 02 (3 test files, ~15 tests): Recording Service integration, Replay Service integration, XML configuration validation
  • Module 04 (3 test files, ~25 tests): threat injector and exfiltrator across all 4 attack modes (Unsecure, Rogue CA, Forged Permissions, Expired Certificate), XML configuration validation

Code Quality

  • Root pyproject.toml with ruff linter/formatter config
  • .pre-commit-config.yaml for ruff and clang-format hooks
  • requirements-dev.txt with dev/test dependencies
  • C++ sources reformatted with clang-format 18

Other Changes

  • Test QoS profile, identity certificate, and permissions for the test DDS participant
  • SecureAppsQos.xml updated with test participant security config
  • Module 03 scripts: minor fixes for cross-platform path handling
  • 2026 copyright headers on all new files

franporcel and others added 6 commits December 4, 2025 15:02
- 10-job GitHub Actions CI pipeline (lint, build, unit, DDS comm,
  integration, GUI, security, module 02, module 04)
- pytest test suites for Modules 01, 02, and 04
- conftest.py with auto-skip/fail for GUI and security prerequisites
- ruff lint + format, clang-format for C++ sources
- RTI Connext 7.3.1 via apt with cached installation
- Security tests require rti_license.dat with Security Plugins feature
- All GitHub Actions upgraded to Node.js 24 (checkout v5, setup-python v6,
  cache v5, upload-artifact v6, download-artifact v7)
- OpenSSL fallback to system binary in platform_setup.py
- Staggered C++ app starts to avoid headless SIGSEGV
- Module 01: Add TestXmlSetupErrors (NDDSHOME missing, non-empty XMLs)
  and TestKillAll (target lists, callable main) to test_scripts.py
- Module 02: Add test_xml_config.py validating RecordingService and
  ReplayService XML structure (11 tests)
- Module 04: Add ForgedPerms and ExpiredCert exfiltrator tests to
  test_threat_exfiltrator.py matching the injector test pattern
- Module 04: Add test_xml_config.py validating ThreatParticipants.xml
  and ThreatQos.xml structure (11 tests)
- Add 2026 copyright headers to all 13 test Python files
Base automatically changed from MacOS-testing to main April 14, 2026 18:18
# Conflicts:
#	docs/release/CHANGELOG.md
#	modules/03-remote-teleoperation/Scenario2.md
#	modules/03-remote-teleoperation/scripts/launch_cds_cloud.py
#	modules/03-remote-teleoperation/scripts/launch_rs_active.py
#	modules/03-remote-teleoperation/scripts/launch_rs_cloud.py
#	modules/03-remote-teleoperation/scripts/launch_rs_passive.py
#	modules/03-remote-teleoperation/scripts/xml_setup.py
#	modules/03-remote-teleoperation/xml_config/CdsConfigCloud.xml
#	modules/03-remote-teleoperation/xml_config/RsConfigActive.xml
#	modules/04-security-threat/security/domain_scope/ThreatDomain/governance/ThreatDomain/ThreatDomain.xml
#	system_arch/qos/NonSecureAppsQos.xml
#	system_arch/qos/SecureAppsQos.xml
#	system_arch/scripts/platform_setup.py
#	system_arch/security/setup_security.py
#	system_arch/security/xml/03-remote-teleoperation/PermissionsRsActive.xml
#	system_arch/security/xml/03-remote-teleoperation/PermissionsRsCloud.xml
#	system_arch/security/xml/03-remote-teleoperation/PermissionsRsPassive.xml
- make markdownlint test environment-agnostic with deterministic markdown discovery

- add parser contract + negative parsing tests

- add security status tests for system and threat module

- update docker test image/docs for markdownlint support

- document test path selection and changelog entries
- Add module 01 src path to pytest conftest so Types imports resolve in launch tests\n- Add Docker test entrypoint that always starts Xvfb before executing overridden commands\n- Update Dockerfile to use entrypoint and keep default test command simple\n- Refresh docker-compose and Docker README usage examples around --rm --build run flow
@wcoleman-rti wcoleman-rti merged commit 5da1f50 into main Apr 20, 2026
22 checks passed
@wcoleman-rti wcoleman-rti deleted the Testing-Infrastructure branch April 21, 2026 11:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bump to RTI Connext 7.3.1 LTS and/or 7.7.0 LTS Add testing infrastructure for Module 01

2 participants