package org.jboss.tools.perf.test;
import java.io.File;
import org.jboss.reddeer.common.wait.AbstractWait;
import org.jboss.reddeer.common.wait.TimePeriod;
import org.jboss.reddeer.common.wait.WaitUntil;
import org.jboss.reddeer.common.wait.WaitWhile;
import org.jboss.reddeer.core.condition.JobIsRunning;
import org.jboss.reddeer.core.condition.ShellWithTextIsActive;
import org.jboss.reddeer.workbench.ui.dialogs.WorkbenchPreferenceDialog;
import org.jboss.reddeer.eclipse.ui.wizards.datatransfer.ExternalProjectImportWizardDialog;
import org.jboss.reddeer.eclipse.ui.wizards.datatransfer.WizardProjectsImportPage;
import org.jboss.reddeer.swt.condition.WidgetIsEnabled;
import org.jboss.reddeer.swt.impl.button.CheckBox;
import org.jboss.reddeer.swt.impl.button.FinishButton;
import org.jboss.reddeer.swt.impl.button.OkButton;
import org.jboss.reddeer.swt.impl.group.DefaultGroup;
import org.jboss.reddeer.swt.impl.menu.ShellMenu;
import org.jboss.reddeer.swt.impl.shell.DefaultShell;
import org.jboss.reddeer.swt.impl.tree.DefaultTreeItem;
import org.jboss.tools.maven.reddeer.preferences.MavenUserPreferencePage;
import org.jboss.tools.maven.reddeer.wizards.MavenImportWizard;
import org.jboss.tools.maven.reddeer.wizards.MavenImportWizardFirstPage;
import org.junit.Before;
import org.junit.BeforeClass;
public abstract class PerfTestBase {
protected String projectFolder;
public static final String USER_SETTINGS = "resources/usersettings/settings.xml";
@BeforeClass
public static void prepareEclipse(){
mavenOffline();
setMavenSettings();
AbstractWait.sleep(TimePeriod.getCustom(120));
}
@Before
public void enableAll(){
prepareGit(true);
automaticBuild(true);
}
private static void setMavenSettings() {
WorkbenchPreferenceDialog wd = new WorkbenchPreferenceDialog();
wd.open();
MavenUserPreferencePage up = new MavenUserPreferencePage();
wd.select(up);
up.setUserSettings(new File(USER_SETTINGS).getAbsolutePath());
wd.ok();
}
public void prepareGit(boolean enable){
new ShellMenu("Window","Preferences").select();
new DefaultShell("Preferences");
new DefaultTreeItem("Team","Git","Projects").select();
new CheckBox(0).toggle(enable);
new CheckBox(1).toggle(enable);
new CheckBox(2).toggle(enable);
new OkButton().click();
new WaitWhile(new ShellWithTextIsActive("Preferences"));
new WaitWhile(new JobIsRunning(), TimePeriod.LONG);
}
private static void mavenOffline(){
new ShellMenu("Window","Preferences").select();
new DefaultShell("Preferences");
new DefaultTreeItem("Maven").select();
new CheckBox("Offline").toggle(true);
new OkButton().click();
new WaitWhile(new ShellWithTextIsActive("Preferences"));
new WaitWhile(new JobIsRunning(), TimePeriod.LONG);
}
public void automaticBuild(boolean enable){
ShellMenu m = new ShellMenu("Project","Build Automatically");
if(enable){
if(!m.isSelected()){
m.select();
}
} else {
if(m.isSelected()){
m.select();
}
}
}
public void importProject(){
ExternalProjectImportWizardDialog ew = new ExternalProjectImportWizardDialog();
ew.open();
WizardProjectsImportPage ip = new WizardProjectsImportPage();
ip.setRootDirectory("/home/jbossqa/validation/jee/"+projectFolder);
ip.copyProjectsIntoWorkspace(true);
new CheckBox(new DefaultGroup("Options"),"Search for nested projects").toggle(true);
new WaitUntil(new WidgetIsEnabled(new FinishButton()), TimePeriod.LONG);
new FinishButton().click();
new WaitUntil(new JobIsRunning(), TimePeriod.ETERNAL);
new WaitWhile(new JobIsRunning(), TimePeriod.ETERNAL);
}
public void importProjectWithMaven(){
MavenImportWizard mw = new MavenImportWizard();
mw.open();
MavenImportWizardFirstPage mp = new MavenImportWizardFirstPage();
mp.setRootDirectory("/home/jbossqa/validation/maven/"+projectFolder);
new FinishButton().click();
new WaitUntil(new JobIsRunning(), TimePeriod.ETERNAL);
new WaitWhile(new JobIsRunning(), TimePeriod.ETERNAL);
}
}