mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-08-08 23:37:11 +00:00
prefer error over bool, prefer Should(gomega.Succeed())
Signed-off-by: Jack Francis <jackfrancis@gmail.com>
This commit is contained in:
@@ -18,6 +18,7 @@ package node
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"regexp"
|
||||
"time"
|
||||
@@ -292,12 +293,11 @@ func SetupEnvironmentAndSkipIfNeeded(ctx context.Context, f *framework.Framework
|
||||
}
|
||||
}
|
||||
|
||||
func areGPUsAvailableOnAllSchedulableNodes(ctx context.Context, clientSet clientset.Interface) bool {
|
||||
func areGPUsAvailableOnAllSchedulableNodes(ctx context.Context, clientSet clientset.Interface) error {
|
||||
framework.Logf("Getting list of Nodes from API server")
|
||||
nodeList, err := clientSet.CoreV1().Nodes().List(ctx, metav1.ListOptions{})
|
||||
if err != nil {
|
||||
framework.Logf("Unexpected error getting node list: %v", err)
|
||||
return false
|
||||
return fmt.Errorf("unexpected error getting node list: %w", err)
|
||||
}
|
||||
for _, node := range nodeList.Items {
|
||||
if node.Spec.Unschedulable {
|
||||
@@ -308,12 +308,11 @@ func areGPUsAvailableOnAllSchedulableNodes(ctx context.Context, clientSet client
|
||||
}
|
||||
framework.Logf("gpuResourceName %s", e2egpu.NVIDIAGPUResourceName)
|
||||
if val, ok := node.Status.Capacity[e2egpu.NVIDIAGPUResourceName]; !ok || val.Value() == 0 {
|
||||
framework.Logf("Nvidia GPUs not available on Node: %q", node.Name)
|
||||
return false
|
||||
return fmt.Errorf("nvidia GPUs not available on Node: %q", node.Name)
|
||||
}
|
||||
}
|
||||
framework.Logf("Nvidia GPUs exist on all schedulable nodes")
|
||||
return true
|
||||
return nil
|
||||
}
|
||||
|
||||
func logOSImages(ctx context.Context, f *framework.Framework) {
|
||||
@@ -389,9 +388,9 @@ func waitForGPUs(ctx context.Context, f *framework.Framework, namespace, name st
|
||||
|
||||
// Wait for Nvidia GPUs to be available on nodes
|
||||
framework.Logf("Waiting for drivers to be installed and GPUs to be available in Node Capacity...")
|
||||
gomega.Eventually(ctx, func(ctx context.Context) bool {
|
||||
gomega.Eventually(ctx, func(ctx context.Context) error {
|
||||
return areGPUsAvailableOnAllSchedulableNodes(ctx, f.ClientSet)
|
||||
}, driverInstallTimeout, time.Second).Should(gomega.BeTrueBecause("expected GPU resources to be available within the timout"))
|
||||
}, driverInstallTimeout, time.Second).Should(gomega.Succeed())
|
||||
}
|
||||
|
||||
// StartJob starts a simple CUDA job that requests gpu and the specified number of completions
|
||||
|
||||
@@ -281,7 +281,7 @@ func SetPVCVACName(ctx context.Context, origPVC *v1.PersistentVolumeClaim, name
|
||||
|
||||
patchedPVC, err = c.CoreV1().PersistentVolumeClaims(origPVC.Namespace).Patch(ctx, pvcName, types.JSONPatchType, patchBytes, metav1.PatchOptions{})
|
||||
return err
|
||||
}, timeout, modifyPollInterval).Should(gomega.BeNil())
|
||||
}, timeout, modifyPollInterval).Should(gomega.Succeed())
|
||||
|
||||
return patchedPVC
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ package windows
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -176,21 +177,20 @@ var _ = sigDescribe(feature.Windows, "Eviction", framework.WithSerial(), framewo
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
framework.Logf("Waiting for pod2 to get evicted")
|
||||
gomega.Eventually(ctx, func() bool {
|
||||
gomega.Eventually(ctx, func() error {
|
||||
eventList, err := f.ClientSet.CoreV1().Events(f.Namespace.Name).List(ctx, metav1.ListOptions{})
|
||||
if err != nil {
|
||||
framework.Logf("Error getting events: %v", err)
|
||||
return false
|
||||
return fmt.Errorf("error getting events: %w", err)
|
||||
}
|
||||
for _, e := range eventList.Items {
|
||||
// Look for an event that shows FailedScheduling
|
||||
if e.Type == "Warning" && e.Reason == "Evicted" && strings.Contains(e.Message, "pod2") {
|
||||
framework.Logf("Found %+v event with message %+v", e.Reason, e.Message)
|
||||
return true
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return false
|
||||
}, 10*time.Minute, 10*time.Second).Should(gomega.BeTrueBecause("Eviction Event was not found"))
|
||||
return fmt.Errorf("did not find any FailedScheduling event for pod %s", pod2.ObjectMeta.Name)
|
||||
}, 10*time.Minute, 10*time.Second).Should(gomega.Succeed())
|
||||
|
||||
ginkgo.By("Waiting for node.kubernetes.io/memory-pressure taint to be removed")
|
||||
// ensure e2e test framework catches the memory-pressure taint
|
||||
|
||||
@@ -19,6 +19,7 @@ package windows
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
kubeletconfigv1beta1 "k8s.io/kubelet/config/v1beta1"
|
||||
@@ -162,21 +163,20 @@ func overrideAllocatableMemoryTest(ctx context.Context, f *framework.Framework,
|
||||
framework.Logf("Ensuring that pod %s fails to schedule", podName)
|
||||
failurePod, err = f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(ctx, failurePod, metav1.CreateOptions{})
|
||||
framework.ExpectNoError(err)
|
||||
gomega.Eventually(ctx, func() bool {
|
||||
gomega.Eventually(ctx, func() error {
|
||||
eventList, err := f.ClientSet.CoreV1().Events(f.Namespace.Name).List(ctx, metav1.ListOptions{})
|
||||
if err != nil {
|
||||
framework.Logf("Error getting events: %v", err)
|
||||
return false
|
||||
return fmt.Errorf("error getting events: %w", err)
|
||||
}
|
||||
for _, e := range eventList.Items {
|
||||
// Look for an event that shows FailedScheduling
|
||||
if e.Type == "Warning" && e.Reason == "FailedScheduling" && e.InvolvedObject.Name == failurePod.ObjectMeta.Name {
|
||||
framework.Logf("Found %+v event with message %+v", e.Reason, e.Message)
|
||||
return true
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return false
|
||||
}, 3*time.Minute, 10*time.Second).Should(gomega.BeTrueBecause("Expected %s pod to be failed scheduling", podName))
|
||||
return fmt.Errorf("did not find any FailedScheduling event for pod %s", failurePod.ObjectMeta.Name)
|
||||
}, 3*time.Minute, 10*time.Second).Should(gomega.Succeed())
|
||||
}
|
||||
|
||||
func getNodeMemory(ctx context.Context, f *framework.Framework, node v1.Node) nodeMemory {
|
||||
|
||||
@@ -237,14 +237,16 @@ func waitForKubeletToStart(ctx context.Context, f *framework.Framework) {
|
||||
}, 2*time.Minute, 5*time.Second).Should(gomega.BeTrueBecause("expected kubelet to be in healthy state"))
|
||||
|
||||
// Wait for the Kubelet to be ready.
|
||||
gomega.Eventually(ctx, func(ctx context.Context) bool {
|
||||
gomega.Eventually(ctx, func(ctx context.Context) error {
|
||||
nodes, err := e2enode.TotalReady(ctx, f.ClientSet)
|
||||
if err != nil {
|
||||
framework.Logf("Error getting ready nodes: %v", err)
|
||||
return false
|
||||
return fmt.Errorf("error getting ready nodes: %w", err)
|
||||
}
|
||||
return nodes == 1
|
||||
}, time.Minute, time.Second).Should(gomega.BeTrueBecause("expected kubelet to be in ready state"))
|
||||
if nodes != 1 {
|
||||
return fmt.Errorf("expected 1 ready node, got %d", nodes)
|
||||
}
|
||||
return nil
|
||||
}, time.Minute, time.Second).Should(gomega.Succeed())
|
||||
}
|
||||
|
||||
func deleteStateFile(stateFileName string) {
|
||||
|
||||
Reference in New Issue
Block a user