blob: 77bde653196bc35b45c00a744455809775ce31f0 [file] [log] [blame]
/**
* 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.hadoop.mrunit.testutil;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.junit.Assert.assertThat;
import java.io.File;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocalFileSystem;
import org.junit.Rule;
import org.junit.Test;
public class TestTemporaryPath {
@Rule
public TemporaryPath tmpDir = new TemporaryPath("foo.tmp", "bar.tmp");
@Test
public void testRoot() throws IOException {
assertThat(tmpDir.getRootFile().exists(), is(true));
assertThat(new File(tmpDir.getRootFileName()).exists(), is(true));
assertThat(getFs().exists(tmpDir.getRootPath()), is(true));
}
@Test
public void testFile() throws IOException {
assertThat(tmpDir.getFile("foo").getParentFile(), is(tmpDir.getRootFile()));
assertThat(tmpDir.getFile("foo").getName(), is("foo"));
assertThat(tmpDir.getFile("foo").exists(), is(false));
}
@Test
public void testPath() throws IOException {
assertThat(tmpDir.getPath("foo").getParent(), is(tmpDir.getRootPath()));
assertThat(tmpDir.getPath("foo").getName(), is("foo"));
assertThat(getFs().exists(tmpDir.getPath("foo")), is(false));
}
@Test
public void testFileName() {
assertThat(new File(tmpDir.getRootFileName()), is(tmpDir.getRootFile()));
assertThat(new File(tmpDir.getFileName("foo").toString()), is(tmpDir.getFile("foo")));
}
@Test
public void testCopyResource() throws IOException {
File dest = tmpDir.getFile("testfile");
assertThat(dest.exists(), is(false));
tmpDir.copyResourceFile("testfile");
assertThat(dest.exists(), is(true));
}
@Test
public void testCopyResourceNested() throws IOException {
File dest = tmpDir.getFile("data.txt");
assertThat(dest.exists(), is(false));
tmpDir.copyResourceFile("testdir/data.txt");
assertThat(dest.exists(), is(true));
}
@Test
public void testGetDefaultConfiguration() {
Configuration conf = tmpDir.getDefaultConfiguration();
String fooDir = conf.get("foo.tmp");
String barDir = conf.get("bar.tmp");
assertThat(fooDir.startsWith(tmpDir.getRootFileName()), is(true));
assertThat(barDir.startsWith(tmpDir.getRootFileName()), is(true));
assertThat(fooDir, is(not(barDir)));
}
@Test
public void testOverridePathProperties() {
Configuration conf = new Configuration();
conf.set("foo.tmp", "whatever");
conf.set("other.dir", "/my/dir");
tmpDir.overridePathProperties(conf);
assertThat(conf.get("foo.tmp").startsWith(tmpDir.getRootFileName()), is(true));
assertThat(conf.get("other.dir"), is("/my/dir"));
}
private LocalFileSystem getFs() throws IOException {
return FileSystem.getLocal(new Configuration());
}
}