summaryrefslogtreecommitdiff
path: root/M4-RCs/qpid/java/common/src/test/java/org/apache/qpid/util/FileUtilsTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'M4-RCs/qpid/java/common/src/test/java/org/apache/qpid/util/FileUtilsTest.java')
-rw-r--r--M4-RCs/qpid/java/common/src/test/java/org/apache/qpid/util/FileUtilsTest.java522
1 files changed, 0 insertions, 522 deletions
diff --git a/M4-RCs/qpid/java/common/src/test/java/org/apache/qpid/util/FileUtilsTest.java b/M4-RCs/qpid/java/common/src/test/java/org/apache/qpid/util/FileUtilsTest.java
deleted file mode 100644
index fb367d042c..0000000000
--- a/M4-RCs/qpid/java/common/src/test/java/org/apache/qpid/util/FileUtilsTest.java
+++ /dev/null
@@ -1,522 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-package org.apache.qpid.util;
-
-import junit.framework.TestCase;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.BufferedWriter;
-import java.io.FileWriter;
-import java.io.FileNotFoundException;
-
-public class FileUtilsTest extends TestCase
-{
- private static final String COPY = "-Copy";
- private static final String SUB = "-Sub";
-
- /**
- * Additional test for the copy method.
- * Ensures that the directory count did increase by more than 1 after the copy.
- */
- public void testCopyFile()
- {
- final String TEST_DATA = "FileUtilsTest-testCopy-TestDataTestDataTestDataTestDataTestDataTestData";
- String fileName = "FileUtilsTest-testCopy";
- String fileNameCopy = fileName + COPY;
-
- File[] beforeCopyFileList = null;
-
- //Create initial file
- File test = createTestFile(fileName, TEST_DATA);
-
- try
- {
- //Check number of files before copy
- beforeCopyFileList = test.getAbsoluteFile().getParentFile().listFiles();
- int beforeCopy = beforeCopyFileList.length;
-
- //Perform Copy
- File destination = new File(fileNameCopy);
- FileUtils.copy(test, destination);
- //Ensure the JVM cleans up if cleanup failues
- destination.deleteOnExit();
-
- //Retrieve counts after copy
- int afterCopy = test.getAbsoluteFile().getParentFile().listFiles().length;
-
- int afterCopyFromCopy = new File(fileNameCopy).getAbsoluteFile().getParentFile().listFiles().length;
-
- // Validate the copy counts
- assertEquals("The file listing from the original and the copy differ in length.", afterCopy, afterCopyFromCopy);
- assertEquals("The number of files did not increase.", beforeCopy + 1, afterCopy);
- assertEquals("The number of files did not increase.", beforeCopy + 1, afterCopyFromCopy);
-
- //Validate copy
- // Load content
- String copiedFileContent = FileUtils.readFileAsString(fileNameCopy);
- assertEquals(TEST_DATA, copiedFileContent);
- }
- finally // Ensure clean
- {
- //Clean up
- assertTrue("Unable to cleanup", FileUtils.deleteFile(fileNameCopy));
-
- //Check file list after cleanup
- File[] afterCleanup = new File(test.getAbsoluteFile().getParent()).listFiles();
- checkFileLists(beforeCopyFileList, afterCleanup);
-
- //Remove original file
- assertTrue("Unable to cleanup", test.delete());
- }
- }
-
- /**
- * Create and Copy the following structure:
- *
- * testDirectory --+
- * +-- testSubDirectory --+
- * +-- testSubFile
- * +-- File
- *
- * to testDirectory-Copy
- *
- * Validate that the file count in the copy is correct and contents of the copied files is correct.
- */
- public void testCopyRecursive()
- {
- final String TEST_DATA = "FileUtilsTest-testDirectoryCopy-TestDataTestDataTestDataTestDataTestDataTestData";
- String fileName = "FileUtilsTest-testCopy";
- String TEST_DIR = "testDirectoryCopy";
-
- //Create Initial Structure
- File testDir = new File(TEST_DIR);
-
- //Check number of files before copy
- File[] beforeCopyFileList = testDir.getAbsoluteFile().getParentFile().listFiles();
-
- try
- {
- //Create Directories
- assertTrue("Test directory already exists cannot test.", !testDir.exists());
-
- if (!testDir.mkdir())
- {
- fail("Unable to make test Directory");
- }
-
- File testSubDir = new File(TEST_DIR + File.separator + TEST_DIR + SUB);
- if (!testSubDir.mkdir())
- {
- fail("Unable to make test sub Directory");
- }
-
- //Create Files
- createTestFile(testDir.toString() + File.separator + fileName, TEST_DATA);
- createTestFile(testSubDir.toString() + File.separator + fileName + SUB, TEST_DATA);
-
- //Ensure the JVM cleans up if cleanup failues
- testSubDir.deleteOnExit();
- testDir.deleteOnExit();
-
-
- //Perform Copy
- File copyDir = new File(testDir.toString() + COPY);
- try
- {
- FileUtils.copyRecursive(testDir, copyDir);
- }
- catch (FileNotFoundException e)
- {
- fail(e.getMessage());
- }
- catch (FileUtils.UnableToCopyException e)
- {
- fail(e.getMessage());
- }
-
- //Validate Copy
- assertEquals("Copied directory should only have one file and one directory in it.", 2, copyDir.listFiles().length);
-
- //Validate Copy File Contents
- String copiedFileContent = FileUtils.readFileAsString(copyDir.toString() + File.separator + fileName);
- assertEquals(TEST_DATA, copiedFileContent);
-
- //Validate Name of Sub Directory
- assertTrue("Expected subdirectory is not a directory", new File(copyDir.toString() + File.separator + TEST_DIR + SUB).isDirectory());
-
- //Assert that it contains only one item
- assertEquals("Copied sub directory should only have one directory in it.", 1, new File(copyDir.toString() + File.separator + TEST_DIR + SUB).listFiles().length);
-
- //Validate content of Sub file
- copiedFileContent = FileUtils.readFileAsString(copyDir.toString() + File.separator + TEST_DIR + SUB + File.separator + fileName + SUB);
- assertEquals(TEST_DATA, copiedFileContent);
- }
- finally
- {
- //Clean up source and copy directory.
- assertTrue("Unable to cleanup", FileUtils.delete(testDir, true));
- assertTrue("Unable to cleanup", FileUtils.delete(new File(TEST_DIR + COPY), true));
-
- //Check file list after cleanup
- File[] afterCleanup = testDir.getAbsoluteFile().getParentFile().listFiles();
- checkFileLists(beforeCopyFileList, afterCleanup);
- }
- }
-
- /**
- * Helper method to create a test file with a string content
- *
- * @param fileName The fileName to use in the creation
- * @param test_data The data to store in the file
- *
- * @return The File reference
- */
- private File createTestFile(String fileName, String test_data)
- {
- File test = new File(fileName);
-
- try
- {
- test.createNewFile();
- //Ensure the JVM cleans up if cleanup failues
- test.deleteOnExit();
- }
- catch (IOException e)
- {
- fail(e.getMessage());
- }
-
- BufferedWriter writer = null;
- try
- {
- writer = new BufferedWriter(new FileWriter(test));
- try
- {
- writer.write(test_data);
- }
- catch (IOException e)
- {
- fail(e.getMessage());
- }
- }
- catch (IOException e)
- {
- fail(e.getMessage());
- }
- finally
- {
- try
- {
- if (writer != null)
- {
- writer.close();
- }
- }
- catch (IOException e)
- {
- fail(e.getMessage());
- }
- }
-
- return test;
- }
-
- /** Test that deleteFile only deletes the specified file */
- public void testDeleteFile()
- {
- File test = new File("FileUtilsTest-testDelete");
- //Record file count in parent directory to check it is not changed by delete
- String path = test.getAbsolutePath();
- File[] filesBefore = new File(path.substring(0, path.lastIndexOf(File.separator))).listFiles();
- int fileCountBefore = filesBefore.length;
-
- try
- {
- test.createNewFile();
- //Ensure the JVM cleans up if cleanup failues
- test.deleteOnExit();
- }
- catch (IOException e)
- {
- fail(e.getMessage());
- }
-
- assertTrue("File does not exists", test.exists());
- assertTrue("File is not a file", test.isFile());
-
- //Check that file creation can be seen on disk
- int fileCountCreated = new File(path.substring(0, path.lastIndexOf(File.separator))).listFiles().length;
- assertEquals("File creation was no registered", fileCountBefore + 1, fileCountCreated);
-
- //Perform Delete
- assertTrue("Unable to cleanup", FileUtils.deleteFile("FileUtilsTest-testDelete"));
-
- assertTrue("File exists after delete", !test.exists());
-
- //Check that after deletion the file count is now accurate
- File[] filesAfter = new File(path.substring(0, path.lastIndexOf(File.separator))).listFiles();
- int fileCountAfter = filesAfter.length;
- assertEquals("File creation was no registered", fileCountBefore, fileCountAfter);
-
- checkFileLists(filesBefore, filesAfter);
- }
-
- /**
- * Given two lists of File arrays ensure they are the same length and all entries in Before are in After
- *
- * @param filesBefore File[]
- * @param filesAfter File[]
- */
- private void checkFileLists(File[] filesBefore, File[] filesAfter)
- {
- assertNotNull("Before file list cannot be null", filesBefore);
- assertNotNull("After file list cannot be null", filesAfter);
-
- assertEquals("File lists are unequal", filesBefore.length, filesAfter.length);
-
- for (File fileBefore : filesBefore)
- {
- boolean found = false;
-
- for (File fileAfter : filesAfter)
- {
- if (fileBefore.getAbsolutePath().equals(fileAfter.getAbsolutePath()))
- {
- found = true;
- break;
- }
- }
-
- assertTrue("File'" + fileBefore.getName() + "' was not in directory afterwards", found);
- }
- }
-
- public void testNonRecursiveNonEmptyDirectoryDeleteFails()
- {
- String directoryName = "FileUtilsTest-testRecursiveDelete";
- File test = new File(directoryName);
-
- //Record file count in parent directory to check it is not changed by delete
- String path = test.getAbsolutePath();
- File[] filesBefore = new File(path.substring(0, path.lastIndexOf(File.separator))).listFiles();
- int fileCountBefore = filesBefore.length;
-
- assertTrue("Directory exists", !test.exists());
-
- test.mkdir();
-
- //Create a file in the directory
- String fileName = test.getAbsolutePath() + File.separatorChar + "testFile";
- File subFile = new File(fileName);
- try
- {
- subFile.createNewFile();
- //Ensure the JVM cleans up if cleanup failues
- subFile.deleteOnExit();
- }
- catch (IOException e)
- {
- fail(e.getMessage());
- }
- //Ensure the JVM cleans up if cleanup failues
- // This must be after the subFile as the directory must be empty before
- // the delete is performed
- test.deleteOnExit();
-
- //Try and delete the non-empty directory
- assertFalse("Non Empty Directory was successfully deleted.", FileUtils.deleteDirectory(directoryName));
-
- //Check directory is still there
- assertTrue("Directory was deleted.", test.exists());
-
- // Clean up
- assertTrue("Unable to cleanup", FileUtils.delete(test, true));
-
- //Check that after deletion the file count is now accurate
- File[] filesAfter = new File(path.substring(0, path.lastIndexOf(File.separator))).listFiles();
- int fileCountAfter = filesAfter.length;
- assertEquals("File creation was no registered", fileCountBefore, fileCountAfter);
-
- checkFileLists(filesBefore, filesAfter);
- }
-
- /** Test that an empty directory can be deleted with deleteDirectory */
- public void testEmptyDirectoryDelete()
- {
- String directoryName = "FileUtilsTest-testRecursiveDelete";
- File test = new File(directoryName);
-
- //Record file count in parent directory to check it is not changed by delete
- String path = test.getAbsolutePath();
- File[] filesBefore = new File(path.substring(0, path.lastIndexOf(File.separator))).listFiles();
- int fileCountBefore = filesBefore.length;
-
- assertTrue("Directory exists", !test.exists());
-
- test.mkdir();
- //Ensure the JVM cleans up if cleanup failues
- test.deleteOnExit();
-
- //Try and delete the empty directory
- assertTrue("Non Empty Directory was successfully deleted.", FileUtils.deleteDirectory(directoryName));
-
- //Check directory is still there
- assertTrue("Directory was deleted.", !test.exists());
-
- //Check that after deletion the file count is now accurate
- File[] filesAfter = new File(path.substring(0, path.lastIndexOf(File.separator))).listFiles();
- int fileCountAfter = filesAfter.length;
- assertEquals("File creation was no registered", fileCountBefore, fileCountAfter);
-
- checkFileLists(filesBefore, filesAfter);
-
- }
-
- /** Test that deleteDirectory on a non empty directory to complete */
- public void testNonEmptyDirectoryDelete()
- {
- String directoryName = "FileUtilsTest-testRecursiveDelete";
- File test = new File(directoryName);
-
- assertTrue("Directory exists", !test.exists());
-
- //Record file count in parent directory to check it is not changed by delete
- String path = test.getAbsolutePath();
- File[] filesBefore = new File(path.substring(0, path.lastIndexOf(File.separator))).listFiles();
- int fileCountBefore = filesBefore.length;
-
- test.mkdir();
-
- //Create a file in the directory
- String fileName = test.getAbsolutePath() + File.separatorChar + "testFile";
- File subFile = new File(fileName);
- try
- {
- subFile.createNewFile();
- //Ensure the JVM cleans up if cleanup failues
- subFile.deleteOnExit();
- }
- catch (IOException e)
- {
- fail(e.getMessage());
- }
-
- // Ensure the JVM cleans up if cleanup failues
- // This must be after the subFile as the directory must be empty before
- // the delete is performed
- test.deleteOnExit();
-
- //Try and delete the non-empty directory non-recursively
- assertFalse("Non Empty Directory was successfully deleted.", FileUtils.delete(test, false));
-
- //Check directory is still there
- assertTrue("Directory was deleted.", test.exists());
-
- // Clean up
- assertTrue("Unable to cleanup", FileUtils.delete(test, true));
-
- //Check that after deletion the file count is now accurate
- File[] filesAfter = new File(path.substring(0, path.lastIndexOf(File.separator))).listFiles();
- int fileCountAfter = filesAfter.length;
- assertEquals("File creation was no registered", fileCountBefore, fileCountAfter);
-
- checkFileLists(filesBefore, filesAfter);
-
- }
-
- /** Test that a recursive delete successeds */
- public void testRecursiveDelete()
- {
- String directoryName = "FileUtilsTest-testRecursiveDelete";
- File test = new File(directoryName);
-
- assertTrue("Directory exists", !test.exists());
-
- //Record file count in parent directory to check it is not changed by delete
- String path = test.getAbsolutePath();
- File[] filesBefore = new File(path.substring(0, path.lastIndexOf(File.separator))).listFiles();
- int fileCountBefore = filesBefore.length;
-
- test.mkdir();
-
- createSubDir(directoryName, 2, 4);
-
- //Ensure the JVM cleans up if cleanup failues
- // This must be after the sub dir creation as the delete order is
- // recorded and the directory must be empty to be deleted.
- test.deleteOnExit();
-
- assertFalse("Non recursive delete was able to directory", FileUtils.delete(test, false));
-
- assertTrue("File does not exist after non recursive delete", test.exists());
-
- assertTrue("Unable to cleanup", FileUtils.delete(test, true));
-
- assertTrue("File exist after recursive delete", !test.exists());
-
- //Check that after deletion the file count is now accurate
- File[] filesAfter = new File(path.substring(0, path.lastIndexOf(File.separator))).listFiles();
- int fileCountAfter = filesAfter.length;
- assertEquals("File creation was no registered", fileCountBefore, fileCountAfter);
-
- checkFileLists(filesBefore, filesAfter);
-
- }
-
- private void createSubDir(String path, int directories, int files)
- {
- File directory = new File(path);
-
- assertTrue("Directory" + path + " does not exists", directory.exists());
-
- for (int dir = 0; dir < directories; dir++)
- {
- String subDirName = path + File.separatorChar + "sub" + dir;
- File subDir = new File(subDirName);
-
- subDir.mkdir();
-
- createSubDir(subDirName, directories - 1, files);
- //Ensure the JVM cleans up if cleanup failues
- // This must be after the sub dir creation as the delete order is
- // recorded and the directory must be empty to be deleted.
- subDir.deleteOnExit();
- }
-
- for (int file = 0; file < files; file++)
- {
- String subDirName = path + File.separatorChar + "file" + file;
- File subFile = new File(subDirName);
- try
- {
- subFile.createNewFile();
- //Ensure the JVM cleans up if cleanup failues
- subFile.deleteOnExit();
- }
- catch (IOException e)
- {
- fail(e.getMessage());
- }
- }
- }
-
-}