org.apache.oodt.cas.filemgr.datatransfer.TestLocalDataTransferer.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.oodt.cas.filemgr.datatransfer.TestLocalDataTransferer.java

Source

/*
 * 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.oodt.cas.filemgr.datatransfer;

//Apache imports
import org.apache.commons.io.FileUtils;

//OODT imports
import org.apache.oodt.cas.filemgr.structs.Product;
import org.apache.oodt.cas.filemgr.structs.Reference;
import org.apache.oodt.cas.filemgr.structs.exceptions.DataTransferException;

//JDK imports
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.UUID;

//Junit imports
import junit.framework.TestCase;

/**
 * Test class for {@link LocalDataTransferer}.
 *
 * @author mattmann (Chris Mattmann)
 * @author bfoster (Brian Foster)
 */
public class TestLocalDataTransferer extends TestCase {

    private LocalDataTransferer transfer;

    private File origFile;
    private File testDir;
    private File repoDir;
    private File repoFile;
    private File destDir;
    private File destFile;

    public void setUp() throws Exception {
        transfer = (LocalDataTransferer) new LocalDataTransferFactory().createDataTransfer();
        URL url = this.getClass().getResource("/test.txt");
        origFile = new File(url.getFile());
        File testFile = File.createTempFile("test", ".txt");
        testDir = new File(testFile.getParentFile(), UUID.randomUUID().toString());
        repoDir = new File(testDir, "repo");
        if (!repoDir.mkdirs()) {
            throw new Exception("Failed to create repo directory!");
        }
        repoFile = new File(repoDir, "test.txt");
        destDir = new File(testDir, "dest");
        if (!destDir.mkdirs()) {
            throw new Exception("Failed to create destination directory!");
        }
        destFile = new File(destDir, "test.txt");
    }

    public void tearDown() throws Exception {
        FileUtils.forceDelete(testDir);
    }

    public void testTransferAndRetrieve() throws DataTransferException, IOException {
        Product testProduct = createDummyProduct();

        // Test transfer.
        transfer.transferProduct(testProduct);

        // Check that file was successfully transfered.
        assertTrue("Repo file does not exist", repoFile.exists());
        assertTrue("Repo file does not have the same contents as orig file",
                FileUtils.contentEquals(origFile, repoFile));

        // Test retrieve
        transfer.retrieveProduct(testProduct, destDir);

        // Check that file was successfully transfered.
        assertTrue("Destination file does not exist", destFile.exists());
        assertTrue("Destination file does not have the same contents as orig file",
                FileUtils.contentEquals(origFile, destFile));
    }

    private Product createDummyProduct() {
        Product testProduct = Product.getDefaultFlatProduct("test", "urn:oodt:GenericFile");
        testProduct.getProductReferences().add(new Reference(origFile.toURI().toString(),
                new File(repoDir, "test.txt").toURI().toString(), origFile.length()));
        return testProduct;
    }
}