From 2a447857a5a6f74424d1925e8605390a51a0743e Mon Sep 17 00:00:00 2001 From: HarshwardhanPatil07 Date: Mon, 12 Oct 2026 14:03:06 +0530 Subject: [PATCH 1/2] e2e: Scope membership daemon lookup to its node Parallel E2E tests create daemon pods on other managed nodes. Restrict the membership lookup to its own node so unrelated pods do not cause the exactly-one assertion to time out. Refs: https://github.com/bootc-dev/bootc-operator/pull/226 Refs: https://github.com/bootc-dev/bootc-operator/pull/203 Assisted-by: AI Signed-off-by: HarshwardhanPatil07 --- test/e2e/bootcnode_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/test/e2e/bootcnode_test.go b/test/e2e/bootcnode_test.go index b2f324d..46f66e0 100644 --- a/test/e2e/bootcnode_test.go +++ b/test/e2e/bootcnode_test.go @@ -77,6 +77,7 @@ func TestControllerMembership(t *testing.T) { var pods corev1.PodList err := env.Client.List(ctx, &pods, client.InNamespace(testutil.OperatorNamespaceName), + client.MatchingFields{"spec.nodeName": nodeName}, client.MatchingLabels{ "app.kubernetes.io/name": "bootc-operator", "app.kubernetes.io/component": "daemon", From 35c217a8ea9a7c62299356b3189634c84eedc021 Mon Sep 17 00:00:00 2001 From: HarshwardhanPatil07 Date: Mon, 12 Oct 2026 15:22:15 +0530 Subject: [PATCH 2/2] e2e: Wait for mid-rollout nodes in reboot order MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The rollout permits one reboot at a time. Waiting in node creation order can spend the queued node’s completion budget on the first node finishing two image transitions. Wait for the already-rebooting node first so the queued node receives its own bounded completion window. Keep the eight-minute per-node timeout, final-image checks, and exactly-one-reboot assertion unchanged. CI must confirm recovery; transient networking errors alone do not establish a permanent failure. Refs: https://github.com/bootc-dev/bootc-operator/pull/229 Assisted-by: AI Signed-off-by: HarshwardhanPatil07 --- test/e2e/bootcnode_test.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/e2e/bootcnode_test.go b/test/e2e/bootcnode_test.go index 46f66e0..c83b982 100644 --- a/test/e2e/bootcnode_test.go +++ b/test/e2e/bootcnode_test.go @@ -424,7 +424,9 @@ func TestMidRolloutImageChange(t *testing.T) { t.Logf("Switched pool to second update image %s", updateRef2) // Phase 6: Wait for both nodes to be Idle with the second update image. - for _, nodeName := range []string{nodeA, nodeB} { + // Reboots are serialized: wait for the node already rebooting first so + // the other node's timeout does not include waiting for its reboot slot. + for _, nodeName := range []string{rebootingNode, otherNode} { testutil.WaitForNodeIdle(t, g, ctx, env.Client, nodeName, 8*time.Minute, HaveField("Booted", HaveField("ImageDigest", Equal(env.NodeImageUpdate2Digest()))), )