Skip to content

Commit

Permalink
ibmcloud: Included Contianer Ports along with nginx pod
Browse files Browse the repository at this point in the history
Added Containerport along with statements for debugging readiness probe

Fixes:  confidential-containers#1450

Signed-off-by: Sudharshan Muralidharan <sudharshan.muralidharan@ibm.com>
  • Loading branch information
sudharshanibm3 committed Oct 9, 2023
1 parent b4ec03d commit 16a373e
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 5 deletions.
31 changes: 31 additions & 0 deletions test/e2e/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr"
)

type podOption func(*corev1.Pod)
Expand All @@ -18,6 +19,23 @@ func withRestartPolicy(restartPolicy corev1.RestartPolicy) podOption {
}
}

// Optional method to add ContainerPort and ReadinessProbe to listen Port 80
func withContainerPort(port int32) podOption {
return func(p *corev1.Pod) {
p.Spec.Containers[0].Ports = []corev1.ContainerPort{{ContainerPort: port}}
p.Spec.Containers[0].ReadinessProbe = &corev1.Probe{
ProbeHandler: corev1.ProbeHandler{
HTTPGet: &corev1.HTTPGetAction{
Path: "/",
Port: intstr.FromInt(80),
},
},
InitialDelaySeconds: 10,
PeriodSeconds: 5,
}
}
}

func withCommand(command []string) podOption {
return func(p *corev1.Pod) {
p.Spec.Containers[0].Command = command
Expand All @@ -40,6 +58,19 @@ func withImagePullSecrets(secretName string) podOption {
}
}

// // optional method to add initcontainer in pod defenition
// func withInitContainers() podOption {
// return func(p *corev1.Pod) {
// p.Spec.InitContainers = []corev1.Container{
// {
// Name: "useradd-init-container",
// Image: "busybox",
// Command: []string{"adduser", "-D", "nginx"},
// },
// }
// }
// }

func withConfigMapBinding(mountPath string, configMapName string) podOption {
return func(p *corev1.Pod) {
p.Spec.Containers[0].VolumeMounts = append(p.Spec.Containers[0].VolumeMounts, corev1.VolumeMount{Name: "config-volume", MountPath: mountPath})
Expand Down
39 changes: 34 additions & 5 deletions test/e2e/common_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,8 @@ func (tc *testCase) run() {
if err = wait.For(conditions.New(client.Resources()).PodPhaseMatch(tc.pod, tc.podState), wait.WithTimeout(WAIT_POD_RUNNING_TIMEOUT)); err != nil {
t.Fatal(err)
}
if tc.podState == v1.PodRunning {

if tc.podState == v1.PodRunning || tc.pod.Spec.Containers[0].ReadinessProbe != nil {
clientset, err := kubernetes.NewForConfig(client.RESTConfig())
if err != nil {
t.Fatal(err)
Expand All @@ -194,9 +195,37 @@ func (tc *testCase) run() {
if err != nil {
t.Fatal(err)
}
//Included logs for debugging nightly tests
//Added logs for debugging nightly tests
t.Logf("Expected Pod State: %v", tc.podState)
t.Logf("Current Pod State: %v", pod.Status.Phase)
//Getting Readiness probe of a container
for i, condition := range pod.Status.Conditions {
fmt.Printf("===================\n")
fmt.Printf("Checking Conditons - %v....\n", i+1)
fmt.Printf("===================\n")
fmt.Printf("*.Condition Type: %v\n", condition.Type)
fmt.Printf("*.Condition Status: %v\n", condition.Status)
fmt.Printf("*.Condition Last Probe Time: %v\n", condition.LastProbeTime)
fmt.Printf("*.Condition Last Transition Time: %v\n", condition.LastTransitionTime)
fmt.Printf("*.Condition Last Message: %v\n", condition.Message)
fmt.Printf("*.Condition Last Reason: %v\n", condition.Reason)
}

readinessProbe := pod.Spec.Containers[0].ReadinessProbe
if readinessProbe != nil {
fmt.Printf("===================\n")
fmt.Printf("Checking Readiness Probe....\n")
fmt.Printf("===================\n")
fmt.Printf("*.Initial Delay Seconds: %v\n", readinessProbe.InitialDelaySeconds)
fmt.Printf("*.Timeout Seconds: %v\n", readinessProbe.TimeoutSeconds)
fmt.Printf("*.Success Threshold: %v\n", readinessProbe.SuccessThreshold)
fmt.Printf("*.Failure Threshold: %v\n", readinessProbe.FailureThreshold)
fmt.Printf("*.Period Seconds: %v\n", readinessProbe.PeriodSeconds)
fmt.Printf("*.Probe Handler: %v\n", readinessProbe.ProbeHandler)
fmt.Printf("*.Probe Handler Port: %v\n", readinessProbe.ProbeHandler.HTTPGet.Port)
fmt.Printf("===================\n")
}

}

}
Expand Down Expand Up @@ -636,7 +665,7 @@ func doTestCreatePodWithConfigMap(t *testing.T, assert CloudAssert) {
configMapPath := podKubeConfigmapDir + configMapFileName
configMapContents := "Hello, world"
configMapData := map[string]string{configMapFileName: configMapContents}
pod := newPod(namespace, podName, containerName, imageName, withConfigMapBinding(podKubeConfigmapDir, configMapName))
pod := newPod(namespace, podName, containerName, imageName, withConfigMapBinding(podKubeConfigmapDir, configMapName), withContainerPort(80))
configMap := newConfigMap(namespace, configMapName, configMapData)
testCommands := []testCommand{
{
Expand Down Expand Up @@ -672,7 +701,7 @@ func doTestCreatePodWithSecret(t *testing.T, assert CloudAssert) {
password := "password"
passwordPath := podKubeSecretsDir + passwordFileName
secretData := map[string][]byte{passwordFileName: []byte(password), usernameFileName: []byte(username)}
pod := newPod(namespace, podName, containerName, imageName, withSecretBinding(podKubeSecretsDir, secretName))
pod := newPod(namespace, podName, containerName, imageName, withSecretBinding(podKubeSecretsDir, secretName), withContainerPort(80))
secret := newSecret(namespace, secretName, secretData, v1.SecretTypeOpaque)

testCommands := []testCommand{
Expand Down Expand Up @@ -781,7 +810,7 @@ func doTestCreatePeerPodAndCheckEnvVariableLogsWithDeploymentOnly(t *testing.T,
namespace := envconf.RandomName("default", 7)
podName := "env-variable-in-config"
imageName := "nginx:latest"
pod := newPod(namespace, podName, podName, imageName, withRestartPolicy(v1.RestartPolicyOnFailure), withEnvironmentalVariables([]v1.EnvVar{{Name: "ISPRODUCTION", Value: "true"}}), withCommand([]string{"/bin/sh", "-c", "env"}))
pod := newPod(namespace, podName, podName, imageName, withRestartPolicy(v1.RestartPolicyOnFailure), withEnvironmentalVariables([]v1.EnvVar{{Name: "ISPRODUCTION", Value: "true"}}), withCommand([]string{"/bin/sh", "-c", "env"}), withContainerPort(80))
expectedPodLogString := "ISPRODUCTION=true"
newTestCase(t, "EnvVariablePeerPodWithDeploymentOnly", assert, "Peer pod with environmental variables has been created").withPod(pod).withExpectedPodLogString(expectedPodLogString).withCustomPodState(v1.PodSucceeded).run()
}
Expand Down
1 change: 1 addition & 0 deletions test/e2e/ibmcloud_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,7 @@ func newPodWithPVCFromIBMVPCBlockDriver(namespace, podName, containerName, image
Name: containerName,
Image: imageName,
ImagePullPolicy: corev1.PullAlways,
Ports: []corev1.ContainerPort{{ContainerPort: 80}},
},
},
ServiceAccountName: "ibm-vpc-block-node-sa",
Expand Down

0 comments on commit 16a373e

Please sign in to comment.