Mercurial > hg > release > icedtea6-1.8
changeset 1882:73755cc5f4cb
Make clear that patches are from OpenJDK and use correct bug IDs.
2010-02-15 Andrew John Hughes <ahughes@redhat.com>
* patches/icedtea-6829636-loggingdeadlock2.patch,
* patches/icedtea-6912628-turkcert.patch,
* patches/icedtea-6920143-using-with-mouse.patch,
* patches/icedtea-6920172-location-relative-to-test.patch,
* patches/icedtea-6920172-turkish.patch:
Moved.
* Makefile.am: Use new patch paths.
* patches/openjdk/6716076-loggingdeadlock2.patch,
* patches/openjdk/6912628-turkcert.patch,
* patches/openjdk/6917663-turkish.patch,
* patches/openjdk/6920143-using-with-mouse.patch,
* patches/openjdk/6920172-location-relative-to-test.patch:
Move OpenJDK patches to appropriate directory and use
correct bug IDs for loggingdeadlock2 and turkish.
author | Andrew John Hughes <ahughes@redhat.com> |
---|---|
date | Mon, 15 Feb 2010 21:59:48 +0000 |
parents | d9b5a2ba9523 |
children | 8eb821cc2cd0 2e45706c88ce |
files | ChangeLog Makefile.am patches/icedtea-6829636-loggingdeadlock2.patch patches/icedtea-6912628-turkcert.patch patches/icedtea-6920143-using-with-mouse.patch patches/icedtea-6920172-location-relative-to-test.patch patches/icedtea-6920172-turkish.patch patches/openjdk/6716076-loggingdeadlock2.patch patches/openjdk/6912628-turkcert.patch patches/openjdk/6917663-turkish.patch patches/openjdk/6920143-using-with-mouse.patch patches/openjdk/6920172-location-relative-to-test.patch |
diffstat | 12 files changed, 371 insertions(+), 354 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Mon Feb 15 17:25:12 2010 +0000 +++ b/ChangeLog Mon Feb 15 21:59:48 2010 +0000 @@ -1,3 +1,20 @@ +2010-02-15 Andrew John Hughes <ahughes@redhat.com> + + * patches/icedtea-6829636-loggingdeadlock2.patch, + * patches/icedtea-6912628-turkcert.patch, + * patches/icedtea-6920143-using-with-mouse.patch, + * patches/icedtea-6920172-location-relative-to-test.patch, + * patches/icedtea-6920172-turkish.patch: + Moved. + * Makefile.am: Use new patch paths. + * patches/openjdk/6716076-loggingdeadlock2.patch, + * patches/openjdk/6912628-turkcert.patch, + * patches/openjdk/6917663-turkish.patch, + * patches/openjdk/6920143-using-with-mouse.patch, + * patches/openjdk/6920172-location-relative-to-test.patch: + Move OpenJDK patches to appropriate directory and use + correct bug IDs for loggingdeadlock2 and turkish. + 2010-02-15 Andrew John Hughes <ahughes@redhat.com> * rewriter/agpl-3.0.txt,
--- a/Makefile.am Mon Feb 15 17:25:12 2010 +0000 +++ b/Makefile.am Mon Feb 15 21:59:48 2010 +0000 @@ -310,11 +310,11 @@ patches/icedtea-parisc.patch \ patches/icedtea-sh4-support.patch \ patches/libpng.patch \ - patches/icedtea-6920143-using-with-mouse.patch \ - patches/icedtea-6920172-location-relative-to-test.patch \ - patches/icedtea-6920172-turkish.patch \ - patches/icedtea-6912628-turkcert.patch \ - patches/icedtea-6829636-loggingdeadlock2.patch + patches/openjdk/6920143-using-with-mouse.patch \ + patches/openjdk/6920172-location-relative-to-test.patch \ + patches/openjdk/6917663-turkish.patch \ + patches/openjdk/6912628-turkcert.patch \ + patches/openjdk/6716076-loggingdeadlock2.patch if WITH_RHINO ICEDTEA_PATCHES += \
--- a/patches/icedtea-6829636-loggingdeadlock2.patch Mon Feb 15 17:25:12 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,249 +0,0 @@ -6829636: test/java/util/logging/LoggingDeadlock2.java is flaky -Fixes created by mchung and martin - ---- openjdk.orig/jdk/test/java/util/logging/LoggingDeadlock2.java Fri Jan 30 16:27:33 2009 -0800 -+++ openjdk/jdk/test/java/util/logging/LoggingDeadlock2.java Fri Dec 04 23:11:11 2009 +0000 -@@ -23,10 +23,10 @@ - - /* - * @test -- * @bug 6467152 -+ * @bug 6467152 6716076 6829503 - * - * @summary deadlock occurs in LogManager initialization and JVM termination -- * @author Serguei Spitsyn / Hittachi -+ * @author Serguei Spitsyn / Hittachi / Martin Buchholz - * - * @build LoggingDeadlock2 - * @run main/timeout=15 LoggingDeadlock2 -@@ -47,43 +47,195 @@ - * This is a regression test for this bug. - */ - -+import java.util.Arrays; -+import java.util.List; -+import java.util.Random; -+import java.util.concurrent.CyclicBarrier; -+import java.util.concurrent.atomic.AtomicInteger; - import java.util.logging.LogManager; -- --public class LoggingDeadlock2 implements Runnable { -- static final java.io.PrintStream out = System.out; -- static Object lock = new Object(); -- static int c = 0; -- public static void main(String arg[]) { -- out.println("\nThis test checks that there is no deadlock."); -- out.println("If not crashed or timed-out then it is passed."); -+import java.io.File; -+import java.io.InputStream; -+import java.io.InputStreamReader; -+import java.io.Reader; -+ -+public class LoggingDeadlock2 { -+ -+ public static void realMain(String arg[]) throws Throwable { - try { -- new Thread(new LoggingDeadlock2()).start(); -- synchronized(lock) { -- c++; -- if (c == 2) lock.notify(); -- else lock.wait(); -+ System.out.println(javaChildArgs); -+ ProcessBuilder pb = new ProcessBuilder(javaChildArgs); -+ ProcessResults r = run(pb.start()); -+ equal(r.exitValue(), 99); -+ equal(r.out(), ""); -+ equal(r.err(), ""); -+ } catch (Throwable t) { unexpected(t); } -+ } -+ -+ public static class JavaChild { -+ public static void main(String args[]) throws Throwable { -+ final CyclicBarrier startingGate = new CyclicBarrier(2); -+ final Throwable[] thrown = new Throwable[1]; -+ -+ // Some random variation, to help tickle races. -+ final Random rnd = new Random(); -+ final boolean dojoin = rnd.nextBoolean(); -+ final int JITTER = 1024; -+ final int iters1 = rnd.nextInt(JITTER); -+ final int iters2 = JITTER - iters1; -+ final AtomicInteger counter = new AtomicInteger(0); -+ -+ Thread exiter = new Thread() { -+ public void run() { -+ try { -+ startingGate.await(); -+ for (int i = 0; i < iters1; i++) -+ counter.getAndIncrement(); -+ System.exit(99); -+ } catch (Throwable t) { -+ t.printStackTrace(); -+ System.exit(86); -+ } -+ }}; -+ exiter.start(); -+ -+ startingGate.await(); -+ for (int i = 0; i < iters2; i++) -+ counter.getAndIncrement(); -+ // This may or may not result in a first call to -+ // Runtime.addShutdownHook after shutdown has already -+ // commenced. -+ LogManager log = LogManager.getLogManager(); -+ -+ if (dojoin) { -+ exiter.join(); -+ if (thrown[0] != null) -+ throw new Error(thrown[0]); -+ check(counter.get() == JITTER); - } -- LogManager log = LogManager.getLogManager(); -- out.println("Test passed"); -- } -- catch(Exception e) { -- e.printStackTrace(); -- out.println("Test FAILED"); // Not expected -- } -- } -- -- public void run() { -+ } -+ } -+ -+ //---------------------------------------------------------------- -+ // The rest of this test is copied from ProcessBuilder/Basic.java -+ //---------------------------------------------------------------- -+ private static final String javaExe = -+ System.getProperty("java.home") + -+ File.separator + "bin" + File.separator + "java"; -+ -+ private static final String classpath = -+ System.getProperty("java.class.path"); -+ -+ private static final List<String> javaChildArgs = -+ Arrays.asList(new String[] -+ { javaExe, "-classpath", classpath, -+ "LoggingDeadlock2$JavaChild"}); -+ -+ private static class ProcessResults { -+ private final String out; -+ private final String err; -+ private final int exitValue; -+ private final Throwable throwable; -+ -+ public ProcessResults(String out, -+ String err, -+ int exitValue, -+ Throwable throwable) { -+ this.out = out; -+ this.err = err; -+ this.exitValue = exitValue; -+ this.throwable = throwable; -+ } -+ -+ public String out() { return out; } -+ public String err() { return err; } -+ public int exitValue() { return exitValue; } -+ public Throwable throwable() { return throwable; } -+ -+ public String toString() { -+ StringBuilder sb = new StringBuilder(); -+ sb.append("<STDOUT>\n" + out() + "</STDOUT>\n") -+ .append("<STDERR>\n" + err() + "</STDERR>\n") -+ .append("exitValue = " + exitValue + "\n"); -+ if (throwable != null) -+ sb.append(throwable.getStackTrace()); -+ return sb.toString(); -+ } -+ } -+ -+ private static class StreamAccumulator extends Thread { -+ private final InputStream is; -+ private final StringBuilder sb = new StringBuilder(); -+ private Throwable throwable = null; -+ -+ public String result () throws Throwable { -+ if (throwable != null) -+ throw throwable; -+ return sb.toString(); -+ } -+ -+ StreamAccumulator (InputStream is) { -+ this.is = is; -+ } -+ -+ public void run() { -+ try { -+ Reader r = new InputStreamReader(is); -+ char[] buf = new char[4096]; -+ int n; -+ while ((n = r.read(buf)) > 0) { -+ sb.append(buf,0,n); -+ } -+ } catch (Throwable t) { -+ throwable = t; -+ } finally { -+ try { is.close(); } -+ catch (Throwable t) { throwable = t; } -+ } -+ } -+ } -+ -+ private static ProcessResults run(Process p) { -+ Throwable throwable = null; -+ int exitValue = -1; -+ String out = ""; -+ String err = ""; -+ -+ StreamAccumulator outAccumulator = -+ new StreamAccumulator(p.getInputStream()); -+ StreamAccumulator errAccumulator = -+ new StreamAccumulator(p.getErrorStream()); -+ - try { -- synchronized(lock) { -- c++; -- if (c == 2) lock.notify(); -- else lock.wait(); -- } -- System.exit(1); -- } -- catch(Exception e) { -- e.printStackTrace(); -- out.println("Test FAILED"); // Not expected -- } -- } -+ outAccumulator.start(); -+ errAccumulator.start(); -+ -+ exitValue = p.waitFor(); -+ -+ outAccumulator.join(); -+ errAccumulator.join(); -+ -+ out = outAccumulator.result(); -+ err = errAccumulator.result(); -+ } catch (Throwable t) { -+ throwable = t; -+ } -+ -+ return new ProcessResults(out, err, exitValue, throwable); -+ } -+ -+ //--------------------- Infrastructure --------------------------- -+ static volatile int passed = 0, failed = 0; -+ static void pass() {passed++;} -+ static void fail() {failed++; Thread.dumpStack();} -+ static void fail(String msg) {System.out.println(msg); fail();} -+ static void unexpected(Throwable t) {failed++; t.printStackTrace();} -+ static void check(boolean cond) {if (cond) pass(); else fail();} -+ static void check(boolean cond, String m) {if (cond) pass(); else fail(m);} -+ static void equal(Object x, Object y) { -+ if (x == null ? y == null : x.equals(y)) pass(); -+ else fail(x + " not equal to " + y);} -+ public static void main(String[] args) throws Throwable { -+ try {realMain(args);} catch (Throwable t) {unexpected(t);} -+ System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed); -+ if (failed > 0) throw new AssertionError("Some tests failed");} - }
--- a/patches/icedtea-6912628-turkcert.patch Mon Feb 15 17:25:12 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -6912628: test/java/util/jar/JarFile/TurkCert.java cannot be run in samevm mode -Summary: Added tag to run this test in othervm -Reviewed-by: chegar - ---- openjdk.orig/jdk/test/java/util/jar/JarFile/TurkCert.java 2010-02-02 12:02:47.216585000 +0100 -+++ openjdk/jdk/test/java/util/jar/JarFile/TurkCert.java 2010-02-02 12:02:46.933586000 +0100 -@@ -26,6 +26,7 @@ - * @bug 4624534 - * @summary Make sure jar certificates work for Turkish locale - * @author kladko -+ * @run main/othervm TurkCert - */ - - import java.util.*;
--- a/patches/icedtea-6920143-using-with-mouse.patch Mon Feb 15 17:25:12 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -6920143: test/java/awt/TestArea/UsingWithMouse.java needs realSync() -Summary: Added small delay to make sure that TextArea animation have finished -Reviewed-by: anthony - ---- openjdk.orig/jdk/test/java/awt/TextArea/UsingWithMouse/SelectionAutoscrollTest.java 2010-01-27 14:45:28.000000000 +0100 -+++ openjdk/jdk/test/java/awt/TextArea/UsingWithMouse/SelectionAutoscrollTest.java 2010-01-27 14:45:27.000000000 +0100 -@@ -56,6 +56,7 @@ - TextArea textArea; - Robot robot; - final int desiredSelectionEnd = ('z'-'a'+1)*2; // 52 -+ final static int SCROLL_DELAY = 100; // ms - - public void start () { - createObjects(); -@@ -126,6 +127,8 @@ - - moveMouseBelowTextArea( tremble%2!=0 ); - Util.waitForIdle( robot ); -+ // it is needed to add some small delay on Gnome -+ waitUntilScrollIsPerformed(robot); - } - - robot.mouseRelease( MouseEvent.BUTTON1_MASK ); -@@ -141,9 +144,19 @@ - void moveMouseBelowTextArea( boolean shift ) { - Dimension d = textArea.getSize(); - Point l = textArea.getLocationOnScreen(); -+ int x = (int)(l.x+d.width*.5); - int y = (int)(l.y+d.height*1.5); - if( shift ) y+=15; -- robot.mouseMove( (int)(l.x+d.width*.5), y ); -+ robot.mouseMove( x, y ); -+ } -+ -+ void waitUntilScrollIsPerformed(Robot robot) { -+ try { -+ Thread.sleep( SCROLL_DELAY ); -+ } -+ catch( Exception e ) { -+ throw new RuntimeException( e ); -+ } - } - - void checkResults() { -
--- a/patches/icedtea-6920172-location-relative-to-test.patch Mon Feb 15 17:25:12 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -6920172: Regression test LocationRelativeToTest does not check frame position correctly. -Summary: Testcase correction - check frame position against graphics environment's center point -Reviewed-by: art - ---- openjdk.orig/jdk/test/java/awt/Multiscreen/LocationRelativeToTest/LocationRelativeToTest.java 2010-01-25 17:42:52.000000000 +0100 -+++ openjdk/jdk/test/java/awt/Multiscreen/LocationRelativeToTest/LocationRelativeToTest.java 2010-01-25 17:42:52.000000000 +0100 -@@ -50,7 +50,8 @@ - - GraphicsEnvironment ge = - GraphicsEnvironment.getLocalGraphicsEnvironment(); -- System.out.println("Center point: " + ge.getCenterPoint()); -+ Point centerPoint = ge.getCenterPoint(); -+ System.out.println("Center point: " + centerPoint); - GraphicsDevice[] gds = ge.getScreenDevices(); - GraphicsDevice gdDef = ge.getDefaultScreenDevice(); - GraphicsConfiguration gcDef = -@@ -77,8 +78,7 @@ - // second, check setLocationRelativeTo(invisible) - f.setLocationRelativeTo(f2); - Util.waitForIdle(r); -- checkLocation(f, new Point(gcBounds.x + gcBounds.width / 2, -- gcBounds.y + gcBounds.height / 2)); -+ checkLocation(f, centerPoint); - - // third, check setLocationRelativeTo(visible) - f2.setVisible(true); -
--- a/patches/icedtea-6920172-turkish.patch Mon Feb 15 17:25:12 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -6917663: test/java/security/Provider/Turkish.java not samevm friendly -Summary: Added othervm flag to ensure that this test will run in isolation. -Reviewed-by: alanb - ---- openjdk.orig/jdk/test/java/security/Provider/Turkish.java 2010-01-18 11:02:18.000000000 +0100 -+++ openjdk/jdk/test/java/security/Provider/Turkish.java 2010-01-18 11:02:17.000000000 +0100 -@@ -25,6 +25,7 @@ - * @test - * @bug 6220064 - * @summary make sure everything works ok in the Turkish local (dotted/dotless i problem) -+ * @run main/othervm Turkish - * @author Andreas Sterbenz - */ -
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/6716076-loggingdeadlock2.patch Mon Feb 15 21:59:48 2010 +0000 @@ -0,0 +1,249 @@ +6829636: test/java/util/logging/LoggingDeadlock2.java is flaky +Fixes created by mchung and martin + +--- openjdk.orig/jdk/test/java/util/logging/LoggingDeadlock2.java Fri Jan 30 16:27:33 2009 -0800 ++++ openjdk/jdk/test/java/util/logging/LoggingDeadlock2.java Fri Dec 04 23:11:11 2009 +0000 +@@ -23,10 +23,10 @@ + + /* + * @test +- * @bug 6467152 ++ * @bug 6467152 6716076 6829503 + * + * @summary deadlock occurs in LogManager initialization and JVM termination +- * @author Serguei Spitsyn / Hittachi ++ * @author Serguei Spitsyn / Hittachi / Martin Buchholz + * + * @build LoggingDeadlock2 + * @run main/timeout=15 LoggingDeadlock2 +@@ -47,43 +47,195 @@ + * This is a regression test for this bug. + */ + ++import java.util.Arrays; ++import java.util.List; ++import java.util.Random; ++import java.util.concurrent.CyclicBarrier; ++import java.util.concurrent.atomic.AtomicInteger; + import java.util.logging.LogManager; +- +-public class LoggingDeadlock2 implements Runnable { +- static final java.io.PrintStream out = System.out; +- static Object lock = new Object(); +- static int c = 0; +- public static void main(String arg[]) { +- out.println("\nThis test checks that there is no deadlock."); +- out.println("If not crashed or timed-out then it is passed."); ++import java.io.File; ++import java.io.InputStream; ++import java.io.InputStreamReader; ++import java.io.Reader; ++ ++public class LoggingDeadlock2 { ++ ++ public static void realMain(String arg[]) throws Throwable { + try { +- new Thread(new LoggingDeadlock2()).start(); +- synchronized(lock) { +- c++; +- if (c == 2) lock.notify(); +- else lock.wait(); ++ System.out.println(javaChildArgs); ++ ProcessBuilder pb = new ProcessBuilder(javaChildArgs); ++ ProcessResults r = run(pb.start()); ++ equal(r.exitValue(), 99); ++ equal(r.out(), ""); ++ equal(r.err(), ""); ++ } catch (Throwable t) { unexpected(t); } ++ } ++ ++ public static class JavaChild { ++ public static void main(String args[]) throws Throwable { ++ final CyclicBarrier startingGate = new CyclicBarrier(2); ++ final Throwable[] thrown = new Throwable[1]; ++ ++ // Some random variation, to help tickle races. ++ final Random rnd = new Random(); ++ final boolean dojoin = rnd.nextBoolean(); ++ final int JITTER = 1024; ++ final int iters1 = rnd.nextInt(JITTER); ++ final int iters2 = JITTER - iters1; ++ final AtomicInteger counter = new AtomicInteger(0); ++ ++ Thread exiter = new Thread() { ++ public void run() { ++ try { ++ startingGate.await(); ++ for (int i = 0; i < iters1; i++) ++ counter.getAndIncrement(); ++ System.exit(99); ++ } catch (Throwable t) { ++ t.printStackTrace(); ++ System.exit(86); ++ } ++ }}; ++ exiter.start(); ++ ++ startingGate.await(); ++ for (int i = 0; i < iters2; i++) ++ counter.getAndIncrement(); ++ // This may or may not result in a first call to ++ // Runtime.addShutdownHook after shutdown has already ++ // commenced. ++ LogManager log = LogManager.getLogManager(); ++ ++ if (dojoin) { ++ exiter.join(); ++ if (thrown[0] != null) ++ throw new Error(thrown[0]); ++ check(counter.get() == JITTER); + } +- LogManager log = LogManager.getLogManager(); +- out.println("Test passed"); +- } +- catch(Exception e) { +- e.printStackTrace(); +- out.println("Test FAILED"); // Not expected +- } +- } +- +- public void run() { ++ } ++ } ++ ++ //---------------------------------------------------------------- ++ // The rest of this test is copied from ProcessBuilder/Basic.java ++ //---------------------------------------------------------------- ++ private static final String javaExe = ++ System.getProperty("java.home") + ++ File.separator + "bin" + File.separator + "java"; ++ ++ private static final String classpath = ++ System.getProperty("java.class.path"); ++ ++ private static final List<String> javaChildArgs = ++ Arrays.asList(new String[] ++ { javaExe, "-classpath", classpath, ++ "LoggingDeadlock2$JavaChild"}); ++ ++ private static class ProcessResults { ++ private final String out; ++ private final String err; ++ private final int exitValue; ++ private final Throwable throwable; ++ ++ public ProcessResults(String out, ++ String err, ++ int exitValue, ++ Throwable throwable) { ++ this.out = out; ++ this.err = err; ++ this.exitValue = exitValue; ++ this.throwable = throwable; ++ } ++ ++ public String out() { return out; } ++ public String err() { return err; } ++ public int exitValue() { return exitValue; } ++ public Throwable throwable() { return throwable; } ++ ++ public String toString() { ++ StringBuilder sb = new StringBuilder(); ++ sb.append("<STDOUT>\n" + out() + "</STDOUT>\n") ++ .append("<STDERR>\n" + err() + "</STDERR>\n") ++ .append("exitValue = " + exitValue + "\n"); ++ if (throwable != null) ++ sb.append(throwable.getStackTrace()); ++ return sb.toString(); ++ } ++ } ++ ++ private static class StreamAccumulator extends Thread { ++ private final InputStream is; ++ private final StringBuilder sb = new StringBuilder(); ++ private Throwable throwable = null; ++ ++ public String result () throws Throwable { ++ if (throwable != null) ++ throw throwable; ++ return sb.toString(); ++ } ++ ++ StreamAccumulator (InputStream is) { ++ this.is = is; ++ } ++ ++ public void run() { ++ try { ++ Reader r = new InputStreamReader(is); ++ char[] buf = new char[4096]; ++ int n; ++ while ((n = r.read(buf)) > 0) { ++ sb.append(buf,0,n); ++ } ++ } catch (Throwable t) { ++ throwable = t; ++ } finally { ++ try { is.close(); } ++ catch (Throwable t) { throwable = t; } ++ } ++ } ++ } ++ ++ private static ProcessResults run(Process p) { ++ Throwable throwable = null; ++ int exitValue = -1; ++ String out = ""; ++ String err = ""; ++ ++ StreamAccumulator outAccumulator = ++ new StreamAccumulator(p.getInputStream()); ++ StreamAccumulator errAccumulator = ++ new StreamAccumulator(p.getErrorStream()); ++ + try { +- synchronized(lock) { +- c++; +- if (c == 2) lock.notify(); +- else lock.wait(); +- } +- System.exit(1); +- } +- catch(Exception e) { +- e.printStackTrace(); +- out.println("Test FAILED"); // Not expected +- } +- } ++ outAccumulator.start(); ++ errAccumulator.start(); ++ ++ exitValue = p.waitFor(); ++ ++ outAccumulator.join(); ++ errAccumulator.join(); ++ ++ out = outAccumulator.result(); ++ err = errAccumulator.result(); ++ } catch (Throwable t) { ++ throwable = t; ++ } ++ ++ return new ProcessResults(out, err, exitValue, throwable); ++ } ++ ++ //--------------------- Infrastructure --------------------------- ++ static volatile int passed = 0, failed = 0; ++ static void pass() {passed++;} ++ static void fail() {failed++; Thread.dumpStack();} ++ static void fail(String msg) {System.out.println(msg); fail();} ++ static void unexpected(Throwable t) {failed++; t.printStackTrace();} ++ static void check(boolean cond) {if (cond) pass(); else fail();} ++ static void check(boolean cond, String m) {if (cond) pass(); else fail(m);} ++ static void equal(Object x, Object y) { ++ if (x == null ? y == null : x.equals(y)) pass(); ++ else fail(x + " not equal to " + y);} ++ public static void main(String[] args) throws Throwable { ++ try {realMain(args);} catch (Throwable t) {unexpected(t);} ++ System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed); ++ if (failed > 0) throw new AssertionError("Some tests failed");} + }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/6912628-turkcert.patch Mon Feb 15 21:59:48 2010 +0000 @@ -0,0 +1,14 @@ +6912628: test/java/util/jar/JarFile/TurkCert.java cannot be run in samevm mode +Summary: Added tag to run this test in othervm +Reviewed-by: chegar + +--- openjdk.orig/jdk/test/java/util/jar/JarFile/TurkCert.java 2010-02-02 12:02:47.216585000 +0100 ++++ openjdk/jdk/test/java/util/jar/JarFile/TurkCert.java 2010-02-02 12:02:46.933586000 +0100 +@@ -26,6 +26,7 @@ + * @bug 4624534 + * @summary Make sure jar certificates work for Turkish locale + * @author kladko ++ * @run main/othervm TurkCert + */ + + import java.util.*;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/6917663-turkish.patch Mon Feb 15 21:59:48 2010 +0000 @@ -0,0 +1,14 @@ +6917663: test/java/security/Provider/Turkish.java not samevm friendly +Summary: Added othervm flag to ensure that this test will run in isolation. +Reviewed-by: alanb + +--- openjdk.orig/jdk/test/java/security/Provider/Turkish.java 2010-01-18 11:02:18.000000000 +0100 ++++ openjdk/jdk/test/java/security/Provider/Turkish.java 2010-01-18 11:02:17.000000000 +0100 +@@ -25,6 +25,7 @@ + * @test + * @bug 6220064 + * @summary make sure everything works ok in the Turkish local (dotted/dotless i problem) ++ * @run main/othervm Turkish + * @author Andreas Sterbenz + */ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/6920143-using-with-mouse.patch Mon Feb 15 21:59:48 2010 +0000 @@ -0,0 +1,45 @@ +6920143: test/java/awt/TestArea/UsingWithMouse.java needs realSync() +Summary: Added small delay to make sure that TextArea animation have finished +Reviewed-by: anthony + +--- openjdk.orig/jdk/test/java/awt/TextArea/UsingWithMouse/SelectionAutoscrollTest.java 2010-01-27 14:45:28.000000000 +0100 ++++ openjdk/jdk/test/java/awt/TextArea/UsingWithMouse/SelectionAutoscrollTest.java 2010-01-27 14:45:27.000000000 +0100 +@@ -56,6 +56,7 @@ + TextArea textArea; + Robot robot; + final int desiredSelectionEnd = ('z'-'a'+1)*2; // 52 ++ final static int SCROLL_DELAY = 100; // ms + + public void start () { + createObjects(); +@@ -126,6 +127,8 @@ + + moveMouseBelowTextArea( tremble%2!=0 ); + Util.waitForIdle( robot ); ++ // it is needed to add some small delay on Gnome ++ waitUntilScrollIsPerformed(robot); + } + + robot.mouseRelease( MouseEvent.BUTTON1_MASK ); +@@ -141,9 +144,19 @@ + void moveMouseBelowTextArea( boolean shift ) { + Dimension d = textArea.getSize(); + Point l = textArea.getLocationOnScreen(); ++ int x = (int)(l.x+d.width*.5); + int y = (int)(l.y+d.height*1.5); + if( shift ) y+=15; +- robot.mouseMove( (int)(l.x+d.width*.5), y ); ++ robot.mouseMove( x, y ); ++ } ++ ++ void waitUntilScrollIsPerformed(Robot robot) { ++ try { ++ Thread.sleep( SCROLL_DELAY ); ++ } ++ catch( Exception e ) { ++ throw new RuntimeException( e ); ++ } + } + + void checkResults() { +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/6920172-location-relative-to-test.patch Mon Feb 15 21:59:48 2010 +0000 @@ -0,0 +1,27 @@ +6920172: Regression test LocationRelativeToTest does not check frame position correctly. +Summary: Testcase correction - check frame position against graphics environment's center point +Reviewed-by: art + +--- openjdk.orig/jdk/test/java/awt/Multiscreen/LocationRelativeToTest/LocationRelativeToTest.java 2010-01-25 17:42:52.000000000 +0100 ++++ openjdk/jdk/test/java/awt/Multiscreen/LocationRelativeToTest/LocationRelativeToTest.java 2010-01-25 17:42:52.000000000 +0100 +@@ -50,7 +50,8 @@ + + GraphicsEnvironment ge = + GraphicsEnvironment.getLocalGraphicsEnvironment(); +- System.out.println("Center point: " + ge.getCenterPoint()); ++ Point centerPoint = ge.getCenterPoint(); ++ System.out.println("Center point: " + centerPoint); + GraphicsDevice[] gds = ge.getScreenDevices(); + GraphicsDevice gdDef = ge.getDefaultScreenDevice(); + GraphicsConfiguration gcDef = +@@ -77,8 +78,7 @@ + // second, check setLocationRelativeTo(invisible) + f.setLocationRelativeTo(f2); + Util.waitForIdle(r); +- checkLocation(f, new Point(gcBounds.x + gcBounds.width / 2, +- gcBounds.y + gcBounds.height / 2)); ++ checkLocation(f, centerPoint); + + // third, check setLocationRelativeTo(visible) + f2.setVisible(true); +