CI/CD Pipeline for MOOS-IvP Apps, Behaviors, and Libraries

C++ unit tests check individual classes and functions, while mission harnesses test live MOOS processes, vehicle motion, and system-level outcomes.

GitHub Actions runtime harness matrix with passing jobs

Repository Snapshot

Current coverage at a glance

2864 Unit Test Cases

C++ unit tests for individual MOOS-IvP classes and functions.

72 Libraries & Components

MOOS-IvP areas covered by the C++ unit tests.

1436 Harness Cases

Mission-run cases with expected outcomes and generated result summaries.

49 Apps & Behaviors

MOOS apps and IvP behaviors covered by mission harness cases.

Harness Catalog

MOOS apps and IvP behaviors under test

Contact Management pContactMgrV20 Detects and reports relevant contacts so downstream avoidance behaviors can react to them. 2 harnesses
Obstacle Management pObstacleMgr Accepts obstacle inputs, builds obstacle representations, and publishes alerts used by obstacle avoidance. 2 harnesses
Marine PID pMarinePIDV22 Converts desired heading, speed, and depth mail into direct actuator commands under override, stale-input, and yaw-source constraints. 2 harnesses
uSimMarineV22 uSimMarineV22 Checks simulator motion, actuator response, limits, drift/current inputs, reset, pause, and navigation-state publication. 1 harness
pNodeReporter pNodeReporter Checks node-report construction, platform metadata, alternate nav streams, runtime updates, pause/resume, and odometry metrics. 1 harness
uPokeDB uPokeDB Checks command-line MOOSDB pokes across connection modes, value forms, cache parsing, short aliases, overwrites, quiet operation, and time macros. 1 harness
uXMS uXMS Checks terminal MOOSDB scoping output across variable scopes, display columns, history, filters, source selection, config, aliases, refresh modes, and truncation. 1 harness
uQueryDB uQueryDB Checks command-line MOOSDB query pass/fail logic, timeout behavior, mission-file configuration, compound conditions, and check-variable output formats. 1 harness
pEchoVar pEchoVar Checks live echo mappings, boolean inversion, EFlipper component extraction, filters, separators, cycle suppression, and duplicate mapping behavior. 1 harness
uTimerScript uTimerScript Checks exact event payloads, control ordering, reset and timing paths, macro expansion, delayed-client block-on, awake policies, and quit behavior. 1 harness
pDeadManPost pDeadManPost Checks watchdog deadflag posting across active-at-start behavior, heartbeat suppression, stale heartbeat detection, and numeric/string/multiple deadflags. 1 harness
pSpoofNode pSpoofNode Checks spoofed NODE_REPORT generation, defaults, runtime requests, motion advancement, duration expiry, cancellation, and malformed request rejection. 1 harness
uTermCommand uTermCommand Checks terminal command mapping, typed posts, partial matching, duplicate precedence, tab expansion, and unknown command absence. 1 harness
pSearchGrid pSearchGrid Checks grid construction, full and delta publication, node-report ingestion, custom output variables, community filters, and invalid/outside-grid absence. 1 harness
Field Messaging uField Communications Checks field communications delivery, broker bridge setup, and route recovery paths that connect vehicle and shoreside pShare communities. 3 harnesses
uFldPathCheck uFldPathCheck Checks path-history, odometry, trip-reset, and speed-report contracts from controlled node-report mail. 1 harness
uFldMessageHandler uFldMessageHandler Checks NODE_MESSAGE routing, addressing, payload forwarding, summary counters, and configured flag outputs. 1 harness
uFldContactRangeSensor uFldContactRangeSensor Checks contact-ledger range requests, report variable modes, sensor arcs, echo filters, ping waits, and range limits. 1 harness
uFldBeaconRangeSensor uFldBeaconRangeSensor Checks beacon range requests, report modes, ground-truth output, range gates, ping policies, markers, and malformed requests. 1 harness
uFldCollisionDetect uFldCollisionDetect Checks encounter ranking, collision and near-miss thresholds, clear-report controls, range gates, filters, and flag outputs. 1 harness
uFldCollObDetect uFldCollObDetect Checks vehicle-obstacle collisions, near misses, encounter thresholds, minimum-distance tracking, clearing gates, and flags. 1 harness
uFldScope uFldScope Checks scope table appcasts, field aliases, same-key replacement including blank overwrites, multi-row display, invalid-scope recovery, and missing field/key rendering. 1 harness
Depth Behavior BHV_ConstantDepth Checks held depth, surfacing, runtime updates, bad config, missing depth mail, and actuator authority. H01 in shared depth behavior group. 1 harness
Depth Behavior BHV_GoToDepth Checks depth sequences, repeats, arrivals, crossings, invalid inputs, and missing depth state. H02, not H01, in shared depth behavior group. 1 harness
Depth Behavior BHV_PeriodicSurface Checks surfacing cycles, waits, status variables, acomms extensions, ascent modes, and bad timing inputs. H03, not H01, in shared depth behavior group. 1 harness
Depth Behavior BHV_MaxDepth Checks max-depth guarding, clamps, tolerances, slack telemetry, bad config, and missing depth state. H04, not H01, in shared depth behavior group. 1 harness
Depth Behavior BHV_MinAltitude Checks bottom-clearance guarding, shallow-bottom response, boundary behavior, bad config, and missing altitude inputs. 1 harness
Behavior Correctness BHV_MemoryTurnLimit Checks recent-heading averaging, tight versus relaxed limiter windows, and missing memory limiter configuration. 1 harness
COLREGS Behavior BHV_AvdColregsV22 Exercises COLREGS classification, threshold edges, execution quality, parameter sensitivity, and multi-vehicle stress cases. 6 harnesses
Collision Avoidance Behavior BHV_AvoidCollision Owns contact-alert requests, behavior lifecycle, and clean resolution of collision-avoidance encounters. 1 harness
Obstacle Avoidance Behavior BHV_AvoidObstacleV24 Checks obstacle-avoidance lifecycle, helper flags, clean transit outcomes, and longer obstacle-field stress cases. 2 harnesses
Operating Region Behavior BHV_OpRegionV24 Checks save and halt envelopes, entry/exit timing gates, reset behavior, and runtime region updates. 1 harness
Waypoint Behavior BHV_Waypoint Checks route traversal, capture modes, cycle flags, runtime point updates, status outputs, and invalid route inputs. 1 harness
Loiter Behavior BHV_Loiter Checks loiter acquisition, polygon forms, center updates, speed modes, status reports, and invalid polygon inputs. 1 harness
Station-Keeping Behavior BHV_StationKeep Checks station-point holding, hibernation, radii, speed updates, warning recovery, and invalid station-keeping inputs. 1 harness
Trail Behavior BHV_Trail Checks moving target trailing geometry, pursuit relevance, runtime trail updates, and missing-contact handling. 1 harness
Convoy Behavior BHV_Convoy Checks mark queues, leader/follower geometry, speed branches, runtime updates, visual breadcrumbs, and missing-contact handling. 1 harness
Cut-Range Behavior BHV_CutRange Checks pursuit relevance, range reduction, give-up behavior, target geometry branches, runtime updates, and malformed inputs. 1 harness
Fixed-Turn Behavior BHV_FixedTurn Checks fixed-turn direction, scheduled turn specifications, runtime updates, timeout completion, and invalid turn configuration. 1 harness
Periodic Speed Behavior BHV_PeriodicSpeed Checks lazy/busy speed windows, initially-busy startup, reset behavior, alias acceptance, zero-speed handling, status outputs, and invalid parameter configuration. 1 harness
Timer Behavior BHV_Timer Checks idle and running duration counters, custom/default status variables, suffix handling, and invalid timer status configuration. 1 harness
TestFailure Behavior BHV_TestFailure Checks completion-triggered burn, hang, parser edge cases, crash/default-crash process loss, and an armed non-completing baseline. 1 harness
Host Info Utility pHostInfo Checks host IP, MOOSDB port, and exact route-normalized PHI_HOST_INFO payloads. 1 harness
Load Watch Utility uLoadWatch Checks near and hard threshold detection, trigger holdoff, threshold boundaries, and app matching. 1 harness
Process Watch Utility uProcessWatch Checks process-presence summaries, mapped posts, event mapping, and expected missing-process detection. 1 harness
pShare pShare Checks routed mail, wildcard routes, multicast topology, throttling, route-list parsing, and runtime route insertion. 2 harnesses
pLogger pLogger Checks explicit log capture, wildcard omit and exclusion logs, dynamic log requests, sync logs, numeric and typed values, copy-file requests, and fixed artifact names. 1 harness
pAntler pAntler Checks baseline process launch, MOOS-name aliases, multiple aliases, launch filters, explicit system-path lookup, and extra process parameters. 1 harness
pMissionEval pMissionEval Checks mission grading, staged logic, result flags, report formatting, macro expansion, and no-hash report behavior. 1 harness
pMissionHash pMissionHash Checks mission hashes, custom output variables, disabled outputs, and reset behavior. 1 harness
uMayFinish uMayFinish Checks default finish exits, custom finish variables, mismatched finish values, and timeout exits. 1 harness
uFldPathCheck uFldPathCheck Checks path-history, odometry, trip-reset, and speed-report contracts from controlled node-report mail. 1 harness
uFldMessageHandler uFldMessageHandler Checks NODE_MESSAGE routing, addressing, payload forwarding, summary counters, and configured flag outputs. 1 harness
uFldContactRangeSensor uFldContactRangeSensor Checks contact-ledger range requests, report variable modes, sensor arcs, echo filters, ping waits, and range limits. 1 harness
uFldObstacleSim uField Obstacle Simulation Checks obstacle-field source publication, simulated point sensing, refresh, reset, visual, and range-gating behavior. 1 harness
ZigZag Behavior BHV_ZigZag Checks first-side selection, zig-angle boundaries, leg and odometry completion, active-time capture, runtime speed updates, visual hints, and invalid inputs. 1 harness
LegRun Behavior BHV_LegRun Checks leg selection, leg and turn progression, completion, speed schedules, runtime updates, and invalid leg-run inputs. 1 harness
Shadow Behavior BHV_Shadow Checks contact speed/heading following, relevance gates, warning recovery, runtime updates, and malformed contact/configuration inputs. 1 harness

Mission Harness Flow

From scenario to mission result

  1. Stem missions define reusable MOOS community layouts, behavior configs, and baseline geometry.
  2. Harness overlays use small patches so each run isolates one scenario or regression risk.
  3. The harness zlaunch.sh wrapper selects the case and then delegates to the shared xlaunch.sh path, keeping local and CI runs aligned.
  4. pMissionEval reports and shell-side checks turn each run into a clear pass/fail result.