org.finra.herd.core.HerdFileUtilsTest.java Source code

Java tutorial

Introduction

Here is the source code for org.finra.herd.core.HerdFileUtilsTest.java

Source

/*
* Copyright 2015 herd contributors
*
* Licensed 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.finra.herd.core;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;

import org.apache.commons.io.FileUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

/**
 * Test driver for the FileUtils class.
 */
public class HerdFileUtilsTest extends AbstractCoreTest {
    private Path localTempPath;

    @Before
    public void setup() throws IOException {
        // Create a local temp directory.
        localTempPath = Files.createTempDirectory(null);
    }

    @After
    public void cleanup() throws IOException {
        FileUtils.deleteDirectory(localTempPath.toFile());
    }

    @Test
    public void testVerifyFileExistsAndReadable() throws IOException {
        File testFile = createLocalFile(localTempPath.toString(), "SOME_FILE", FILE_SIZE_1_KB);
        HerdFileUtils.verifyFileExistsAndReadable(testFile);
    }

    @Test
    public void testVerifyFileExistsAndReadableFileNoExists() throws IOException {
        File testFile = new File("I_DO_NOT_EXIST");
        try {
            HerdFileUtils.verifyFileExistsAndReadable(testFile);
            fail("Should throw an IllegalArgumentException when file does not exist.");
        } catch (IllegalArgumentException e) {
            assertEquals(String.format("File \"%s\" doesn't exist.", testFile.getName()), e.getMessage());
        }
    }

    @Test
    public void testVerifyFileExistsAndReadableFileIsDirectory() throws IOException {
        File testDirectory = localTempPath.toFile();
        try {
            HerdFileUtils.verifyFileExistsAndReadable(testDirectory);
            fail("Should throw an IllegalArgumentException when argument is a directory.");
        } catch (IllegalArgumentException e) {
            assertEquals(String.format(
                    "File \"%s\" is not a valid file that can be read as a manifest. Is it a directory?",
                    testDirectory.getName()), e.getMessage());
        }
    }

    @Test
    public void testVerifyFileExistsAndReadableFileNotReadable() throws IOException {
        File testFile = createLocalFile(localTempPath.toString(), "SOME_FILE", FILE_SIZE_1_KB);

        if (testFile.setReadable(false)) {
            try {
                HerdFileUtils.verifyFileExistsAndReadable(testFile);
                fail("Should throw an IllegalArgumentException when file is not readable.");
            } catch (IllegalArgumentException e) {
                assertEquals(String.format("Unable to read file \"%s\". Check permissions.", testFile.getName()),
                        e.getMessage());
            }
        }
    }

    /**
     * Cleans up a local test directory by deleting a test file.
     *
     * @throws IOException if fails to create a local test file
     */
    @Test
    public void testCleanDirectoryIgnoreException() throws IOException {
        File testFile = createLocalFile(localTempPath.toString(), "SOME_FILE", FILE_SIZE_1_KB);
        HerdFileUtils.cleanDirectoryIgnoreException(localTempPath.toFile());
        assertFalse(testFile.exists());
        assertTrue(localTempPath.toFile().exists());
    }

    /**
     * Tries to clean a directory which is actually a file.
     */
    @Test
    public void testCleanDirectoryIgnoreExceptionWithException() throws Exception {
        final File testFile = createLocalFile(localTempPath.toString(), "SOME_FILE", FILE_SIZE_1_KB);
        executeWithoutLogging(HerdFileUtils.class, new Command() {
            @Override
            public void execute() throws Exception {
                HerdFileUtils.cleanDirectoryIgnoreException(testFile);
            }
        });
        assertTrue(testFile.exists());
    }

    /**
     * Deletes a local test directory with a test file.
     *
     * @throws IOException if fails to create a local test file
     */
    @Test
    public void testDeleteDirectoryIgnoreException() throws IOException {
        File testFile = createLocalFile(localTempPath.toString(), "SOME_FILE", FILE_SIZE_1_KB);
        HerdFileUtils.deleteDirectoryIgnoreException(localTempPath.toFile());
        assertFalse(testFile.exists());
        assertFalse(localTempPath.toFile().exists());
    }

    /**
     * Tries to delete a directory which is actually a file.
     */
    @Test
    public void testDeleteDirectoryIgnoreExceptionWithException() throws Exception {
        final File testFile = createLocalFile(localTempPath.toString(), "SOME_FILE", FILE_SIZE_1_KB);
        executeWithoutLogging(HerdFileUtils.class, new Command() {
            @Override
            public void execute() throws Exception {
                HerdFileUtils.deleteDirectoryIgnoreException(testFile);
            }
        });
        assertTrue(testFile.exists());
    }

    /**
     * Deletes a local test file.
     *
     * @throws IOException if fails to create a local test file
     */
    @Test
    public void testDeleteFileIgnoreException() throws IOException {
        File testFile = createLocalFile(localTempPath.toString(), "SOME_FILE", FILE_SIZE_1_KB);
        HerdFileUtils.deleteFileIgnoreException(testFile);
        assertFalse(testFile.exists());
        assertTrue(localTempPath.toFile().exists());
    }

    /**
     * Tries to delete a non-existing local test file.
     */
    @Test
    public void testDeleteFileIgnoreExceptionWithException() throws Exception {
        executeWithoutLogging(HerdFileUtils.class, new Command() {
            @Override
            public void execute() throws Exception {
                HerdFileUtils.deleteDirectoryIgnoreException(new File("I_DO_NOT_EXIST"));
            }
        });
    }
}