From c9cd761e05ffcd4310e8df60ca62337e30507829 Mon Sep 17 00:00:00 2001 From: Alexey Goncharuk Date: Wed, 26 Apr 2017 12:46:29 +0300 Subject: [PATCH] ignite-2.0 - Fixing tests --- .../datastructures/GridCacheLockImpl.java | 6 ++ .../cache/GridCacheCommandHandler.java | 4 +- ...bstractDataStructuresFailoverSelfTest.java | 64 +++++++++++-------- .../ipfinder/zk/ZookeeperIpFinderTest.java | 5 +- 4 files changed, 51 insertions(+), 28 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheLockImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheLockImpl.java index 3f1a0dd0ce332..01923544d644c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheLockImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheLockImpl.java @@ -197,6 +197,9 @@ protected void addOutgoingSignal(String condition) { outgoingSignals.put(condition, cnt + 1); } + /** + * @param condition Condition. + */ protected void addOutgoingSignalAll(String condition) { outgoingSignals.put(condition, 0); } @@ -329,6 +332,9 @@ protected boolean isLockedLocally(UUID newOwnerID) { return thisNode.equals(getOwnerNode()) || thisNode.equals(newOwnerID); } + /** + * @param newOwnerThreadId New owner thread id. + */ protected void setCurrentOwnerThread(long newOwnerThreadId) { currentOwnerThreadId = newOwnerThreadId; } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java index 79b395dbc0e39..18cd6afc6c044 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java @@ -299,7 +299,9 @@ private static Object appendOrPrepend(Object origVal, Object appendVal, return col; } - throw new IgniteCheckedException("Incompatible types [appendVal=" + appendVal + ", old=" + origVal + ']'); + throw new IgniteCheckedException("Incompatible types [appendVal=" + appendVal + + ",type=" + (appendVal != null ? appendVal.getClass().getSimpleName() : "NULL") + ", old=" + origVal + + ",type= " + (origVal != null ? origVal.getClass().getSimpleName() : "NULL") + ']'); } /** diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheAbstractDataStructuresFailoverSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheAbstractDataStructuresFailoverSelfTest.java index cb4f6fcb38144..b38f07e0d23dc 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheAbstractDataStructuresFailoverSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheAbstractDataStructuresFailoverSelfTest.java @@ -33,7 +33,6 @@ import org.apache.ignite.IgniteAtomicReference; import org.apache.ignite.IgniteAtomicSequence; import org.apache.ignite.IgniteAtomicStamped; -import org.apache.ignite.IgniteCompute; import org.apache.ignite.IgniteCountDownLatch; import org.apache.ignite.IgniteException; import org.apache.ignite.IgniteInterruptedException; @@ -44,11 +43,13 @@ import org.apache.ignite.configuration.AtomicConfiguration; import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.configuration.IgniteConfiguration; +import org.apache.ignite.internal.IgniteEx; import org.apache.ignite.internal.IgniteInternalFuture; import org.apache.ignite.internal.util.GridLeanSet; import org.apache.ignite.internal.util.typedef.CA; import org.apache.ignite.internal.util.typedef.F; import org.apache.ignite.internal.util.typedef.G; +import org.apache.ignite.internal.util.typedef.PA; import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteBiTuple; import org.apache.ignite.lang.IgniteCallable; @@ -60,6 +61,7 @@ import org.apache.ignite.testframework.GridTestUtils; import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; +import static org.apache.ignite.testframework.GridTestUtils.waitForCondition; /** * Failover tests for cache data structures. @@ -408,7 +410,7 @@ public void testCountDownLatchTopologyChange() throws Exception { * @throws Exception If failed. */ public void testSemaphoreFailoverSafe() throws Exception { - try (IgniteSemaphore semaphore = grid(0).semaphore(STRUCTURE_NAME, 20, true, true)) { + try (final IgniteSemaphore semaphore = grid(0).semaphore(STRUCTURE_NAME, 20, true, true)) { Ignite g = startGrid(NEW_IGNITE_INSTANCE_NAME); IgniteSemaphore semaphore2 = g.semaphore(STRUCTURE_NAME, 20, true, false); @@ -419,7 +421,11 @@ public void testSemaphoreFailoverSafe() throws Exception { stopGrid(NEW_IGNITE_INSTANCE_NAME); - assertEquals(20, semaphore.availablePermits()); + waitForCondition(new PA() { + @Override public boolean apply() { + return semaphore.availablePermits() == 20; + } + }, 2000); } } @@ -736,10 +742,16 @@ public void testFairReentrantLockConstantMultipleTopologyChangeNonFailoverSafe() /** * @throws Exception If failed. */ - private void doTestReentrantLock(ConstantTopologyChangeWorker topWorker, final boolean failoverSafe, final boolean fair) throws Exception { - try (IgniteLock lock = grid(0).reentrantLock(STRUCTURE_NAME, failoverSafe, fair, true)) { - IgniteInternalFuture fut = topWorker.startChangingTopology(new IgniteClosure() { - @Override public Object apply(Ignite ignite) { + private void doTestReentrantLock( + final ConstantTopologyChangeWorker topWorker, + final boolean failoverSafe, + final boolean fair + ) throws Exception { + IgniteEx ig = grid(0); + + try (IgniteLock lock = ig.reentrantLock(STRUCTURE_NAME, failoverSafe, fair, true)) { + IgniteInternalFuture fut = topWorker.startChangingTopology(new IgniteClosure() { + @Override public Void apply(Ignite ignite) { final IgniteLock l = ignite.reentrantLock(STRUCTURE_NAME, failoverSafe, fair, false); final AtomicBoolean done = new AtomicBoolean(false); @@ -767,33 +779,33 @@ private void doTestReentrantLock(ConstantTopologyChangeWorker topWorker, final b }); while (!fut.isDone()) { - while (true) { - try { - lock.lock(); - } - catch (IgniteException e) { - // Exception may happen in non-failoversafe mode. - if (failoverSafe) - throw e; - } - finally { - // Broken lock cannot be used in non-failoversafe mode. - if(!lock.isBroken() || failoverSafe) { - assertTrue(lock.isHeldByCurrentThread()); + try { + lock.lock(); + } + catch (IgniteException e) { + // Exception may happen in non-failoversafe mode. + if (failoverSafe) + throw e; + } + finally { + // Broken lock cannot be used in non-failoversafe mode. + if(!lock.isBroken() || failoverSafe) { + assertTrue(lock.isHeldByCurrentThread()); - lock.unlock(); + lock.unlock(); - assertFalse(lock.isHeldByCurrentThread()); - } - break; + assertFalse(lock.isHeldByCurrentThread()); } } } fut.get(); - for (Ignite g : G.allGrids()) - assertFalse(g.reentrantLock(STRUCTURE_NAME, failoverSafe, fair, false).isHeldByCurrentThread()); + for (Ignite g : G.allGrids()){ + IgniteLock l = g.reentrantLock(STRUCTURE_NAME, failoverSafe, fair, false); + + assertTrue(g.name(), !l.isHeldByCurrentThread() || lock.isBroken()); + } } } diff --git a/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/tcp/ipfinder/zk/ZookeeperIpFinderTest.java b/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/tcp/ipfinder/zk/ZookeeperIpFinderTest.java index 3aa3ce8f9a1c0..20947c4fd27c1 100644 --- a/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/tcp/ipfinder/zk/ZookeeperIpFinderTest.java +++ b/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/tcp/ipfinder/zk/ZookeeperIpFinderTest.java @@ -33,6 +33,7 @@ import org.apache.ignite.events.Event; import org.apache.ignite.events.EventType; import org.apache.ignite.internal.util.lang.GridAbsPredicate; +import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteBiPredicate; import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi; import org.apache.ignite.testframework.GridTestUtils; @@ -366,7 +367,9 @@ public void testFourNodesKillRestartZookeeper() throws Exception { try { return 0 == zkCurator.getChildren().forPath(SERVICES_IGNITE_ZK_PATH).size(); } - catch (Exception ignored) { + catch (Exception e) { + U.error(log, "Failed to wait for zk condition", e); + return false; } }