Skip to content

Commit 2810d99

Browse files
authored
[wko-nightly/3.4] ItMultiDomainModelsWithLoadBalancer test class failing intermittently (#3491)
* ItMultiDomainModelsWithLoadBalancer test class failing intermittently
1 parent 233f921 commit 2810d99

File tree

4 files changed

+46
-24
lines changed

4 files changed

+46
-24
lines changed

integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMultiDomainModelsWithLoadBalancer.java

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,13 @@
3535
import oracle.weblogic.kubernetes.logging.LoggingFacade;
3636
import oracle.weblogic.kubernetes.utils.DomainUtils;
3737
import oracle.weblogic.kubernetes.utils.ExecResult;
38-
import org.awaitility.core.ConditionFactory;
3938
import org.junit.jupiter.api.BeforeAll;
4039
import org.junit.jupiter.api.DisplayName;
4140
import org.junit.jupiter.api.Test;
4241
import org.junit.jupiter.params.ParameterizedTest;
4342
import org.junit.jupiter.params.provider.ValueSource;
4443

4544
import static java.nio.file.Paths.get;
46-
import static java.util.concurrent.TimeUnit.MINUTES;
47-
import static java.util.concurrent.TimeUnit.SECONDS;
4845
import static oracle.weblogic.kubernetes.TestConstants.ADMIN_PASSWORD_DEFAULT;
4946
import static oracle.weblogic.kubernetes.TestConstants.ADMIN_SERVER_NAME_BASE;
5047
import static oracle.weblogic.kubernetes.TestConstants.ADMIN_USERNAME_DEFAULT;
@@ -109,8 +106,6 @@
109106
import static oracle.weblogic.kubernetes.utils.PodUtils.setPodAntiAffinity;
110107
import static oracle.weblogic.kubernetes.utils.SecretUtils.createSecretWithUsernamePassword;
111108
import static oracle.weblogic.kubernetes.utils.ThreadSafeLogger.getLogger;
112-
import static org.assertj.core.api.Assertions.assertThat;
113-
import static org.awaitility.Awaitility.with;
114109
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
115110
import static org.junit.jupiter.api.Assertions.assertFalse;
116111
import static org.junit.jupiter.api.Assertions.assertNotEquals;
@@ -145,11 +140,11 @@ class ItMultiDomainModelsWithLoadBalancer {
145140
private static final String WLDF_OPENSESSION_APP_CONTEXT_ROOT = "opensession";
146141
private static final String wlSecretName = "weblogic-credentials";
147142
private static final String DATA_HOME_OVERRIDE = "/u01/mydata";
148-
private static final String miiImageName = "mii-image";
143+
private static final String miiImageName = "mdlb-mii-image";
149144
private static final String wdtModelFileForMiiDomain = "model-multiclusterdomain-sampleapp-wls.yaml";
150-
private static final String miiDomainUid = "miidomain";
151-
private static final String dimDomainUid = "domaininimage";
152-
private static final String domainOnPVUid = "domainonpv";
145+
private static final String miiDomainUid = "mdlb-miidomain";
146+
private static final String dimDomainUid = "mdlb-domaininimage";
147+
private static final String domainOnPVUid = "mdlb-domainonpv";
153148
private static final String wdtModelFileForDomainInImage = "wdt-singlecluster-multiapps-usingprop-wls.yaml";
154149

155150
private static String opNamespace = null;
@@ -167,11 +162,6 @@ class ItMultiDomainModelsWithLoadBalancer {
167162
private static String encryptionSecretName = "encryptionsecret";
168163
private String curlCmd = null;
169164

170-
private ConditionFactory withStandardRetryPolicy =
171-
with().pollDelay(1, SECONDS)
172-
.and().with().pollInterval(5, SECONDS)
173-
.atMost(1, MINUTES).await();
174-
175165
/**
176166
* Install operator and NGINX.
177167
* Create three different type of domains: model in image, domain in PV and domain in image.
@@ -418,7 +408,6 @@ void testLivenessProbe() {
418408
String domainNamespace = domain.getMetadata().getNamespace();
419409
int numClusters = domain.getSpec().getClusters().size();
420410

421-
String serverName;
422411
String serverNamePrefix;
423412
if (numClusters > 1) {
424413
serverNamePrefix = domainUid + "-" + clusterName + "-" + MANAGED_SERVER_NAME_BASE;
@@ -503,10 +492,10 @@ void testLivenessProbe() {
503492
logger.info("Accessing the sample app through NGINX load balancer");
504493
String curlCmd = generateCurlCmd(domainUid, domainNamespace, clusterName, SAMPLE_APP_CONTEXT_ROOT);
505494
List<String> managedServers = listManagedServersBeforeScale(numClusters, clusterName, replicaCount);
506-
assertThat(callWebAppAndCheckForServerNameInResponse(curlCmd, managedServers, 20))
507-
.as("Verify NGINX can access the test web app from all managed servers in the domain")
508-
.withFailMessage("NGINX can not access the test web app from one or more of the managed servers")
509-
.isTrue();
495+
testUntil(() -> callWebAppAndCheckForServerNameInResponse(curlCmd, managedServers, 20),
496+
logger,
497+
"NGINX can access the test web app from all managed servers {0} in the domain",
498+
managedServers);
510499

511500
// shutdown domain and verify the domain is shutdown
512501
shutdownDomainAndVerify(domainNamespace, domainUid, replicaCount);
@@ -879,6 +868,21 @@ private static Domain createDomainOnPvUsingWdt(String domainUid, String domainNa
879868
domainNamespace);
880869
}
881870

871+
// check that admin server pod is ready and service exists in domain namespace
872+
logger.info("Checking that admin server pod {0} is ready and service exists in namespace {1}",
873+
adminServerPodName, domainNamespace);
874+
checkPodReadyAndServiceExists(adminServerPodName, domainUid, domainNamespace);
875+
876+
// check the readiness for the managed servers in each cluster
877+
for (int j = 1; j <= replicaCount; j++) {
878+
String managedServerPodName = domainUid + "-" + MANAGED_SERVER_NAME_BASE + j;
879+
880+
// check managed server pod is ready and service exists in the namespace
881+
logger.info("Checking that managed server pod {0} is ready and service exists in namespace {1}",
882+
managedServerPodName, domainNamespace);
883+
checkPodReadyAndServiceExists(managedServerPodName, domainUid, domainNamespace);
884+
}
885+
882886
return domain;
883887
}
884888

@@ -1245,7 +1249,12 @@ private void verifyAdminConsoleLoginUsingIngressController(String domainUid, Str
12451249
+ "/console/login/LoginForm.jsp --write-out %{http_code} -o /dev/null";
12461250

12471251
logger.info("Executing curl command {0}", curlCmd);
1248-
assertTrue(callWebAppAndWaitTillReady(curlCmd, 60));
1252+
testUntil(() -> callWebAppAndWaitTillReady(curlCmd, 5),
1253+
logger,
1254+
"WebLogic console on domain {0} in namespace {1} is accessible",
1255+
domainUid,
1256+
domainNamespace);
1257+
12491258
logger.info("WebLogic console on domain1 is accessible");
12501259
} else {
12511260
logger.info("Skipping the admin console login test using ingress controller in OKD environment");

integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/DomainUtils.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
import static java.nio.file.Files.createDirectories;
5858
import static java.nio.file.Files.readString;
5959
import static java.nio.file.Paths.get;
60+
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
6061
import static oracle.weblogic.kubernetes.TestConstants.ADMIN_PASSWORD_DEFAULT;
6162
import static oracle.weblogic.kubernetes.TestConstants.ADMIN_SERVER_NAME_BASE;
6263
import static oracle.weblogic.kubernetes.TestConstants.ADMIN_USERNAME_DEFAULT;
@@ -499,7 +500,7 @@ private static void createConfigMapForDomainCreation(String configMapName,
499500
data.put(file.getFileName().toString(), readString(file));
500501
getLogger().info("Making a copy of file {0} to {1} for diagnostic purposes", file,
501502
domainScriptsDir.resolve(file.getFileName()));
502-
copy(file, domainScriptsDir.resolve(file.getFileName()));
503+
copy(file, domainScriptsDir.resolve(file.getFileName()), REPLACE_EXISTING);
503504
}
504505
V1ObjectMeta meta = new V1ObjectMeta()
505506
.name(configMapName)

integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/LoadBalancerUtils.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import oracle.weblogic.kubernetes.actions.impl.primitive.HelmParams;
3535
import oracle.weblogic.kubernetes.logging.LoggingFacade;
3636

37+
import static oracle.weblogic.kubernetes.TestConstants.ADMIN_SERVER_NAME_BASE;
3738
import static oracle.weblogic.kubernetes.TestConstants.APACHE_RELEASE_NAME;
3839
import static oracle.weblogic.kubernetes.TestConstants.APACHE_SAMPLE_CHART_DIR;
3940
import static oracle.weblogic.kubernetes.TestConstants.APPSCODE_REPO_NAME;
@@ -72,7 +73,9 @@
7273
import static oracle.weblogic.kubernetes.assertions.TestAssertions.isVoyagerReady;
7374
import static oracle.weblogic.kubernetes.assertions.TestAssertions.secretExists;
7475
import static oracle.weblogic.kubernetes.utils.ApplicationUtils.callWebAppAndWaitTillReady;
76+
import static oracle.weblogic.kubernetes.utils.CommonTestUtils.checkPodReadyAndServiceExists;
7577
import static oracle.weblogic.kubernetes.utils.CommonTestUtils.checkServiceExists;
78+
import static oracle.weblogic.kubernetes.utils.CommonTestUtils.testUntil;
7679
import static oracle.weblogic.kubernetes.utils.ImageUtils.createTestRepoSecret;
7780
import static oracle.weblogic.kubernetes.utils.ThreadSafeLogger.getLogger;
7881
import static org.assertj.core.api.Assertions.assertThat;
@@ -647,6 +650,12 @@ public static List<String> createIngressForDomainAndVerify(String domainUid,
647650
logger.info("ingress {0} for domain {1} was created in namespace {2}",
648651
ingressName, domainUid, domainNamespace);
649652

653+
// check that admin server pod is ready and service exists in domain namespace
654+
String adminServerPodName = domainUid + "-" + ADMIN_SERVER_NAME_BASE;
655+
logger.info("Checking that admin server pod {0} is ready and service exists in namespace {1}",
656+
adminServerPodName, domainNamespace);
657+
checkPodReadyAndServiceExists(adminServerPodName, domainUid, domainNamespace);
658+
650659
// check the ingress is ready to route the app to the server pod
651660
if (nodeport != 0) {
652661
for (String ingressHost : ingressHostList) {
@@ -655,7 +664,10 @@ public static List<String> createIngressForDomainAndVerify(String domainUid,
655664
+ "/weblogic/ready --write-out %{http_code} -o /dev/null";
656665

657666
logger.info("Executing curl command {0}", curlCmd);
658-
assertTrue(callWebAppAndWaitTillReady(curlCmd, 60));
667+
testUntil(() -> callWebAppAndWaitTillReady(curlCmd, 5),
668+
logger,
669+
"ingress is ready to ping the ready app on server {0}",
670+
K8S_NODEPORT_HOST);
659671
}
660672
}
661673

kindtest.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,8 +305,8 @@ else
305305
echo "Running mvn -Dwdt.download.url=${wdt_download_url} -Dwit.download.url=${wit_download_url} -Dwle.download.url=${wle_download_url} -DPARALLEL_CLASSES=${parallel_run} -DNUMBER_OF_THREADS=${threads} -pl integration-tests -P ${maven_profile_name} verify"
306306
time mvn -Dwdt.download.url="${wdt_download_url}" -Dwit.download.url="${wit_download_url}" -Dwle.download.url="${wle_download_url}" -DPARALLEL_CLASSES="${parallel_run}" -DNUMBER_OF_THREADS="${threads}" -pl integration-tests -P ${maven_profile_name} verify 2>&1 | tee "${RESULT_ROOT}/kindtest.log" || captureLogs
307307
else
308-
echo "Running mvn -Dit.test=!ItOperatorWlsUpgrade, !ItDedicatedMode, !ItT3Channel, !ItOperatorFmwUpgrade, !ItOCILoadBalancer, !ItMiiSampleFmwMain, !ItIstioCrossClusters*, !ItMultiDomainModels, !ItOpenshiftIstioMiiDomain -Dwdt.download.url=${wdt_download_url} -Dwit.download.url=${wit_download_url} -Dwle.download.url=${wle_download_url} -DPARALLEL_CLASSES=${parallel_run} -DNUMBER_OF_THREADS=${threads} -pl integration-tests -P integration-tests verify"
309-
time mvn -Dit.test="!ItOperatorWlsUpgrade, !ItFmwDomainInPVUsingWDT, !ItFmwDynamicDomainInPV, !ItDedicatedMode, !ItT3Channel, !ItOperatorFmwUpgrade, !ItOCILoadBalancer, !ItMiiSampleFmwMain, !ItIstioCrossClusters*, !ItResilience, !ItMultiDomainModels, !ItOpenshiftIstioMiiDomain" -Dwdt.download.url="${wdt_download_url}" -Dwit.download.url="${wit_download_url}" -Dwle.download.url="${wle_download_url}" -DPARALLEL_CLASSES="${parallel_run}" -DNUMBER_OF_THREADS="${threads}" -pl integration-tests -P integration-tests verify 2>&1 | tee "${RESULT_ROOT}/kindtest.log" || captureLogs
308+
echo "Running mvn -Dit.test=!ItLargeCapacityDomainsClusters, !ItOperatorWlsUpgrade, !ItDedicatedMode, !ItT3Channel, !ItOperatorFmwUpgrade, !ItOCILoadBalancer, !ItMiiSampleFmwMain, !ItIstioCrossClusters*, !ItMultiDomainModels, !ItOpenshiftIstioMiiDomain -Dwdt.download.url=${wdt_download_url} -Dwit.download.url=${wit_download_url} -Dwle.download.url=${wle_download_url} -DPARALLEL_CLASSES=${parallel_run} -DNUMBER_OF_THREADS=${threads} -pl integration-tests -P integration-tests verify"
309+
time mvn -Dit.test="!ItLargeCapacityDomainsClusters, !ItOperatorWlsUpgrade, !ItFmwDomainInPVUsingWDT, !ItFmwDynamicDomainInPV, !ItDedicatedMode, !ItT3Channel, !ItOperatorFmwUpgrade, !ItOCILoadBalancer, !ItMiiSampleFmwMain, !ItIstioCrossClusters*, !ItResilience, !ItMultiDomainModels, !ItOpenshiftIstioMiiDomain" -Dwdt.download.url="${wdt_download_url}" -Dwit.download.url="${wit_download_url}" -Dwle.download.url="${wle_download_url}" -DPARALLEL_CLASSES="${parallel_run}" -DNUMBER_OF_THREADS="${threads}" -pl integration-tests -P integration-tests verify 2>&1 | tee "${RESULT_ROOT}/kindtest.log" || captureLogs
310310
fi
311311
fi
312312

0 commit comments

Comments
 (0)