From 9002bb1be16613164a460ef77e3721afd146d6b1 Mon Sep 17 00:00:00 2001 From: xiancao Date: Wed, 8 Feb 2023 05:05:47 +0000 Subject: [PATCH 1/2] fix intermittent test failure --- .../kubernetes/ItRetryImprovementMisc.java | 20 ++++++++++++++++--- .../kubernetes/ItValidateWebhookReplicas.java | 6 +++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItRetryImprovementMisc.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItRetryImprovementMisc.java index 69ad730bb99..172a7f1f8f1 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItRetryImprovementMisc.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItRetryImprovementMisc.java @@ -1,8 +1,9 @@ -// Copyright (c) 2022, Oracle and/or its affiliates. +// Copyright (c) 2022, 2023, Oracle and/or its affiliates. // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. package oracle.weblogic.kubernetes; +import java.time.OffsetDateTime; import java.util.Collections; import java.util.List; @@ -29,6 +30,7 @@ import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_IMAGE_NAME; import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_IMAGE_TAG; import static oracle.weblogic.kubernetes.actions.TestActions.deletePod; +import static oracle.weblogic.kubernetes.actions.TestActions.getPodCreationTimestamp; import static oracle.weblogic.kubernetes.actions.TestActions.patchClusterCustomResource; import static oracle.weblogic.kubernetes.assertions.TestAssertions.domainStatusClustersConditionTypeHasExpectedStatus; import static oracle.weblogic.kubernetes.assertions.TestAssertions.domainStatusConditionTypeHasExpectedStatus; @@ -41,6 +43,7 @@ import static oracle.weblogic.kubernetes.utils.PodUtils.checkPodDeleted; import static oracle.weblogic.kubernetes.utils.PodUtils.checkPodDoesNotExist; import static oracle.weblogic.kubernetes.utils.PodUtils.checkPodReady; +import static oracle.weblogic.kubernetes.utils.PodUtils.checkPodRestarted; import static oracle.weblogic.kubernetes.utils.ThreadSafeLogger.getLogger; import static org.awaitility.Awaitility.with; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; @@ -55,7 +58,7 @@ class ItRetryImprovementMisc { private static String domainNamespace = null; - private static String domainUid = "domain1"; + private static String domainUid = "rimiscdomain1"; private static String adminServerPodName = String.format("%s-%s", domainUid, ADMIN_SERVER_NAME_BASE); private static String managedServerPrefix = String.format("%s-%s", domainUid, MANAGED_SERVER_NAME_BASE); @@ -445,8 +448,13 @@ void testClusterReplicasTo2() { @DisplayName("Test domain and cluster status conditions when deleting one of the cluster server pods with cluster " + "replicas set to 2.") void testDeleteOneClusterPodWithReplicasSetTo2() { - // delete one server pod String podName = managedServerPrefix + 1; + + OffsetDateTime ms1PodCreationTime = + assertDoesNotThrow(() -> getPodCreationTimestamp(domainNamespace, "", podName), + String.format("Failed to get creationTimestamp for pod %s", podName)); + + // delete one server pod assertDoesNotThrow(() -> deletePod(podName, domainNamespace), String.format("delete pod %s in namespace %s failed", podName, domainNamespace)); @@ -463,6 +471,7 @@ void testDeleteOneClusterPodWithReplicasSetTo2() { DOMAIN_STATUS_CONDITION_AVAILABLE_TYPE, "TRUE", DOMAIN_VERSION); // Wait for the pod restarted + checkPodRestarted(domainUid, domainNamespace, podName, ms1PodCreationTime); checkPodReady(podName, domainUid, domainNamespace); // check the cluster and domain Complete should become true @@ -483,6 +492,10 @@ void testDeleteOneClusterPodWithReplicasSetTo2() { @Test @DisplayName("Test domain and cluster status condition when deleting the admin server pod.") void testDeleteAdminServer() { + OffsetDateTime adminPodCreationTime = + assertDoesNotThrow(() -> getPodCreationTimestamp(domainNamespace, "", adminServerPodName), + String.format("Failed to get creationTimestamp for pod %s", adminServerPodName)); + // delete admin server pod assertDoesNotThrow(() -> deletePod(adminServerPodName, domainNamespace), String.format("delete pod %s in namespace %s failed", adminServerPodName, domainNamespace)); @@ -500,6 +513,7 @@ void testDeleteAdminServer() { clusterName, DOMAIN_STATUS_CONDITION_AVAILABLE_TYPE, "True", DOMAIN_VERSION); // wait for admin server restart + checkPodRestarted(domainUid, domainNamespace, adminServerPodName, adminPodCreationTime); checkPodReady(adminServerPodName, domainUid, domainNamespace); // check the domain status condition Available and Complete become true diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItValidateWebhookReplicas.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItValidateWebhookReplicas.java index 6e33a1a8aba..71f8591b828 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItValidateWebhookReplicas.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItValidateWebhookReplicas.java @@ -1,4 +1,4 @@ -// Copyright (c) 2022, Oracle and/or its affiliates. +// Copyright (c) 2022, 2023, Oracle and/or its affiliates. // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. package oracle.weblogic.kubernetes; @@ -101,8 +101,8 @@ class ItValidateWebhookReplicas { private static String opNamespace = null; private static String domainNamespace = null; private static String domainNamespace2 = null; - private static String domainUid = "domain1"; - private static String domainUid2 = "domain2"; + private static String domainUid = "valwebrepdomain1"; + private static String domainUid2 = "valwebrepdomain2"; private static String adminServerPodName = String.format("%s-%s", domainUid, ADMIN_SERVER_NAME_BASE); private static String managedServerPrefix = String.format("%s-%s", domainUid, MANAGED_SERVER_NAME_BASE); From e958a9b3bcdf801d259b80eca7626c67ea4496eb Mon Sep 17 00:00:00 2001 From: xiancao Date: Wed, 8 Feb 2023 19:07:36 +0000 Subject: [PATCH 2/2] check pod restarted --- .../weblogic/kubernetes/ItRetryImprovementMisc.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItRetryImprovementMisc.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItRetryImprovementMisc.java index 172a7f1f8f1..eb5be65b796 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItRetryImprovementMisc.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItRetryImprovementMisc.java @@ -296,8 +296,13 @@ void testSetClusterToIfNeeded() { @DisplayName("Test domain and cluster status conditions after deleting a server pod of the cluster with " + "cluster replicas set to 1.") void testDeleteServerPodWithReplicasSetTo1() { - // delete a cluster server pod + String podName = managedServerPrefix + 1; + OffsetDateTime ms1PodCreationTime = + assertDoesNotThrow(() -> getPodCreationTimestamp(domainNamespace, "", podName), + String.format("Failed to get creationTimestamp for pod %s", podName)); + + // delete a cluster server pod assertDoesNotThrow(() -> deletePod(podName, domainNamespace), String.format("delete pod %s in namespace %s failed", podName, domainNamespace)); @@ -312,6 +317,7 @@ void testDeleteServerPodWithReplicasSetTo1() { DOMAIN_STATUS_CONDITION_AVAILABLE_TYPE, "False"); // wait the pod is restarted and back to ready + checkPodRestarted(domainUid, domainNamespace, podName, ms1PodCreationTime); checkPodReady(podName, domainUid, domainNamespace); // verify domain and cluster status conditions Available and Complete become true