blob: 614154ec9976af5bbdfd350389d6e36da3ef07d3 [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 java.awt.*;
import java.io.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
import org.eclipse.persistence.config.PersistenceUnitProperties;
import org.eclipse.persistence.internal.helper.*;
import org.eclipse.persistence.sessions.*;
import org.eclipse.persistence.testing.framework.*;
import org.eclipse.persistence.tools.schemaframework.SchemaManager;
import org.eclipse.persistence.tools.sessionconsole.SessionConsolePanel;
/**
* Main panel for the testing browser.
* This was original done in the VA UI builder, so code is ugly, but is maintain by hand now.
*/
public class TestingBrowserPanel extends JPanel implements ItemListener, junit.framework.TestListener, SynchronizedTester {
protected SynchronizedTestExecutor executionThread;
protected TestExecutor executor;
protected Vector models;
protected junit.framework.Test currentRun;
private JButton theKillButton = null;
private JButton theResetButton = null;
private JButton theRunTestButton = null;
private SessionConsolePanel theSessionInspectorPanel = null;
private JButton theSetupButton = null;
private JButton theStopButton = null;
private JScrollPane theTestsScrollPane = null;
private JTree theTestsTree = null;
private JSplitPane theSplitPane = null;
private JPanel theTestPanel = null;
private JToolBar theToolBar = null;
private JCheckBox theHandleErrorsCheckBox = null;
private JCheckBox runFastCheckBox = null;
private JCheckBox logErrorsOnlyCheckBox = null;
private JComboBox theLoginChoice = null;
private JLabel theQuickLoginLabel = null;
private JButton theloadBuildButton = null;
private JLabel theCurrentTestLabel = null;
private JTextField theCurrentTestTextField = null;
private JProgressBar theRunModelProgressBar = null;
private JProgressBar theRunProgressBar = null;
private JProgressBar errorsProgressBar = null;
private JLabel theStatusLabel = null;
private JLabel theCurrentSuiteLabel = null;
private JTextField theCurrentSuiteTextField = null;
private JLabel theRunStatusLabel = null;
private JLabel errorsLabel = null;
TestBrowserEventHandler theEventHandler = new TestBrowserEventHandler();
public TestingBrowserPanel() {
super();
initialize();
}
public TestingBrowserPanel(LayoutManager layout) {
super(layout);
}
public TestingBrowserPanel(LayoutManager layout, boolean isDoubleBuffered) {
super(layout, isDoubleBuffered);
}
public TestingBrowserPanel(boolean isDoubleBuffered) {
super(isDoubleBuffered);
}
/**
* Stop the selected test.
*/
@Override
public void finishedTest() {
getStopButton().setEnabled(false);
getKillButton().setEnabled(false);
if ((getExecutionThread() != null) && getExecutionThread().shouldRunSetupOnly()) {
TreePath path = getTestsTree().getSelectionPath();
resetModels();
getTestsTree().setExpandsSelectedPaths(true);
getTestsTree().setSelectionPath(new TreePath(path.getPath()));
getTestsTree().expandPath(path);
getTestsTree().makeVisible(path);
getTestsTree().invalidate();
getTestsTree().validate();
getTestsTree().repaint();
}
// Reset the session inspectors session as test model reset builds clean session.
getSessionInspectorPanel().setSession(getExecutor().getSession());
if (getExecutor().getSession() != null) {
while (getExecutor().getAbstractSession().isInTransaction()) {
getExecutor().getAbstractSession().rollbackTransaction();
}
}
getSessionInspectorPanel().resetDescriptors();
setCurrentRun(null);
getRunProgressBar().setValue(0);
getRunModelProgressBar().setValue(0);
getCurrentTestTextField().setText("");
getCurrentSuiteTextField().setText("");
showNormalCursor();
}
/**
* The run is the currently executing test model.
*/
public junit.framework.Test getCurrentRun() {
return currentRun;
}
/**
* Return the CurrentSuiteLabel property value.
* @return JLabel
*/
private JLabel getCurrentSuiteLabel() {
if (theCurrentSuiteLabel == null) {
try {
theCurrentSuiteLabel = new JLabel();
theCurrentSuiteLabel.setName("CurrentSuiteLabel");
theCurrentSuiteLabel.setText("Current Suite:");
theCurrentSuiteLabel.setBackground(SystemColor.control);
} catch (Throwable exception) {
handleException(exception);
}
}
return theCurrentSuiteLabel;
}
/**
* Return the CurrentSuiteTextField property value.
* @return JTextField
*/
private JTextField getCurrentSuiteTextField() {
if (theCurrentSuiteTextField == null) {
try {
theCurrentSuiteTextField = new JTextField();
theCurrentSuiteTextField.setName("CurrentSuiteTextField");
theCurrentSuiteTextField.setBackground(SystemColor.control);
theCurrentSuiteTextField.setEditable(false);
} catch (Throwable exception) {
handleException(exception);
}
}
return theCurrentSuiteTextField;
}
/**
* Return the CurrentTestLabel property value.
* @return JLabel
*/
private JLabel getCurrentTestLabel() {
if (theCurrentTestLabel == null) {
try {
theCurrentTestLabel = new JLabel();
theCurrentTestLabel.setName("CurrentTestLabel");
theCurrentTestLabel.setText("Current Test:");
theCurrentTestLabel.setBackground(SystemColor.control);
} catch (Throwable exception) {
handleException(exception);
}
}
return theCurrentTestLabel;
}
/**
* Return the CurrentTestTextField property value.
* @return JTextField
*/
private JTextField getCurrentTestTextField() {
if (theCurrentTestTextField == null) {
try {
theCurrentTestTextField = new JTextField();
theCurrentTestTextField.setName("CurrentTestTextField");
theCurrentTestTextField.setBackground(SystemColor.control);
theCurrentTestTextField.setEditable(false);
} catch (Throwable exception) {
handleException(exception);
}
}
return theCurrentTestTextField;
}
/**
* Return the execution thread.
*/
protected SynchronizedTestExecutor getExecutionThread() {
return executionThread;
}
/**
* Return the test executor.
*/
public TestExecutor getExecutor() {
return executor;
}
/**
* Return the JCheckBox1 property value.
* @return JCheckBox
*/
private JCheckBox getHandleErrorsCheckBox() {
if (theHandleErrorsCheckBox == null) {
try {
theHandleErrorsCheckBox = new JCheckBox();
theHandleErrorsCheckBox.setName("HandleErrorsCheckBox");
theHandleErrorsCheckBox.setText("Handle Errors");
theHandleErrorsCheckBox.setBackground(SystemColor.control);
} catch (Throwable exception) {
handleException(exception);
}
}
return theHandleErrorsCheckBox;
}
private JCheckBox getRunFastCheckBox() {
if (runFastCheckBox == null) {
try {
runFastCheckBox = new JCheckBox();
runFastCheckBox.setName("RunFastCheckBox");
runFastCheckBox.setText("Fast");
runFastCheckBox.setBackground(SystemColor.control);
} catch (Throwable exception) {
handleException(exception);
}
}
return runFastCheckBox;
}
private JCheckBox getLogOnlyErrorsCheckBox() {
if (logErrorsOnlyCheckBox == null) {
try {
logErrorsOnlyCheckBox = new JCheckBox();
logErrorsOnlyCheckBox.setName("LogErrorsOnlyCheckBox");
logErrorsOnlyCheckBox.setText("Log Errors Only");
logErrorsOnlyCheckBox.setBackground(SystemColor.control);
} catch (Throwable exception) {
handleException(exception);
}
}
return logErrorsOnlyCheckBox;
}
/**
* Return the KillButton property value.
* @return JButton
*/
private JButton getKillButton() {
if (theKillButton == null) {
try {
theKillButton = new JButton();
theKillButton.setName("KillButton");
theKillButton.setText("Kill");
theKillButton.setBackground(SystemColor.control);
} catch (Throwable exception) {
handleException(exception);
}
}
return theKillButton;
}
/**
* Return the loadBuildButton property value.
* @return JButton
*/
private JButton getLoadBuildButton() {
if (theloadBuildButton == null) {
try {
theloadBuildButton = new JButton();
theloadBuildButton.setName("loadBuildButton");
theloadBuildButton.setText("Query Test Results");
theloadBuildButton.setBackground(SystemColor.control);
} catch (Throwable exception) {
handleException(exception);
}
}
return theloadBuildButton;
}
/**
* Return the LoginComboBox property value.
* @return JComboBox
*/
private
/* WARNING: THIS METHOD WILL BE REGENERATED. */
JComboBox getLoginChoice() {
if (theLoginChoice == null) {
try {
theLoginChoice = new JComboBox();
theLoginChoice.setName("LoginChoice");
theLoginChoice.setBackground(SystemColor.window);
// user code begin {1}
// user code end
} catch (Throwable exception) {
// user code begin {2}
// user code end
handleException(exception);
}
}
return theLoginChoice;
}
/**
* Return the loaded models.
*/
public Vector getModels() {
return models;
}
/**
* Return the QuickLoginButton property value.
* @return JLabel
*/
private JLabel getQuickLoginLabel() {
if (theQuickLoginLabel == null) {
try {
theQuickLoginLabel = new JLabel();
theQuickLoginLabel.setName("QuickLoginLabel");
theQuickLoginLabel.setText("Quick Login:");
theQuickLoginLabel.setBackground(SystemColor.control);
} catch (Throwable exception) {
handleException(exception);
}
}
return theQuickLoginLabel;
}
/**
* Return the ResetButton property value.
* @return JButton
*/
private JButton getResetButton() {
if (theResetButton == null) {
try {
theResetButton = new JButton();
theResetButton.setName("ResetButton");
theResetButton.setText("Reset");
theResetButton.setBackground(SystemColor.control);
} catch (Throwable exception) {
handleException(exception);
}
}
return theResetButton;
}
/**
* Return the frame.
*/
public Container getRoot() {
Container parent = this;
while (!(parent instanceof Frame)) {
parent = parent.getParent();
if (parent == null) {
return this;
}
}
return parent;
}
/**
* Return the RunModelProgressBar property value.
* @return JProgressBar
*/
private JProgressBar getRunModelProgressBar() {
if (theRunModelProgressBar == null) {
try {
theRunModelProgressBar = new JProgressBar();
theRunModelProgressBar.setName("RunModelProgressBar");
theRunModelProgressBar.setBackground(SystemColor.control);
} catch (Throwable exception) {
handleException(exception);
}
}
return theRunModelProgressBar;
}
/**
* Return the ProgressBar property value.
* @return JProgressBar
*/
private JProgressBar getRunProgressBar() {
if (theRunProgressBar == null) {
try {
theRunProgressBar = new JProgressBar();
theRunProgressBar.setName("RunProgressBar");
theRunProgressBar.setBackground(SystemColor.control);
} catch (Throwable exception) {
handleException(exception);
}
}
return theRunProgressBar;
}
private JProgressBar getErrorsProgressBar() {
if (errorsProgressBar == null) {
try {
errorsProgressBar = new JProgressBar();
errorsProgressBar.setName("ErrorsProgressBar");
errorsProgressBar.setForeground(Color.RED);
errorsProgressBar.setBackground(SystemColor.control);
} catch (Throwable exception) {
handleException(exception);
}
}
return errorsProgressBar;
}
/**
* Return the RunStatusLabel property value.
* @return JLabel
*/
private JLabel getRunStatusLabel() {
if (theRunStatusLabel == null) {
try {
theRunStatusLabel = new JLabel();
theRunStatusLabel.setName("RunStatusLabel");
theRunStatusLabel.setText("Run Status:");
theRunStatusLabel.setBackground(SystemColor.control);
} catch (Throwable exception) {
handleException(exception);
}
}
return theRunStatusLabel;
}
/**
* Return the ErrorsLabel property value.
* @return JLabel
*/
private JLabel getErrorsLabel() {
if (errorsLabel == null) {
try {
errorsLabel = new JLabel();
errorsLabel.setName("RrrorsLabel");
errorsLabel.setText("Errors:");
errorsLabel.setBackground(SystemColor.control);
} catch (Throwable exception) {
handleException(exception);
}
}
return errorsLabel;
}
/**
* Return the RunTestButton property value.
* @return JButton
*/
private JButton getRunTestButton() {
if (theRunTestButton == null) {
try {
theRunTestButton = new JButton();
theRunTestButton.setName("RunTestButton");
theRunTestButton.setText("Run Test");
theRunTestButton.setBackground(SystemColor.control);
} catch (Throwable exception) {
handleException(exception);
}
}
return theRunTestButton;
}
/**
* Return what ever is selected.
*/
public junit.framework.Test getSelectedTest() {
return (junit.framework.Test)getTestsTree().getSelectionPath().getLastPathComponent();
}
/**
* Return what ever is selected, return null if not a TestEntity.
*/
public TestEntity getSelectedEntity() {
junit.framework.Test test = getSelectedTest();
if (!(test instanceof TestEntity)) {
return null;
}
return (TestEntity)test;
}
/**
* Return the SessionInspectorPanel property value.
* @return org.eclipse.persistence.tools.sessionconsole.SessionConsolePanel
*/
private
/* WARNING: THIS METHOD WILL BE REGENERATED. */
org.eclipse.persistence.tools.sessionconsole.SessionConsolePanel getSessionInspectorPanel() {
if (theSessionInspectorPanel == null) {
try {
theSessionInspectorPanel = new org.eclipse.persistence.tools.sessionconsole.SessionConsolePanel();
theSessionInspectorPanel.setName("SessionInspectorPanel");
} catch (Throwable exception) {
handleException(exception);
}
}
return theSessionInspectorPanel;
}
/**
* Return the SetupButton property value.
* @return JButton
*/
private
/* WARNING: THIS METHOD WILL BE REGENERATED. */
JButton getSetupButton() {
if (theSetupButton == null) {
try {
theSetupButton = new JButton();
theSetupButton.setName("SetupButton");
theSetupButton.setText("Setup");
theSetupButton.setBackground(SystemColor.control);
// user code begin {1}
// user code end
} catch (Throwable exception) {
// user code begin {2}
// user code end
handleException(exception);
}
}
return theSetupButton;
}
/**
* Return the SplitPane property value.
* @return JSplitPane
*/
private JSplitPane getSplitPane() {
if (theSplitPane == null) {
try {
theSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
theSplitPane.setName("SplitPane");
theSplitPane.setDividerSize(8);
theSplitPane.setOneTouchExpandable(true);
theSplitPane.setDividerLocation(200);
getSplitPane().add(getSessionInspectorPanel(), "right");
getSplitPane().add(getTestPanel(), "left");
} catch (Throwable exception) {
handleException(exception);
}
}
return theSplitPane;
}
/**
* Return the StatusLabel property value.
* @return JLabel
*/
private
/* WARNING: THIS METHOD WILL BE REGENERATED. */
JLabel getStatusLabel() {
if (theStatusLabel == null) {
try {
theStatusLabel = new JLabel();
theStatusLabel.setName("StatusLabel");
theStatusLabel.setText("Suite Status:");
theStatusLabel.setBackground(SystemColor.control);
// user code begin {1}
// user code end
} catch (Throwable exception) {
// user code begin {2}
// user code end
handleException(exception);
}
}
return theStatusLabel;
}
/**
* Return the StopButton property value.
* @return JButton
*/
private JButton getStopButton() {
if (theStopButton == null) {
try {
theStopButton = new JButton();
theStopButton.setName("StopButton");
theStopButton.setText("Stop");
theStopButton.setBackground(SystemColor.control);
} catch (Throwable exception) {
handleException(exception);
}
}
return theStopButton;
}
/**
* Return the TestPanel property value.
* @return JPanel
*/
private JPanel getTestPanel() {
if (theTestPanel == null) {
try {
theTestPanel = new JPanel();
theTestPanel.setName("TestPanel");
theTestPanel.setLayout(new GridBagLayout());
theTestPanel.setBackground(SystemColor.control);
theTestPanel.setPreferredSize(new Dimension(300, 0));
GridBagConstraints constraintsHandleErrorsCheckBox = new GridBagConstraints();
constraintsHandleErrorsCheckBox.gridx = 0;
constraintsHandleErrorsCheckBox.gridy = 7;
constraintsHandleErrorsCheckBox.anchor = GridBagConstraints.WEST;
constraintsHandleErrorsCheckBox.insets = new Insets(0, 2, 0, 0);
getTestPanel().add(getHandleErrorsCheckBox(), constraintsHandleErrorsCheckBox);
GridBagConstraints constraintsRunFastCheckBox = new GridBagConstraints();
constraintsRunFastCheckBox.gridx = 0;
constraintsRunFastCheckBox.gridy = 8;
constraintsRunFastCheckBox.anchor = GridBagConstraints.WEST;
constraintsRunFastCheckBox.insets = new Insets(0, 2, 0, 0);
getTestPanel().add(getRunFastCheckBox(), constraintsRunFastCheckBox);
GridBagConstraints constraintsLogOnlyErrorsCheckBox = new GridBagConstraints();
constraintsLogOnlyErrorsCheckBox.gridx = 0;
constraintsLogOnlyErrorsCheckBox.gridy = 9;
constraintsLogOnlyErrorsCheckBox.anchor = GridBagConstraints.WEST;
constraintsLogOnlyErrorsCheckBox.insets = new Insets(0, 2, 0, 0);
getTestPanel().add(getLogOnlyErrorsCheckBox(), constraintsLogOnlyErrorsCheckBox);
GridBagConstraints constraintsTestsScrollPane = new GridBagConstraints();
constraintsTestsScrollPane.gridx = 0;
constraintsTestsScrollPane.gridy = 0;
constraintsTestsScrollPane.gridwidth = 2;
constraintsTestsScrollPane.fill = GridBagConstraints.BOTH;
constraintsTestsScrollPane.weightx = 1.0;
constraintsTestsScrollPane.weighty = 1.0;
getTestPanel().add(getTestsScrollPane(), constraintsTestsScrollPane);
GridBagConstraints constraintsRunProgressBar = new GridBagConstraints();
constraintsRunProgressBar.gridx = 1;
constraintsRunProgressBar.gridy = 1;
constraintsRunProgressBar.gridwidth = 2;
constraintsRunProgressBar.fill = GridBagConstraints.HORIZONTAL;
constraintsRunProgressBar.insets = new Insets(2, 2, 2, 2);
getTestPanel().add(getRunProgressBar(), constraintsRunProgressBar);
GridBagConstraints constraintsQuickLoginLabel = new GridBagConstraints();
constraintsQuickLoginLabel.gridx = 0;
constraintsQuickLoginLabel.gridy = 6;
constraintsQuickLoginLabel.anchor = GridBagConstraints.WEST;
constraintsQuickLoginLabel.insets = new Insets(0, 7, 0, 2);
getTestPanel().add(getQuickLoginLabel(), constraintsQuickLoginLabel);
GridBagConstraints constraintsLoginChoice = new GridBagConstraints();
constraintsLoginChoice.gridx = 1;
constraintsLoginChoice.gridy = 6;
constraintsLoginChoice.fill = GridBagConstraints.HORIZONTAL;
constraintsLoginChoice.insets = new Insets(2, 2, 2, 2);
getTestPanel().add(getLoginChoice(), constraintsLoginChoice);
GridBagConstraints constraintsRunModelProgressBar = new GridBagConstraints();
constraintsRunModelProgressBar.gridx = 1;
constraintsRunModelProgressBar.gridy = 4;
constraintsRunModelProgressBar.gridwidth = 2;
constraintsRunModelProgressBar.fill = GridBagConstraints.HORIZONTAL;
constraintsRunModelProgressBar.insets = new Insets(0, 2, 0, 2);
getTestPanel().add(getRunModelProgressBar(), constraintsRunModelProgressBar);
GridBagConstraints constraintsErrorsLabel = new GridBagConstraints();
constraintsErrorsLabel.gridx = 0;
constraintsErrorsLabel.gridy = 2;
constraintsErrorsLabel.anchor = GridBagConstraints.WEST;
constraintsErrorsLabel.insets = new Insets(0, 7, 0, 2);
getTestPanel().add(getErrorsLabel(), constraintsErrorsLabel);
GridBagConstraints constraintsErrorsProgressBar = new GridBagConstraints();
constraintsErrorsProgressBar.gridx = 1;
constraintsErrorsProgressBar.gridy = 2;
constraintsErrorsProgressBar.gridwidth = 2;
constraintsErrorsProgressBar.fill = GridBagConstraints.HORIZONTAL;
constraintsErrorsProgressBar.insets = new Insets(0, 3, 0, 2);
getTestPanel().add(getErrorsProgressBar(), constraintsErrorsProgressBar);
GridBagConstraints constraintsStatusLabel = new GridBagConstraints();
constraintsStatusLabel.gridx = 0;
constraintsStatusLabel.gridy = 4;
constraintsStatusLabel.anchor = GridBagConstraints.WEST;
constraintsStatusLabel.insets = new Insets(0, 7, 0, 2);
getTestPanel().add(getStatusLabel(), constraintsStatusLabel);
GridBagConstraints constraintsCurrentTestLabel = new GridBagConstraints();
constraintsCurrentTestLabel.gridx = 0;
constraintsCurrentTestLabel.gridy = 5;
constraintsCurrentTestLabel.anchor = GridBagConstraints.WEST;
constraintsCurrentTestLabel.insets = new Insets(0, 7, 0, 2);
getTestPanel().add(getCurrentTestLabel(), constraintsCurrentTestLabel);
GridBagConstraints constraintsCurrentTestTextField = new GridBagConstraints();
constraintsCurrentTestTextField.gridx = 1;
constraintsCurrentTestTextField.gridy = 5;
constraintsCurrentTestTextField.fill = GridBagConstraints.HORIZONTAL;
constraintsCurrentTestTextField.insets = new Insets(2, 2, 2, 2);
getTestPanel().add(getCurrentTestTextField(), constraintsCurrentTestTextField);
GridBagConstraints constraintsRunStatusLabel = new GridBagConstraints();
constraintsRunStatusLabel.gridx = 0;
constraintsRunStatusLabel.gridy = 1;
constraintsRunStatusLabel.anchor = GridBagConstraints.WEST;
constraintsRunStatusLabel.insets = new Insets(0, 7, 0, 2);
getTestPanel().add(getRunStatusLabel(), constraintsRunStatusLabel);
GridBagConstraints constraintsCurrentSuiteLabel = new GridBagConstraints();
constraintsCurrentSuiteLabel.gridx = 0;
constraintsCurrentSuiteLabel.gridy = 3;
constraintsCurrentSuiteLabel.anchor = GridBagConstraints.WEST;
constraintsCurrentSuiteLabel.insets = new Insets(0, 7, 0, 2);
getTestPanel().add(getCurrentSuiteLabel(), constraintsCurrentSuiteLabel);
GridBagConstraints constraintsCurrentSuiteTextField = new GridBagConstraints();
constraintsCurrentSuiteTextField.gridx = 1;
constraintsCurrentSuiteTextField.gridy = 3;
constraintsCurrentSuiteTextField.fill = GridBagConstraints.HORIZONTAL;
constraintsCurrentSuiteTextField.insets = new Insets(2, 2, 2, 2);
getTestPanel().add(getCurrentSuiteTextField(), constraintsCurrentSuiteTextField);
} catch (Throwable exception) {
handleException(exception);
}
}
return theTestPanel;
}
/**
* Return the TestsScrollPane property value.
* @return JScrollPane
*/
private
/* WARNING: THIS METHOD WILL BE REGENERATED. */
JScrollPane getTestsScrollPane() {
if (theTestsScrollPane == null) {
try {
theTestsScrollPane = new JScrollPane();
theTestsScrollPane.setName("TestsScrollPane");
theTestsScrollPane.setMinimumSize(new Dimension(0, 0));
theTestsScrollPane.setMaximumSize(new Dimension(0, 0));
getTestsScrollPane().setViewportView(getTestsTree());
// user code begin {1}
// user code end
} catch (Throwable exception) {
// user code begin {2}
// user code end
handleException(exception);
}
}
return theTestsScrollPane;
}
/**
* Return the JTree1 property value.
* @return JTree
*/
private
/* WARNING: THIS METHOD WILL BE REGENERATED. */
JTree getTestsTree() {
if (theTestsTree == null) {
try {
theTestsTree = new JTree();
theTestsTree.setName("TestsTree");
theTestsTree.setBounds(0, 0, 76, 36);
theTestsTree.setMaximumSize(new Dimension(0, 0));
theTestsTree.setRootVisible(false);
// user code begin {1}
// user code end
} catch (Throwable exception) {
// user code begin {2}
// user code end
handleException(exception);
}
}
return theTestsTree;
}
/**
* Return the JToolBar1 property value.
* @return JToolBar
*/
private
/* WARNING: THIS METHOD WILL BE REGENERATED. */
JToolBar getToolBar() {
if (theToolBar == null) {
try {
theToolBar = new JToolBar();
theToolBar.setName("ToolBar");
theToolBar.setBackground(SystemColor.control);
theToolBar.add(getRunTestButton());
theToolBar.addSeparator();
theToolBar.add(getSetupButton());
theToolBar.addSeparator();
theToolBar.add(getResetButton());
theToolBar.addSeparator();
theToolBar.add(getStopButton());
theToolBar.addSeparator();
theToolBar.add(getKillButton());
theToolBar.addSeparator();
getToolBar().add(getLoadBuildButton(), getLoadBuildButton().getName());
// user code begin {1}
// user code end
} catch (Throwable exception) {
// user code begin {2}
// user code end
handleException(exception);
}
}
return theToolBar;
}
/**
* Toggle the error handling logging.
*/
public void handleErrorsChanged() {
getExecutor().setShouldHandleErrors(getHandleErrorsCheckBox().isSelected());
}
/**
* Toggle the run fast/recreate system option.
*/
public void runFastChanged() {
if (getRunFastCheckBox().isSelected()) {
SchemaManager.FAST_TABLE_CREATOR = true;
} else {
SchemaManager.FAST_TABLE_CREATOR = false;
}
//TestModel.setShouldResetSystemAfterEachTestModel(!getRunFastCheckBox().isSelected());
}
/**
* Toggle the run fast/recreate system option.
*/
public void logOnlyErrorsChanged() {
getExecutor().setShouldLogOnlyErrors(getLogOnlyErrorsCheckBox().isSelected());
}
/**
* Called whenever the part throws an exception.
* @param exception Throwable
*/
private void handleException(Throwable exception) {
try {
getExecutor().getLog().write("--------- UNCAUGHT EXCEPTION ---------" +
org.eclipse.persistence.internal.helper.Helper.cr());
exception.printStackTrace(new PrintWriter(getExecutor().getLog()));
getExecutor().getLog().flush();
} catch (IOException e) {
}
}
/**
* Initializes connections
*/
private void initConnections() throws Exception {
getRunTestButton().addActionListener(theEventHandler);
getSetupButton().addActionListener(theEventHandler);
getStopButton().addActionListener(theEventHandler);
getKillButton().addActionListener(theEventHandler);
getHandleErrorsCheckBox().addItemListener(theEventHandler);
getRunFastCheckBox().addItemListener(theEventHandler);
getLogOnlyErrorsCheckBox().addItemListener(theEventHandler);
getLoginChoice().addItemListener(theEventHandler);
getResetButton().addActionListener(theEventHandler);
getLoadBuildButton().addActionListener(theEventHandler);
}
/**
* Initialize the class.
*/
private void initialize() {
try {
setName("TestingBrowserPanel");
setLayout(new GridBagLayout());
setBackground(SystemColor.control);
setSize(708, 524);
GridBagConstraints constraintsToolBar = new GridBagConstraints();
constraintsToolBar.gridx = 0;
constraintsToolBar.gridy = 0;
constraintsToolBar.gridwidth = 3;
constraintsToolBar.fill = GridBagConstraints.BOTH;
constraintsToolBar.weightx = 1.0;
add(getToolBar(), constraintsToolBar);
GridBagConstraints constraintsSplitPane = new GridBagConstraints();
constraintsSplitPane.gridx = 0;
constraintsSplitPane.gridy = 1;
constraintsSplitPane.fill = GridBagConstraints.BOTH;
constraintsSplitPane.weightx = 1.0;
constraintsSplitPane.weighty = 1.0;
add(getSplitPane(), constraintsSplitPane);
initConnections();
} catch (Throwable exception) {
handleException(exception);
}
setup();
}
/**
* Method to handle events for the ItemListener interface.
* @param e event.ItemEvent
*/
@Override
public void itemStateChanged(ItemEvent e) {
try {
if ((e.getSource() == getHandleErrorsCheckBox())) {
handleErrorsChanged();
}
if ((e.getSource() == getRunFastCheckBox())) {
runFastChanged();
}
if ((e.getSource() == getLogOnlyErrorsCheckBox())) {
logOnlyErrorsChanged();
}
if ((e.getSource() == getLoginChoice())) {
loginChanged();
}
} catch (Throwable exception) {
handleException(exception);
}
}
/**
* Kill the test thread.
*/
@SuppressWarnings("deprecation")
public void killTest() {
if (getExecutionThread() != null) {
getExecutionThread().stop();
setExecutionThread(null);
}
finishedTest();
// Need to use old API to be able to run with 9.0.4 jar for perf testing.
getExecutor().getSession().getIdentityMapAccessor().initializeAllIdentityMaps();
}
/**
* Reset the login info for the platform.
*/
public void loginChanged() {
TestSystem system = new TestSystem();
// Config the login to the selected platform.
String platform = (String)getLoginChoice().getSelectedItem();
if (platform.equals("Last Login Used")) {
try {
getSessionInspectorPanel().loadLoginFromFile();
system.setLogin(getSessionInspectorPanel().getLoginEditor().getLogin());
} catch (Throwable error) {
}
} else if (platform.equals("Local Oracle DB (thin)")) {
system.useOracleThin("localhost:1521:orcl", "scott", "tiger");
} else if (platform.equals("Oracle 11gR2 (thin)")) {
system.useOracleThin("ottvm030.ca.oracle.com:1521:TOPLINK", "", "password");
} else if (platform.equals("Oracle 11gR1 (thin)")) {
system.useOracleThin("ottvm028.ca.oracle.com:1521:TOPLINK", "", "password");
} else if (platform.equals("Oracle 11gR1 - Austin (thin)")) {
system.useOracleThin("adc6160375.us.oracle.com:1521:TOPLINK", "", "password");
} else if (platform.equals("Oracle (OCI)")) {
system.useOracleOCI();
} else if (platform.equals("TimesTen - coredev1")) {
system.useTimesTen("coredev1");
} else if (platform.equals("TimesTen - coredev2")) {
system.useTimesTen("coredev2");
} else if (platform.equals("DB2 (App)")) {
system.useDB2App();
} else if (platform.equals("DB2 (Net)")) {
system.useDB2Net();
} else if (platform.equals("DB2 (Universal Driver)")) {
system.useDB2UniversalDriver();
} else if (platform.equals("DB2 (DataDirect)")) {
system.useDB2DataDirect();
} else if (platform.equals("Derby")) {
system.useDerby();
} else if (platform.equals("H2")) {
system.useH2();
} else if (platform.equals("HSQL")) {
system.useHSQL();
} else if (platform.equals("PostgreSQL")) {
system.usePostgres();
} else if (platform.equals("Informix IDS 11.1")) {
system.useInformix11();
} else if (platform.equals("Sybase (JConnect)")) {
system.useSybaseJConnect();
} else if (platform.equals("Sybase (DataDirect)")) {
system.useSybaseDataDirect();
} else if (platform.equals("MySQL (Connector/J) - COREDEV1")) {
system.useMySQL("qa3");
} else if (platform.equals("MySQL (Connector/J) - COREDEV2")) {
system.useMySQL("qa4");
} else if (platform.equals("SQLServer (Weblogic Thin)")) {
system.useSQLServerWeblogicThin();
} else if (platform.equals("SQLServer (MS JDBC)")) {
system.useSQLServerMSJDBC();
} else if (platform.equals("SQLServer (DataDirect)")) {
system.useSQLServerDataDirect();
} else if (platform.equals("MS Access (JDBCODBC)")) {
system.useAccessJDBCODBC();
} else if (platform.equals("Symfoware (RDB2_TCP)")) {
system.useSymfowareRDB2_TCP();
}
DatabaseLogin login = system.getLogin();
getExecutor().getAbstractSession().setLogin(login);
getSessionInspectorPanel().getLoginEditor().setLogin(login);
if ((LoadBuildSystem.loadBuild == null)) {
return;
}
if(getExecutor().getSession().getLogin().getConnector() instanceof DefaultConnector) {
LoadBuildSystem.loadBuild.loginChoice = login.getConnectionString();
}
LoadBuildSystem.loadBuild.databaseLogin =
getSessionInspectorPanel().getSession().getProject().getLogin();
}
/**
* Log result for the current test running.
*/
public void logTestResults() {
if (getExecutionThread() != null) {
showBusyCursor();
try {
getExecutor().logResultForTestEntity(getExecutionThread().getTest());
} finally {
showNormalCursor();
}
}
}
/**
* Called whenever the part throws an exception.
* @param exception Throwable
*/
@Override
public void notifyException(Throwable exception) {
try {
getExecutor().getLog().write("--------- UNCAUGHT EXCEPTION ---------" +
org.eclipse.persistence.internal.helper.Helper.cr());
exception.printStackTrace(new PrintWriter(getExecutor().getLog()));
getExecutor().getLog().flush();
} catch (IOException e) {
}
}
/**
* Launch the Test Result Database query tool.
*/
public void queryLoadBuild() {
LoadBuildBrowserFrame loadBuildBrowser = new LoadBuildBrowserFrame();
loadBuildBrowser.setVisible(true);
loadBuildBrowser.repaint();
//LoadBuildBrowserFrame.main(new String[0]);
}
/**
* Depending upon the login state and what test entity is selected disable
* or enable the appropriate buttons.
*/
public void refreshButtons() {
boolean isLoggedIn = ((getExecutor().getSession() != null) && getExecutor().getSession().isConnected());
TestEntity entity = getSelectedEntity();
if (isLoggedIn || ((entity == null) || !entity.requiresDatabase())) {
getSetupButton().setEnabled(true);
getResetButton().setEnabled(true);
getRunTestButton().setEnabled(true);
} else {
getSetupButton().setEnabled(false);
getResetButton().setEnabled(false);
getRunTestButton().setEnabled(false);
}
if (isLoggedIn) {
getLoginChoice().setEnabled(false);
} else {
getLoginChoice().setEnabled(true);
}
}
/**
* Reset the models from code.
*/
public void refreshModels() {
showBusyCursor();
try {
setupDefaultModels();
resetModels();
getExecutor().initializeConfiguredSystems();
getExecutor().resetLoadedModels();
getExecutor().addLoadedModels(getModels());
} finally {
showNormalCursor();
}
}
/**
* Reset the models from code.
*/
public void refreshTests() {
showBusyCursor();
try {
setupDefaultModels();
resetModels();
getExecutor().resetLoadedModels();
getExecutor().addLoadedModels(getModels());
} finally {
showNormalCursor();
}
}
/**
* Set default login information.
*/
public void resetLogin() {
getLoginChoice().addItem("Last Login Used");
getLoginChoice().addItem("Local Oracle DB (thin)");
getLoginChoice().addItem("Oracle 11gR2 (thin)");
getLoginChoice().addItem("Oracle 11gR1 (thin)");
getLoginChoice().addItem("Oracle 11gR1 - Austin (thin)");
getLoginChoice().addItem("Oracle (OCI)");
getLoginChoice().addItem("TimesTen - coredev1");
getLoginChoice().addItem("TimesTen - coredev2");
getLoginChoice().addItem("DB2 (App)");
getLoginChoice().addItem("DB2 (Net)");
getLoginChoice().addItem("DB2 (Universal Driver)");
getLoginChoice().addItem("DB2 (DataDirect)");
getLoginChoice().addItem("Derby");
getLoginChoice().addItem("HSQL");
getLoginChoice().addItem("H2");
getLoginChoice().addItem("PostgreSQL");
getLoginChoice().addItem("Informix IDS 11.1");
getLoginChoice().addItem("Sybase (JConnect)");
getLoginChoice().addItem("Sybase (DataDirect)");
getLoginChoice().addItem("MySQL (Connector/J) - COREDEV1");
getLoginChoice().addItem("MySQL (Connector/J) - COREDEV2");
getLoginChoice().addItem("SQLServer (DataDirect)");
getLoginChoice().addItem("SQLServer (MS JDBC)");
getLoginChoice().addItem("SQLServer (Weblogic Thin)");
getLoginChoice().addItem("Symfoware (RDB2_TCP)");
loginChanged();
}
/**
* Reset the list panes on the subclasses of TestModel.
*/
public void resetModels() {
TestEntityTreeModel model = new TestEntityTreeModel(getModels());
getTestsTree().setModel(model);
getTestsTree().repaint();
}
/**
* Setup the model to allow its test cases to become visible.
*/
public void resetTest() {
showBusyCursor();
try {
TestEntity test = getSelectedEntity();
if ((test == null) || (!(test instanceof TestCollection))) {
return;
}
test.resetEntity();
resetModels();
// Reset the session inspectors session as test model reset builds clean session.
getSessionInspectorPanel().setSession(getExecutor().getSession());
} finally {
showNormalCursor();
}
}
/**
* Perform the selected test.
*/
public void runTest() {
junit.framework.Test test;
showBusyCursor();
if ((test = getSelectedTest()) == null) {
return;
}
// Set the login to ensure correct in load build system.
try {
if(getExecutor().getSession().getDatasourceLogin() instanceof DatabaseLogin && getExecutor().getSession().getLogin().getConnector() instanceof DefaultConnector) {
LoadBuildSystem.loadBuild.loginChoice = getExecutor().getSession().getLogin().getConnectionString();
}
} catch (Exception isDatasourceLogin) {
// Ignore, but can't check first because need to support running 9.0.4.
}
// Configure the JPA tests login and logging.
Map<String, String> properties = org.eclipse.persistence.testing.framework.junit.JUnitTestCaseHelper.getDatabaseProperties();
if(getExecutor().getSession().getDatasourceLogin() instanceof DatabaseLogin && getExecutor().getSession().getLogin().getConnector() instanceof DefaultConnector) {
properties.put(PersistenceUnitProperties.JDBC_DRIVER, getExecutor().getSession().getLogin().getDriverClassName());
properties.put(PersistenceUnitProperties.JDBC_URL, getExecutor().getSession().getLogin().getConnectionString());
properties.put(PersistenceUnitProperties.TARGET_DATABASE, getExecutor().getSession().getDatasourceLogin().getPlatform().getClass().getName());
properties.put(PersistenceUnitProperties.JDBC_USER, getExecutor().getSession().getDatasourceLogin().getUserName());
properties.put(PersistenceUnitProperties.JDBC_PASSWORD, getExecutor().getSession().getDatasourceLogin().getPassword());
properties.put(PersistenceUnitProperties.LOGGING_LEVEL, getExecutor().getSession().getSessionLog().getLevelString());
for(Map map : org.eclipse.persistence.testing.framework.junit.JUnitTestCaseHelper.puPropertiesMap.values()) {
if (map.containsKey(PersistenceUnitProperties.LOGGING_LEVEL)) {
map.put(PersistenceUnitProperties.LOGGING_LEVEL, getExecutor().getSession().getSessionLog().getLevelString());
}
}
}
TestExecutor.setDefaultJUnitTestResult(null);
TestExecutor.setJUnitTestResults(null);
setExecutionThread(new SynchronizedTestExecutor(getExecutor(), test, this));
getExecutionThread().start();
getStopButton().setEnabled(true);
getKillButton().setEnabled(true);
}
public void saveLoadBuild() {
if ((LoadBuildSystem.loadBuild == null) || LoadBuildSystem.loadBuild.isEmpty()) {
return;
}
showBusyCursor();
LoadBuildSystem loadBuildSystem = new LoadBuildSystem();
loadBuildSystem.saveLoadBuild();
showNormalCursor();
}
/**
* The run is the currently executing test model.
*/
public void setCurrentRun(junit.framework.Test currentRun) {
this.currentRun = currentRun;
}
/**
* Set the execution thread.
*/
protected void setExecutionThread(SynchronizedTestExecutor thread) {
executionThread = thread;
}
/**
* Set the test executor.
*/
public void setExecutor(TestExecutor executor) {
this.executor = executor;
}
/**
* Return the loaded models.
*/
public void setModels(Vector models) {
this.models = models;
}
/**
* The lists must be refreshed when first open.
*/
public void setup() {
showBusyCursor();
try {
DatabaseSession session = new Project(new DatabaseLogin()).createDatabaseSession();
setExecutor(new TestExecutor());
getExecutor().setListener(this);
getExecutor().setSession(session);
getSessionInspectorPanel().setSession(session);
setupDefaultModels();
resetModels();
resetLogin();
handleErrorsChanged();
loginChanged();
getLogOnlyErrorsCheckBox().setSelected(true);
} finally {
showNormalCursor();
}
}
/**
* Reset the models from code.
*/
public void setupDefaultModels() {
Vector allModels = new Vector();
Class testModelClass;
// Look for standard tests.
try {
testModelClass = Class.forName("org.eclipse.persistence.testing.tests.TestRunModel");
java.lang.reflect.Method buildTestsMethod = testModelClass.getMethod("buildAllModels");
Vector result = (Vector)buildTestsMethod.invoke(null, new Object[0]);
Helper.addAllToVector(allModels, result);
} catch (Exception exception) {
System.out.println("Problems loading BasicTestModel " + exception.toString());
exception.printStackTrace();
}
setModels(allModels);
}
/**
* Setup the model to allow its test cases to become visible.
*/
public void setupTest() {
showBusyCursor();
TestEntity entity = getSelectedEntity();
if ((entity == null) || (!(entity instanceof TestCollection))) {
showNormalCursor();
return;
}
TestCollection test = (TestCollection)entity;
test.setExecutor(getExecutor());
setExecutionThread(new SynchronizedTestExecutor(getExecutor(), test, this));
getExecutionThread().setShouldRunSetupOnly(true);
getExecutionThread().start();
getStopButton().setEnabled(true);
getKillButton().setEnabled(true);
}
/**
* Change to the busy cursor.
*/
public void showBusyCursor() {
Container parent = this;
while (parent != null) {
parent.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
parent = parent.getParent();
}
}
/**
* Change from the busy cursor.
*/
public void showNormalCursor() {
Container parent = this;
while (parent != null) {
parent.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
parent = parent.getParent();
}
}
/**
* Stop the selected test.
*/
public void stopTest() {
if (getExecutionThread() != null) {
getExecutionThread().stopExecution();
} else {
finishedTest();
}
}
/**
* Increment the errors bar.
*/
@Override
public void addError(junit.framework.Test test, Throwable error) {
if (!getExecutor().shouldHandleErrors()) {
throw new TestErrorException(error.getMessage(), error);
}
getErrorsProgressBar().setValue(getErrorsProgressBar().getValue() + 1);
// Expand the errors size if maxed out.
if (getErrorsProgressBar().getValue() >= getErrorsProgressBar().getMaximum()) {
getErrorsProgressBar().setMaximum(getErrorsProgressBar().getMaximum() * 2);
}
}
/**
* Increment the errors bar.
*/
@Override
public void addFailure(junit.framework.Test test, junit.framework.AssertionFailedError error) {
if (!getExecutor().shouldHandleErrors()) {
throw new TestErrorException(error.getMessage(), error);
}
getErrorsProgressBar().setValue(getErrorsProgressBar().getValue() + 1);
// Expand the errors size if maxed out.
if (getErrorsProgressBar().getValue() >= getErrorsProgressBar().getMaximum()) {
getErrorsProgressBar().setMaximum(getErrorsProgressBar().getMaximum() * 2);
}
}
/**
* Move the progress bar.
*/
@Override
public void endTest(junit.framework.Test test) {
getRunModelProgressBar().setValue(getRunModelProgressBar().getValue() + 1);
if (test instanceof TestEntity) {
TestEntity testEntity = (TestEntity)test;
if ((testEntity instanceof TestCase) && (((TestCase)testEntity).getTestResult().hasFailed())) {
getErrorsProgressBar().setValue(getErrorsProgressBar().getValue() + 1);
} else if ((testEntity instanceof TestCollection) && ((TestResultsSummary)testEntity.getReport()).didSetupFail()) {
getErrorsProgressBar().setValue(getErrorsProgressBar().getValue() + 1);
}
// Expand the errors size if maxed out.
if (getErrorsProgressBar().getValue() >= getErrorsProgressBar().getMaximum()) {
getErrorsProgressBar().setMaximum(getErrorsProgressBar().getMaximum() * 2);
}
if (testEntity.getContainer() == getCurrentRun()) {
getRunProgressBar().setMaximum(((TestCollection)testEntity.getContainer()).getTests().size());
getRunProgressBar().setValue(getRunProgressBar().getValue() + 1);
}
}
// Reset the session inspectors session as test model reset builds clean session.
getSessionInspectorPanel().setSession(getExecutor().getSession());
}
/**
* Move the progress bar.
*/
@Override
public void startTest(junit.framework.Test test) {
if (test instanceof junit.framework.TestSuite) {
junit.framework.TestSuite suite = (junit.framework.TestSuite)test;
getRunModelProgressBar().setValue(0);
getRunModelProgressBar().setMaximum(suite.countTestCases());
getCurrentSuiteTextField().setText(suite.getName());
if (getCurrentRun() == null) {
setCurrentRun(test);
getRunProgressBar().setValue(0);
getRunProgressBar().setMaximum(suite.countTestCases());
getErrorsProgressBar().setMaximum(10);
getErrorsProgressBar().setValue(0);
}
getCurrentTestTextField().setText(suite.getName());
} else if (test instanceof junit.framework.TestCase) {
getCurrentTestTextField().setText(((junit.framework.TestCase)test).getName());
if (!(test instanceof TestEntity)) {
getCurrentSuiteTextField().setText(Helper.getShortClassName(test.getClass()));
}
}
}
class TestBrowserEventHandler implements ActionListener, ItemListener {
@Override
public void actionPerformed(ActionEvent e) {
try {
if (e.getSource() == TestingBrowserPanel.this.getRunTestButton()) {
runTest();
}
if (e.getSource() == TestingBrowserPanel.this.getSetupButton()) {
setupTest();
}
if (e.getSource() == TestingBrowserPanel.this.getStopButton()) {
stopTest();
}
if (e.getSource() == TestingBrowserPanel.this.getKillButton()) {
killTest();
}
if (e.getSource() == TestingBrowserPanel.this.getResetButton()) {
resetTest();
}
if (e.getSource() == TestingBrowserPanel.this.getLoadBuildButton()) {
queryLoadBuild();
}
} catch (Throwable exception) {
handleException(exception);
}
}
@Override
public void itemStateChanged(ItemEvent e) {
try {
if (e.getSource() == TestingBrowserPanel.this.getHandleErrorsCheckBox()) {
handleErrorsChanged();
}
if (e.getSource() == TestingBrowserPanel.this.getRunFastCheckBox()) {
runFastChanged();
}
if (e.getSource() == TestingBrowserPanel.this.getLogOnlyErrorsCheckBox()) {
logOnlyErrorsChanged();
}
if (e.getSource() == TestingBrowserPanel.this.getLoginChoice()) {
loginChanged();
}
} catch (Throwable exception) {
handleException(exception);
}
}
}
}