HADOOP-12258. Need translate java.nio.file.NoSuchFileException to FileNotFoundException to avoid regression. Contributed by Zhihai Xu.
This commit is contained in:
parent
dc2340c60e
commit
6cc8e38db5
@ -1056,6 +1056,9 @@ Release 2.8.0 - UNRELEASED
|
|||||||
HADOOP-12302. Fix native compilation on Windows after HADOOP-7824
|
HADOOP-12302. Fix native compilation on Windows after HADOOP-7824
|
||||||
(Vinayakumar B via Colin P. McCabe)
|
(Vinayakumar B via Colin P. McCabe)
|
||||||
|
|
||||||
|
HADOOP-12258. Need translate java.nio.file.NoSuchFileException to
|
||||||
|
FileNotFoundException to avoid regression. (Zhihai Xu via cnauroth)
|
||||||
|
|
||||||
Release 2.7.2 - UNRELEASED
|
Release 2.7.2 - UNRELEASED
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.NoSuchFileException;
|
||||||
import java.nio.file.attribute.BasicFileAttributes;
|
import java.nio.file.attribute.BasicFileAttributes;
|
||||||
import java.nio.file.attribute.BasicFileAttributeView;
|
import java.nio.file.attribute.BasicFileAttributeView;
|
||||||
import java.nio.file.attribute.FileTime;
|
import java.nio.file.attribute.FileTime;
|
||||||
@ -650,13 +651,22 @@ static class DeprecatedRawLocalFileStatus extends FileStatus {
|
|||||||
private boolean isPermissionLoaded() {
|
private boolean isPermissionLoaded() {
|
||||||
return !super.getOwner().isEmpty();
|
return !super.getOwner().isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static long getLastAccessTime(File f) throws IOException {
|
||||||
|
long accessTime;
|
||||||
|
try {
|
||||||
|
accessTime = Files.readAttributes(f.toPath(),
|
||||||
|
BasicFileAttributes.class).lastAccessTime().toMillis();
|
||||||
|
} catch (NoSuchFileException e) {
|
||||||
|
throw new FileNotFoundException("File " + f + " does not exist");
|
||||||
|
}
|
||||||
|
return accessTime;
|
||||||
|
}
|
||||||
|
|
||||||
DeprecatedRawLocalFileStatus(File f, long defaultBlockSize, FileSystem fs)
|
DeprecatedRawLocalFileStatus(File f, long defaultBlockSize, FileSystem fs)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
super(f.length(), f.isDirectory(), 1, defaultBlockSize,
|
super(f.length(), f.isDirectory(), 1, defaultBlockSize,
|
||||||
f.lastModified(),
|
f.lastModified(), getLastAccessTime(f),
|
||||||
Files.readAttributes(f.toPath(),
|
|
||||||
BasicFileAttributes.class).lastAccessTime().toMillis(),
|
|
||||||
null, null, null,
|
null, null, null,
|
||||||
new Path(f.getPath()).makeQualified(fs.getUri(),
|
new Path(f.getPath()).makeQualified(fs.getUri(),
|
||||||
fs.getWorkingDirectory()));
|
fs.getWorkingDirectory()));
|
||||||
@ -773,17 +783,21 @@ public void setPermission(Path p, FsPermission permission)
|
|||||||
* Sets the {@link Path}'s last modified time and last access time to
|
* Sets the {@link Path}'s last modified time and last access time to
|
||||||
* the given valid times.
|
* the given valid times.
|
||||||
*
|
*
|
||||||
* @param mtime the modification time to set (only if greater than zero).
|
* @param mtime the modification time to set (only if no less than zero).
|
||||||
* @param atime the access time to set (only if greater than zero).
|
* @param atime the access time to set (only if no less than zero).
|
||||||
* @throws IOException if setting the times fails.
|
* @throws IOException if setting the times fails.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void setTimes(Path p, long mtime, long atime) throws IOException {
|
public void setTimes(Path p, long mtime, long atime) throws IOException {
|
||||||
BasicFileAttributeView view = Files.getFileAttributeView(
|
try {
|
||||||
pathToFile(p).toPath(), BasicFileAttributeView.class);
|
BasicFileAttributeView view = Files.getFileAttributeView(
|
||||||
FileTime fmtime = (mtime >= 0) ? FileTime.fromMillis(mtime) : null;
|
pathToFile(p).toPath(), BasicFileAttributeView.class);
|
||||||
FileTime fatime = (atime >= 0) ? FileTime.fromMillis(atime) : null;
|
FileTime fmtime = (mtime >= 0) ? FileTime.fromMillis(mtime) : null;
|
||||||
view.setTimes(fmtime, fatime, null);
|
FileTime fatime = (atime >= 0) ? FileTime.fromMillis(atime) : null;
|
||||||
|
view.setTimes(fmtime, fatime, null);
|
||||||
|
} catch (NoSuchFileException e) {
|
||||||
|
throw new FileNotFoundException("File " + p + " does not exist");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* 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.fs.contract;
|
||||||
|
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
|
||||||
|
import org.apache.hadoop.fs.FileStatus;
|
||||||
|
import org.apache.hadoop.fs.Path;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test getFileStatus -if supported
|
||||||
|
*/
|
||||||
|
public abstract class AbstractContractGetFileStatusTest extends
|
||||||
|
AbstractFSContractTestBase {
|
||||||
|
private static final Logger LOG =
|
||||||
|
LoggerFactory.getLogger(AbstractContractGetFileStatusTest.class);
|
||||||
|
|
||||||
|
private Path testPath;
|
||||||
|
private Path target;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setup() throws Exception {
|
||||||
|
super.setup();
|
||||||
|
skipIfUnsupported(SUPPORTS_GETFILESTATUS);
|
||||||
|
|
||||||
|
//delete the test directory
|
||||||
|
testPath = path("test");
|
||||||
|
target = new Path(testPath, "target");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetFileStatusNonexistentFile() throws Throwable {
|
||||||
|
try {
|
||||||
|
FileStatus status = getFileSystem().getFileStatus(target);
|
||||||
|
//got here: trouble
|
||||||
|
fail("expected a failure");
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
//expected
|
||||||
|
handleExpectedException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* 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.fs.contract;
|
||||||
|
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
|
||||||
|
import org.apache.hadoop.fs.Path;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test setTimes -if supported
|
||||||
|
*/
|
||||||
|
public abstract class AbstractContractSetTimesTest extends
|
||||||
|
AbstractFSContractTestBase {
|
||||||
|
private static final Logger LOG =
|
||||||
|
LoggerFactory.getLogger(AbstractContractSetTimesTest.class);
|
||||||
|
|
||||||
|
private Path testPath;
|
||||||
|
private Path target;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setup() throws Exception {
|
||||||
|
super.setup();
|
||||||
|
skipIfUnsupported(SUPPORTS_SETTIMES);
|
||||||
|
|
||||||
|
//delete the test directory
|
||||||
|
testPath = path("test");
|
||||||
|
target = new Path(testPath, "target");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSetTimesNonexistentFile() throws Throwable {
|
||||||
|
try {
|
||||||
|
long time = System.currentTimeMillis();
|
||||||
|
getFileSystem().setTimes(target, time, time);
|
||||||
|
//got here: trouble
|
||||||
|
fail("expected a failure");
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
//expected
|
||||||
|
handleExpectedException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -92,6 +92,18 @@ public interface ContractOptions {
|
|||||||
*/
|
*/
|
||||||
String SUPPORTS_APPEND = "supports-append";
|
String SUPPORTS_APPEND = "supports-append";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Flag to indicate that setTimes is supported.
|
||||||
|
* @{value}
|
||||||
|
*/
|
||||||
|
String SUPPORTS_SETTIMES = "supports-settimes";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Flag to indicate that getFileStatus is supported.
|
||||||
|
* @{value}
|
||||||
|
*/
|
||||||
|
String SUPPORTS_GETFILESTATUS = "supports-getfilestatus";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Flag to indicate that renames are atomic
|
* Flag to indicate that renames are atomic
|
||||||
* @{value}
|
* @{value}
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* 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.fs.contract.localfs;
|
||||||
|
|
||||||
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
import org.apache.hadoop.fs.contract.AbstractContractGetFileStatusTest;
|
||||||
|
import org.apache.hadoop.fs.contract.AbstractFSContract;
|
||||||
|
|
||||||
|
public class TestLocalFSContractGetFileStatus extends
|
||||||
|
AbstractContractGetFileStatusTest {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected AbstractFSContract createContract(Configuration conf) {
|
||||||
|
return new LocalFSContract(conf);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* 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.fs.contract.localfs;
|
||||||
|
|
||||||
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
import org.apache.hadoop.fs.contract.AbstractContractSetTimesTest;
|
||||||
|
import org.apache.hadoop.fs.contract.AbstractFSContract;
|
||||||
|
|
||||||
|
public class TestLocalFSContractSetTimes extends
|
||||||
|
AbstractContractSetTimesTest {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected AbstractFSContract createContract(Configuration conf) {
|
||||||
|
return new LocalFSContract(conf);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* 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.fs.contract.rawlocal;
|
||||||
|
|
||||||
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
import org.apache.hadoop.fs.contract.AbstractContractGetFileStatusTest;
|
||||||
|
import org.apache.hadoop.fs.contract.AbstractFSContract;
|
||||||
|
|
||||||
|
public class TestRawlocalContractGetFileStatus extends
|
||||||
|
AbstractContractGetFileStatusTest {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected AbstractFSContract createContract(Configuration conf) {
|
||||||
|
return new RawlocalFSContract(conf);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* 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.fs.contract.rawlocal;
|
||||||
|
|
||||||
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
import org.apache.hadoop.fs.contract.AbstractContractSetTimesTest;
|
||||||
|
import org.apache.hadoop.fs.contract.AbstractFSContract;
|
||||||
|
|
||||||
|
public class TestRawlocalContractSetTimes extends
|
||||||
|
AbstractContractSetTimesTest {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected AbstractFSContract createContract(Configuration conf) {
|
||||||
|
return new RawlocalFSContract(conf);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -111,4 +111,14 @@ case sensitivity and permission options are determined at run time from OS type
|
|||||||
<value>false</value>
|
<value>false</value>
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
|
<property>
|
||||||
|
<name>fs.contract.supports-settimes</name>
|
||||||
|
<value>true</value>
|
||||||
|
</property>
|
||||||
|
|
||||||
|
<property>
|
||||||
|
<name>fs.contract.supports-getfilestatus</name>
|
||||||
|
<value>true</value>
|
||||||
|
</property>
|
||||||
|
|
||||||
</configuration>
|
</configuration>
|
@ -98,4 +98,14 @@
|
|||||||
<value>true</value>
|
<value>true</value>
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
|
<property>
|
||||||
|
<name>fs.contract.supports-settimes</name>
|
||||||
|
<value>true</value>
|
||||||
|
</property>
|
||||||
|
|
||||||
|
<property>
|
||||||
|
<name>fs.contract.supports-getfilestatus</name>
|
||||||
|
<value>true</value>
|
||||||
|
</property>
|
||||||
|
|
||||||
</configuration>
|
</configuration>
|
@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* 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.fs.contract.hdfs;
|
||||||
|
|
||||||
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
import org.apache.hadoop.fs.contract.AbstractContractGetFileStatusTest;
|
||||||
|
import org.apache.hadoop.fs.contract.AbstractFSContract;
|
||||||
|
import org.junit.AfterClass;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class TestHDFSContractGetFileStatus extends
|
||||||
|
AbstractContractGetFileStatusTest {
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void createCluster() throws IOException {
|
||||||
|
HDFSContract.createCluster();
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
public static void teardownCluster() throws IOException {
|
||||||
|
HDFSContract.destroyCluster();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected AbstractFSContract createContract(Configuration conf) {
|
||||||
|
return new HDFSContract(conf);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* 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.fs.contract.hdfs;
|
||||||
|
|
||||||
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
import org.apache.hadoop.fs.contract.AbstractContractSetTimesTest;
|
||||||
|
import org.apache.hadoop.fs.contract.AbstractFSContract;
|
||||||
|
import org.junit.AfterClass;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class TestHDFSContractSetTimes extends AbstractContractSetTimesTest {
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void createCluster() throws IOException {
|
||||||
|
HDFSContract.createCluster();
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
public static void teardownCluster() throws IOException {
|
||||||
|
HDFSContract.destroyCluster();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected AbstractFSContract createContract(Configuration conf) {
|
||||||
|
return new HDFSContract(conf);
|
||||||
|
}
|
||||||
|
}
|
@ -91,4 +91,14 @@
|
|||||||
<value>true</value>
|
<value>true</value>
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
|
<property>
|
||||||
|
<name>fs.contract.supports-settimes</name>
|
||||||
|
<value>true</value>
|
||||||
|
</property>
|
||||||
|
|
||||||
|
<property>
|
||||||
|
<name>fs.contract.supports-getfilestatus</name>
|
||||||
|
<value>true</value>
|
||||||
|
</property>
|
||||||
|
|
||||||
</configuration>
|
</configuration>
|
Loading…
Reference in New Issue
Block a user