tests/robustness: improve Kubernetes traffic generator watch coverage#21984
tests/robustness: improve Kubernetes traffic generator watch coverage#21984jbml wants to merge 1 commit into
Conversation
|
Hi @jbml. Thanks for your PR. I'm waiting for a etcd-io member to verify that this patch is reasonable to test. If it is, they should reply with Regular contributors should join the org to skip this step. Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: jbml The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
888e806 to
02636b2
Compare
Address etcd-io#20622 by making the robustness Kubernetes traffic generator's watches more faithful to apiserver behavior: - Derive watch ProgressNotify from the resource: cached resources (pods) are served by the watch cache (internal etcd watch sets ProgressNotify=true), while the uncached events resource is watched directly (ProgressNotify=false). Add a KubernetesEvents traffic profile to model the direct path. PrevKV stays set, matching the apiserver, which passes WithPrevKV() unconditionally. - Add non-recursive (single-key) watch coverage to the generic etcd traffic profile (EtcdPutSingleKeyWatch / EtcdSingleKeyWatch). Kubernetes does not meaningfully issue non-recursive watches to etcd, so this belongs in the generic profile rather than the Kubernetes one. - Add SharedStream mode modeling the events watch fan-in: one cluster-scoped client per simulated apiserver instance opens WatchesPerInstance concurrent watch substreams, all multiplexed onto a single gRPC stream. Used by the KubernetesEventsSharedStream scenario. Signed-off-by: Jeremy Leach <44558776+jbml@users.noreply.github.com>
Address #20622 by making the robustness Kubernetes traffic generator's watches more faithful to apiserver behavior:
Derive watch ProgressNotify from the resource: cached resources (pods) are served by the watch cache (internal etcd watch sets ProgressNotify=true), while the uncached events resource is watched directly (ProgressNotify=false). Add a KubernetesEvents traffic profile to model the direct path. PrevKV stays set, matching the apiserver, which passes WithPrevKV() unconditionally.
Add non-recursive (single-key) watch coverage to the generic etcd traffic profile (EtcdPutSingleKeyWatch / EtcdSingleKeyWatch). Kubernetes does not meaningfully issue non-recursive watches to etcd, so this belongs in the generic profile rather than the Kubernetes one.
Add SharedStream mode modeling the events watch fan-in: one cluster-scoped client per simulated apiserver instance opens WatchesPerInstance concurrent watch substreams, all multiplexed onto a single gRPC stream. Used by the KubernetesEventsSharedStream scenario.
This PR was written in part with the assistance of generative AI.