IGNITE-49 Fixed tck tests. Adapt to work with Ignite.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/984a3dea Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/984a3dea Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/984a3dea Branch: refs/heads/ignite-49 Commit: 984a3dea818f8a1a9b43a02bdc5f6c496121962e Parents: 3459367 Author: nikolay_tikhonov <ntikho...@gridgain.com> Authored: Fri Jan 16 13:59:41 2015 +0300 Committer: nikolay_tikhonov <ntikho...@gridgain.com> Committed: Fri Jan 16 14:13:35 2015 +0300 ---------------------------------------------------------------------- .../org/apache/ignite/IgniteCacheManager.java | 23 +-- .../processors/cache/GridCacheMapEntry.java | 28 ++- .../cache/GridCacheMetricsAdapter.java | 32 ++-- .../cache/GridCacheAbstractMetricsSelfTest.java | 4 +- ...AtomicPartitionedTckMetricsSelfTestImpl.java | 183 +++++++++++++++++++ ...dCacheAtomicLocalTckMetricsSelfTestImpl.java | 178 ++++++++++++++++++ .../GridCacheMetricsSelfTestSuite.java | 2 + 7 files changed, 406 insertions(+), 44 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/984a3dea/modules/core/src/main/java/org/apache/ignite/IgniteCacheManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteCacheManager.java b/modules/core/src/main/java/org/apache/ignite/IgniteCacheManager.java index c255517..fea39ca 100644 --- a/modules/core/src/main/java/org/apache/ignite/IgniteCacheManager.java +++ b/modules/core/src/main/java/org/apache/ignite/IgniteCacheManager.java @@ -17,7 +17,7 @@ package org.apache.ignite; -import org.apache.ignite.cache.CacheMetricsMXBean; +import org.apache.ignite.cache.*; import org.apache.ignite.configuration.*; import org.apache.ignite.lang.*; import org.gridgain.grid.cache.*; @@ -293,25 +293,16 @@ public class IgniteCacheManager implements CacheManager { tuple = igniteMap.get(cacheName); } - ObjectName objName = getObjectName(cacheName, false); MBeanServer mBeanSrv = tuple.get1().configuration().getMBeanServer(); - try { - if (enabled) { - if(mBeanSrv.queryNames(objName, null).isEmpty()) - mBeanSrv.registerMBean(tuple.get2(), objName); - } - else { - for (ObjectName n : mBeanSrv.queryNames(objName, null)) - mBeanSrv.unregisterMBean(n); + if (enabled) { + registerCacheObject(mBeanSrv, tuple.get2(), cacheName, false); - } - } - catch (InstanceAlreadyExistsException | InstanceNotFoundException ignored) { + tuple.get1().cache(cacheName).configuration().setManagementEnabled(true); + } else { + unregisterCacheObject(mBeanSrv, cacheName, false); - } - catch (MBeanRegistrationException | NotCompliantMBeanException e) { - throw new CacheException(e); + tuple.get1().cache(cacheName).configuration().setManagementEnabled(false); } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/984a3dea/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMapEntry.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMapEntry.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMapEntry.java index 2f58ec9..b0b543b 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMapEntry.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMapEntry.java @@ -1427,6 +1427,13 @@ public abstract class GridCacheMapEntry<K, V> implements GridCacheEntryEx<K, V> update(old, null, 0, 0, ver); } + // Apply metrics. + if (metrics && cctx.cache().configuration().isStatisticsEnabled() && needVal) { + // PutIfAbsent methods mustn't update hit/miss statistics + if (op != UPDATE || F.isEmpty(filter) || filter != cctx.noPeekArray()) + cctx.cache().metrics0().onRead(old != null); + } + // Check filter inside of synchronization. if (!F.isEmpty(filter)) { boolean pass = cctx.isAll(wrapFilterLocked(), filter); @@ -1443,10 +1450,6 @@ public abstract class GridCacheMapEntry<K, V> implements GridCacheEntryEx<K, V> } } - // Apply metrics. - if (metrics && cctx.cache().configuration().isStatisticsEnabled() && needVal) - cctx.cache().metrics0().onRead(old != null); - String transformCloClsName = null; V updated; @@ -1588,7 +1591,8 @@ public abstract class GridCacheMapEntry<K, V> implements GridCacheEntryEx<K, V> res = hadVal; } - updateMetrics(op, metrics); + if (res) + updateMetrics(op, metrics); cctx.continuousQueries().onEntryUpdate(this, key, val, valueBytesUnlocked(), old, oldBytes); @@ -1769,6 +1773,13 @@ public abstract class GridCacheMapEntry<K, V> implements GridCacheEntryEx<K, V> deletedUnlocked(false); } + // Apply metrics. + if (metrics && cctx.cache().configuration().isStatisticsEnabled() && needVal) { + // PutIfAbsent methods mustn't update hit/miss statistics + if (op != UPDATE || F.isEmpty(filter) || filter != cctx.noPeekArray()) + cctx.cache().metrics0().onRead(old != null); + } + // Check filter inside of synchronization. if (!F.isEmptyOrNulls(filter)) { boolean pass = cctx.isAll(wrapFilterLocked(), filter); @@ -1799,10 +1810,6 @@ public abstract class GridCacheMapEntry<K, V> implements GridCacheEntryEx<K, V> } } - // Apply metrics. - if (metrics && cctx.cache().configuration().isStatisticsEnabled() && needVal) - cctx.cache().metrics0().onRead(old != null); - // Calculate new value. if (op == GridCacheOperation.TRANSFORM) { transformClo = writeObj; @@ -2056,7 +2063,8 @@ public abstract class GridCacheMapEntry<K, V> implements GridCacheEntryEx<K, V> newDrExpireTime = -1L; } - updateMetrics(op, metrics); + if (res) + updateMetrics(op, metrics); if (primary || cctx.isReplicated()) cctx.continuousQueries().onEntryUpdate(this, key, val, valueBytesUnlocked(), old, oldBytes); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/984a3dea/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMetricsAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMetricsAdapter.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMetricsAdapter.java index dc1faf2..ada12ff 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMetricsAdapter.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMetricsAdapter.java @@ -97,22 +97,22 @@ public class GridCacheMetricsAdapter implements GridCacheMetrics, Externalizable * @param m Metrics to copy from. */ public GridCacheMetricsAdapter(GridCacheMetricsAdapter m) { - createTime = m.createTime(); - readTime = m.readTime(); - writeTime = m.writeTime(); - commitTime = m.commitTime(); - rollbackTime = m.rollbackTime(); - reads = m.reads(); - writes = m.writes(); - hits = m.hits(); - misses = m.misses(); - txCommits = m.txCommits(); - txRollbacks = m.txRollbacks(); - rmCnt = m.getCacheRemovals(); - evictCnt = m.getCacheEvictions(); - getTimeNanos = m.getTimeNanos(); - putTimeNanos = m.putTimeNanos(); - removeTimeNanos = m.removeTimeNanos(); + createTime = m.createTime; + readTime = m.readTime; + writeTime = m.writeTime; + commitTime = m.commitTime; + rollbackTime = m.rollbackTime; + reads = m.reads; + writes = m.writes; + hits = m.hits; + misses = m.misses; + txCommits = m.txCommits; + txRollbacks = m.txRollbacks; + rmCnt = m.rmCnt; + evictCnt = m.evictCnt; + getTimeNanos = m.getTimeNanos; + putTimeNanos = m.putTimeNanos; + removeTimeNanos = m.removeTimeNanos; } /** http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/984a3dea/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheAbstractMetricsSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheAbstractMetricsSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheAbstractMetricsSelfTest.java index 3a1f4c0..4254d4a 100644 --- a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheAbstractMetricsSelfTest.java +++ b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheAbstractMetricsSelfTest.java @@ -41,10 +41,10 @@ import static org.gridgain.grid.util.GridUtils.*; */ public abstract class GridCacheAbstractMetricsSelfTest extends GridCacheAbstractSelfTest { /** */ - private static final int KEY_CNT = 50; + public static final String CACHE_NAME = "metric_test"; /** */ - private static final String CACHE_NAME = "mbean_test"; + private static final int KEY_CNT = 50; /** {@inheritDoc} */ @Override protected boolean swapEnabled() { http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/984a3dea/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridCacheAtomicPartitionedTckMetricsSelfTestImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridCacheAtomicPartitionedTckMetricsSelfTestImpl.java b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridCacheAtomicPartitionedTckMetricsSelfTestImpl.java new file mode 100644 index 0000000..951aa53 --- /dev/null +++ b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridCacheAtomicPartitionedTckMetricsSelfTestImpl.java @@ -0,0 +1,183 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.gridgain.grid.kernal.processors.cache.distributed.near; + +import org.apache.ignite.*; + +import javax.cache.processor.*; + +/** + * Partitioned atomic cache metrics test. + */ +public class GridCacheAtomicPartitionedTckMetricsSelfTestImpl extends GridCacheAtomicPartitionedMetricsSelfTest { + /** {@inheritDoc} */ + @Override protected int gridCount() { + return 1; + } + + /** + * @throws Exception If failed. + */ + public void testEntryProcessorRemove() throws Exception { + IgniteCache<Integer, Integer> jcache = grid(0).jcache(null); + + jcache.put(1, 20); + + int result = jcache.invoke(1, new EntryProcessor<Integer, Integer, Integer>() { + @Override public Integer process(MutableEntry<Integer, Integer> entry, Object... arguments) + throws EntryProcessorException { + Integer result = entry.getValue(); + + entry.remove(); + + return result; + } + }); + + assertEquals(1L, cache().metrics().getCachePuts()); + + assertEquals(20, result); + assertEquals(1L, cache().metrics().getCacheHits()); + assertEquals(100.0f, cache().metrics().getCacheHitPercentage()); + assertEquals(0L, cache().metrics().getCacheMisses()); + assertEquals(0f, cache().metrics().getCacheMissPercentage()); + assertEquals(1L, cache().metrics().getCachePuts()); + assertEquals(1L, cache().metrics().getCacheRemovals()); + assertEquals(0L, cache().metrics().getCacheEvictions()); + assert cache().metrics().getAveragePutTime() >= 0; + assert cache().metrics().getAverageGetTime() >= 0; + assert cache().metrics().getAverageRemoveTime() >= 0; + } + + /** + * @throws Exception If failed. + */ + public void testCacheStatistics() throws Exception { + IgniteCache<Integer, Integer> jcache = grid(0).jcache(null); + + jcache.put(1, 10); + + assertEquals(0, cache().metrics().getCacheRemovals()); + assertEquals(1, cache().metrics().getCachePuts()); + + jcache.remove(1); + + assertEquals(0, cache().metrics().getCacheHits()); + assertEquals(1, cache().metrics().getCacheRemovals()); + assertEquals(1, cache().metrics().getCachePuts()); + + jcache.remove(1); + + assertEquals(0, cache().metrics().getCacheHits()); + assertEquals(0, cache().metrics().getCacheMisses()); + assertEquals(1, cache().metrics().getCacheRemovals()); + assertEquals(1, cache().metrics().getCachePuts()); + + jcache.put(1, 10); + assertTrue(jcache.remove(1, 10)); + + assertEquals(1, cache().metrics().getCacheHits()); + assertEquals(0, cache().metrics().getCacheMisses()); + assertEquals(2, cache().metrics().getCacheRemovals()); + assertEquals(2, cache().metrics().getCachePuts()); + + assertFalse(jcache.remove(1, 10)); + + assertEquals(1, cache().metrics().getCacheHits()); + assertEquals(1, cache().metrics().getCacheMisses()); + assertEquals(2, cache().metrics().getCacheRemovals()); + assertEquals(2, cache().metrics().getCachePuts()); + } + + /** + * @throws Exception If failed. + */ + public void testConditionReplace() throws Exception { + IgniteCache<Integer, Integer> jcache = grid(0).jcache(null); + + long hitCount = 0; + long missCount = 0; + long putCount = 0; + + boolean result = jcache.replace(1, 0, 10); + + ++missCount; + assertFalse(result); + + assertEquals(missCount, cache().metrics().getCacheMisses()); + assertEquals(hitCount, cache().metrics().getCacheHits()); + assertEquals(putCount, cache().metrics().getCachePuts()); + + assertFalse(jcache.containsKey(1)); + + jcache.put(1, 10); + ++putCount; + + assertEquals(missCount, cache().metrics().getCacheMisses()); + assertEquals(hitCount, cache().metrics().getCacheHits()); + assertEquals(putCount, cache().metrics().getCachePuts()); + + assertTrue(jcache.containsKey(1)); + + result = jcache.replace(1, 10, 20); + + assertTrue(result); + ++hitCount; + ++putCount; + + assertEquals(missCount, cache().metrics().getCacheMisses()); + assertEquals(hitCount, cache().metrics().getCacheHits()); + assertEquals(putCount, cache().metrics().getCachePuts()); + + result = jcache.replace(1, 40, 50); + + assertFalse(result); + ++hitCount; + + assertEquals(hitCount, cache().metrics().getCacheHits()); + assertEquals(putCount, cache().metrics().getCachePuts()); + assertEquals(missCount, cache().metrics().getCacheMisses()); + } + + /** + * @throws Exception If failed. + */ + public void testPutIfAbsent() throws Exception { + IgniteCache<Integer, Integer> jcache = grid(0).jcache(null); + + long hitCount = 0; + long missCount = 0; + long putCount = 0; + + boolean result = jcache.putIfAbsent(1, 1); + + ++putCount; + assertTrue(result); + + assertEquals(missCount, cache().metrics().getCacheMisses()); + assertEquals(hitCount, cache().metrics().getCacheHits()); + assertEquals(putCount, cache().metrics().getCachePuts()); + + result = jcache.putIfAbsent(1, 1); + + assertFalse(result); + assertEquals(hitCount, cache().metrics().getCacheHits()); + assertEquals(putCount, cache().metrics().getCachePuts()); + assertEquals(missCount, cache().metrics().getCacheMisses()); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/984a3dea/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/local/GridCacheAtomicLocalTckMetricsSelfTestImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/local/GridCacheAtomicLocalTckMetricsSelfTestImpl.java b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/local/GridCacheAtomicLocalTckMetricsSelfTestImpl.java new file mode 100644 index 0000000..5f61f23 --- /dev/null +++ b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/local/GridCacheAtomicLocalTckMetricsSelfTestImpl.java @@ -0,0 +1,178 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.gridgain.grid.kernal.processors.cache.local; + +import org.apache.ignite.*; + +import javax.cache.processor.*; + +/** + * Local atomic cache metrics test with tck specific. + */ +public class GridCacheAtomicLocalTckMetricsSelfTestImpl extends GridCacheAtomicLocalMetricsSelfTest { + /** + * @throws Exception If failed. + */ + public void testEntryProcessorRemove() throws Exception { + IgniteCache<Integer, Integer> jcache = grid(0).jcache(null); + + jcache.put(1, 20); + + int result = jcache.invoke(1, new EntryProcessor<Integer, Integer, Integer>() { + @Override public Integer process(MutableEntry<Integer, Integer> entry, Object... arguments) + throws EntryProcessorException { + Integer result = entry.getValue(); + + entry.remove(); + + return result; + } + }); + + assertEquals(1L, cache().metrics().getCachePuts()); + + assertEquals(20, result); + assertEquals(1L, cache().metrics().getCacheHits()); + assertEquals(100.0f, cache().metrics().getCacheHitPercentage()); + assertEquals(0L, cache().metrics().getCacheMisses()); + assertEquals(0f, cache().metrics().getCacheMissPercentage()); + assertEquals(1L, cache().metrics().getCachePuts()); + assertEquals(1L, cache().metrics().getCacheRemovals()); + assertEquals(0L, cache().metrics().getCacheEvictions()); + assert cache().metrics().getAveragePutTime() >= 0; + assert cache().metrics().getAverageGetTime() >= 0; + assert cache().metrics().getAverageRemoveTime() >= 0; + } + + /** + * @throws Exception If failed. + */ + public void testCacheStatistics() throws Exception { + IgniteCache<Integer, Integer> jcache = grid(0).jcache(null); + + jcache.put(1, 10); + + assertEquals(0, cache().metrics().getCacheRemovals()); + assertEquals(1, cache().metrics().getCachePuts()); + + jcache.remove(1); + + assertEquals(0, cache().metrics().getCacheHits()); + assertEquals(1, cache().metrics().getCacheRemovals()); + assertEquals(1, cache().metrics().getCachePuts()); + + jcache.remove(1); + + assertEquals(0, cache().metrics().getCacheHits()); + assertEquals(0, cache().metrics().getCacheMisses()); + assertEquals(1, cache().metrics().getCacheRemovals()); + assertEquals(1, cache().metrics().getCachePuts()); + + jcache.put(1, 10); + assertTrue(jcache.remove(1, 10)); + + assertEquals(1, cache().metrics().getCacheHits()); + assertEquals(0, cache().metrics().getCacheMisses()); + assertEquals(2, cache().metrics().getCacheRemovals()); + assertEquals(2, cache().metrics().getCachePuts()); + + assertFalse(jcache.remove(1, 10)); + + assertEquals(1, cache().metrics().getCacheHits()); + assertEquals(1, cache().metrics().getCacheMisses()); + assertEquals(2, cache().metrics().getCacheRemovals()); + assertEquals(2, cache().metrics().getCachePuts()); + } + + /** + * @throws Exception If failed. + */ + public void testConditionReplace() throws Exception { + IgniteCache<Integer, Integer> jcache = grid(0).jcache(null); + + long hitCount = 0; + long missCount = 0; + long putCount = 0; + + boolean result = jcache.replace(1, 0, 10); + + ++missCount; + assertFalse(result); + + assertEquals(missCount, cache().metrics().getCacheMisses()); + assertEquals(hitCount, cache().metrics().getCacheHits()); + assertEquals(putCount, cache().metrics().getCachePuts()); + + assertFalse(jcache.containsKey(1)); + + jcache.put(1, 10); + ++putCount; + + assertEquals(missCount, cache().metrics().getCacheMisses()); + assertEquals(hitCount, cache().metrics().getCacheHits()); + assertEquals(putCount, cache().metrics().getCachePuts()); + + assertTrue(jcache.containsKey(1)); + + result = jcache.replace(1, 10, 20); + + assertTrue(result); + ++hitCount; + ++putCount; + + assertEquals(missCount, cache().metrics().getCacheMisses()); + assertEquals(hitCount, cache().metrics().getCacheHits()); + assertEquals(putCount, cache().metrics().getCachePuts()); + + result = jcache.replace(1, 40, 50); + + assertFalse(result); + ++hitCount; + + assertEquals(hitCount, cache().metrics().getCacheHits()); + assertEquals(putCount, cache().metrics().getCachePuts()); + assertEquals(missCount, cache().metrics().getCacheMisses()); + } + + /** + * @throws Exception If failed. + */ + public void testPutIfAbsent() throws Exception { + IgniteCache<Integer, Integer> jcache = grid(0).jcache(null); + + long hitCount = 0; + long missCount = 0; + long putCount = 0; + + boolean result = jcache.putIfAbsent(1, 1); + + ++putCount; + assertTrue(result); + + assertEquals(missCount, cache().metrics().getCacheMisses()); + assertEquals(hitCount, cache().metrics().getCacheHits()); + assertEquals(putCount, cache().metrics().getCachePuts()); + + result = jcache.putIfAbsent(1, 1); + + assertFalse(result); + assertEquals(hitCount, cache().metrics().getCacheHits()); + assertEquals(putCount, cache().metrics().getCachePuts()); + assertEquals(missCount, cache().metrics().getCacheMisses()); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/984a3dea/modules/core/src/test/java/org/gridgain/testsuites/GridCacheMetricsSelfTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/testsuites/GridCacheMetricsSelfTestSuite.java b/modules/core/src/test/java/org/gridgain/testsuites/GridCacheMetricsSelfTestSuite.java index f872e52..24dca75 100644 --- a/modules/core/src/test/java/org/gridgain/testsuites/GridCacheMetricsSelfTestSuite.java +++ b/modules/core/src/test/java/org/gridgain/testsuites/GridCacheMetricsSelfTestSuite.java @@ -43,6 +43,8 @@ public class GridCacheMetricsSelfTestSuite extends TestSuite { suite.addTest(new TestSuite(GridCacheAtomicLocalMetricsNoStoreSelfTest.class)); suite.addTest(new TestSuite(GridCacheAtomicReplicatedMetricsSelfTest.class)); suite.addTest(new TestSuite(GridCacheAtomicPartitionedMetricsSelfTest.class)); + suite.addTest(new TestSuite(GridCacheAtomicPartitionedTckMetricsSelfTestImpl.class)); + suite.addTest(new TestSuite(GridCacheAtomicLocalTckMetricsSelfTestImpl.class)); return suite; }