Skip to content

Commit b94ed0e

Browse files
Add system compressible test
1 parent a209706 commit b94ed0e

5 files changed

Lines changed: 628 additions & 27 deletions

File tree

test/extended/node/node_sizing.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
g "github.com/onsi/ginkgo/v2"
1010
o "github.com/onsi/gomega"
1111
corev1 "k8s.io/api/core/v1"
12+
apierrors "k8s.io/apimachinery/pkg/api/errors"
1213
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1314
"k8s.io/apimachinery/pkg/types"
1415
"k8s.io/kubernetes/test/e2e/framework"
@@ -62,7 +63,9 @@ var _ = g.Describe("[Suite:openshift/disruptive-longrunning][sig-node][Disruptiv
6263
// Use JSON patch to remove the label atomically
6364
patchData := []byte(fmt.Sprintf(`{"metadata":{"labels":{%q:null}}}`, testNodeMCPLabel))
6465
_, updateErr := oc.AdminKubeClient().CoreV1().Nodes().Patch(cleanupCtx, nodeName, types.MergePatchType, patchData, metav1.PatchOptions{})
65-
if updateErr != nil {
66+
if apierrors.IsNotFound(updateErr) {
67+
// Node already deleted, nothing to clean up
68+
} else if updateErr != nil {
6669
framework.Logf("Failed to remove label from node %s: %v", nodeName, updateErr)
6770
return
6871
}
@@ -135,7 +138,9 @@ var _ = g.Describe("[Suite:openshift/disruptive-longrunning][sig-node][Disruptiv
135138
g.By("Cleaning up custom MachineConfigPool")
136139
cleanupCtx := context.Background()
137140
deleteErr := mcClient.MachineconfigurationV1().MachineConfigPools().Delete(cleanupCtx, testMCPName, metav1.DeleteOptions{})
138-
if deleteErr != nil {
141+
if apierrors.IsNotFound(deleteErr) {
142+
// MachineConfigPool already deleted, nothing to clean up
143+
} else if deleteErr != nil {
139144
framework.Logf("Failed to delete MachineConfigPool %s: %v", testMCPName, deleteErr)
140145
}
141146
}
@@ -180,14 +185,18 @@ var _ = g.Describe("[Suite:openshift/disruptive-longrunning][sig-node][Disruptiv
180185
g.By("Cleaning up KubeletConfig")
181186
cleanupCtx := context.Background()
182187
deleteErr := mcClient.MachineconfigurationV1().KubeletConfigs().Delete(cleanupCtx, kubeletConfigName, metav1.DeleteOptions{})
183-
if deleteErr != nil {
188+
if apierrors.IsNotFound(deleteErr) {
189+
// KubeletConfig already deleted, nothing to clean up
190+
} else if deleteErr != nil {
184191
framework.Logf("Failed to delete KubeletConfig %s: %v", kubeletConfigName, deleteErr)
185192
}
186193

187194
// Wait for custom MCP to be ready after cleanup
188195
g.By("Waiting for custom MCP to be ready after KubeletConfig deletion")
189196
waitErr := waitForMCP(cleanupCtx, mcClient, testMCPName, 5*time.Minute)
190-
if waitErr != nil {
197+
if apierrors.IsNotFound(waitErr) {
198+
// MachineConfigPool already deleted, nothing to wait for
199+
} else if waitErr != nil {
191200
framework.Logf("Failed to wait for custom MCP to be ready: %v", waitErr)
192201
}
193202
}

test/extended/node/node_swap.go

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -118,11 +118,9 @@ var _ = g.Describe("[Jira:Node][sig-node] Node non-cnv swap configuration", func
118118
g.By("Getting initial machine config resourceVersion")
119119
// Get the initial resourceVersion of the worker machine config before creating KubeletConfig
120120
workerMC, err := mcClient.MachineconfigurationV1().MachineConfigs().Get(ctx, workerGeneratedKubeletMC, metav1.GetOptions{})
121-
initialResourceVersion := ""
122-
if err == nil {
123-
initialResourceVersion = workerMC.ResourceVersion
124-
framework.Logf("Initial %s resourceVersion: %s", workerGeneratedKubeletMC, initialResourceVersion)
125-
}
121+
o.Expect(err).NotTo(o.HaveOccurred(), "Failed to get initial machine config %s", workerGeneratedKubeletMC)
122+
initialResourceVersion := workerMC.ResourceVersion
123+
framework.Logf("Initial %s resourceVersion: %s", workerGeneratedKubeletMC, initialResourceVersion)
126124

127125
g.By("Creating a KubeletConfig with swap settings")
128126
kcName := fmt.Sprintf("test-swap-override-%d", time.Now().UnixNano())
@@ -190,10 +188,9 @@ var _ = g.Describe("[Jira:Node][sig-node] Node non-cnv swap configuration", func
190188

191189
// Check if the machine config was created or updated (compare to initial resourceVersion captured earlier)
192190
workerMC, err = mcClient.MachineconfigurationV1().MachineConfigs().Get(ctx, workerGeneratedKubeletMC, metav1.GetOptions{})
193-
if err == nil {
194-
o.Expect(workerMC.ResourceVersion).To(o.Equal(initialResourceVersion), "Machine config %s should not be updated when failSwapOn is rejected", workerGeneratedKubeletMC)
195-
framework.Logf("Verified: %s was not updated (resourceVersion: %s)", workerGeneratedKubeletMC, workerMC.ResourceVersion)
196-
}
191+
o.Expect(err).NotTo(o.HaveOccurred(), "Failed to get machine config %s for verification", workerGeneratedKubeletMC)
192+
o.Expect(workerMC.ResourceVersion).To(o.Equal(initialResourceVersion), "Machine config %s should not be updated when failSwapOn is rejected", workerGeneratedKubeletMC)
193+
framework.Logf("Verified: %s was not updated (resourceVersion: %s)", workerGeneratedKubeletMC, workerMC.ResourceVersion)
197194

198195
g.By("Verifying worker nodes still have correct swap settings")
199196
allWorkerNodes, err := getNodesByLabel(ctx, oc, "node-role.kubernetes.io/worker")

test/extended/node/node_swap_cnv.go

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -894,25 +894,34 @@ var _ = g.Describe("[Jira:Node/Kubelet][sig-node][Feature:NodeSwap][Serial][Disr
894894

895895
g.By("Checking initial OS-level swap status")
896896
framework.Logf("Running: swapon -s")
897-
initialSwapOutput, _ := ExecOnNodeWithChroot(oc, cnvWorkerNode, "swapon", "-s")
897+
initialSwapOutput, err := ExecOnNodeWithChroot(oc, cnvWorkerNode, "swapon", "-s")
898+
o.Expect(err).NotTo(o.HaveOccurred(), "Failed to check initial swap status on node %s: %v", cnvWorkerNode, err)
898899
framework.Logf("Initial swapon -s output:\n%s", initialSwapOutput)
899900
initialHasSwap := strings.TrimSpace(initialSwapOutput) != "" && initialSwapOutput != "Filename\t\t\t\tType\t\tSize\t\tUsed\t\tPriority"
900901

901902
// If swap is already enabled, disable it for this test
902903
if initialHasSwap {
903904
g.By("Disabling existing OS-level swap for test")
904905
framework.Logf("Running: swapoff -a")
905-
_, _ = ExecOnNodeWithNsenter(oc, cnvWorkerNode, "swapoff", "-a")
906+
swapoffOutput, swapoffErr := ExecOnNodeWithNsenter(oc, cnvWorkerNode, "swapoff", "-a")
907+
if swapoffErr != nil {
908+
framework.Failf("Failed to disable swap on node %s: %v (output: %s)", cnvWorkerNode, swapoffErr, swapoffOutput)
909+
}
906910
framework.Logf("OS-level swap disabled")
907911
}
908912

909913
g.By("Verifying no OS-level swap is present")
910914
framework.Logf("Running: swapon -s")
911-
swapOutput, _ := ExecOnNodeWithChroot(oc, cnvWorkerNode, "swapon", "-s")
915+
swapOutput, err := ExecOnNodeWithChroot(oc, cnvWorkerNode, "swapon", "-s")
916+
o.Expect(err).NotTo(o.HaveOccurred(), "Failed to verify swap status on node %s: %v", cnvWorkerNode, err)
912917
framework.Logf("swapon -s output:\n%s", swapOutput)
913918
hasOSSwap := strings.TrimSpace(swapOutput) != "" && swapOutput != "Filename\t\t\t\tType\t\tSize\t\tUsed\t\tPriority"
914919
if hasOSSwap {
915-
framework.Logf("Warning: Could not disable OS swap, but continuing with test")
920+
if initialHasSwap {
921+
framework.Failf("OS-level swap still present on node %s after swapoff attempt. Output:\n%s", cnvWorkerNode, swapOutput)
922+
} else {
923+
framework.Failf("Unexpected OS-level swap found on node %s. Output:\n%s", cnvWorkerNode, swapOutput)
924+
}
916925
} else {
917926
framework.Logf("Confirmed: No OS-level swap on node %s", cnvWorkerNode)
918927
}
@@ -924,7 +933,7 @@ var _ = g.Describe("[Jira:Node/Kubelet][sig-node][Feature:NodeSwap][Serial][Disr
924933
g.By("Creating LimitedSwap drop-in configuration")
925934
framework.Logf("Creating drop-in file: %s", cnvDropInFilePath)
926935
framework.Logf("Content:\n%s", loadConfigFromFile(cnvLimitedSwapConfigPath))
927-
err := createDropInFile(oc, cnvWorkerNode, cnvDropInFilePath, loadConfigFromFile(cnvLimitedSwapConfigPath))
936+
err = createDropInFile(oc, cnvWorkerNode, cnvDropInFilePath, loadConfigFromFile(cnvLimitedSwapConfigPath))
928937
o.Expect(err).NotTo(o.HaveOccurred())
929938
framework.Logf("Drop-in file created successfully")
930939

@@ -1099,9 +1108,16 @@ var _ = g.Describe("[Jira:Node/Kubelet][sig-node][Feature:NodeSwap][Serial][Disr
10991108
}
11001109

11011110
g.By(fmt.Sprintf("Disabling any existing swap for %s test", swapSize.name))
1102-
framework.Logf("Running: swapoff -a")
1103-
ExecOnNodeWithNsenter(oc, cnvWorkerNode, "swapoff", "-a")
1104-
ExecOnNodeWithChroot(oc, cnvWorkerNode, "rm", "-f", swapFilePath)
1111+
framework.Logf("Running: swapoff -a on node %s", cnvWorkerNode)
1112+
swapoffOutput, swapoffErr := ExecOnNodeWithNsenter(oc, cnvWorkerNode, "swapoff", "-a")
1113+
if swapoffErr != nil {
1114+
framework.Failf("Failed to disable swap on node %s for %s test: %v (output: %s)", cnvWorkerNode, swapSize.name, swapoffErr, swapoffOutput)
1115+
}
1116+
framework.Logf("Running: rm -f %s on node %s", swapFilePath, cnvWorkerNode)
1117+
rmOutput, rmErr := ExecOnNodeWithChroot(oc, cnvWorkerNode, "rm", "-f", swapFilePath)
1118+
if rmErr != nil {
1119+
framework.Failf("Failed to remove swap file %s on node %s for %s test: %v (output: %s)", swapFilePath, cnvWorkerNode, swapSize.name, rmErr, rmOutput)
1120+
}
11051121

11061122
g.By(fmt.Sprintf("Creating %dMB swap file", swapSize.sizeMB))
11071123
framework.Logf("Running: dd if=/dev/zero of=%s bs=1M count=%d", swapFilePath, swapSize.sizeMB)

test/extended/node/node_utils.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -393,12 +393,12 @@ func installCNVOperator(ctx context.Context, oc *exutil.CLI) error {
393393
framework.Logf("Checking MCP rollout status...")
394394
mcClient, err := machineconfigclient.NewForConfig(oc.AdminConfig())
395395
if err != nil {
396-
framework.Logf("Warning: failed to create MC client for MCP check: %v", err)
397-
} else {
398-
err = waitForMCP(ctx, mcClient, "worker", 30*time.Minute)
399-
if err != nil {
400-
framework.Logf("Warning: MCP rollout check failed: %v", err)
401-
}
396+
return fmt.Errorf("failed to create MC client for MCP check: %w", err)
397+
}
398+
399+
err = waitForMCP(ctx, mcClient, "worker", 30*time.Minute)
400+
if err != nil {
401+
return fmt.Errorf("MCP rollout failed after CNV installation: %w", err)
402402
}
403403

404404
framework.Logf("CNV operator installed successfully")

0 commit comments

Comments
 (0)