mirror of
https://github.com/hanzoai/bot-formal-models.git
synced 2026-10-30 18:46:45 +00:00
51 lines
1.4 KiB
Plaintext
51 lines
1.4 KiB
Plaintext
------------------------------ MODULE IngressMultiMessageTraceHarness_BadMissingTrace ------------------------------
|
|
EXTENDS Naturals, Sequences, FiniteSets
|
|
|
|
(******************************************************************************
|
|
* IngressMultiMessageTraceHarness_BadMissingTrace.tla
|
|
*
|
|
* "Red" variant: the ingest expansion forgets to attach the traceId to all
|
|
* produced parts (e.g., only the first part gets a trace id).
|
|
******************************************************************************)
|
|
|
|
CONSTANTS
|
|
Provider,
|
|
EventId,
|
|
TraceId,
|
|
NumParts
|
|
|
|
ASSUME
|
|
/\ Provider \in STRING
|
|
/\ EventId \in STRING
|
|
/\ TraceId \in STRING
|
|
/\ NumParts \in 1..5
|
|
|
|
Msg(trace, provider, eventId, idx) ==
|
|
[ traceId |-> trace,
|
|
provider |-> provider,
|
|
eventId |-> eventId,
|
|
partIdx |-> idx ]
|
|
|
|
VARIABLES produced
|
|
vars == << produced >>
|
|
|
|
Init == produced = << >>
|
|
|
|
\* BUG: only the first part carries TraceId; later parts use "".
|
|
Ingest ==
|
|
/\ produced' = [i \in 1..NumParts |->
|
|
IF i = 1 THEN Msg(TraceId, Provider, EventId, i)
|
|
ELSE Msg("", Provider, EventId, i)]
|
|
|
|
Spec == Init /\ [][Ingest]_vars
|
|
|
|
Inv_AllPartsCorrelated ==
|
|
(Len(produced) = NumParts) =>
|
|
(NumParts <= 1 \/
|
|
(\A i \in 1..NumParts:
|
|
/\ produced[i].traceId = TraceId
|
|
/\ produced[i].eventId = EventId
|
|
/\ produced[i].provider = Provider))
|
|
|
|
=============================================================================
|