New files.
authorAnthony Green <green@redhat.com>
Mon, 4 Nov 2002 01:31:12 +0000 (01:31 +0000)
committerAnthony Green <green@gcc.gnu.org>
Mon, 4 Nov 2002 01:31:12 +0000 (01:31 +0000)
From-SVN: r58778

libjava/testsuite/ChangeLog
libjava/testsuite/libjava.loader/MyLoader.java [new file with mode: 0644]
libjava/testsuite/libjava.loader/TestLeak.java [new file with mode: 0644]
libjava/testsuite/libjava.loader/TestLeak.out [new file with mode: 0644]
libjava/testsuite/libjava.loader/TestMultiple.java [new file with mode: 0644]
libjava/testsuite/libjava.loader/TestMultiple.out [new file with mode: 0644]
libjava/testsuite/libjava.loader/dummy.java [new file with mode: 0644]
libjava/testsuite/libjava.loader/loader.exp [new file with mode: 0644]

index fc5627b34f4e50793a2108881b94c38a10a2eb12..da6ba4363856ead415c00e391fb4dc107b3d36dd 100644 (file)
@@ -1,3 +1,10 @@
+2002-11-04  Anthony Green  <green@redhat.com>
+
+       * libjava.loader/dummy.java, libjava.loader/loader.exp,
+       libjava.loader/MyLoader.java, libjava.loader/TestLeak.java,
+       libjava.loader/TestLeak.out, libjava.loader/TestMultiple.java,
+       libjava.loader/TestMultiple.out: New files.
+
 2002-11-02  Tom Tromey  <tromey@redhat.com>
 
        * libjava.lang/initexc.java (fail): Static initializers must be
diff --git a/libjava/testsuite/libjava.loader/MyLoader.java b/libjava/testsuite/libjava.loader/MyLoader.java
new file mode 100644 (file)
index 0000000..49156fc
--- /dev/null
@@ -0,0 +1,9 @@
+import java.net.*;
+
+public class MyLoader extends URLClassLoader
+{
+  public MyLoader (URL urls[])
+  {
+    super (urls);
+  }
+}
diff --git a/libjava/testsuite/libjava.loader/TestLeak.java b/libjava/testsuite/libjava.loader/TestLeak.java
new file mode 100644 (file)
index 0000000..9d467f2
--- /dev/null
@@ -0,0 +1,33 @@
+import java.net.*;
+import java.lang.reflect.*;
+
+public class TestLeak
+{
+  class MyLoader extends URLClassLoader
+  {
+    public MyLoader (URL urls[])
+    {
+      super (urls);
+    }
+  }
+
+  public static void main (String[] args)
+  {
+    URLClassLoader ucl = 
+      (URLClassLoader) ClassLoader.getSystemClassLoader();
+    URL urls[] = ucl.getURLs ();
+    Class ifaces[] = new Class[1];
+    ifaces[0] = java.lang.Comparable.class;
+
+    try {
+      for (int i = 0; i < 100; i++)
+       {
+         Proxy.getProxyClass (new MyLoader (urls), ifaces);
+       } 
+    } catch (Exception e) {
+      e.printStackTrace ();
+    }
+  }
+}
+
+
diff --git a/libjava/testsuite/libjava.loader/TestLeak.out b/libjava/testsuite/libjava.loader/TestLeak.out
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/libjava/testsuite/libjava.loader/TestMultiple.java b/libjava/testsuite/libjava.loader/TestMultiple.java
new file mode 100644 (file)
index 0000000..1a56fc4
--- /dev/null
@@ -0,0 +1,28 @@
+import java.net.*;
+
+public class TestMultiple
+{
+  public static void main (String[] args)
+  {
+    URLClassLoader ucl = 
+      (URLClassLoader) ClassLoader.getSystemClassLoader();
+    URL urls[] = ucl.getURLs ();
+
+    MyLoader t1 = new MyLoader (urls);
+    MyLoader t2 = new MyLoader (urls);
+
+    Class c1, c2;
+
+    try {
+
+      c1 = t1.loadClass ("dummy");
+      c2 = t2.loadClass ("dummy");
+
+    } 
+    catch (Exception e) {
+       e.printStackTrace ();
+    }
+  }
+}
+
+
diff --git a/libjava/testsuite/libjava.loader/TestMultiple.out b/libjava/testsuite/libjava.loader/TestMultiple.out
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/libjava/testsuite/libjava.loader/dummy.java b/libjava/testsuite/libjava.loader/dummy.java
new file mode 100644 (file)
index 0000000..67bb4a7
--- /dev/null
@@ -0,0 +1,6 @@
+// A dummy class
+
+public class dummy
+{
+}
+
diff --git a/libjava/testsuite/libjava.loader/loader.exp b/libjava/testsuite/libjava.loader/loader.exp
new file mode 100644 (file)
index 0000000..6da7016
--- /dev/null
@@ -0,0 +1,64 @@
+# Tests for ClassLoader and native library loader code.
+
+# Do all the work for a single JNI test.  Return 0 on failure.
+proc gcj_loader_test_one {srcfile} {
+  global objdir srcdir subdir
+
+  set resfile $srcdir/$subdir/[file rootname [file tail $srcfile]].out
+
+  regsub "^.*/(\[^/.\]+)\[.\]\[^/]*$" "$srcfile" "\\1" out
+  set executable "${objdir}/$out.exe"
+
+    set errname [file rootname [file tail $srcfile]]
+    set args [libjava_arguments link]
+    lappend args "additional_flags=--main=[file rootname [file tail $srcfile]] $srcdir/$subdir/MyLoader.java $objdir/dummy.o"
+  set x [prune_warnings \
+            [libjava_tcompile $srcfile "$executable" "$executable" $args]]
+
+    if { $x != "" } {
+       verbose "target_compile failed: $x" 2
+
+       fail "$errname compilation from source"
+       untested "$errname execution from source compiled test"
+       return
+    }
+    pass "$errname compilation from source"
+
+    libjava_invoke $executable $executable "" $executable "" $resfile ""
+
+  return 1
+}
+
+# Run the bytecode loader tests.
+proc gcj_loader_run {} {
+  global srcdir subdir objdir
+  global build_triplet host_triplet
+  global GCJ_UNDER_TEST
+
+  set file "${srcdir}/${subdir}/dummy.java"
+  if {! [bytecompile_file $file [pwd]]} {
+    fail "bytecompile $file"
+    # FIXME - should use `untested' on all remaining tests.
+    # But that is hard.
+    return 0
+  }
+  pass "bytecompile $file"
+
+  set x [prune_warnings \
+            [eval exec "$GCJ_UNDER_TEST --resource $objdir/dummy.class -c $objdir/dummy.class -o $objdir/dummy.o"]]
+    if { $x != "" } {
+       verbose "resource compilation failed: $x" 2
+
+       fail "resource compilation dummy.class"
+       return 0;
+    }
+  pass "resource compilation: dummy.class"
+
+  catch { lsort [glob -nocomplain ${srcdir}/${subdir}/Test*.java] } srcfiles
+
+  foreach x $srcfiles {
+    gcj_loader_test_one $x
+  }
+}
+
+gcj_loader_run