Skip to content

Commit 786085d

Browse files
anpanigrANTARYAMI.PANIGRAHI@ORACLE.COMANTARYAMI.PANIGRAHI@ORACLE.COMANTARYAMI.PANIGRAHI@ORACLE.COM
authored
owls-92094 Resolution to Intermittent CrossDomain MDB tests failure (#2530)
* Resolution to Intermittent CrossDomain MDB tests failure Co-authored-by: ANTARYAMI.PANIGRAHI@ORACLE.COM <anpanigr@anpanigr-1.subnet1ad2phx.devweblogicphx.oraclevcn.com> Co-authored-by: ANTARYAMI.PANIGRAHI@ORACLE.COM <anpanigr@phx3182b0a.subnet4ad3phx.devweblogicphx.oraclevcn.com> Co-authored-by: ANTARYAMI.PANIGRAHI@ORACLE.COM <anpanigr@anpanigr-2.subnet1ad3phx.devweblogicphx.oraclevcn.com>
1 parent a980e4a commit 786085d

File tree

4 files changed

+66
-47
lines changed

4 files changed

+66
-47
lines changed

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

Lines changed: 23 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import oracle.weblogic.kubernetes.logging.LoggingFacade;
3535
import oracle.weblogic.kubernetes.utils.ExecResult;
3636
import org.junit.jupiter.api.BeforeAll;
37+
import org.junit.jupiter.api.BeforeEach;
3738
import org.junit.jupiter.api.DisplayName;
3839
import org.junit.jupiter.api.Test;
3940

@@ -53,7 +54,7 @@
5354
import static oracle.weblogic.kubernetes.assertions.TestAssertions.domainExists;
5455
import static oracle.weblogic.kubernetes.utils.ApplicationUtils.checkAppIsActive;
5556
import static oracle.weblogic.kubernetes.utils.BuildApplication.buildApplication;
56-
import static oracle.weblogic.kubernetes.utils.CommonTestUtils.checkServiceExists;
57+
import static oracle.weblogic.kubernetes.utils.CommonTestUtils.checkPodReadyAndServiceExists;
5758
import static oracle.weblogic.kubernetes.utils.CommonTestUtils.getNextFreePort;
5859
import static oracle.weblogic.kubernetes.utils.CommonTestUtils.testUntil;
5960
import static oracle.weblogic.kubernetes.utils.DbUtils.getDBNodePort;
@@ -66,8 +67,6 @@
6667
import static oracle.weblogic.kubernetes.utils.ImageUtils.createSecretForBaseImages;
6768
import static oracle.weblogic.kubernetes.utils.ImageUtils.dockerLoginAndPushImageToRegistry;
6869
import static oracle.weblogic.kubernetes.utils.OperatorUtils.installAndVerifyOperator;
69-
import static oracle.weblogic.kubernetes.utils.PodUtils.checkPodExists;
70-
import static oracle.weblogic.kubernetes.utils.PodUtils.checkPodReady;
7170
import static oracle.weblogic.kubernetes.utils.PodUtils.getExternalServicePodName;
7271
import static oracle.weblogic.kubernetes.utils.PodUtils.setPodAntiAffinity;
7372
import static oracle.weblogic.kubernetes.utils.SecretUtils.createSecretWithUsernamePassword;
@@ -156,10 +155,26 @@ public static void initAll(@Namespaces(3) List<String> namespaces) {
156155

157156
// install and verify operator
158157
installAndVerifyOperator(opNamespace, domain1Namespace, domain2Namespace);
159-
160158
buildApplicationsAndDomains();
161159
}
162160

161+
/**
162+
* Verify all server pods are running.
163+
* Verify k8s services for all servers are created.
164+
*/
165+
@BeforeEach
166+
public void beforeEach() {
167+
int replicaCount = 2;
168+
for (int i = 1; i <= replicaCount; i++) {
169+
checkPodReadyAndServiceExists(domain2ManagedServerPrefix + i,
170+
domainUid2, domain2Namespace);
171+
}
172+
for (int i = 1; i <= replicaCount; i++) {
173+
checkPodReadyAndServiceExists(domain1ManagedServerPrefix + i,
174+
domainUid1, domain1Namespace);
175+
}
176+
}
177+
163178
private static void updatePropertyFile() {
164179
//create a temporary directory to copy and update the properties file
165180
Path target = Paths.get(PROPS_TEMP_DIR);
@@ -482,38 +497,16 @@ private static void createDomain(String domainUid, String domainNamespace, Strin
482497
);
483498

484499
// check admin server pod exists
500+
// check admin server services created
485501
logger.info("Check for admin server pod {0} existence in namespace {1}",
486502
adminServerPodName, domainNamespace);
487-
checkPodExists(adminServerPodName, domainUid, domainNamespace);
488-
503+
checkPodReadyAndServiceExists(adminServerPodName, domainUid, domainNamespace);
489504
// check managed server pods exist
490-
for (int i = 1; i <= replicaCount; i++) {
491-
logger.info("Check for managed server pod {0} existence in namespace {1}",
492-
managedServerPrefix + i, domainNamespace);
493-
checkPodExists(managedServerPrefix + i, domainUid, domainNamespace);
494-
}
495-
496-
// check admin server pod is ready
497-
logger.info("Wait for admin server pod {0} to be ready in namespace {1}",
498-
adminServerPodName, domainNamespace);
499-
checkPodReady(adminServerPodName, domainUid, domainNamespace);
500-
501-
// check managed server pods are ready
502-
for (int i = 1; i <= replicaCount; i++) {
503-
logger.info("Wait for managed server pod {0} to be ready in namespace {1}",
504-
managedServerPrefix + i, domainNamespace);
505-
checkPodReady(managedServerPrefix + i, domainUid, domainNamespace);
506-
}
507-
508-
logger.info("Check admin service {0} is created in namespace {1}",
509-
adminServerPodName, domainNamespace);
510-
checkServiceExists(adminServerPodName, domainNamespace);
511-
512505
// check managed server services created
513506
for (int i = 1; i <= replicaCount; i++) {
514-
logger.info("Check managed server service {0} is created in namespace {1}",
507+
logger.info("Check for managed server pod {0} existence in namespace {1}",
515508
managedServerPrefix + i, domainNamespace);
516-
checkServiceExists(managedServerPrefix + i, domainNamespace);
509+
checkPodReadyAndServiceExists(managedServerPrefix + i, domainUid, domainNamespace);
517510
}
518511

519512
logger.info("Getting node port");

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

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import oracle.weblogic.kubernetes.logging.LoggingFacade;
3535
import oracle.weblogic.kubernetes.utils.ExecResult;
3636
import org.junit.jupiter.api.BeforeAll;
37+
import org.junit.jupiter.api.BeforeEach;
3738
import org.junit.jupiter.api.DisplayName;
3839
import org.junit.jupiter.api.Test;
3940

@@ -55,6 +56,7 @@
5556
import static oracle.weblogic.kubernetes.utils.ApplicationUtils.checkAppIsActive;
5657
import static oracle.weblogic.kubernetes.utils.ApplicationUtils.checkAppUsingHostHeader;
5758
import static oracle.weblogic.kubernetes.utils.BuildApplication.buildApplication;
59+
import static oracle.weblogic.kubernetes.utils.CommonTestUtils.checkPodReadyAndServiceExists;
5860
import static oracle.weblogic.kubernetes.utils.CommonTestUtils.checkServiceExists;
5961
import static oracle.weblogic.kubernetes.utils.CommonTestUtils.getNextFreePort;
6062
import static oracle.weblogic.kubernetes.utils.CommonTestUtils.testUntil;
@@ -162,12 +164,26 @@ public static void initAll(@Namespaces(3) List<String> namespaces) {
162164
assertDoesNotThrow(() -> addLabelsToNamespace(domain1Namespace,labelMap));
163165
assertDoesNotThrow(() -> addLabelsToNamespace(domain2Namespace,labelMap));
164166
assertDoesNotThrow(() -> addLabelsToNamespace(opNamespace,labelMap));
165-
166167
// install and verify operator
167168
installAndVerifyOperator(opNamespace, domain1Namespace, domain2Namespace);
168-
169169
buildApplicationsAndDomains();
170+
}
170171

172+
/**
173+
* Verify all server pods are running.
174+
* Verify k8s services for all servers are created.
175+
*/
176+
@BeforeEach
177+
public void beforeEach() {
178+
int replicaCount = 2;
179+
for (int i = 1; i <= replicaCount; i++) {
180+
checkPodReadyAndServiceExists(domain2ManagedServerPrefix + i,
181+
domainUid2, domain2Namespace);
182+
}
183+
for (int i = 1; i <= replicaCount; i++) {
184+
checkPodReadyAndServiceExists(domain1ManagedServerPrefix + i,
185+
domainUid1, domain1Namespace);
186+
}
171187
}
172188

173189
private static void updatePropertyFile() {
@@ -539,7 +555,6 @@ private static void createDomain(String domainUid, String domainNamespace, Strin
539555
managedServerPrefix + i, domainNamespace);
540556
checkPodReady(managedServerPrefix + i, domainUid, domainNamespace);
541557
}
542-
543558
}
544559

545560
private static void createDomainResource(String domainUid, String domNamespace, String adminSecretName,

integration-tests/src/test/resources/apps/jmsservlet/src/application/JmsServlet.java

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@
3737

3838
public class JmsServlet extends HttpServlet {
3939

40+
private static int s1count=0;
41+
private static int s2count=0;
42+
4043
protected void doGet(HttpServletRequest request,
4144
HttpServletResponse response)
4245
throws ServletException, IOException {
@@ -113,8 +116,6 @@ protected void doGet(HttpServletRequest request,
113116
out.println("Receiving message from ["+destination+"]");
114117
Message msg=null;
115118
int count = 0;
116-
int s1count=0;
117-
int s2count=0;
118119
JMSConsumer consumer = (JMSConsumer) context.createConsumer(d);
119120
do {
120121
// msg = consumer.receiveNoWait();
@@ -129,22 +130,32 @@ protected void doGet(HttpServletRequest request,
129130
}
130131
} while( msg != null);
131132

132-
out.println("Found ("+s1count+") message from [managed-server1]");
133-
out.println("Found ("+s2count+") message from [managed-server2]");
133+
out.println("Recorded ("+s1count+") message from [managed-server1]");
134+
out.println("Recorded ("+s2count+") message from [managed-server2]");
134135

135-
if ( count == rcount ) {
136-
out.println("Drained ("+count+") message from ["+destination+"]");
136+
// Intermittently, in a single attempt all 20 messages are not
137+
// received on accouting Queue. So the logic is modified to make sure
138+
// the accounting Queue get 20 messages all together with multiple
139+
// attempts. Here the s1count, s2count variables have been made static
140+
// to keep a record of the message received from managed-server1 and
141+
// managed-server2 of domain2 respectively.
142+
// Finally it make sure that s1count and s2count are same
137143

138-
if ( s1count == s2count )
144+
int ccount = s1count + s2count;
145+
if ( ccount == rcount ) {
146+
if ( s1count == s2count ) {
139147
out.println("Messages are distributed across MDB instances");
140-
else
148+
} else {
141149
out.println("Messages are NOT distributed across MDB instances");
142-
150+
}
151+
// reset the message counter once all messages are received
152+
s1count=0;
153+
s2count=0;
143154
} else {
144-
out.println("Found ("+count+") message on ["+destination+"] instead of ["+rcount+"]");
145-
}
146-
}
147-
155+
out.println("Total messages received so far is ["+ccount+"]");
156+
out.println("Waiting for more messages to appears on accounting queue");
157+
}
158+
}
148159
} catch (Exception e) {
149160
out.println("Send/Receive FAILED with Unknown Exception " + e);
150161
e.printStackTrace();

integration-tests/src/test/resources/apps/mdbtopic/src/application/MdbTopic.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public void onMessage (Message msg) {
9393
JMSContext context = cf.createContext();
9494
tmsg = context.createTextMessage("(On Server) " + serverRuntime.getName());
9595
context.createProducer().send(rq,tmsg);
96-
System.out.println("["+dateFormat.format(date)+"]<TMDB> message added to [@FWD_DEST_URL@]");
96+
System.out.println("["+dateFormat.format(date)+"]<TMDB> message forwarded to [t3://domain1-admin-server:7001]");
9797
} catch (Exception e) {
9898
e.printStackTrace ();
9999
}

0 commit comments

Comments
 (0)