blob: 1bd246f55ba230d5a4a06d81d584d6e046bf0399 [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.tests.simultaneous;
import java.io.*;
import java.util.*;
import org.eclipse.persistence.sessions.*;
import org.eclipse.persistence.sessions.server.*;
import org.eclipse.persistence.testing.framework.*;
/**
* Executor used with simutaneous tests.
* Allows acquiring client session.
*/
public class TestExecutorWithClientSession extends TestExecutor {
protected TestExecutor parentTestExecutor;
public TestExecutorWithClientSession(TestExecutor parentTestExecutor) {
this.parentTestExecutor = parentTestExecutor;
}
protected void setsession(Session session) {
super.setSession(session);
}
public void acquireClientSession() {
releaseClientSession();
setSession(getServerSession().acquireClientSession());
}
public void releaseClientSession() {
if (getSession() != null) {
getSession().release();
setSession(null);
}
}
@Override
public void addConfigureSystem(TestSystem system) {
error();
}
@Override
public void addLoadedModels(Vector models) {
error();
}
@Override
public void configureSystem(TestSystem system) throws Exception {
error();
}
@Override
public boolean configuredSystemsContainsInstanceOf(TestSystem system) {
error();
return false;
}
@Override
public void doNotHandleErrors() {
error();
}
@Override
public void doNotLogResults() {
error();
}
@Override
public void doNotStopExecution() {
error();
}
@Override
public void forceConfigureSystem(TestSystem system) throws Exception {
error();
}
@Override
public Vector getConfiguredSystems() {
error();
return null;
}
@Override
public TestModel getLoadedModel(String modelsName) {
error();
return null;
}
@Override
public Hashtable getLoadedModels() {
error();
return null;
}
/**
* Return the parent's log.
*/
@Override
public Writer getLog() {
return parentTestExecutor.getLog();
}
/**
* Return the session.
*/
@Override
public Session getSession() {
return session;
}
@Override
public void handleErrors() {
error();
}
@Override
public void initializeConfiguredSystems() {
error();
}
@Override
protected void logout() {
error();
}
@Override
public void logResults() {
error();
}
@Override
public void removeConfigureSystem(TestSystem system) {
error();
}
@Override
public void removeFromConfiguredSystemsInstanceOf(TestSystem system) {
error();
}
@Override
public void resetLoadedModels() {
error();
}
/**
* PUBLIC:
* This method executes the test entity. This method sets the session by using test
* entity default login and once the execution is over it explicitily logs out.
*/
@Override
public void runTest(junit.framework.Test test) throws Throwable {
boolean hasSession = true;
// setShouldStopExecution(false);
if (getSession() == null) {
hasSession = false;
acquireClientSession();
}
try {
execute(test);
// logResultForTestEntity(testEntity);
} finally {
if (!hasSession) {
releaseClientSession();
}
}
}
@Override
public void setConfiguredSystems(Vector configuredSystems) {
error();
}
@Override
protected void setLoadedModels(Hashtable loadedModels) {
error();
}
@Override
public void setLog(Writer writer) {
error();
}
@Override
public void setSession(Session theSession) {
session = theSession;
}
@Override
public void setShouldHandleErrors(boolean aBoolean) {
error();
}
@Override
public void setShouldLogResults(boolean aBoolean) {
error();
}
@Override
public void setShouldStopExecution(boolean aBoolean) {
error();
}
@Override
public boolean shouldHandleErrors() {
return parentTestExecutor.shouldHandleErrors();
}
@Override
public boolean shouldLogResults() {
return parentTestExecutor.shouldLogResults();
}
@Override
public boolean shouldStopExecution() {
return parentTestExecutor.shouldStopExecution();
}
@Override
public void stopExecution() {
error();
}
private static void error() {
System.out.println("Error in TestExecutorWithClientSession");
}
protected ServerSession getServerSession() {
Session session = parentTestExecutor.getSession();
if ((session == null) || !session.isServerSession()) {
error();
}
ServerSession serverSession = (ServerSession)session;
return serverSession;
}
@Override
protected void finalize() {
releaseClientSession();
}
}