alluxio.hadoop.contract.FileSystemContract.java Source code

Java tutorial

Introduction

Here is the source code for alluxio.hadoop.contract.FileSystemContract.java

Source

/*
 * The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
 * (the "License"). You may not use this work except in compliance with the License, which is
 * available at www.apache.org/licenses/LICENSE-2.0
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied, as more fully set forth in the License.
 *
 * See the NOTICE file distributed with this work for information regarding copyright ownership.
 */

package alluxio.hadoop.contract;

import alluxio.Constants;
import alluxio.hadoop.FileSystem;
import alluxio.master.LocalAlluxioCluster;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.contract.AbstractFSContract;

import java.io.IOException;
import java.net.URI;

/**
 * This class provides an implementation of {@link AbstractFSContract} using {@link FileSystem}.
 * This will be used to run Hadoop Contract tests which verify the
 * {@link alluxio.hadoop.AbstractFileSystem} interface. More information can be found here:
 * http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/filesystem/testing.html
 */
public class FileSystemContract extends AbstractFSContract {

    public static final String CONTRACT_XML = "contract/alluxiofs.xml";
    public static final String SYSPROP_TEST_BUILD_DATA = "test.build.data";
    public static final String DEFAULT_TEST_BUILD_DATA_DIR = "test/build/data";
    private final LocalAlluxioCluster mLocalAlluxioCluster;
    private org.apache.hadoop.fs.FileSystem mFS;

    /**
     * Creates a new {@link FileSystemContract}.
     *
     * @param conf configuration for hdfs
     * @param cluster the Alluxio cluster to test in this contract
     */
    public FileSystemContract(Configuration conf, LocalAlluxioCluster cluster) {
        super(conf);
        mLocalAlluxioCluster = cluster;
        //insert the base features
        addConfResource(getContractXml());
    }

    /**
     * Return the contract file for this filesystem.
     *
     * @return the XML
     */
    protected String getContractXml() {
        return CONTRACT_XML;
    }

    @Override
    public void init() throws IOException {
        super.init();
        Configuration conf = new Configuration();
        conf.set("fs.alluxio.impl", FileSystem.class.getName());

        URI uri = URI.create(mLocalAlluxioCluster.getMasterURI());

        mFS = org.apache.hadoop.fs.FileSystem.get(uri, conf);
    }

    @Override
    public org.apache.hadoop.fs.FileSystem getTestFileSystem() throws IOException {
        return mFS;
    }

    @Override
    public String getScheme() {
        return Constants.SCHEME;
    }

    @Override
    public Path getTestPath() {
        Path path = mFS.makeQualified(new Path(getTestDataDir()));
        return path;
    }

    /**
     * Get the test data directory.
     *
     * @return the directory for test data
     */
    protected String getTestDataDir() {
        return System.getProperty(SYSPROP_TEST_BUILD_DATA, DEFAULT_TEST_BUILD_DATA_DIR);
    }
}