83d0a060fe
Adds a trimmed debug_e2e.cfg (DebugService on 8080/8081, TcpLogger on
9090) and two new scenarios (s55_debug_force_trace_break, kind=debug;
s56_tcplogger_delivery, kind=tcplogger) reusing it, with matching
run_e2e.sh scenario-list/dispatch wiring and debugclient build steps.
Also fixes a real bug found while wiring s56: debugclient's tcplogger
check was tautological (it matched MarteController's own local
"CMD"-level echo of the outgoing command, which contains the same text
as the triggered event, instead of a line actually delivered over the
real TCPLogger TCP socket) and its trigger command (an invalid FORCE)
never reaches DebugServiceBase's REPORT_ERROR at all. Switched the
trigger to a MSG-to-missing-destination command (which does call
REPORT_ERROR) and the match to require the real log text
("not found in ORD"), recorded only after a connect-settle baseline —
verified with a positive run (real Warning-level TCPLogger line
received) and a negative control (LogPort=0 disables TcpLogger and the
scenario correctly FAILs).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
83 lines
2.2 KiB
INI
83 lines
2.2 KiB
INI
/**
|
|
* Trimmed single-thread configuration for the "debug"/"tcplogger" E2E
|
|
* scenario kinds: exercises DebugService FORCE/TRACE/BREAK over TCP 8080 /
|
|
* UDP 8081 and TCPLogger delivery over TCP 9090, with no UDPStreamer path.
|
|
*/
|
|
|
|
$App = {
|
|
Class = RealTimeApplication
|
|
|
|
+Functions = {
|
|
Class = ReferenceContainer
|
|
|
|
+TimerGAM = {
|
|
Class = IOGAM
|
|
InputSignals = {
|
|
Counter = {
|
|
DataSource = Timer
|
|
Type = uint32
|
|
Frequency = 1000
|
|
}
|
|
Time = {
|
|
DataSource = Timer
|
|
Type = uint32
|
|
}
|
|
}
|
|
OutputSignals = {
|
|
Counter = { DataSource = DDB1 Type = uint32 }
|
|
Time = { DataSource = DDB1 Type = uint32 }
|
|
}
|
|
}
|
|
}
|
|
|
|
+Data = {
|
|
Class = ReferenceContainer
|
|
DefaultDataSource = DDB1
|
|
|
|
+DDB1 = { Class = GAMDataSource }
|
|
|
|
+Timer = {
|
|
Class = LinuxTimer
|
|
SleepNature = "Default"
|
|
Signals = {
|
|
Counter = { Type = uint32 }
|
|
Time = { Type = uint32 }
|
|
}
|
|
}
|
|
|
|
+Timings = { Class = TimingDataSource }
|
|
}
|
|
|
|
+States = {
|
|
Class = ReferenceContainer
|
|
+Running = {
|
|
Class = RealTimeState
|
|
+Threads = {
|
|
Class = ReferenceContainer
|
|
|
|
+Thread1 = {
|
|
Class = RealTimeThread
|
|
CPUs = 0x1
|
|
Functions = {TimerGAM}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+Scheduler = {
|
|
Class = GAMScheduler
|
|
TimingDataSource = Timings
|
|
}
|
|
}
|
|
|
|
// ── DebugService ──────────────────────────────────────────────────────────────
|
|
// Patches the broker registry at startup so every signal is traceable.
|
|
// TcpLogger is auto-injected on LogPort (9090) — no explicit DataSource needed.
|
|
+DebugService = {
|
|
Class = DebugService
|
|
ControlPort = 8080
|
|
StreamPort = 8081
|
|
LogPort = 9090
|
|
StreamIP = "127.0.0.1"
|
|
}
|