tests/libjava-mauve/src/gnu/testlet/java/lang/Thread/security.java
branchjk_new_structure
changeset 1541 75c2e24dea9a
parent 1540 92ac284961c1
child 1542 be11db817bcf
--- a/tests/libjava-mauve/src/gnu/testlet/java/lang/Thread/security.java	Fri Jul 20 21:39:51 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,414 +0,0 @@
-// Copyright (C) 2006, 2007 Red Hat, Inc.
-// Written by Gary Benson <gbenson@redhat.com>
-
-// This file is part of Mauve.
-
-// Mauve is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// Mauve is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Mauve; see the file COPYING.  If not, write to
-// the Free Software Foundation, 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-// Tags: JDK1.2
-
-package gnu.testlet.java.lang.Thread;
-
-import java.io.File;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.security.Permission;
-
-import gnu.testlet.Testlet;
-import gnu.testlet.TestHarness;
-import gnu.testlet.TestSecurityManager;
-
-public class security implements Testlet
-{
-  private static Permission[] modifyThread = new Permission[] {
-    new RuntimePermission("modifyThread")};
-
-  private static Permission[] modifyThreadGroup = new Permission[] {
-    new RuntimePermission("modifyThreadGroup")};
-
-  public void test(TestHarness harness)
-  {
-    try {
-      harness.checkPoint("setup");
-
-      // we need a different classloader for some of the checks to occur.
-      Class testClass = new URLClassLoader(new URL[] {
-	new File(harness.getBuildDirectory()).toURL()}, null).loadClass(
-	  getClass().getName());
-      harness.check(getClass().getClassLoader() != testClass.getClassLoader());
-
-      Method getContextClassLoaderTest = testClass.getMethod(
-	"testGetContextClassLoader", new Class[] {Thread.class});
-
-      TestSecurityManager sm = new TestSecurityManager(harness);
-
-      // The default SecurityManager.checkAccess(Thread) method only
-      // checks permissions when the thread in question is a system
-      // thread.  System threads are those whose parent is the system
-      // threadgroup, which is the threadgroup with no parent.
-      // 
-      // The default SecurityManager.checkAccess(ThreadGroup) method
-      // only checks permissions when the threadgroup in question is
-      // the system threadgroup.
-      ThreadGroup systemGroup = Thread.currentThread().getThreadGroup();
-      while (systemGroup.getParent() != null)
-	systemGroup = systemGroup.getParent();
-
-      Thread testThread = new Thread(systemGroup, "test thread");
-      harness.check(testThread.getThreadGroup().getParent() == null);
-
-      Thread modifyGroupThread = new Thread(
-	systemGroup, new SysTestRunner(harness, sm));
-      harness.check(modifyGroupThread.getThreadGroup().getParent() == null);
-
-      Throwable threadDeath = new ThreadDeath();
-      Throwable notThreadDeath = new ClassNotFoundException();
-
-      Runnable runnable = new Runnable()
-      {
-	public void run()
-	{
-	}
-      };
-
-      Permission[] getClassLoader = new Permission[] {
-	new RuntimePermission("getClassLoader")};
-
-      Permission[] setContextClassLoader = new Permission[] {
-	new RuntimePermission("setContextClassLoader")};
-
-      Permission[] stopThread = new Permission[] {
-	new RuntimePermission("modifyThread"),
-	new RuntimePermission("stopThread")};
-
-      // XXX Thread.stop() tests only work on Classpath
-      // XXX The checks don't happen otherwise, so calls
-      // XXX to Thread.currentThread().stop() actually
-      // XXX happen :(  So, we inhibit this.
-      boolean we_are_gnu_classpath =
-	System.getProperty("gnu.classpath.version") != null;
-
-      try {
-	sm.install();
-
-	// throwpoint: java.lang.Thread-getContextClassLoader
-	harness.checkPoint("getContextClassLoader");
-	try {
-	  sm.prepareChecks(getClassLoader);
- 	  getContextClassLoaderTest.invoke(null, new Object[] {testThread});
-	  sm.checkAllChecked();
-	}
-	catch (SecurityException ex) {
-	  harness.debug(ex);
-	  harness.check(false, "unexpected check");
-	}
-
-	// throwpoint: java.lang.Thread-setContextClassLoader
-	harness.checkPoint("setContextClassLoader");
-	try {
-	  ClassLoader loader = testThread.getContextClassLoader();
-	  sm.prepareChecks(setContextClassLoader);
-	  testThread.setContextClassLoader(loader);
-	  sm.checkAllChecked();
-	}
-	catch (SecurityException ex) {
-	  harness.debug(ex);
-	  harness.check(false, "unexpected check");
-	}
-
-	// throwpoint: java.lang.Thread-checkAccess
-	harness.checkPoint("checkAccess");
-	try {
-	  sm.prepareChecks(modifyThread);
-	  testThread.checkAccess();
-	  sm.checkAllChecked();
-	}
-	catch (SecurityException ex) {
-	  harness.debug(ex);
-	  harness.check(false, "unexpected check");
-	}
-
-	// throwpoint: java.lang.Thread-interrupt
-	harness.checkPoint("interrupt");
-	try {
-	  sm.prepareChecks(modifyThread);
-	  testThread.interrupt();
-	  sm.checkAllChecked();
-	}
-	catch (SecurityException ex) {
-	  harness.debug(ex);
-	  harness.check(false, "unexpected check");
-	}
-
-	// throwpoint: java.lang.Thread-suspend
-	harness.checkPoint("suspend");
-	try {
-	  sm.prepareChecks(modifyThread);
-	  testThread.suspend();
-	  sm.checkAllChecked();
-	}
-	catch (SecurityException ex) {
-	  harness.debug(ex);
-	  harness.check(false, "unexpected check");
-	}
-
-	// throwpoint: java.lang.Thread-resume
-	harness.checkPoint("resume");
-	try {
-	  sm.prepareChecks(modifyThread);
-	  testThread.resume();
-	  sm.checkAllChecked();
-	}
-	catch (SecurityException ex) {
-	  harness.debug(ex);
-	  harness.check(false, "unexpected check");
-	}
-
-	// throwpoint: java.lang.Thread-setPriority
-	harness.checkPoint("setPriority");
-	try {
-	  int priority = testThread.getPriority();
-	  sm.prepareChecks(modifyThread);
-	  testThread.setPriority(priority);
-	  sm.checkAllChecked();
-	}
-	catch (SecurityException ex) {
-	  harness.debug(ex);
-	  harness.check(false, "unexpected check");
-	}
-
-	// throwpoint: java.lang.Thread-setName
-	harness.checkPoint("setName");
-	try {
-	  sm.prepareChecks(modifyThread);
-	  testThread.setName("a test thread");
-	  sm.checkAllChecked();
-	}
-	catch (SecurityException ex) {
-	  harness.debug(ex);
-	  harness.check(false, "unexpected check");
-	}
-
-	// throwpoint: java.lang.Thread-setDaemon
-	harness.checkPoint("setDaemon");
-	try {
-	  sm.prepareChecks(modifyThread);
-	  testThread.setDaemon(false);
-	  sm.checkAllChecked();
-	}
-	catch (SecurityException ex) {
-	  harness.debug(ex);
-	  harness.check(false, "unexpected check");
-	}
-
-	// throwpoint: java.lang.Thread-stop()
-	harness.checkPoint("stop()");
-	try {
-	  sm.prepareChecks(stopThread);
-	  testThread.stop();
-	  sm.checkAllChecked();
-	}
-	catch (SecurityException ex) {
-	  harness.debug(ex);
-	  harness.check(false, "unexpected check");
-	}
-
-	try {
-	  sm.prepareHaltingChecks(modifyThread);
-	  if (we_are_gnu_classpath)
-	    Thread.currentThread().stop();
-	  harness.check(false);	  
-	}
-	catch (TestSecurityManager.SuccessException ex) {
-	  harness.check(true);
-	} 
-	catch (SecurityException ex) {
-	  harness.debug(ex);
-	  harness.check(false, "unexpected check");
-	}
-
-	// throwpoint: java.lang.Thread-stop(Throwable)
-	harness.checkPoint("stop(Throwable)");
-	try {
-	  sm.prepareChecks(stopThread);
-	  testThread.stop(threadDeath);
-	  sm.checkAllChecked();
-	}
-	catch (SecurityException ex) {
-	  harness.debug(ex);
-	  harness.check(false, "unexpected check");
-	}
-
-	try {
-	  sm.prepareChecks(stopThread);
-	  testThread.stop(notThreadDeath);
-	  sm.checkAllChecked();
-	}
-	catch (SecurityException ex) {
-	  harness.debug(ex);
-	  harness.check(false, "unexpected check");
-	}
-	
-	try {
-	  sm.prepareHaltingChecks(modifyThread);
-	  if (we_are_gnu_classpath)
-	    Thread.currentThread().stop(threadDeath);
-	  harness.check(false);	  
-	}
-	catch (TestSecurityManager.SuccessException ex) {
-	  harness.check(true);
-	} 
-	catch (SecurityException ex) {
-	  harness.debug(ex);
-	  harness.check(false, "unexpected check");
-	}
-
-	try {
-	  sm.prepareHaltingChecks(stopThread);
-	  if (we_are_gnu_classpath)
-	    Thread.currentThread().stop(notThreadDeath);
-	  harness.check(false);	  
-	}
-	catch (TestSecurityManager.SuccessException ex) {
-	  harness.check(true);
-	} 
-	catch (SecurityException ex) {
-	  harness.debug(ex);
-	  harness.check(false, "unexpected check");
-	}
-
-	// The modifyThreadGroup tests get run in a system thread.
-	modifyGroupThread.start();
-	modifyGroupThread.join();
-
-	// throwpoint: java.lang.Thread-Thread(ThreadGroup, Runnable)
-	// throwpoint: java.lang.Thread-Thread(ThreadGroup, Runnable, String)
-	// throwpoint: java.lang.Thread-Thread(ThreadGroup, Runnable, String, long)
-	// throwpoint: java.lang.Thread-Thread(ThreadGroup, String)
-	harness.checkPoint("ThreadGroup constructors");
-	for (int i = 1; i <= 4; i++) {
-	  try {
-	    sm.prepareChecks(modifyThreadGroup, modifyThread);
-	    switch (i) {
-	    case 1:
-	      new Thread(systemGroup, runnable);
-	      break;
-	    case 2:
-	      new Thread(systemGroup, runnable, "test thread");
-	      break;
-	    case 3:
-	      new Thread(systemGroup, runnable, "test thread", 1024);
-	      break;
-	    case 4:
-	      new Thread(systemGroup, "test thread");
-	      break;
-	    }
-	    sm.checkAllChecked();
-	  }
-	  catch (SecurityException ex) {
-	    harness.debug(ex);
-	    harness.check(false, "unexpected check");
-	  }
-	}
-      }
-      finally {
-	sm.uninstall();
-      }
-    }
-    catch (Exception ex) {
-      harness.debug(ex);
-      harness.check(false, "Unexpected exception");
-    }
-  }
-
-  // Stuff for the getContextClassLoader tests
-  public static void testGetContextClassLoader(Thread t)
-  {
-    t.getContextClassLoader();
-  }
-
-  // Stuff for the modifyThreadGroup tests
-  public static class SysTestRunner implements Runnable
-  {
-    private TestHarness harness;
-    private TestSecurityManager sm;
-
-    private static Runnable runnable = new Runnable()
-    {
-      public void run()
-      {
-      }
-    };
-
-    public SysTestRunner(TestHarness harness, TestSecurityManager sm)
-    {
-      this.harness = harness;
-      this.sm = sm;
-    }
-
-    public void run()
-    {
-      try {
-	// throwpoint: java.lang.Thread-enumerate
-	harness.checkPoint("enumerate");
-	try {
-	  sm.prepareChecks(modifyThreadGroup);
-	  Thread.enumerate(new Thread[0]);
-	  sm.checkAllChecked();
-	}
-	catch (SecurityException ex) {
-	  harness.debug(ex);
-	  harness.check(false, "unexpected check");
-	}	
-
-	// throwpoint: java.lang.Thread-Thread()
-	// throwpoint: java.lang.Thread-Thread(Runnable)
-	// throwpoint: java.lang.Thread-Thread(String)
-	// throwpoint: java.lang.Thread-Thread(Runnable, String)
-	harness.checkPoint("basic constructors");
-	for (int i = 1; i <= 4; i++) {
-	  try {
-	    sm.prepareChecks(modifyThreadGroup, modifyThread);
-	    switch (i) {
-	    case 1:
-	      new Thread();
-	      break;
-	    case 2:
-	      new Thread(runnable);
-	      break;
-	    case 3:
-	      new Thread("test thread");
-	      break;
-	    case 4:
-	      new Thread(runnable, "test thread");
-	      break;
-	    }
-	    sm.checkAllChecked();
-	  }
-	  catch (SecurityException ex) {
-	    harness.debug(ex);
-	    harness.check(false, "unexpected check");
-	  }
-	}
-      }
-      catch (Exception ex) {
-	harness.debug(ex);
-	harness.check(false, "Unexpected exception");
-      }
-    }
-  }
-}