Merge pull request #125431 from huww98/e2e-term-sleep

e2e: add TERM trap to pod sleep command
This commit is contained in:
Kubernetes Prow Robot 2024-06-12 02:35:29 -07:00 committed by GitHub
commit 58e15c831c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 18 additions and 20 deletions

View File

@ -259,7 +259,7 @@ var _ = SIGDescribe("EmptyDir volumes", func() {
Name: busyBoxMainContainerName,
Image: imageutils.GetE2EImage(imageutils.BusyBox),
Command: []string{"/bin/sh"},
Args: []string{"-c", "sleep 100000"},
Args: []string{"-c", e2epod.InfiniteSleepCommand},
VolumeMounts: []v1.VolumeMount{
{
Name: volumeName,
@ -330,7 +330,7 @@ var _ = SIGDescribe("EmptyDir volumes", func() {
Name: busyBoxMainContainerName,
Image: imageutils.GetE2EImage(imageutils.BusyBox),
Command: []string{"/bin/sh"},
Args: []string{"-c", "sleep 100000"},
Args: []string{"-c", e2epod.InfiniteSleepCommand},
VolumeMounts: []v1.VolumeMount{
{
Name: volumeName,

View File

@ -178,7 +178,7 @@ func (o replicaSetsByCreationTimestamp) Less(i, j int) bool {
// name. A slice of BASH commands can be supplied as args to be run by the pod
func testDeployment(replicas int32, podLabels map[string]string, nodeSelector map[string]string, namespace string, pvclaims []*v1.PersistentVolumeClaim, securityLevel admissionapi.Level, command string) *appsv1.Deployment {
if len(command) == 0 {
command = "trap exit TERM; while true; do sleep 1; done"
command = e2epod.InfiniteSleepCommand
}
zero := int64(0)
deploymentName := "deployment-" + string(uuid.NewUUID())

View File

@ -131,7 +131,7 @@ func CreateSecPodWithNodeSelection(ctx context.Context, client clientset.Interfa
// name. A slice of BASH commands can be supplied as args to be run by the pod
func MakePod(ns string, nodeSelector map[string]string, pvclaims []*v1.PersistentVolumeClaim, securityLevel admissionapi.Level, command string) *v1.Pod {
if len(command) == 0 {
command = "trap exit TERM; while true; do sleep 1; done"
command = InfiniteSleepCommand
}
podSpec := &v1.Pod{
TypeMeta: metav1.TypeMeta{
@ -172,7 +172,7 @@ func MakeSecPod(podConfig *Config) (*v1.Pod, error) {
return nil, fmt.Errorf("Cannot create pod with empty namespace")
}
if len(podConfig.Command) == 0 {
podConfig.Command = "trap exit TERM; while true; do sleep 1; done"
podConfig.Command = InfiniteSleepCommand
}
podName := "pod-" + string(uuid.NewUUID())

View File

@ -43,11 +43,11 @@ func NodeOSDistroIs(distro string) bool {
return false
}
const InfiniteSleepCommand = "trap exit TERM; while true; do sleep 1; done"
// GenerateScriptCmd generates the corresponding command lines to execute a command.
func GenerateScriptCmd(command string) []string {
var commands []string
commands = []string{"/bin/sh", "-c", command}
return commands
return []string{"/bin/sh", "-c", command}
}
// GetDefaultTestImage returns the default test image based on OS.

View File

@ -174,7 +174,6 @@ func initDefaultResizePolicy(containers []TestContainerInfo) {
}
func makeTestContainer(tcInfo TestContainerInfo) (v1.Container, v1.ContainerStatus) {
cmd := "trap exit TERM; while true; do sleep 1; done"
res, alloc, resizePol := getTestResourceInfo(tcInfo)
bTrue := true
bFalse := false
@ -209,7 +208,7 @@ func makeTestContainer(tcInfo TestContainerInfo) (v1.Container, v1.ContainerStat
Name: tcInfo.Name,
Image: imageutils.GetE2EImage(imageutils.BusyBox),
Command: []string{"/bin/sh"},
Args: []string{"-c", cmd},
Args: []string{"-c", e2epod.InfiniteSleepCommand},
Resources: res,
ResizePolicy: resizePol,
SecurityContext: securityContext,

View File

@ -295,7 +295,7 @@ func (p *ephemeralTestSuite) DefineTests(driver storageframework.TestDriver, pat
l.testCase.RunningPodCheck = func(ctx context.Context, pod *v1.Pod) interface{} {
// Create another pod with the same inline volume attributes.
pod2 := StartInPodWithInlineVolume(ctx, f.ClientSet, f.Namespace.Name, "inline-volume-tester2", "sleep 100000",
pod2 := StartInPodWithInlineVolume(ctx, f.ClientSet, f.Namespace.Name, "inline-volume-tester2", e2epod.InfiniteSleepCommand,
[]v1.VolumeSource{pod.Spec.Volumes[0].VolumeSource},
readOnly,
l.testCase.Node)
@ -387,7 +387,6 @@ func (t EphemeralTest) TestEphemeral(ctx context.Context) {
gomega.Expect(client).NotTo(gomega.BeNil(), "EphemeralTest.Client is required")
ginkgo.By(fmt.Sprintf("checking the requested inline volume exists in the pod running on node %+v", t.Node))
command := "sleep 10000"
var volumes []v1.VolumeSource
numVolumes := t.NumInlineVolumes
@ -415,7 +414,7 @@ func (t EphemeralTest) TestEphemeral(ctx context.Context) {
}
volumes = append(volumes, volume)
}
pod := StartInPodWithInlineVolume(ctx, client, t.Namespace, "inline-volume-tester", command, volumes, t.ReadOnly, t.Node)
pod := StartInPodWithInlineVolume(ctx, client, t.Namespace, "inline-volume-tester", e2epod.InfiniteSleepCommand, volumes, t.ReadOnly, t.Node)
defer func() {
// pod might be nil now.
StopPodAndDependents(ctx, client, t.Timeouts, pod)

View File

@ -449,7 +449,7 @@ func (s *subPathTestSuite) DefineTests(driver storageframework.TestDriver, patte
// Change volume container to busybox so we can exec later
l.pod.Spec.Containers[1].Image = e2epod.GetDefaultTestImage()
l.pod.Spec.Containers[1].Command = e2epod.GenerateScriptCmd("sleep 100000")
l.pod.Spec.Containers[1].Command = e2epod.GenerateScriptCmd(e2epod.InfiniteSleepCommand)
l.pod.Spec.Containers[1].Args = nil
ginkgo.By(fmt.Sprintf("Creating pod %s", l.pod.Name))
@ -793,10 +793,10 @@ func testPodContainerRestartWithHooks(ctx context.Context, f *framework.Framewor
pod.Spec.RestartPolicy = v1.RestartPolicyOnFailure
pod.Spec.Containers[0].Image = e2epod.GetDefaultTestImage()
pod.Spec.Containers[0].Command = e2epod.GenerateScriptCmd("sleep 100000")
pod.Spec.Containers[0].Command = e2epod.GenerateScriptCmd(e2epod.InfiniteSleepCommand)
pod.Spec.Containers[0].Args = nil
pod.Spec.Containers[1].Image = e2epod.GetDefaultTestImage()
pod.Spec.Containers[1].Command = e2epod.GenerateScriptCmd("sleep 100000")
pod.Spec.Containers[1].Command = e2epod.GenerateScriptCmd(e2epod.InfiniteSleepCommand)
pod.Spec.Containers[1].Args = nil
hooks.AddLivenessProbe(pod, probeFilePath)
@ -971,10 +971,10 @@ func testSubpathReconstruction(ctx context.Context, f *framework.Framework, host
// Change to busybox
pod.Spec.Containers[0].Image = e2epod.GetDefaultTestImage()
pod.Spec.Containers[0].Command = e2epod.GenerateScriptCmd("sleep 100000")
pod.Spec.Containers[0].Command = e2epod.GenerateScriptCmd(e2epod.InfiniteSleepCommand)
pod.Spec.Containers[0].Args = nil
pod.Spec.Containers[1].Image = e2epod.GetDefaultTestImage()
pod.Spec.Containers[1].Command = e2epod.GenerateScriptCmd("sleep 100000")
pod.Spec.Containers[1].Command = e2epod.GenerateScriptCmd(e2epod.InfiniteSleepCommand)
pod.Spec.Containers[1].Args = nil
// If grace period is too short, then there is not enough time for the volume
// manager to cleanup the volumes

View File

@ -170,7 +170,7 @@ func (t *volumeLimitsTestSuite) DefineTests(driver storageframework.TestDriver,
// Create <limit> Pods.
ginkgo.By(fmt.Sprintf("Creating %d Pod(s) with one volume each", limit))
for i := 0; i < limit; i++ {
pod := StartInPodWithVolumeSource(ctx, l.cs, *l.resource.VolSource, l.ns.Name, "volume-limits", "sleep 1000000", selection)
pod := StartInPodWithVolumeSource(ctx, l.cs, *l.resource.VolSource, l.ns.Name, "volume-limits", e2epod.InfiniteSleepCommand, selection)
l.podNames = append(l.podNames, pod.Name)
l.pvcNames = append(l.pvcNames, ephemeral.VolumeClaimName(pod, &pod.Spec.Volumes[0]))
}
@ -214,7 +214,7 @@ func (t *volumeLimitsTestSuite) DefineTests(driver storageframework.TestDriver,
}
ginkgo.By("Creating an extra pod with one volume to exceed the limit")
pod := StartInPodWithVolumeSource(ctx, l.cs, *l.resource.VolSource, l.ns.Name, "volume-limits-exceeded", "sleep 10000", selection)
pod := StartInPodWithVolumeSource(ctx, l.cs, *l.resource.VolSource, l.ns.Name, "volume-limits-exceeded", e2epod.InfiniteSleepCommand, selection)
l.podNames = append(l.podNames, pod.Name)
ginkgo.By("Waiting for the pod to get unschedulable with the right message")