Added e2e test and fixed existing pod test

This commit is contained in:
Sreeram 2025-03-25 02:05:30 +05:30
parent 94ddb3a98f
commit f035e37c4b
3 changed files with 49 additions and 5 deletions

View File

@ -18,7 +18,6 @@ package pod
import ( import (
"context" "context"
"fmt"
"testing" "testing"
"reflect" "reflect"
@ -52,7 +51,7 @@ func TestPatchPodStatus(t *testing.T) {
"no change", "no change",
func(input v1.PodStatus) v1.PodStatus { return input }, func(input v1.PodStatus) v1.PodStatus { return input },
true, true,
[]byte(fmt.Sprintf(`{"metadata":{"uid":"myuid"}}`)), []byte(`{"metadata":{"uid":"myuid"}}`),
}, },
{ {
"message change", "message change",
@ -61,7 +60,7 @@ func TestPatchPodStatus(t *testing.T) {
return input return input
}, },
false, false,
[]byte(fmt.Sprintf(`{"metadata":{"uid":"myuid"},"status":{"message":"random message"}}`)), []byte(`{"metadata":{"uid":"myuid"},"status":{"message":"random message"}}`),
}, },
{ {
"pod condition change", "pod condition change",
@ -70,7 +69,7 @@ func TestPatchPodStatus(t *testing.T) {
return input return input
}, },
false, false,
[]byte(fmt.Sprintf(`{"metadata":{"uid":"myuid"},"status":{"$setElementOrder/conditions":[{"type":"Ready"},{"type":"PodScheduled"}],"conditions":[{"status":"False","type":"Ready"}]}}`)), []byte(`{"metadata":{"uid":"myuid"},"status":{"$setElementOrder/conditions":[{"type":"Ready"},{"type":"PodScheduled"}],"conditions":[{"status":"False","type":"Ready"}]}}`),
}, },
{ {
"additional init container condition", "additional init container condition",
@ -84,7 +83,7 @@ func TestPatchPodStatus(t *testing.T) {
return input return input
}, },
false, false,
[]byte(fmt.Sprintf(`{"metadata":{"uid":"myuid"},"status":{"initContainerStatuses":[{"image":"","imageID":"","lastState":{},"name":"init-container","ready":true,"restartCount":0,"state":{}}]}}`)), []byte(`{"metadata":{"uid":"myuid"},"status":{"initContainerStatuses":[{"image":"","imageID":"","lastState":{},"name":"init-container","ready":true,"restartCount":0,"state":{}}]}}`),
}, },
} }
for _, tc := range testCases { for _, tc := range testCases {

View File

@ -25,6 +25,7 @@ import (
v1 "k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/intstr"
utilrand "k8s.io/apimachinery/pkg/util/rand"
"k8s.io/kubernetes/test/e2e/feature" "k8s.io/kubernetes/test/e2e/feature"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
e2enode "k8s.io/kubernetes/test/e2e/framework/node" e2enode "k8s.io/kubernetes/test/e2e/framework/node"
@ -661,3 +662,43 @@ var _ = SIGDescribe(feature.PodLifecycleSleepActionAllowZero, func() {
}) })
}) })
var _ = SIGDescribe(feature.ContainerStopSignals, func() {
f := framework.NewDefaultFramework("container-stop-signals")
f.NamespacePodSecurityLevel = admissionapi.LevelBaseline
var podClient *e2epod.PodClient
sigterm := v1.SIGTERM
podName := "pod-" + utilrand.String(5)
ginkgo.Context("when create a pod with a StopSignal lifecycle", func() {
ginkgo.BeforeEach(func(ctx context.Context) {
podClient = e2epod.NewPodClient(f)
})
ginkgo.It("StopSignal defined with pod.OS", func(ctx context.Context) {
testPod := e2epod.MustMixinRestrictedPodSecurity(&v1.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: podName,
},
Spec: v1.PodSpec{
OS: &v1.PodOS{
Name: v1.Linux,
},
Containers: []v1.Container{
{
Name: "test",
Image: imageutils.GetPauseImageName(),
Lifecycle: &v1.Lifecycle{
StopSignal: &sigterm,
},
},
},
},
})
ginkgo.By("submitting the pod to kubernetes")
pod := podClient.CreateSync(ctx, testPod)
framework.ExpectNoError(e2epod.WaitForPodRunningInNamespace(ctx, f.ClientSet, pod), "Pod didn't start when custom StopSignal was passed in Lifecycle")
})
})
})

View File

@ -66,6 +66,10 @@ var (
// TODO: document the feature (owning SIG, when to use this feature for a test) // TODO: document the feature (owning SIG, when to use this feature for a test)
ComprehensiveNamespaceDraining = framework.WithFeature(framework.ValidFeatures.Add("ComprehensiveNamespaceDraining")) ComprehensiveNamespaceDraining = framework.WithFeature(framework.ValidFeatures.Add("ComprehensiveNamespaceDraining"))
// Owner: sig-node
// Enables configuring custom stop signals for containers from container lifecycle
ContainerStopSignals = framework.WithFeature(framework.ValidFeatures.Add("ContainerStopSignals"))
// Owner: sig-api-machinery // Owner: sig-api-machinery
// Marks tests that require coordinated leader election // Marks tests that require coordinated leader election
CoordinatedLeaderElection = framework.WithFeature(framework.ValidFeatures.Add("CoordinatedLeaderElection")) CoordinatedLeaderElection = framework.WithFeature(framework.ValidFeatures.Add("CoordinatedLeaderElection"))