Commit 1685281d authored by kzangeli's avatar kzangeli
Browse files

doubts: #89 csub status vs mandatory initial notification, #90 deepdiff...

doubts: #89 csub status vs mandatory initial notification, #90 deepdiff threshold_to_diff_deeper bypasses excludes
parent e66949ad
Loading
Loading
Loading
Loading
+36 −0
Original line number Diff line number Diff line
@@ -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).