Loading testsuite-doubts.md +36 −0 Original line number Diff line number Diff line Loading @@ -3115,3 +3115,39 @@ setup-shape issues plus stub-URL gaps but unconfirmed. For all 30 the broker's behaviour is at minimum spec-defensible; no broker-side change is recommended without a spec/conformance discussion. ## 89. `038_01 / 038_03 / 038_06 / 040_01` — csub status checks ignore the mandatory initial notification Per TS 104-175 clause 12.4.7, an initial notification is sent unconditionally upon csource-subscription creation. All csub fixtures point at an unreachable endpoint (`http://localhost:1111/notify`), so a compliant broker may already report `status: "failed"` — plus live counters (`timesSent`, `timesFailed`, `lastNotification`, `lastFailure`, `status`) inside `notification` — by the time the subscription is retrieved: - `038_03` / `038_06` assert `status == "active"` strictly. The tests' actual intent (not paused / not expired) survives a `failed` status; fixed with an active-or-failed assertion. - `038_01` / `040_01` full-body compares flag the `notification` object gaining the clause-5.2.14.2 Additional Members — the entity-subscription twins (`028_01`, `030_03`) already exclude exactly these via `${notification_result_regex_expr}`; the csub tests never got that ignore. **Status:** fixed in `fix/csub-status-after-initial-notification`. ## 90. assertionUtils.py — deepdiff 8 `threshold_to_diff_deeper` silently bypasses `exclude_regex_paths` Since deepdiff 8 (the suite pins 8.6.1), when more than 1/3 of a dict's keys differ, `DeepDiff` reports the whole dict as a single `values_changed` at the parent path instead of descending into it. Any `exclude_regex_paths` entry targeting the nested keys is then silently bypassed: the five broker-computed members added inside `notification` (vs 2 original keys) are far past the threshold, so `${notification_result_regex_expr}` never matched (this is why 038_01/040_01 failed even WITH the ignore, while the entity-subscription twins — whose subscriptions carry more keys, keeping the ratio below 1/3 — passed). Any test relying on nested-path excludes is exposed to this, fragile as a function of payload size. **Status:** fixed in `fix/csub-status-after-initial-notification` — `compare_dictionaries_ignoring_keys` now passes `threshold_to_diff_deeper=0` (the pre-8 behaviour: always itemize per key). Loading
testsuite-doubts.md +36 −0 Original line number Diff line number Diff line Loading @@ -3115,3 +3115,39 @@ setup-shape issues plus stub-URL gaps but unconfirmed. For all 30 the broker's behaviour is at minimum spec-defensible; no broker-side change is recommended without a spec/conformance discussion. ## 89. `038_01 / 038_03 / 038_06 / 040_01` — csub status checks ignore the mandatory initial notification Per TS 104-175 clause 12.4.7, an initial notification is sent unconditionally upon csource-subscription creation. All csub fixtures point at an unreachable endpoint (`http://localhost:1111/notify`), so a compliant broker may already report `status: "failed"` — plus live counters (`timesSent`, `timesFailed`, `lastNotification`, `lastFailure`, `status`) inside `notification` — by the time the subscription is retrieved: - `038_03` / `038_06` assert `status == "active"` strictly. The tests' actual intent (not paused / not expired) survives a `failed` status; fixed with an active-or-failed assertion. - `038_01` / `040_01` full-body compares flag the `notification` object gaining the clause-5.2.14.2 Additional Members — the entity-subscription twins (`028_01`, `030_03`) already exclude exactly these via `${notification_result_regex_expr}`; the csub tests never got that ignore. **Status:** fixed in `fix/csub-status-after-initial-notification`. ## 90. assertionUtils.py — deepdiff 8 `threshold_to_diff_deeper` silently bypasses `exclude_regex_paths` Since deepdiff 8 (the suite pins 8.6.1), when more than 1/3 of a dict's keys differ, `DeepDiff` reports the whole dict as a single `values_changed` at the parent path instead of descending into it. Any `exclude_regex_paths` entry targeting the nested keys is then silently bypassed: the five broker-computed members added inside `notification` (vs 2 original keys) are far past the threshold, so `${notification_result_regex_expr}` never matched (this is why 038_01/040_01 failed even WITH the ignore, while the entity-subscription twins — whose subscriptions carry more keys, keeping the ratio below 1/3 — passed). Any test relying on nested-path excludes is exposed to this, fragile as a function of payload size. **Status:** fixed in `fix/csub-status-after-initial-notification` — `compare_dictionaries_ignoring_keys` now passes `threshold_to_diff_deeper=0` (the pre-8 behaviour: always itemize per key).