8213300: jaxp/unittest/transform/CR6551600Test.java fails due to exception in jdk/jdk CI

Reviewed-by: joehw
This commit is contained in:
Frank Yuan 2018-12-05 16:41:13 +08:00
parent 6cbb52dc24
commit 2c02822742

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -23,10 +23,11 @@
package transform;
import static jaxp.library.JAXPTestUtilities.getSystemProperty;
import java.io.File;
import java.io.FilePermission;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@ -35,17 +36,18 @@ import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import jaxp.library.JAXPTestUtilities;
import org.testng.Assert;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import jaxp.library.JAXPTestUtilities;
/*
* @test
* @bug 6551600
* @requires os.family == "windows"
* @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest
* @run testng/othervm -DrunSecMngr=true transform.CR6551600Test
* @run testng/othervm transform.CR6551600Test
@ -56,17 +58,22 @@ public class CR6551600Test {
@Test
public final void testUNCPath() {
boolean isWindows = getSystemProperty("os.name").contains("Windows");
var hostName = "";
try {
hostName = java.net.InetAddress.getLocalHost().getHostName();
} catch (java.net.UnknownHostException e) {
// falls through
}
var uncPath = "\\\\" + hostName + "\\C$\\temp\\";
if (!checkAccess(uncPath)) {
System.out.println("Cannot access UNC path. Test exits.");
return;
}
var uncFilePath = uncPath + "xslt_unc_test.xml";
JAXPTestUtilities.runWithTmpPermission(() -> {
String hostName = "";
try {
hostName = java.net.InetAddress.getLocalHost().getHostName();
} catch (java.net.UnknownHostException e) {
// falls through
}
String path = isWindows ? "\\\\" + hostName + "\\C$\\xslt_unc_test.xml" : "///tmp/test.xml";
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
@ -75,7 +82,7 @@ public class CR6551600Test {
doc.appendChild(root);
// create an identity transform
Transformer t = TransformerFactory.newInstance().newTransformer();
File f = new File(path);
File f = new File(uncFilePath);
StreamResult result = new StreamResult(f);
DOMSource source = new DOMSource(doc);
System.out.println("Writing to " + f);
@ -86,11 +93,24 @@ public class CR6551600Test {
Assert.fail(e.toString());
}
File file = new File(path);
File file = new File(uncFilePath);
if (file.exists()) {
file.deleteOnExit();
}
}, isWindows ? new FilePermission("//localhost/C$/xslt_unc_test.xml", "read,write,delete")
: new FilePermission("///tmp/test.xml", "read,write,delete"));
}, new FilePermission(uncFilePath, "read,write,delete"));
}
private boolean checkAccess(String path) {
return JAXPTestUtilities.runWithTmpPermission(() -> {
try {
Path tmepFile = Files.createTempFile(Paths.get(path), "test", "6551600");
Files.deleteIfExists(tmepFile);
return true;
} catch (Exception e) {
System.out.println("Access check failed.");
e.printStackTrace();
return false;
}
}, new FilePermission(path + "*", "read,write,delete"));
}
}