Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/TestTools.java')
-rw-r--r--common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/TestTools.java254
1 files changed, 0 insertions, 254 deletions
diff --git a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/TestTools.java b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/TestTools.java
deleted file mode 100644
index 5fff2ff48b..0000000000
--- a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/TestTools.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2012 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- *
- * Contributors:
- * Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.common.utility.tests.internal;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.io.PrintWriter;
-import java.io.Serializable;
-import java.io.StringWriter;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import junit.framework.Assert;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestFailure;
-import junit.framework.TestResult;
-import junit.textui.TestRunner;
-
-import org.eclipse.jpt.common.utility.internal.ReflectionTools;
-
-/**
- * Various tools that can be used by test cases.
- */
-@SuppressWarnings("nls")
-public final class TestTools {
-
- /**
- * Convenience method that handles {@link InterruptedException}.
- */
- public static void sleep(long millis) {
- try {
- Thread.sleep(millis);
- } catch (InterruptedException ex) {
- throw new RuntimeException(ex);
- }
- }
-
- /**
- * Execute the specified command. If it throws an exception, re-execute it
- * repeatedly until it executes without an exception.
- * There will be a one-second delay between each execution.
- * This is useful when calling third-party code that intermittently throws
- * exceptions but will <em>eventually</em> execute successfully (e.g. when
- * there are problems deleting files).
- */
- public static void execute(TestCommand command) {
- execute(command, -1);
- }
-
- /**
- * Execute the specified command. If it throws an exception, re-execute it
- * repeatedly until it executes without an exception. Execute the command
- * up to the specified number of attempts.
- * There will be a one-second delay between each execution.
- * This is useful when calling third-party code that intermittently throws
- * exceptions but will <em>eventually</em> execute successfully (e.g. when
- * there are problems deleting files).
- */
- public static void execute(TestCommand command, int attempts) {
- execute(command, attempts, 1000);
- }
-
- /**
- * Execute the specified command. If it throws an exception, re-execute it
- * repeatedly until it executes without an exception. Execute the command
- * up to the specified number of attemptsl with specified delay between
- * each execution.
- * This is useful when calling third-party code that intermittently throws
- * exceptions but will <em>eventually</em> execute successfully (e.g. when
- * there are problems deleting files).
- */
- public static void execute(TestCommand command, int attempts, long delay) {
- for (int i = 1; i <= attempts; i++) { // NB: start with 1
- try {
- command.execute();
- return;
- } catch (Exception ex) {
- if ((attempts != -1) && (i == attempts)) {
- throw new RuntimeException("attempts: " + i, ex);
- }
- sleep(delay);
- }
- }
- }
-
- /**
- * Test an object's implementation of {@link Serializable} by serializing the
- * specified object to a byte array; then de-serializing the byte array and
- * returning the resultant object.
- */
- public static <T> T serialize(T o) throws IOException, ClassNotFoundException {
- ByteArrayOutputStream baOutStream = new ByteArrayOutputStream(2000);
- ObjectOutputStream outStream = new ObjectOutputStream(baOutStream);
- outStream.writeObject(o);
- outStream.close();
-
- ByteArrayInputStream baInStream = new ByteArrayInputStream(baOutStream.toByteArray());
- ObjectInputStream inStream = new ObjectInputStream(baInStream);
- T o2 = readObject(inStream);
- inStream.close();
-
- return o2;
- }
-
- @SuppressWarnings("unchecked")
- private static <T> T readObject(ObjectInput objectInput) throws IOException, ClassNotFoundException {
- return (T) objectInput.readObject();
- }
-
- /**
- * Redirect std out and std err to the specified stream.
- */
- public static void redirectSystemStreamsTo(OutputStream outputStream) {
- redirectSystemStreamsTo(new PrintStream(outputStream));
- }
-
- /**
- * Redirect std out and std err to the specified stream.
- */
- public static void redirectSystemStreamsTo(PrintStream printStream) {
- System.setOut(printStream);
- System.setErr(printStream);
- }
-
- /**
- * Sort and print out all the current Java System properties on the
- * console.
- */
- public static void printSystemProperties() {
- synchronized (System.out) {
- printSystemPropertiesOn(System.out);
- }
- }
-
- /**
- * Sort and print out all the current Java System properties on the
- * specified print stream.
- */
- public static void printSystemPropertiesOn(PrintStream stream) {
- SortedSet<String> sortedKeys = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
- for (Object key : System.getProperties().keySet()) {
- sortedKeys.add((String) key);
- }
- for (String key : sortedKeys) {
- stream.print(key);
- stream.print(" => ");
- stream.print(System.getProperty(key));
- stream.println();
- }
- }
-
- /**
- * Execute the specified test and return a text output of its results.
- */
- public static String execute(TestCase testCase) {
- long start = System.currentTimeMillis();
- TestResult result = testCase.run();
- long end = System.currentTimeMillis();
-
- StringWriter stringWriter = new StringWriter();
- PrintWriter writer = new PrintWriter(stringWriter);
- writer.print(testCase.getName());
- writer.print(": ");
- if (result.wasSuccessful()) {
- writer.println("OK");
- } else {
- TestFailure failure = null;
- if (result.failures().hasMoreElements()) {
- failure = result.failures().nextElement();
- } else {
- failure = result.errors().nextElement();
- }
- failure.thrownException().printStackTrace(writer);
- }
- writer.print("elapsed time: ");
- long elapsed = end - start;
- writer.print(elapsed / 1000L);
- writer.println(" sec.");
- return stringWriter.toString();
- }
-
- /**
- * Clear out all the instance variable of the specified test case, allowing
- * the various test fixtures to be garbage-collected. Typically this is
- * called in the test case's implementation of {@link TestCase#tearDown()}.
- */
- public static void clear(TestCase testCase) throws IllegalAccessException {
- for (Class<?> clazz = testCase.getClass(); clazz != TestCase_class; clazz = clazz.getSuperclass()) {
- for (Field field : clazz.getDeclaredFields()) {
- // leave primitives alone - they don't get garbage-collected, and we can't set them to null...
- if (field.getType().isPrimitive()) {
- continue;
- }
- // leave static fields alone (?)
- if (Modifier.isStatic(field.getModifiers())) {
- continue;
- }
- field.setAccessible(true);
- field.set(testCase, null);
- }
- }
- }
-
- /**
- * Return the value of the specified class's <code>DEBUG</code> constant.
- */
- public static boolean debug(Class<?> clazz) {
- Boolean debug = (Boolean) ReflectionTools.getStaticFieldValue(clazz, "DEBUG");
- return debug.booleanValue();
- }
-
- /**
- * Verify the specified class's <code>DEBUG</code> constant is set to
- * <code>false</code>.
- */
- public static void assertFalseDEBUG(Class<?> clazz) {
- Assert.assertFalse("Recompile with \"DEBUG = false\": " + clazz.getName(), debug(clazz));
- }
-
- private static final Class<TestCase> TestCase_class = TestCase.class;
-
- /**
- * Workaround for a JUnit bug: JUnit does not configure the testing {@link Thread}
- * with a context class loader. This should probably happen in
- * {@link TestRunner#doRun(Test)}, just before starting the thread.
- */
- public static void setUpJUnitThreadContextClassLoader() {
- Thread.currentThread().setContextClassLoader(TestTools.class.getClassLoader());
- }
-
- /**
- * suppressed constructor
- */
- private TestTools() {
- super();
- throw new UnsupportedOperationException();
- }
-}

Back to the top