From: <bj...@us...> - 2010-09-29 09:16:37
|
Revision: 7722 http://unicore.svn.sourceforge.net/unicore/?rev=7722&view=rev Author: bjoernh Date: 2010-09-29 09:16:31 +0000 (Wed, 29 Sep 2010) Log Message: ----------- improved test coverage Modified Paths: -------------- hila/trunk/hila-unicore6/src/test/java/eu/unicore/hila/grid/unicore6/Unicore6FileTest.java Modified: hila/trunk/hila-unicore6/src/test/java/eu/unicore/hila/grid/unicore6/Unicore6FileTest.java =================================================================== --- hila/trunk/hila-unicore6/src/test/java/eu/unicore/hila/grid/unicore6/Unicore6FileTest.java 2010-09-29 09:16:09 UTC (rev 7721) +++ hila/trunk/hila-unicore6/src/test/java/eu/unicore/hila/grid/unicore6/Unicore6FileTest.java 2010-09-29 09:16:31 UTC (rev 7722) @@ -37,12 +37,14 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.util.Calendar; import java.util.List; import java.util.Random; import java.util.UUID; import junit.framework.Assert; +import org.apache.log4j.Logger; import org.apache.tools.ant.filters.StringInputStream; import org.junit.BeforeClass; import org.junit.Test; @@ -64,6 +66,8 @@ */ public class Unicore6FileTest { + private static final Logger log = Logger.getLogger(Unicore6FileTest.class); + private static String siteLoc = null; /** @@ -156,7 +160,7 @@ OutputStream os = new FileOutputStream(localFile); Random rnd = new Random(); - for (int i = 0; i < 1000000; ++i) { + for (int i = 0; i < 100; ++i) { os.write(rnd.nextInt()); } os.close(); @@ -169,10 +173,17 @@ Site site = (Site) new Location(siteLoc).locate(); File storageFile = site.getStorages().get(0).asFile(); + Assert.assertTrue(storageFile.exists()); + java.io.File localFile = createRandomFile(); - storageFile.importFromLocalFile(localFile); + storageFile.importFromLocalFile(localFile).block(); + File fileInStorage = (File) storageFile.getChild(localFile.getName()); + Assert.assertTrue(fileInStorage.exists()); + + fileInStorage.delete(); + localFile.delete(); } @@ -201,26 +212,54 @@ fileInStorage.delete(); } - //@Test(expected = HiLAException.class) + @Test + public void testImportExistingFileFromStream() + throws HiLALocationSyntaxException, HiLAException { + String string = "This is a test."; + Site site = (Site) new Location(siteLoc).locate(); + File remoteFile = (File) site.getStorages().get(0).asFile().getChild( + UUID.randomUUID().toString()); + remoteFile.importFromStream(new StringInputStream(string)).block(); + + try { + remoteFile.importFromStream(new StringInputStream(string)).block(); + Assert.fail("Should have thrown an exception," + + " as the file already exists."); + } catch (HiLAException e) { + log.info("Exception thrown as expected.", e); + } + + remoteFile.importFromStream(new StringInputStream(string), true) + .block(); + + remoteFile.delete(); + } + + // @Test(expected = HiLAException.class) public void testFileInUnlocatableStorage() throws HiLALocationSyntaxException, HiLAException { new Location(siteLoc).getChildLocation("storages").getChildLocation( - "unknown").getChildLocation("files").getChildLocation("test").locate(); + "unknown").getChildLocation("files").getChildLocation("test") + .locate(); } - + @Test - public void testGetCachedFile() throws HiLALocationSyntaxException, HiLAException { + public void testGetCachedFile() throws HiLALocationSyntaxException, + HiLAException { Site site = (Site) new Location(siteLoc).locate(); - File file1 = (File) site.getStorages().get(0).asFile().getChild("blurp"); + File file1 = (File) site.getStorages().get(0).asFile() + .getChild("blurp"); File file2 = (File) file1.getLocation().locate(); - + Assert.assertSame(file1, file2); } - + @Test - public void testDeleteFile() throws HiLALocationSyntaxException, HiLAException { + public void testDeleteFile() throws HiLALocationSyntaxException, + HiLAException { Site site = (Site) new Location(siteLoc).locate(); - File file = (File) site.getStorages().get(0).asFile().getChild(UUID.randomUUID().toString()); + File file = (File) site.getStorages().get(0).asFile().getChild( + UUID.randomUUID().toString()); String testString = "This is a test."; InputStream is = new StringInputStream(testString); file.importFromStream(is).block(); @@ -232,11 +271,254 @@ Assert.assertTrue(file.exists()); Assert.assertEquals(testString.length(), file.size()); Assert.assertTrue(file.delete()); + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + } + + file.mkdir(); + Assert.assertTrue(file.isDirectory()); + try { + file.delete(); + Assert.fail("Should have thrown an exception. delete() " + + "should only delete directories in recursive mode"); + } catch (HiLAException e) { + log.info("Expected exception thrown."); + } + + try { + file.delete(); + Assert.fail("Should have thrown an exception. We just deleted" + + " that file, so it cannot be deleted again."); + } catch (HiLAException e) { + log.info("Expected exception thrown."); + } } - + @Test - public void testDeleteDirectory() { - + public void testExportToExistingLocalDirectoryAndDeleteRecursively() + throws HiLALocationSyntaxException, HiLAException { + Site site = (Site) new Location(siteLoc).locate(); + File file = (File) site.getStorages().get(0).asFile().getChild( + UUID.randomUUID().toString()); + file.mkdir(); + File file2 = (File) file.getChild(UUID.randomUUID().toString()); + String test = "This is a test."; + file2.importFromStream(new StringInputStream(test)).block(); + Assert.assertEquals(test.length(), file2.size()); + + try { + java.io.File localDir = java.io.File.createTempFile("hila", null); + localDir.delete(); + localDir.mkdir(); + + file2.exportToLocalFile(localDir).block(); + + java.io.File localFile = new java.io.File(localDir, file2.getName()); + Assert.assertTrue(localFile.delete()); + Assert.assertTrue(localDir.delete()); + } catch (IOException e) { + // TODO Auto-generated catch block + log.error("CHANGE ME: bogus error message", e); + } + + Assert.assertTrue(file.delete(true)); } + @Test + public void testMoveFile() throws HiLALocationSyntaxException, + HiLAException { + String string = "This is a test."; + Site site = (Site) new Location(siteLoc).locate(); + File file = (File) site.getStorages().get(0).asFile().getChild( + UUID.randomUUID().toString()); + Assert.assertEquals(TaskStatus.SUCCESSFUL, file.importFromStream( + new StringInputStream(string)).block()); + + // move simple file (rename) + String newName = UUID.randomUUID().toString(); + File newFile = (File) file.getParent().getChild(newName); + + Assert.assertFalse(newFile.exists()); + Assert.assertTrue(file.exists()); + file.moveTo(newFile); + Assert.assertFalse(file.exists()); + Assert.assertTrue(newFile.exists()); + + // move file into directory (auto redirect) + File directory = (File) file.getParent().getChild( + UUID.randomUUID().toString()); + directory.mkdir(); + Assert.assertTrue(directory.exists()); + + newFile.moveTo(directory); + Assert.assertFalse(newFile.exists()); + Assert.assertTrue(((File) directory.getChild(newFile.getName())) + .exists()); + + // move directory structure (rename) + File newDirectory = (File) directory.getParent().getChild( + UUID.randomUUID().toString()); + Assert.assertFalse(newDirectory.exists()); + directory.moveTo(newDirectory); + Assert.assertFalse(directory.exists()); + Assert.assertTrue(newDirectory.exists()); + + // move directory structure into another one (auto redirect) + } + + @Test + public void testCopyFileOutsiteStorage() + throws HiLALocationSyntaxException, HiLAException { + // create simple file for testing + String string = "This is a test."; + Site site = (Site) new Location(siteLoc).locate(); + File file = (File) site.getStorages().get(0).asFile().getChild( + UUID.randomUUID().toString()); + Assert.assertEquals(TaskStatus.SUCCESSFUL, file.importFromStream( + new StringInputStream(string)).block()); + + File s2 = (File) site.getStorages().get(1).asFile().getChild( + UUID.randomUUID().toString()); + try { + file.copyTo(s2); + Assert.fail("Should have thrown an exception"); + } catch (HiLAException e) { + log.info("Exception thrown as expected."); + } + } + + @Test + public void testMkdirRecursive() throws HiLALocationSyntaxException, + HiLAException { + final File file = ((Site) new Location(siteLoc).locate()).getStorages() + .get(0).asFile(); + String topLevel = UUID.randomUUID().toString(); + final File file2 = (File) file.getChild(topLevel).getChild("test1") + .getChild("test2"); + file2.mkdir(true); + Assert.assertTrue(file2.exists()); + final File file3 = (File) file.getChild(topLevel); + Assert.assertTrue(file3.delete(true)); + } + + @Test + public void testCopyDirectoryStructure() + throws HiLALocationSyntaxException, HiLAException { + File directory = (File) ((Site) new Location(siteLoc).locate()) + .getStorages().get(0).asFile().getChild( + UUID.randomUUID().toString()); + directory.mkdir(); + + File file = (File) directory.getChild(UUID.randomUUID().toString()); + Assert.assertEquals(TaskStatus.SUCCESSFUL, file.importFromStream( + new StringInputStream("")).block()); + Assert.assertEquals(0, file.size()); + + File directory2 = (File) directory.getParent().getChild( + UUID.randomUUID().toString()); + + directory.copyTo(directory2, false, true); + + Assert.assertTrue(directory2.exists()); + Assert + .assertTrue(((File) directory2.getChild(file.getName())) + .exists()); + + directory2.delete(true); + + try { + directory.copyTo(directory2, false, false); + Assert.fail("Should have thrown an exception."); + } catch (HiLAException e) { + log.info("Exception thrown as expected"); + } + + directory2.mkdir(); + + directory.copyTo(directory2, false, true); + + Assert.assertTrue(((File) directory2.getChild(directory.getName())) + .exists()); + Assert.assertTrue(((File) directory2.getChild(directory.getName()) + .getChild(file.getName())).exists()); + + directory.delete(true); + directory2.delete(true); + } + + @Test + public void testLastModified() throws HiLALocationSyntaxException, + HiLAException { + // create simple file for testing + String string = "This is a test."; + Site site = (Site) new Location(siteLoc).locate(); + File file = (File) site.getStorages().get(0).asFile().getChild( + UUID.randomUUID().toString()); + Assert.assertEquals(TaskStatus.SUCCESSFUL, file.importFromStream( + new StringInputStream(string)).block()); + + Calendar lastMod = Calendar.getInstance(); + lastMod.setTime(file.lastModified()); + // don't account for milliseconds + Assert.assertEquals(Calendar.getInstance().getTimeInMillis() / 1000, + lastMod.getTimeInMillis() / 1000); + } + + @Test + public void testChmod() throws HiLALocationSyntaxException, HiLAException { + // create simple file for testing + String string = "This is a test."; + Site site = (Site) new Location(siteLoc).locate(); + File file = (File) site.getStorages().get(0).asFile().getChild( + UUID.randomUUID().toString()); + Assert.assertEquals(TaskStatus.SUCCESSFUL, file.importFromStream( + new StringInputStream(string)).block()); + + file.chmod(false, false, false); + + Assert.assertFalse(file.isReadable()); + Assert.assertFalse(file.isWritable()); + Assert.assertFalse(file.isExecutable()); + + file.setIsReadable(true); + file.setIsWritable(true); + file.setIsExecutable(true); + + Assert.assertTrue(file.isReadable()); + Assert.assertTrue(file.isWritable()); + Assert.assertTrue(file.isExecutable()); + + file.delete(); + } + + @Test + public void testTransferSingleFile() throws HiLALocationSyntaxException, + HiLAException { + // create simple file for testing + String string = "This is a test."; + Site site = (Site) new Location(siteLoc).locate(); + File file = (File) site.getStorages().get(0).asFile().getChild( + UUID.randomUUID().toString()); + Assert.assertEquals(TaskStatus.SUCCESSFUL, file.importFromStream( + new StringInputStream(string)).block()); + + File storage2File = site.getStorages().get(1).asFile(); + Assert.assertEquals(TaskStatus.SUCCESSFUL, file.transfer(storage2File) + .block()); + + Assert.assertTrue(storage2File.exists()); + + try { + Assert.assertEquals(TaskStatus.FAILED, file.transfer(storage2File) + .block()); + Assert.fail("Should have thrown an exception."); + } catch (HiLAException e) { + log.info("Exception thrown as expected."); + } + + file.delete(); + ((File) storage2File.getChild(file.getName())).delete(); + } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |