This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch] stacktrace test


Hello,

I'd like to add the attached test case to out libjava.lang test suite.
The idea is to check if stacktraces are really working.
It helped during the port of libjava for HP-UX.

Tested on my platforms I have. There I found out that on -O3 we fail if we have the methods static.
Thanks to Bryce for advising here!


Ok for main?

Andreas

2006-05-19 Andreas Tobler <a.tobler@schweiz.ch>

	* testsuite/libjava.lang/stacktrace.java: New file.
	* testsuite/libjava.lang/stacktrace.out: Likewise.

Index: testsuite/libjava.lang/stacktrace.java
===================================================================
--- testsuite/libjava.lang/stacktrace.java	(revision 0)
+++ testsuite/libjava.lang/stacktrace.java	(revision 0)
@@ -0,0 +1,67 @@
+/* This test should test the stacktrace functionality.
+   We only print ClassName and MethName since the other information
+   like FileName and LineNumber are not consistent while building
+   native or interpreted and we want to test the output inside the dejagnu
+   test environment.
+   Also, we have to make the methods public since they might be optimized away
+   with inline's and then the -O3/-O2 execution might fail.
+*/
+public class stacktrace {
+  public static void main(String args[]) {
+    try {
+      new stacktrace().a();
+    } catch (TopException e) {
+    }
+  }
+
+  public void a() throws TopException {
+    try {
+      b();
+    } catch (MiddleException e) {
+      throw new TopException(e);
+    }
+  }
+
+  public void b() throws MiddleException {
+    c();
+  }
+
+  public void c() throws MiddleException {
+    try {
+      d();
+    } catch (BottomException e) {
+      throw new MiddleException(e);
+    }
+  }
+
+  public void d() throws BottomException {
+    e();
+  }
+
+  public void e() throws BottomException {
+    throw new BottomException();
+  }
+}
+
+class TopException extends Exception {
+  TopException(Throwable cause) {
+    super(cause);
+  }
+}
+
+class MiddleException extends Exception {
+  MiddleException(Throwable cause) {
+    super(cause);
+  }
+}
+
+class BottomException extends Exception {
+  BottomException() {
+    StackTraceElement stack[] = this.getStackTrace();
+    for (int i = 0; i < stack.length; i++) {
+      String className = stack[i].getClassName();
+      String methodName = stack[i].getMethodName();
+      System.out.println(className + "." + methodName);
+    }
+  }
+}
Index: testsuite/libjava.lang/stacktrace.out
===================================================================
--- testsuite/libjava.lang/stacktrace.out	(revision 0)
+++ testsuite/libjava.lang/stacktrace.out	(revision 0)
@@ -0,0 +1,6 @@
+stacktrace.e
+stacktrace.d
+stacktrace.c
+stacktrace.b
+stacktrace.a
+stacktrace.main

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]