[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