This is an automated email from the ASF dual-hosted git repository.

eshu11 pushed a commit to branch feature/GEODE-7112
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 6ed1c7fd90a26efbf95ec3e025c64a0135ec4191
Author: eshu <[email protected]>
AuthorDate: Wed Aug 21 16:46:25 2019 -0700

    GEODE-7112: add wait until user transaction is timed out.
---
 .../internal/jta/dunit/TxnTimeOutDUnitTest.java    | 25 ++++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)

diff --git 
a/geode-core/src/distributedTest/java/org/apache/geode/internal/jta/dunit/TxnTimeOutDUnitTest.java
 
b/geode-core/src/distributedTest/java/org/apache/geode/internal/jta/dunit/TxnTimeOutDUnitTest.java
index 183349a..7665158 100755
--- 
a/geode-core/src/distributedTest/java/org/apache/geode/internal/jta/dunit/TxnTimeOutDUnitTest.java
+++ 
b/geode-core/src/distributedTest/java/org/apache/geode/internal/jta/dunit/TxnTimeOutDUnitTest.java
@@ -18,6 +18,7 @@ import static 
org.apache.geode.distributed.ConfigurationProperties.CACHE_XML_FIL
 import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
 import static org.apache.geode.test.dunit.Assert.fail;
 import static 
org.apache.geode.test.util.ResourceUtils.createTempFileFromResource;
+import static org.assertj.core.api.Assertions.assertThat;
 
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
@@ -31,6 +32,7 @@ import java.util.Properties;
 import javax.naming.Context;
 import javax.naming.NamingException;
 import javax.transaction.NotSupportedException;
+import javax.transaction.Status;
 import javax.transaction.SystemException;
 import javax.transaction.UserTransaction;
 
@@ -205,8 +207,11 @@ public class TxnTimeOutDUnitTest extends 
JUnit4DistributedTestCase {
       Context ctx = cache.getJNDIContext();
       UserTransaction utx = (UserTransaction) 
ctx.lookup("java:/UserTransaction");
       utx.begin();
+      assertThat(utx.getStatus() == Status.STATUS_ACTIVE);
       utx.setTransactionTimeout(2);
-      Thread.sleep(6000);
+      long start = System.currentTimeMillis();
+      Thread.sleep(2000);
+      waitUntilTransactionTimeout(utx, start);
       try {
         utx.commit();
       } catch (Exception e) {
@@ -223,14 +228,27 @@ public class TxnTimeOutDUnitTest extends 
JUnit4DistributedTestCase {
     }
   }
 
+  private static void waitUntilTransactionTimeout(UserTransaction utx, long 
start)
+      throws InterruptedException, SystemException {
+    long waitTime = 30 * 1000; // 30 seconds
+    do {
+      long current = System.currentTimeMillis();
+      assertThat(current - start < waitTime).as("UserTransaction is not timed 
out for 30 seconds");
+      Thread.sleep(10);
+    } while (utx.getStatus() != Status.STATUS_NO_TRANSACTION);
+  }
+
   public static void runTest2() throws Exception {
     boolean exceptionOccurred = false;
     try {
       Context ctx = cache.getJNDIContext();
       UserTransaction utx = (UserTransaction) 
ctx.lookup("java:/UserTransaction");
       utx.begin();
+      assertThat(utx.getStatus() == Status.STATUS_ACTIVE);
       utx.setTransactionTimeout(2);
-      Thread.sleep(6000);
+      long start = System.currentTimeMillis();
+      Thread.sleep(2000);
+      waitUntilTransactionTimeout(utx, start);
       try {
         utx.commit();
       } catch (Exception e) {
@@ -251,8 +269,11 @@ public class TxnTimeOutDUnitTest extends 
JUnit4DistributedTestCase {
     Context ctx = cache.getJNDIContext();
     UserTransaction utx = (UserTransaction) 
ctx.lookup("java:/UserTransaction");
     utx.begin();
+    assertThat(utx.getStatus() == Status.STATUS_ACTIVE);
     utx.setTransactionTimeout(sleeptime);
+    long start = System.currentTimeMillis();
     Thread.sleep(sleeptime * 2000);
+    waitUntilTransactionTimeout(utx, start);
     try {
       utx.commit();
     } catch (Exception e) {

Reply via email to