PatchSet 7099 
Date: 2006/01/21 01:45:40
Author: inaba
Branch: HEAD
Tag: (none) 
Log:
Modify watchdog timeout value for ThreadState.java.

Members: 
        ChangeLog:1.4619->1.4620 
        test/regression/ThreadState.java:INITIAL->1.7 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.4619 kaffe/ChangeLog:1.4620
--- kaffe/ChangeLog:1.4619      Sat Jan 21 01:31:29 2006
+++ kaffe/ChangeLog     Sat Jan 21 01:45:40 2006
@@ -1,8 +1,14 @@
 2006-01-21  Kiyo Inaba <[EMAIL PROTECTED]>
 
+       * test/regression/ThreadState.java: Change timeout value for
+       this test from 60 * 1000 to 60 * 10000. This allows some
+       older machines to execute in enough time.
+
+2006-01-21  Kiyo Inaba <[EMAIL PROTECTED]>
+
        * test/regression/RefTest.java: Change timeout value for
        this test from 10000 to 100000. This allows some older
-       machine to execute enough time.
+       machine to execute in enough time.
 
 2006-01-19  Kiyo Inaba <[EMAIL PROTECTED]>
 
===================================================================
Checking out kaffe/test/regression/ThreadState.java
RCS:  /home/cvs/kaffe/kaffe/test/regression/ThreadState.java,v
VERS: 1.7
***************
--- /dev/null   Sun Aug  4 19:57:58 2002
+++ kaffe/test/regression/ThreadState.java      Sat Jan 21 01:52:52 2006
@@ -0,0 +1,158 @@
+import java.util.*;
+import java.io.*;
+
+public class ThreadState extends Thread {
+  public final static int DEFAULT_NUMTHREADS = 10;
+  boolean childRunning;
+  static PrintStream p;
+
+  // Test thread states
+  public static void main(String args[]) throws Exception {
+    int numThreads;
+    int index = 0;
+
+    if (args.length > 0 && args[0].equals("-v")) {
+      p = System.out;
+      index = 1;
+    }
+
+    try {
+      numThreads = Integer.parseInt(args[index]);
+    } catch (Exception e) {
+      numThreads = DEFAULT_NUMTHREADS;
+    }
+
+       new Thread() {
+           public void run() {
+               try {
+                   Thread.sleep(60 * 10000);
+               } catch (Exception _) { }
+               System.out.println("Time out.  Failure.");
+               System.exit(-1);
+           }
+       }.start();
+
+    Thread[] threads = new Thread[numThreads];
+    for (int i = 0; i < numThreads; i++) {
+      threads[i] = new ThreadState();
+      verbose("main starting " + threads[i].getName());
+      threads[i].start();
+    }
+    for (int i = 0; i < numThreads; i++) {
+      try {
+       verbose("main joining " + threads[i].getName());
+       threads[i].join();
+      } catch (InterruptedException e) {
+       check(false, "main " + e);
+      }
+    }
+    System.exit(0);
+  }
+
+  public void run() {
+    try {
+      verbose(getName() + " running");
+
+      // Create child thread
+      Thread t = new Thread() {
+        public synchronized void run() {
+          try {
+           childRunning = true;
+           verbose(ThreadState.this.getName() + " child running [child]");
+           try {
+             this.wait(0);
+           } catch (InterruptedException e) {
+             check(false, "thread " + e);
+           }
+         verbose(ThreadState.this.getName() + " child thread exiting");
+          } catch (Throwable t) {
+            t.printStackTrace();
+           System.exit(-1);
+         }
+        }
+      };
+
+      // Check state
+      check(!t.isAlive(), "alive before start()");
+      verbose(getName() + " starting child thread");
+      t.start();
+      check(t.isAlive(), "dead after start()");
+  
+      // Check setDaemon after start()
+      try {
+        t.setDaemon(false);
+        check(false, "setDaemon() after start");
+      } catch (IllegalThreadStateException e) {
+      }
+
+      // Check double start()
+      try {
+        t.start();
+        check(false, "start() while alive");
+      } catch (IllegalThreadStateException e) {
+      }
+  
+      // Wait for thread to be running
+      while (!childRunning) {
+        Thread.yield();
+      }
+      verbose(getName() + " child thread running [parent]");
+
+      // Notify child he can exit
+      synchronized (t) {
+        t.notify();
+      }
+  
+      verbose(getName() + " joining my child thread");
+      try {
+        t.join();
+      } catch (InterruptedException e) {
+        check(false, "join: " + e);
+      }
+      check(!t.isAlive(), "alive after join()");
+  
+      // Check double start()
+      try {
+        t.start();
+        check(false, "start() after dead");
+      } catch (IllegalThreadStateException e) {
+      }
+
+      // OK
+      synchronized (ThreadState.class) {
+        System.out.println("Success.");
+      }
+      verbose(getName() + " exiting");
+    } catch (Throwable t) {
+      t.printStackTrace();
+      System.exit(-1);
+    }
+  }
+
+  public static void check(boolean that, String msg) {
+    if (!that) {
+      System.err.println("Failure: " + msg);
+      System.exit(1);
+    }
+  }
+
+  public static void verbose(String msg) {
+    if (p != null) {
+      p.println(msg);
+      p.flush();
+    }
+  }
+}
+
+/* Expected Output:
+Success.
+Success.
+Success.
+Success.
+Success.
+Success.
+Success.
+Success.
+Success.
+Success.
+*/

_______________________________________________
kaffe mailing list
kaffe@kaffe.org
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to