[infinispan-commits] Infinispan SVN: r1713 - trunk/core/src/test/java/org/infinispan/loaders.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Thu Apr 22 06:42:24 EDT 2010


Author: manik.surtani at jboss.com
Date: 2010-04-22 06:42:24 -0400 (Thu, 22 Apr 2010)
New Revision: 1713

Added:
   trunk/core/src/test/java/org/infinispan/loaders/UnnnecessaryLoadingTest.java
Log:
Added test to check for unnecessary cache loading

Added: trunk/core/src/test/java/org/infinispan/loaders/UnnnecessaryLoadingTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/loaders/UnnnecessaryLoadingTest.java	                        (rev 0)
+++ trunk/core/src/test/java/org/infinispan/loaders/UnnnecessaryLoadingTest.java	2010-04-22 10:42:24 UTC (rev 1713)
@@ -0,0 +1,132 @@
+package org.infinispan.loaders;
+
+import org.infinispan.config.CacheLoaderManagerConfig;
+import org.infinispan.config.Configuration;
+import org.infinispan.container.entries.InternalCacheEntry;
+import org.infinispan.container.entries.InternalEntryFactory;
+import org.infinispan.loaders.decorators.ChainingCacheStore;
+import org.infinispan.loaders.dummy.DummyInMemoryCacheStore;
+import org.infinispan.manager.CacheManager;
+import org.infinispan.test.SingleCacheManagerTest;
+import org.infinispan.test.TestingUtil;
+import org.infinispan.test.fwk.TestCacheManagerFactory;
+import org.testng.annotations.Test;
+
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.Collections;
+import java.util.Set;
+
+/**
+ * A test to ensure stuff from a cache store is not loaded unnecessarily if it already exists in memory.
+ *
+ * @author Manik Surtani
+ * @version 4.1
+ */
+ at Test(testName = "loaders.UnnnecessaryLoadingTest", groups = "functional")
+public class UnnnecessaryLoadingTest extends SingleCacheManagerTest {
+   CacheStore store;
+
+   @Override
+   protected CacheManager createCacheManager() throws Exception {
+      Configuration cfg = getDefaultStandaloneConfig(false);
+      CacheLoaderManagerConfig clmc = new CacheLoaderManagerConfig();
+      clmc.addCacheLoaderConfig(new CountingCacheStoreConfig());
+      clmc.addCacheLoaderConfig(new DummyInMemoryCacheStore.Cfg());
+      cfg.setCacheLoaderManagerConfig(clmc);
+      CacheManager cm = TestCacheManagerFactory.createCacheManager(cfg, true);
+      cache = cm.getCache();
+      store = TestingUtil.extractComponent(cache, CacheLoaderManager.class).getCacheStore();
+      return cm;
+   }
+
+   public void testRepeatedLoads() throws CacheLoaderException {
+      CacheLoaderManager clm = TestingUtil.extractComponent(cache, CacheLoaderManager.class);
+      ChainingCacheStore ccs = (ChainingCacheStore) clm.getCacheLoader();
+      CountingCacheStore countingCS = (CountingCacheStore) ccs.getStores().keySet().iterator().next();
+
+      assert countingCS.numLoads == 0;
+      assert countingCS.numContains == 0;
+      store.store(InternalEntryFactory.create("k1", "v1"));
+
+      assert countingCS.numLoads == 0;
+      assert countingCS.numContains == 0;
+
+      assert "v1".equals(cache.get("k1"));
+
+      assert countingCS.numLoads == 1 : "Expected 1, was " + countingCS.numLoads;
+      assert countingCS.numContains == 0 : "Expected 0, was " + countingCS.numContains;
+
+      assert "v1".equals(cache.get("k1"));
+
+      assert countingCS.numLoads == 1 : "Expected 1, was " + countingCS.numLoads;
+      assert countingCS.numContains == 0 : "Expected 0, was " + countingCS.numContains;
+   }
+
+   public static class CountingCacheStore extends AbstractCacheStore {
+      int numLoads, numContains;
+
+      @Override
+      public void store(InternalCacheEntry entry) throws CacheLoaderException {
+      }
+
+      @Override
+      public void fromStream(ObjectInput inputStream) throws CacheLoaderException {
+      }
+
+      @Override
+      public void toStream(ObjectOutput outputStream) throws CacheLoaderException {
+      }
+
+      @Override
+      public void clear() throws CacheLoaderException {
+      }
+
+      @Override
+      public boolean remove(Object key) throws CacheLoaderException {
+         return false;
+      }
+
+      @Override
+      protected void purgeInternal() throws CacheLoaderException {
+      }
+
+      @Override
+      public InternalCacheEntry load(Object key) throws CacheLoaderException {
+         numLoads++;
+         return null;
+      }
+
+      @Override
+      public Set<InternalCacheEntry> loadAll() throws CacheLoaderException {
+         return Collections.emptySet();
+      }
+
+      @Override
+      public Set<InternalCacheEntry> load(int numEntries) throws CacheLoaderException {
+         return Collections.emptySet();
+      }
+
+      @Override
+      public Set<Object> loadAllKeys(Set<Object> keysToExclude) throws CacheLoaderException {
+         return Collections.emptySet();
+      }
+
+      @Override
+      public boolean containsKey(Object key) throws CacheLoaderException {
+         numContains++;
+         return false;
+      }
+
+      @Override
+      public Class<? extends CacheLoaderConfig> getConfigurationClass() {
+         return CountingCacheStoreConfig.class;
+      }
+   }
+
+   public static class CountingCacheStoreConfig extends AbstractCacheStoreConfig {
+      public CountingCacheStoreConfig() {
+         setCacheLoaderClassName(CountingCacheStore.class.getName());
+      }
+   }
+}


Property changes on: trunk/core/src/test/java/org/infinispan/loaders/UnnnecessaryLoadingTest.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF



More information about the infinispan-commits mailing list