blob: fc18b6012e511a98344a6e3d62769b94edc23c8d [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.testing.framework.ui;
import org.eclipse.persistence.testing.framework.*;
public class SynchronizedTestExecutor extends Thread {
protected junit.framework.Test test;
protected TestExecutor executor;
protected SynchronizedTester tester;
protected boolean shouldRunSetupOnly;
public SynchronizedTestExecutor(TestExecutor executor, junit.framework.Test test, SynchronizedTester tool) {
this.executor = executor;
this.test = test;
this.tester = tool;
this.shouldRunSetupOnly = false;
}
/**
* Return the executor.
*/
public TestExecutor getExecutor() {
return executor;
}
/**
* Return the testEntity.
*/
public junit.framework.Test getTest() {
return test;
}
public SynchronizedTester getTester() {
return tester;
}
/**
* PUBLIC:
* The class implements Runnable interface thats why run method must be implemented.
*/
@Override
public void run() {
if (getTest() == null) {
throw new TestErrorException("There is now test entity to run.");
}
try {
if (shouldRunSetupOnly()) {
((TestCollection)getTest()).setupEntity();
} else {
getExecutor().runTest(getTest());
}
} catch (Throwable exception) {
getTester().notifyException(exception);
} finally {
getTester().finishedTest();
}
}
/**
* Set the executor.
*/
protected void setExecutor(TestExecutor executor) {
this.executor = executor;
}
public void setShouldRunSetupOnly(boolean shouldRunSetupOnly) {
this.shouldRunSetupOnly = shouldRunSetupOnly;
}
/**
* set the testEntity.
*/
public void setTest(junit.framework.Test test) {
this.test = test;
}
protected void setTester(SynchronizedTester tester) {
this.tester = tester;
}
public boolean shouldRunSetupOnly() {
return shouldRunSetupOnly;
}
/**
* Stop the execution of the currently executing test
*/
public void stopExecution() {
getExecutor().stopExecution();
}
}