You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2017/09/19 14:46:15 UTC
[49/50] [abbrv] ignite git commit: ignite-6181-1
http://git-wip-us.apache.org/repos/asf/ignite/blob/2468e009/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java
index 2d6264c..caa1545 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java
@@ -25,7 +25,6 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.configuration.TransactionConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal;
@@ -57,9 +56,6 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
private static final long TX_MIN_TIMEOUT = 1;
/** */
- private static final long TX_TIMEOUT = 500;
-
- /** */
private static final String CACHE_NAME = "test";
/** IP finder. */
@@ -68,12 +64,6 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
/** */
private static final int GRID_CNT = 3;
- /** */
- private final CountDownLatch blocked = new CountDownLatch(1);
-
- /** */
- private final CountDownLatch unblocked = new CountDownLatch(1);
-
/** {@inheritDoc} */
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
@@ -82,12 +72,8 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
((TcpDiscoverySpi)cfg.getDiscoverySpi()).setIpFinder(IP_FINDER);
- TransactionConfiguration txCfg = new TransactionConfiguration();
- txCfg.setDefaultTxTimeout(TX_TIMEOUT);
-
- cfg.setTransactionConfiguration(txCfg);
-
CacheConfiguration ccfg = new CacheConfiguration(CACHE_NAME);
+
ccfg.setAtomicityMode(TRANSACTIONAL);
ccfg.setBackups(2);
@@ -113,7 +99,7 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
/**
* @param e Exception.
*/
- protected void validateException(Exception e) {
+ protected void validateDeadlockException(Exception e) {
assertEquals("Deadlock report is expected",
TransactionDeadlockException.class, e.getCause().getCause().getClass());
}
@@ -191,50 +177,22 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
*
* @throws Exception If failed.
*/
- public void testWaitingTxUnblockedOnTimeout1() throws Exception {
- testWaitingTxUnblockedOnTimeout0(grid(0), grid(0));
- }
+ public void testWaitingTxUnblockedOnTimeout() throws Exception {
+ waitingTxUnblockedOnTimeout(grid(0), grid(0));
- /**
- * Tests if timeout on first tx unblocks second tx waiting for the locked key.
- *
- * @throws Exception If failed.
- */
- public void testWaitingTxUnblockedOnTimeout2() throws Exception {
- testWaitingTxUnblockedOnTimeout0(grid(0), grid(1));
- }
+ waitingTxUnblockedOnTimeout(grid(0), grid(1));
- /**
- * Tests if timeout on first tx unblocks second tx waiting for the locked key.
- *
- * @throws Exception If failed.
- */
- public void testWaitingTxUnblockedOnTimeout3() throws Exception {
Ignite client = startGrid("client");
- testWaitingTxUnblockedOnTimeout0(grid(0), client);
- }
+ waitingTxUnblockedOnTimeout(grid(0), client);
- /**
- * Tests if timeout on first tx unblocks second tx waiting for the locked key.
- *
- * @throws Exception If failed.
- */
- public void testWaitingTxUnblockedOnTimeout4() throws Exception {
- Ignite client = startGrid("client");
+ waitingTxUnblockedOnTimeout(grid(1), client);
- testWaitingTxUnblockedOnTimeout0(client, grid(0));
- }
+ waitingTxUnblockedOnTimeout(client, grid(0));
- /**
- * Tests if timeout on first tx unblocks second tx waiting for the locked key.
- *
- * @throws Exception If failed.
- */
- public void testWaitingTxUnblockedOnTimeout5() throws Exception {
- Ignite client = startGrid("client");
+ waitingTxUnblockedOnTimeout(client, grid(1));
- testWaitingTxUnblockedOnTimeout0(client, client);
+ waitingTxUnblockedOnTimeout(client, client);
}
/**
@@ -242,50 +200,22 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
*
* @throws Exception If failed.
*/
- public void testWaitingTxUnblockedOnTimeout6() throws Exception {
- testWaitingTxUnblockedOnThreadDeath0(grid(0), grid(0));
- }
+ public void testWaitingTxUnblockedOnThreadDeath() throws Exception {
+ waitingTxUnblockedOnThreadDeath(grid(0), grid(0));
- /**
- * Tests if timeout on first tx unblocks second tx waiting for the locked key.
- *
- * @throws Exception If failed.
- */
- public void testWaitingTxUnblockedOnTimeout7() throws Exception {
- testWaitingTxUnblockedOnThreadDeath0(grid(0), grid(1));
- }
+ waitingTxUnblockedOnThreadDeath(grid(0), grid(1));
- /**
- * Tests if timeout on first tx unblocks second tx waiting for the locked key.
- *
- * @throws Exception If failed.
- */
- public void testWaitingTxUnblockedOnTimeout8() throws Exception {
Ignite client = startGrid("client");
- testWaitingTxUnblockedOnThreadDeath0(grid(0), client);
- }
+ waitingTxUnblockedOnThreadDeath(grid(0), client);
- /**
- * Tests if timeout on first tx unblocks second tx waiting for the locked key.
- *
- * @throws Exception If failed.
- */
- public void testWaitingTxUnblockedOnTimeout9() throws Exception {
- Ignite client = startGrid("client");
+ waitingTxUnblockedOnThreadDeath(grid(1), client);
- testWaitingTxUnblockedOnThreadDeath0(client, grid(0));
- }
+ waitingTxUnblockedOnThreadDeath(client, grid(0));
- /**
- * Tests if timeout on first tx unblocks second tx waiting for the locked key.
- *
- * @throws Exception If failed.
- */
- public void testWaitingTxUnblockedOnTimeout10() throws Exception {
- Ignite client = startGrid("client");
+ waitingTxUnblockedOnThreadDeath(client, grid(1));
- testWaitingTxUnblockedOnThreadDeath0(client, client);
+ waitingTxUnblockedOnThreadDeath(client, client);
}
/**
@@ -293,28 +223,16 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
*
* @throws Exception If failed.
*/
- public void testDeadlockUnblockedOnTimeout1() throws Exception {
- testDeadlockUnblockedOnTimeout0(ignite(0), ignite(1));
- }
+ public void testDeadlockUnblockedOnTimeout() throws Exception {
+ deadlockUnblockedOnTimeout(ignite(0), ignite(1));
- /**
- * Tests if deadlock is resolved on timeout with correct message.
- *
- * @throws Exception If failed.
- */
- public void testDeadlockUnblockedOnTimeout2() throws Exception {
- testDeadlockUnblockedOnTimeout0(ignite(0), ignite(0));
- }
+ deadlockUnblockedOnTimeout(ignite(0), ignite(0));
- /**
- * Tests if deadlock is resolved on timeout with correct message.
- *
- * @throws Exception If failed.
- */
- public void testDeadlockUnblockedOnTimeout3() throws Exception {
Ignite client = startGrid("client");
- testDeadlockUnblockedOnTimeout0(ignite(0), client);
+ deadlockUnblockedOnTimeout(ignite(0), client);
+
+ deadlockUnblockedOnTimeout(client, ignite(0));
}
/**
@@ -324,19 +242,22 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
* @param node2 Second node.
* @throws Exception If failed.
*/
- private void testDeadlockUnblockedOnTimeout0(final Ignite node1, final Ignite node2) throws Exception {
+ private void deadlockUnblockedOnTimeout(final Ignite node1, final Ignite node2) throws Exception {
+ info("Start test [node1=" + node1.name() + ", node2=" + node2.name() + ']');
+
final CountDownLatch l = new CountDownLatch(2);
- IgniteInternalFuture<?> fut1 = multithreadedAsync(new Runnable() {
+ IgniteInternalFuture<?> fut1 = GridTestUtils.runAsync(new Runnable() {
@Override public void run() {
try {
- try (Transaction tx = node1.transactions().txStart()) {
- node1.cache(CACHE_NAME).put(1, 1);
+ try (Transaction tx = node1.transactions().txStart(PESSIMISTIC, REPEATABLE_READ, 5000, 2)) {
+ node1.cache(CACHE_NAME).put(1, 10);
l.countDown();
+
U.awaitQuiet(l);
- node1.cache(CACHE_NAME).put(2, 2);
+ node1.cache(CACHE_NAME).put(2, 20);
tx.commit();
@@ -345,17 +266,18 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
}
catch (CacheException e) {
// No-op.
- validateException(e);
+ validateDeadlockException(e);
}
}
- }, 1, "First");
+ }, "First");
- IgniteInternalFuture<?> fut2 = multithreadedAsync(new Runnable() {
+ IgniteInternalFuture<?> fut2 = GridTestUtils.runAsync(new Runnable() {
@Override public void run() {
try (Transaction tx = node2.transactions().txStart(PESSIMISTIC, REPEATABLE_READ, 0, 2)) {
node2.cache(CACHE_NAME).put(2, 2);
l.countDown();
+
U.awaitQuiet(l);
node2.cache(CACHE_NAME).put(1, 1);
@@ -363,13 +285,13 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
tx.commit();
}
}
- }, 1, "Second");
+ }, "Second");
fut1.get();
fut2.get();
- assertTrue("Expecting commited key 2", node1.cache(CACHE_NAME).containsKey(2));
- assertTrue("Expecting commited key 1", node1.cache(CACHE_NAME).containsKey(1));
+ assertTrue("Expecting committed key 2", node1.cache(CACHE_NAME).containsKey(2));
+ assertTrue("Expecting committed key 1", node1.cache(CACHE_NAME).containsKey(1));
}
/**
@@ -380,6 +302,8 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
public void testTimeoutRemoval() throws Exception {
IgniteEx client = (IgniteEx)startGrid("client");
+ final long TX_TIMEOUT = 250;
+
int modesCnt = 5;
for (int i = 0; i < modesCnt; i++)
@@ -421,6 +345,8 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
final int key = 1, val = 1;
+ final long TX_TIMEOUT = 250;
+
try (Transaction tx = near.transactions().txStart(concurrency, isolation, TX_TIMEOUT, 1)) {
near.cache(CACHE_NAME).put(key, val);
@@ -496,16 +422,30 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
* @param other Node starting second tx.
* @throws Exception If failed.
*/
- private void testWaitingTxUnblockedOnTimeout0(final Ignite near, final Ignite other) throws Exception {
- final int recordsCnt = 100;
+ private void waitingTxUnblockedOnTimeout(final Ignite near, final Ignite other) throws Exception {
+ info("Start test [node1=" + near.name() + ", node2=" + other.name() + ']');
- IgniteInternalFuture<?> fut1 = multithreadedAsync(new Runnable() {
+ final CountDownLatch blocked = new CountDownLatch(1);
+
+ final CountDownLatch unblocked = new CountDownLatch(1);
+
+ final int recordsCnt = 5;
+
+ IgniteInternalFuture<?> fut1 = GridTestUtils.runAsync(new Runnable() {
@Override public void run() {
- try (Transaction tx = near.transactions().txStart()) {
- for (int i = 0; i < recordsCnt; i++)
- near.cache(CACHE_NAME).put(i, i);
+ try (Transaction tx = near.transactions().txStart(PESSIMISTIC, REPEATABLE_READ, 1000, 0)) {
+ try {
+ for (int i = 0; i < recordsCnt; i++)
+ near.cache(CACHE_NAME).put(i, i);
- blocked.countDown();
+ info("Locked all keys.");
+ }
+ catch (CacheException e) {
+ info("Failed to lock keys: " + e);
+ }
+ finally {
+ blocked.countDown();
+ }
// Will be unblocked after tx timeout occurs.
U.awaitQuiet(unblocked);
@@ -530,16 +470,16 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
}
// Check thread is able to start new tx.
- try (Transaction tx = near.transactions().txStart()) {
+ try (Transaction tx = near.transactions().txStart(PESSIMISTIC, REPEATABLE_READ, 60_000, 0)) {
for (int i = 0; i < recordsCnt; i++)
near.cache(CACHE_NAME).put(i, i);
tx.commit();
}
}
- }, 1, "First");
+ }, "First");
- IgniteInternalFuture<?> fut2 = multithreadedAsync(new Runnable() {
+ IgniteInternalFuture<?> fut2 = GridTestUtils.runAsync(new Runnable() {
@Override public void run() {
U.awaitQuiet(blocked);
@@ -551,7 +491,7 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
tx.commit();
}
}
- }, 1, "Second");
+ }, "Second");
fut2.get();
@@ -565,17 +505,45 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
* @param other Node starting second tx.
* @throws Exception If failed.
*/
- private void testWaitingTxUnblockedOnThreadDeath0(final Ignite near, final Ignite other) throws Exception {
- final int recordsCnt = 100;
+ private void waitingTxUnblockedOnThreadDeath(final Ignite near, final Ignite other) throws Exception {
+ waitingTxUnblockedOnThreadDeath0(near, other, 10, 1000); // Try provoke timeout after all keys are locked.
+
+ waitingTxUnblockedOnThreadDeath0(near, other, 1000, 100); // Try provoke timeout while trying to lock keys.
+ }
+
+ /**
+ * @param near Node starting tx which is timed out.
+ * @param other Node starting second tx.
+ * @param recordsCnt Number of records to locks.
+ * @param timeout Transaction timeout.
+ * @throws Exception If failed.
+ */
+ private void waitingTxUnblockedOnThreadDeath0(final Ignite near,
+ final Ignite other,
+ final int recordsCnt,
+ final long timeout)
+ throws Exception
+ {
+ info("Start test [node1=" + near.name() + ", node2=" + other.name() + ']');
+
+ final CountDownLatch blocked = new CountDownLatch(1);
IgniteInternalFuture<?> fut1 = multithreadedAsync(new Runnable() {
@Override public void run() {
- near.transactions().txStart();
+ near.transactions().txStart(PESSIMISTIC, REPEATABLE_READ, timeout, recordsCnt);
- for (int i = 0; i < recordsCnt; i++)
- near.cache(CACHE_NAME).put(i, i);
+ try {
+ for (int i = 0; i < recordsCnt; i++)
+ near.cache(CACHE_NAME).put(i, i);
- blocked.countDown();
+ log.info("Locked all records.");
+ }
+ catch (Exception e) {
+ log.info("Failed to locked all records: " + e);
+ }
+ finally {
+ blocked.countDown();
+ }
throw new IgniteException("Failure");
}
@@ -585,7 +553,7 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
@Override public void run() {
U.awaitQuiet(blocked);
- try (Transaction tx = other.transactions().txStart(PESSIMISTIC, REPEATABLE_READ, 0, 1)) {
+ try (Transaction tx = other.transactions().txStart(PESSIMISTIC, REPEATABLE_READ, 0, recordsCnt)) {
for (int i = 0; i < recordsCnt; i++)
other.cache(CACHE_NAME).put(i, i);
http://git-wip-us.apache.org/repos/asf/ignite/blob/2468e009/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
index bf01c0c..99de6c8 100755
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
@@ -82,8 +82,8 @@ import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicInvokeTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicLocalInvokeTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicLocalWithStoreInvokeTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicNearEnabledInvokeTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicWithStoreInvokeTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicStopBusySelfTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicWithStoreInvokeTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheEntryListenerAtomicLocalTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheEntryListenerAtomicReplicatedTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheEntryListenerAtomicTest;
@@ -123,6 +123,7 @@ import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheConnec
import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheMessageRecoveryIdleConnectionTest;
import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheMessageWriteTimeoutTest;
import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheSystemTransactionsSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheThreadLocalTxTest;
import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheTxMessageRecoveryTest;
import org.apache.ignite.internal.processors.cache.distributed.IgniteCrossCacheTxStoreSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheAtomicNearCacheSelfTest;
@@ -318,6 +319,7 @@ public class IgniteCacheTestSuite extends TestSuite {
suite.addTestSuite(TxRollbackOnTimeoutTest.class);
suite.addTestSuite(TxRollbackOnTimeoutNoDeadlockDetectionTest.class);
+ suite.addTestSuite(IgniteCacheThreadLocalTxTest.class);
return suite;
}