HADOOP-9437. TestNativeIO#testRenameTo fails on Windows due to assumption that POSIX errno is embedded in NativeIOException. Contributed by Chris Nauroth.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1466306 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
f0351527d5
commit
2b19054c92
|
@ -505,6 +505,10 @@ Trunk (Unreleased)
|
||||||
|
|
||||||
HADOOP-9353. Activate native-win maven profile by default on Windows.
|
HADOOP-9353. Activate native-win maven profile by default on Windows.
|
||||||
(Arpit Agarwal via szetszwo)
|
(Arpit Agarwal via szetszwo)
|
||||||
|
|
||||||
|
HADOOP-9437. TestNativeIO#testRenameTo fails on Windows due to assumption
|
||||||
|
that POSIX errno is embedded in NativeIOException. (Chris Nauroth via
|
||||||
|
suresh)
|
||||||
|
|
||||||
Release 2.0.5-beta - UNRELEASED
|
Release 2.0.5-beta - UNRELEASED
|
||||||
|
|
||||||
|
|
|
@ -816,6 +816,7 @@ JNIEXPORT void JNICALL
|
||||||
Java_org_apache_hadoop_io_nativeio_NativeIO_renameTo0(JNIEnv *env,
|
Java_org_apache_hadoop_io_nativeio_NativeIO_renameTo0(JNIEnv *env,
|
||||||
jclass clazz, jstring jsrc, jstring jdst)
|
jclass clazz, jstring jsrc, jstring jdst)
|
||||||
{
|
{
|
||||||
|
#ifdef UNIX
|
||||||
const char *src = NULL, *dst = NULL;
|
const char *src = NULL, *dst = NULL;
|
||||||
|
|
||||||
src = (*env)->GetStringUTFChars(env, jsrc, NULL);
|
src = (*env)->GetStringUTFChars(env, jsrc, NULL);
|
||||||
|
@ -829,6 +830,23 @@ jclass clazz, jstring jsrc, jstring jdst)
|
||||||
done:
|
done:
|
||||||
if (src) (*env)->ReleaseStringUTFChars(env, jsrc, src);
|
if (src) (*env)->ReleaseStringUTFChars(env, jsrc, src);
|
||||||
if (dst) (*env)->ReleaseStringUTFChars(env, jdst, dst);
|
if (dst) (*env)->ReleaseStringUTFChars(env, jdst, dst);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WINDOWS
|
||||||
|
LPCWSTR src = NULL, dst = NULL;
|
||||||
|
|
||||||
|
src = (LPCWSTR) (*env)->GetStringChars(env, jsrc, NULL);
|
||||||
|
if (!src) goto done; // exception was thrown
|
||||||
|
dst = (LPCWSTR) (*env)->GetStringChars(env, jdst, NULL);
|
||||||
|
if (!dst) goto done; // exception was thrown
|
||||||
|
if (!MoveFile(src, dst)) {
|
||||||
|
throw_ioe(env, GetLastError());
|
||||||
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
|
if (src) (*env)->ReleaseStringChars(env, jsrc, src);
|
||||||
|
if (dst) (*env)->ReleaseStringChars(env, jdst, dst);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -446,7 +446,13 @@ public class TestNativeIO {
|
||||||
NativeIO.renameTo(nonExistentFile, targetFile);
|
NativeIO.renameTo(nonExistentFile, targetFile);
|
||||||
Assert.fail();
|
Assert.fail();
|
||||||
} catch (NativeIOException e) {
|
} catch (NativeIOException e) {
|
||||||
Assert.assertEquals(e.getErrno(), Errno.ENOENT);
|
if (Path.WINDOWS) {
|
||||||
|
Assert.assertEquals(
|
||||||
|
String.format("The system cannot find the file specified.%n"),
|
||||||
|
e.getMessage());
|
||||||
|
} else {
|
||||||
|
Assert.assertEquals(Errno.ENOENT, e.getErrno());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test renaming a file to itself. It should succeed and do nothing.
|
// Test renaming a file to itself. It should succeed and do nothing.
|
||||||
|
@ -465,7 +471,13 @@ public class TestNativeIO {
|
||||||
NativeIO.renameTo(sourceFile, badTarget);
|
NativeIO.renameTo(sourceFile, badTarget);
|
||||||
Assert.fail();
|
Assert.fail();
|
||||||
} catch (NativeIOException e) {
|
} catch (NativeIOException e) {
|
||||||
Assert.assertEquals(e.getErrno(), Errno.ENOTDIR);
|
if (Path.WINDOWS) {
|
||||||
|
Assert.assertEquals(
|
||||||
|
String.format("The parameter is incorrect.%n"),
|
||||||
|
e.getMessage());
|
||||||
|
} else {
|
||||||
|
Assert.assertEquals(Errno.ENOTDIR, e.getErrno());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FileUtils.deleteQuietly(TEST_DIR);
|
FileUtils.deleteQuietly(TEST_DIR);
|
||||||
|
|
Loading…
Reference in New Issue