/** @throws IOException */ @Test public void customCachedVariableFragment() throws IOException { logging.setLogLevel("log4j.category.net.sf.ehcache", "DEBUG"); Fragments.setDefaultFragmentCacheType(CacheType.EHCACHE); FileFragment ff = new FileFragment(tf.newFolder("cachedVariableFragmentTest"), "testfrag.cdf"); File cacheLocation = createCacheDir(); Configuration cacheManagerConfig = new Configuration() .diskStore(new DiskStoreConfiguration().path(cacheLocation.getAbsolutePath())); CacheManager manager = CacheManager.newInstance(cacheManagerConfig); CacheConfiguration config = new CacheConfiguration(ff.getName() + "-variable-fragment-cache-custom", 100); config.persistence( new PersistenceConfiguration().strategy(PersistenceConfiguration.Strategy.LOCALTEMPSWAP)); config.setMaxElementsInMemory(10); config.setMaxElementsOnDisk(1000); config.setDiskSpoolBufferSizeMB(10); Ehcache cache = new Cache(config); manager.addCache(cache); log.info( "Storing cache on disk at {}", cacheManagerConfig.getDiskStoreConfiguration().getPath()); log.info("Using disk store size of {}", cache.getDiskStoreSize()); log.info("Overflowing to disk: {}", config.isOverflowToDisk()); ff.setCache(new VariableFragmentArrayCache(cache)); for (int j = 0; j < 100; j++) { VariableFragment vf1 = new VariableFragment(ff, "a" + j); vf1.setArray(new ArrayDouble.D2(10, 39)); VariableFragment vfIndex = new VariableFragment(ff, "index" + j); vfIndex.setArray(new ArrayInt.D1(20)); VariableFragment vf2 = new VariableFragment(ff, "b" + j, vfIndex); List<Array> l = new ArrayList<>(); Array indexArray = vfIndex.getArray(); int offset = 0; for (int i = 0; i < 20; i++) { l.add(new ArrayDouble.D1(10)); indexArray.setInt(i, offset); offset += 10; } vf2.setIndexedArray(l); Assert.assertNotNull(vf1.getArray()); Assert.assertNotNull(vf2.getIndexedArray()); Assert.assertEquals(20, vf2.getIndexedArray().size()); Assert.assertNotNull(vfIndex.getArray()); log.info("In memory: {}; On disk: {}", cache.getSize(), cache.getDiskStoreSize()); } for (IVariableFragment var : ff) { Assert.assertNotNull(var.getArray()); log.info(var.getName() + ": " + var.getArray()); } logging.setLogLevel("log4j.category.net.sf.ehcache", "INFO"); }
/** * @throws java.io.IOException * @throws IOException */ @Test public void cachedVariableFragment() throws IOException { logging.setLogLevel("log4j.category.net.sf.ehcache", "DEBUG"); Fragments.setDefaultFragmentCacheType(CacheType.EHCACHE); FileFragment ff = new FileFragment(tf.newFolder("cachedVariableFragmentTest"), "testfrag.cdf"); Configuration cacheManagerConfig = new Configuration(); CacheManager manager = CacheManager.newInstance(cacheManagerConfig); CacheConfiguration config = new CacheConfiguration(ff.getName() + "-variable-fragment-cache", 100); Ehcache cache = new Cache(config); manager.addCache(cache); for (int j = 0; j < 100; j++) { VariableFragment vf1 = new VariableFragment(ff, "a" + j); vf1.setArray(new ArrayDouble.D2(10, 39)); VariableFragment vfIndex = new VariableFragment(ff, "index" + j); vfIndex.setArray(new ArrayInt.D1(20)); VariableFragment vf2 = new VariableFragment(ff, "b" + j, vfIndex); List<Array> l = new ArrayList<>(); Array indexArray = vfIndex.getArray(); int offset = 0; for (int i = 0; i < 20; i++) { l.add(new ArrayDouble.D1(10)); indexArray.setInt(i, offset); offset += 10; } vf2.setIndexedArray(l); Assert.assertNotNull(vf1.getArray()); Assert.assertNotNull(vf2.getIndexedArray()); Assert.assertEquals(20, vf2.getIndexedArray().size()); Assert.assertNotNull(vfIndex.getArray()); log.info("In memory: {}; On disk: {}", cache.getSize(), cache.getDiskStoreSize()); } for (IVariableFragment var : ff) { Assert.assertNotNull(var.getArray()); log.info(var.getName() + ": " + var.getArray()); } logging.setLogLevel("log4j.category.net.sf.ehcache", "INFO"); }