#!/usr/bin/env bash # Local test: mock CRDOPC + HyBBX crdop plugin (CB defaults, no Main circuit required). set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" BUILD="${ROOT}/build" HYBBX="${BUILD}/src/hybbxd" MOCK_PORT=18517 TMPDIR="${ROOT}/local/test-crdop-$$" mkdir -p "${TMPDIR}" cleanup() { kill "${MOCK_PID:-}" 2>/dev/null || true kill "${CIRCUIT_PID:-}" 2>/dev/null || true kill "${HYBBX_PID:-}" 2>/dev/null || true rm -rf "${TMPDIR}" } trap cleanup EXIT if [[ ! -x "${HYBBX}" ]]; then echo "Build hybbx first: cmake --build build" >&2 exit 1 fi cat > "${TMPDIR}/hybbx.ini" </dev/null 2>&1 & CIRCUIT_PID=$! sleep 0.2 LOG="${TMPDIR}/hybbx.log" stdbuf -oL timeout 5 "${HYBBX}" -c "${TMPDIR}/hybbx.ini" >"${LOG}" 2>&1 & HYBBX_PID=$! sleep 3 kill "${HYBBX_PID}" 2>/dev/null || true wait "${HYBBX_PID}" 2>/dev/null || true kill "${CIRCUIT_PID}" 2>/dev/null || true grep -q '\[crdop\] connected to external CRDOPC' "${LOG}" || { echo "FAIL: no CRDOP CRDOPC connect log" >&2 cat "${LOG}" >&2 exit 1 } grep -q '\[crdop\] modem VERSION' "${LOG}" || { echo "FAIL: no CRDOP VERSION log" >&2 cat "${LOG}" >&2 exit 1 } grep -q '\[crdop\] host init sent' "${LOG}" || { echo "FAIL: no CRDOP host init log" >&2 cat "${LOG}" >&2 exit 1 } grep -q '\[crdop\] CB half-duplex profile' "${LOG}" || { echo "FAIL: no CRDOP CB profile log" >&2 cat "${LOG}" >&2 exit 1 } grep -q 'profile=cb' "${LOG}" || { echo "FAIL: crdop profile not cb" >&2 cat "${LOG}" >&2 exit 1 } echo "OK: crdop plugin local test passed" grep '\[crdop\]' "${LOG}"