[jboss-cvs] JBossAS SVN: r83101 - projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Jan 20 04:50:29 EST 2009
Author: alesj
Date: 2009-01-20 04:50:29 -0500 (Tue, 20 Jan 2009)
New Revision: 83101
Modified:
projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/FileCleanupUnitTestCase.java
Log:
Proper temp files test.
Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/FileCleanupUnitTestCase.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/FileCleanupUnitTestCase.java 2009-01-20 08:57:54 UTC (rev 83100)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/FileCleanupUnitTestCase.java 2009-01-20 09:50:29 UTC (rev 83101)
@@ -21,29 +21,38 @@
*/
package org.jboss.test.virtual.test;
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.net.URI;
import java.net.URL;
import junit.framework.Test;
import org.jboss.virtual.VFS;
+import org.jboss.virtual.VFSUtils;
import org.jboss.virtual.VirtualFile;
-import org.jboss.virtual.VFSUtils;
+import org.jboss.virtual.plugins.copy.AbstractCopyMechanism;
+import org.jboss.virtual.plugins.cache.LRUVFSCache;
+import org.jboss.virtual.spi.cache.VFSCache;
+import org.jboss.virtual.spi.cache.VFSCacheFactory;
/**
* Test file closing
*
* @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
*/
-// TODO - some real test of deletion - count the temp files == 0?
public class FileCleanupUnitTestCase extends AbstractVFSTest
{
+ private File tempDir;
+
public FileCleanupUnitTestCase(String name)
{
- super(name, true, false);
+ super(name, true, true);
}
- protected FileCleanupUnitTestCase(String name, boolean forceCopy)
+ protected FileCleanupUnitTestCase(String name, boolean forceCopy, boolean forceNoReaper)
{
- super(name, forceCopy, false);
+ super(name, forceCopy, forceNoReaper);
}
public static Test suite()
@@ -52,6 +61,103 @@
return suite(FileCleanupUnitTestCase.class);
}
+ @Override
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+
+ // nullify the temp dir
+ Class<?> clazz = AbstractCopyMechanism.class;
+ Field field = clazz.getDeclaredField("tempDir");
+ field.setAccessible(true);
+ field.set(null, null);
+
+ String tempDirKey = System.getProperty("vfs.temp.dir", "jboss.server.temp.dir");
+ String tempDirString = System.getProperty(tempDirKey, System.getProperty("java.io.tmpdir")) + "filecleanup";
+
+ tempDir = new File(tempDirString);
+ if (tempDir.exists())
+ {
+ deleteTempDir();
+ }
+ assertTrue(tempDir.mkdir());
+
+ System.setProperty("jboss.server.temp.dir", tempDirString);
+
+ VFSCache cache = new LRUVFSCache(2, 5);
+ cache.start();
+ VFSCacheFactory.setInstance(cache);
+ }
+
+ @Override
+ protected void tearDown() throws Exception
+ {
+ try
+ {
+ VFSCacheFactory.getInstance().stop();
+ }
+ catch (Throwable ignored)
+ {
+ }
+ finally
+ {
+ VFSCacheFactory.setInstance(null);
+ }
+
+ System.clearProperty("jboss.server.temp.dir");
+
+ try
+ {
+ deleteTempDir();
+ }
+ finally
+ {
+ super.tearDown();
+ }
+ }
+
+ protected void deleteTempDir() throws IOException
+ {
+ // use vfs to disable possible reaper
+ VirtualFile td = VFS.getRoot(tempDir.toURI());
+ td.cleanup();
+ td.delete();
+ }
+
+ protected void assertTempFiles(int size) throws Exception
+ {
+ File dir = new File(tempDir, "vfs-nested.tmp");
+ File[] files = dir.listFiles();
+ assertNotNull(files);
+ assertEquals(size, files.length);
+ }
+
+ protected void assertCopyMechanismFiles(int size) throws Exception
+ {
+ File[] files = tempDir.listFiles();
+ assertNotNull(files);
+ int counter = 0;
+ for (File dir : files)
+ {
+ counter += dir.listFiles().length;
+ }
+ assertEquals(size, counter);
+ }
+
+ protected void assertCacheExists(URI uri) throws Exception
+ {
+ VFSCache cache = VFSCacheFactory.getInstance();
+ VirtualFile file = cache.getFile(uri);
+ assertNotNull(file);
+ }
+
+ protected void assertNoCache(URI uri) throws Exception
+ {
+ VFSCache cache = VFSCacheFactory.getInstance();
+ VirtualFile file = cache.getFile(uri);
+ assertNull(file);
+ }
+
public void testNestedJarCleanup() throws Exception
{
URL url = getResource("/vfs/test/nested/nested.jar");
@@ -62,8 +168,15 @@
VirtualFile nestedChild = child.getChild("child");
assertNotNull(nestedChild);
+ assertTempFiles(1);
+
nestedChild.cleanup();
+ assertCacheExists(nestedChild.toURI());
+
root.cleanup();
+
+ assertTempFiles(0);
+ assertNoCache(root.toURI());
}
public void testExplicitCopyCleanup() throws Exception
@@ -76,6 +189,13 @@
assertNotNull(copy);
assertTrue(VFSUtils.isTemporaryFile(copy));
+ assertCopyMechanismFiles(1);
+
copy.cleanup();
+
+ assertCopyMechanismFiles(0);
+
+ root.cleanup();
+ assertNoCache(root.toURI());
}
}
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list