/*******************************************************************************
* Copyright (c) 2013 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.windup.ui.tests;
import static org.junit.Assert.assertNotNull;
import javax.inject.Inject;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.e4.core.services.events.IEventBroker;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.internal.e4.compatibility.CompatibilityView;
import org.jboss.tools.test.util.TestProjectProvider;
import org.jboss.tools.windup.core.services.WindupService;
import org.jboss.tools.windup.core.test.WindupTest;
import org.jboss.tools.windup.model.domain.ModelService;
import org.jboss.tools.windup.model.util.NameUtil;
import org.jboss.tools.windup.runtime.WindupRmiClient;
import org.jboss.tools.windup.ui.WindupPerspective;
import org.jboss.tools.windup.ui.internal.explorer.IssueExplorer;
import org.jboss.tools.windup.ui.internal.explorer.QuickfixService;
import org.jboss.tools.windup.ui.internal.services.MarkerService;
import org.jboss.tools.windup.ui.internal.services.ViewService;
import org.jboss.tools.windup.ui.tests.swtbot.WorkbenchBot;
import org.jboss.tools.windup.ui.util.WindupLauncher;
import org.jboss.tools.windup.ui.util.WindupServerCallbackAdapter;
import org.jboss.tools.windup.windup.ConfigurationElement;
import org.junit.After;
import org.junit.Before;
import com.google.common.collect.Lists;
/**
* Base class for Windup UI tests.
*/
@SuppressWarnings("restriction")
public class WindupUiTest extends WindupTest {
private static final String PROJECT = "demo";
protected TestProjectProvider projectProvider;
@Inject protected MApplication application;
@Inject protected EModelService eModelService;
@Inject protected EPartService partService;
@Inject protected WorkbenchBot workbenchBot;
@Inject protected ModelService modelService;
@Inject protected WindupService windupService;
@Inject protected IEventBroker broker;
@Inject protected WindupRmiClient windupClient;
@Inject protected WindupLauncher windupLauncher;
@Inject protected MarkerService markerService;
@Inject protected QuickfixService quickfixService;
@Inject protected ViewService viewService;
protected IssueExplorer issueExplorer;
@Before
public void init() throws CoreException {
projectProvider = workbenchBot.importProject(Activator.PLUGIN_ID, null, PROJECT, false);
openWindupPerspective();
this.issueExplorer = (IssueExplorer)((CompatibilityView)partService.findPart(
IssueExplorer.VIEW_ID).getObject()).getView();
assertNotNull("Issue Explorer is NULL.", issueExplorer);
System.out.println("@Before::init:: start RHAMT server.");
windupLauncher.start(new WindupServerCallbackAdapter(Display.getDefault().getActiveShell()) {
@Override
public void serverStart(IStatus status) {
if (status.isOK() && windupClient.getExecutionBuilder() != null) {
System.out.println("@Before::init:: RHAMT server started successfully.");
}
else {
System.out.println("@Before::init:: RHAMT server failed to start.");
}
}
});
}
@After
public void clean() {
projectProvider.dispose();
}
protected void openWindupPerspective() {
workbenchBot.perspectiveById(WindupPerspective.ID).activate();;
}
protected void runWindup(ConfigurationElement configuration) {
if (windupClient.isWindupServerRunning()) {
System.out.println("RHAMT server already running.");
Display.getDefault().syncExec(() -> {
markerService.clear();
viewService.launchStarting();
windupService.generateGraph(configuration, new NullProgressMonitor());
viewService.renderReport(configuration);
markerService.generateMarkersForConfiguration(configuration);
});
}
else {
System.out.println("RHAMT server not running. Attempting to start it.");
windupLauncher.start(new WindupServerCallbackAdapter(Display.getDefault().getActiveShell()) {
@Override
public void serverStart(IStatus status) {
System.out.println("Finished attempt to start RHAMT server.");
if (status.isOK() && windupClient.getExecutionBuilder() != null) {
System.out.println("RHAMT server started successfully.");
markerService.clear();
viewService.launchStarting();
windupService.generateGraph(configuration, new NullProgressMonitor());
viewService.renderReport(configuration);
markerService.generateMarkersForConfiguration(configuration);
}
}
});
}
}
protected ConfigurationElement createRunConfiguration() {
// TODO: We should do this through SWTBot and the Run Configuration dialog.
ConfigurationElement configuration = modelService.createConfiguration(
NameUtil.generateUniqueConfigurationElementName(modelService.getModel()));
IProject project = projectProvider.getProject();
modelService.createInput(configuration, Lists.newArrayList(project));
return configuration;
}
}