{{ message }}
Repository navigation
Commit 7bba47e
committed
test(flagd): withhold @reinitialization, and say what was measured
spec@fc99d5ac gates "A provider that was shut down can be initialized
again" behind a new @reinitialization tag. Neither resolver declares it,
and the reasoning is recorded next to each declaration because the
arithmetic that suggested declaring it was wrong in an instructive way.
The premise was that the scenario had been untagged at the previous pin,
so it ran, and since it was not among the two failures it must have
passed. It did not run. lifecycle.feature carries @lifecycle at the
feature level, so every scenario in it inherits that tag, and the gate
skips a scenario when any capability gating it is undeclared. Neither
resolver declares LIFECYCLE, so the scenario is one of the six @lifecycle
skips each resolver already reported -- absence from the failure list was
absence from the run.
Measured rather than reasoned about, by declaring LIFECYCLE and
REINITIALIZATION together locally and letting the scenario run:
in-process passes -- reuse genuinely works
rpc fails -- boolean-flag resolves to the code default because
grpc.py:420 raises "Cannot invoke RPC on closed
channel!"; shutdown() closes the channel and the
second initialize() does not rebuild it
So the two resolvers genuinely differ, and RPC exhibits precisely the
shape the specification's note on this capability describes: the provider
evaluates against a closed connection rather than failing outright.
Withheld for both regardless. For RPC because reuse does not work; for
in-process because declaring REINITIALIZATION without LIFECYCLE leaves the
scenario skipped on @lifecycle and the claim unexamined, which is the
vacuous declaration this suite keeps the reserved tags out for. Whether to
declare LIFECYCLE is a separate question and is not settled here.
No KnownDeviation entry either way: Requirement 2.5.2 says a provider
SHOULD revert to its uninitialized state and that "some providers MAY
allow reinitialization", so declining reuse is a choice the specification
offers rather than a requirement to deviate from.
Tallies are unchanged from the previous pin, which is the check that no
scenario silently changed status: rpc 29 passed / 2 failed / 9 skipped,
in-process 28 / 3 / 9, nine skips per resolver being six @lifecycle and
three @numeric-coercion. The failures remain large-integer-flag and
huge-integer-flag, absent from flagd-testbed, plus in-process's
boolean-flag-as-Float, which is #417.
Signed-off-by: Simon Schrottner <simon.schrottner@flagsmith.com>1 parent f0307d3 commit 7bba47e
3 files changed
Lines changed: 59 additions & 1 deletion
File tree
- providers/openfeature-provider-flagd/tests/tck
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
76 | 103 | | |
77 | 104 | | |
78 | 105 | | |
| |||

0 commit comments