提交 ad4d969c 编写于 作者: W weijun

7176574: sun/security/krb5/auto/TcpTimeout.java failed with solaris-i586

Reviewed-by: chegar
上级 a97da137
...@@ -48,49 +48,60 @@ public class TcpTimeout { ...@@ -48,49 +48,60 @@ public class TcpTimeout {
k.addPrincipalRandKey("krbtgt/" + OneKDC.REALM); k.addPrincipalRandKey("krbtgt/" + OneKDC.REALM);
// Start two listener that does not communicate, simulate timeout // Start two listener that does not communicate, simulate timeout
int p1 = new ServerSocket(0).getLocalPort(); ServerSocket ss1 = null;
int p2 = new ServerSocket(0).getLocalPort(); ServerSocket ss2 = null;
FileWriter fw = new FileWriter("alternative-krb5.conf"); try {
ss1 = new ServerSocket(0);
ss2 = new ServerSocket(0);
int p1 = ss1.getLocalPort();
int p2 = ss2.getLocalPort();
fw.write("[libdefaults]\n" + FileWriter fw = new FileWriter("alternative-krb5.conf");
"udp_preference_limit = 1\n" +
"max_retries = 2\n" +
"default_realm = " + OneKDC.REALM + "\n" +
"kdc_timeout = 5000\n");
fw.write("[realms]\n" + OneKDC.REALM + " = {\n" +
"kdc = " + OneKDC.KDCHOST + ":" + p1 + "\n" +
"kdc = " + OneKDC.KDCHOST + ":" + p2 + "\n" +
"kdc = " + OneKDC.KDCHOST + ":" + p3 + "\n" +
"}\n");
fw.close(); fw.write("[libdefaults]\n" +
System.setProperty("java.security.krb5.conf", "alternative-krb5.conf"); "udp_preference_limit = 1\n" +
Config.refresh(); "max_retries = 2\n" +
"default_realm = " + OneKDC.REALM + "\n" +
"kdc_timeout = 5000\n");
fw.write("[realms]\n" + OneKDC.REALM + " = {\n" +
"kdc = " + OneKDC.KDCHOST + ":" + p1 + "\n" +
"kdc = " + OneKDC.KDCHOST + ":" + p2 + "\n" +
"kdc = " + OneKDC.KDCHOST + ":" + p3 + "\n" +
"}\n");
System.out.println("Ports opened on " + p1 + ", " + p2 + ", " + p3); fw.close();
System.setProperty("java.security.krb5.conf",
"alternative-krb5.conf");
Config.refresh();
// The correct behavior should be: System.out.println("Ports opened on " + p1 + ", " + p2 + ", " + p3);
// 5 sec on p1, 5 sec on p1, fail
// 5 sec on p2, 5 sec on p2, fail
// p3 ok, p3 ok again for preauth.
int count = 6;
ByteArrayOutputStream bo = new ByteArrayOutputStream(); // The correct behavior should be:
PrintStream oldout = System.out; // 5 sec on p1, 5 sec on p1, fail
System.setOut(new PrintStream(bo)); // 5 sec on p2, 5 sec on p2, fail
Context c = Context.fromUserPass(OneKDC.USER, OneKDC.PASS, false); // p3 ok, p3 ok again for preauth.
System.setOut(oldout); int count = 6;
String[] lines = new String(bo.toByteArray()).split("\n"); ByteArrayOutputStream bo = new ByteArrayOutputStream();
for (String line: lines) { PrintStream oldout = System.out;
if (line.startsWith(">>> KDCCommunication")) { System.setOut(new PrintStream(bo));
System.out.println(line); Context c = Context.fromUserPass(OneKDC.USER, OneKDC.PASS, false);
count--; System.setOut(oldout);
String[] lines = new String(bo.toByteArray()).split("\n");
for (String line: lines) {
if (line.startsWith(">>> KDCCommunication")) {
System.out.println(line);
count--;
}
} }
} if (count != 0) {
if (count != 0) { throw new Exception("Retry count is " + count + " less");
throw new Exception("Retry count is " + count + " less"); }
} finally {
if (ss1 != null) ss1.close();
if (ss2 != null) ss2.close();
} }
} }
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册