blob: 35c1de3a87a4034e90c1ec52625dacd45ce36578 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012 Ericsson Research Canada
*
* All rights reserved. This program and the accompanying materials are
* 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
*
* Description:
*
* This class implements various utility method used in R4E JUnit UI tests
*
* Contributors:
* Sebastien Dubois - Created for Mylyn Review R4E project
*
******************************************************************************/
package org.eclipse.mylyn.reviews.r4e.ui.tests.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import junit.framework.Assert;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.CProjectNature;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.egit.core.op.AddToIndexOperation;
import org.eclipse.egit.core.op.CommitOperation;
import org.eclipse.egit.core.op.ConnectProviderOperation;
import org.eclipse.egit.core.op.DisconnectProviderOperation;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.launching.JavaRuntime;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.CoreConfig.AutoCRLF;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.storage.file.FileRepository;
import org.eclipse.jgit.util.FileUtils;
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.IR4EUIModelElement;
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIModelController;
import org.eclipse.mylyn.reviews.r4e.ui.internal.model.R4EUIRootElement;
import org.eclipse.mylyn.reviews.r4e.ui.internal.navigator.ReviewNavigatorView;
import org.eclipse.mylyn.reviews.r4e.ui.tests.R4EUITestPlugin;
import org.eclipse.mylyn.reviews.r4e.ui.tests.proxy.R4EUITestMain;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
@SuppressWarnings("restriction")
public class TestUtils {
// ------------------------------------------------------------------------
// Constants
// ------------------------------------------------------------------------
//Git
public final static String AUTHOR = "The Author <The.author@some.com>";
public final static String COMMITTER = "The Commiter <The.committer@some.com>";
//Java
private static final String UI_TEST_JAVA_PROJECT_NAME = "javaProject";
private static final String JAVA_FILE1_EXT_PATH = "testFiles" + File.separator + "extModCommitFile.java";
public static final String JAVA_FILE1_PROJ_NAME = "modCommitFile.java";
private static final String JAVA_FILE1_EXT_MOD_PATH = "testFiles" + File.separator + "extModCommitFile1.java";
private static final String JAVA_FILE2_EXT_PATH = "testFiles" + File.separator + "extRemCommitFile.java";
public static final String JAVA_FILE2_PROJ_NAME = "remCommitFile.java";
private static final String JAVA_FILE3_EXT_PATH = "testFiles" + File.separator + "extNewCommitFile.java";
public static final String JAVA_FILE3_PROJ_NAME = "newCommitFile.java";
public static final String JAVA_FILE3_EXT_MOD_PATH = "testFiles" + File.separator + "extModCommitFile3.java";
private static final String JAVA_FILE4_EXT_PATH = "testFiles" + File.separator + "extModNoCommitFile.java";
public static final String JAVA_FILE4_PROJ_NAME = "modNoCommitFile.java";
private static final String JAVA_FILE4_EXT_MOD_PATH = "testFiles" + File.separator + "extModNoCommitFile1.java";
private static final String JAVA_FILE5_EXT_PATH = "testFiles" + File.separator + "extNoVCSFile.java";
private static final String JAVA_FILE5_PROJ_NAME = "noVCSFile.java";
//C
private static final String UI_TEST_C_PROJECT_NAME = "cProject";
private static final String C_FILE1_EXT_PATH = "testFiles" + File.separator + "extModCommitFile.cc";
private static final String C_FILE1_PROJ_NAME = "extModCommitFile.cc";
private static final String C_FILE1_EXT_MOD_PATH = "testFiles" + File.separator + "extModCommitFile1.cc";
private static final String C_FILE2_EXT_PATH = "testFiles" + File.separator + "extRemCommitFile.cc";
private static final String C_FILE2_PROJ_NAME = "extRemCommitFile.cc";
private static final String C_FILE3_EXT_PATH = "testFiles" + File.separator + "extNewCommitFile.cc";
private static final String C_FILE3_PROJ_NAME = "extNewCommitFile.cc";
private static final String C_FILE4_EXT_PATH = "testFiles" + File.separator + "extModNoCommitFile.cc";
private static final String C_FILE4_PROJ_NAME = "modNoCommitFile.cc";
private static final String C_FILE4_EXT_MOD_PATH = "testFiles" + File.separator + "extModNoCommitFile1.cc";
private static final String C_FILE5_EXT_PATH = "testFiles" + File.separator + "extNoVCSFile.cc";
private static final String C_FILE5_PROJ_NAME = "noVCSFile.cc";
//Text
private static final String UI_TEST_TEXT_PROJECT_NAME = "textProject";
private static final String TEXT_FILE1_EXT_PATH = "testFiles" + File.separator + "extModCommitFile.txt";
private static final String TEXT_FILE1_PROJ_NAME = "extModCommitFile.txt";
private static final String TEXT_FILE1_EXT_MOD_PATH = "testFiles" + File.separator + "extModCommitFile1.txt";
private static final String TEXT_FILE2_EXT_PATH = "testFiles" + File.separator + "extRemCommitFile.txt";
private static final String TEXT_FILE2_PROJ_NAME = "extRemCommitFile.txt";
private static final String TEXT_FILE3_EXT_PATH = "testFiles" + File.separator + "extNewCommitFile.txt";
private static final String TEXT_FILE3_PROJ_NAME = "extNewCommitFile.txt";
private static final String TEXT_FILE4_EXT_PATH = "testFiles" + File.separator + "extModNoCommitFile.txt";
private static final String TEXT_FILE4_PROJ_NAME = "modNoCommitFile.txt";
private static final String TEXT_FILE4_EXT_MOD_PATH = "testFiles" + File.separator + "extModNoCommitFile1.txt";
private static final String TEXT_FILE5_EXT_PATH = "testFiles" + File.separator + "extNoVCSFile.txt";
private static final String TEXT_FILE5_PROJ_NAME = "noVCSFile.txt";
//Test Views
public static final String R4E_NAVIGATOR_VIEW_NAME = "org.eclipse.mylyn.reviews.r4e.ui.navigator.ReviewNavigatorView"; // $codepro.audit.disable constantNamingConvention
// ------------------------------------------------------------------------
// Variables
// ------------------------------------------------------------------------
public static String FSharedFolder = null;
public static IProject FExtProject = null;
//Java
public static IProject FJavaIProject = null;
public static IJavaProject FJavaIJavaProject = null;
public static Repository FJavaRepository = null;
public static String FJavaWorkdirPrefix = null;
public static IFile FJavaFile1 = null;
public static IFile FJavaFile2 = null;
public static IFile FJavaFile3 = null;
public static IFile FJavaFile4 = null;
public static IFile FJavaFile5 = null;
//C
public static IProject FCIProject = null;
public static IProject FCICProject = null;
public static Repository FCRepository = null;
public static String FCWorkdirPrefix = null;
public static IFile FCFile1 = null;
public static IFile FCFile2 = null;
public static IFile FCFile3 = null;
public static IFile FCFile4 = null;
public static IFile FCFile5 = null;
//Text
public static IProject FTextIProject = null;
public static Repository FTextRepository = null;
public static String FTextWorkdirPrefix = null;
public static IFile FTextFile1 = null;
public static IFile FTextFile2 = null;
public static IFile FTextFile3 = null;
public static IFile FTextFile4 = null;
public static IFile FTextFile5 = null;
//UI Model
public static R4EUIRootElement FRootElement;
//Test View
public static ReviewNavigatorView FTestNavigatorView;
// ------------------------------------------------------------------------
// Methods
// ------------------------------------------------------------------------
public static void setupTestEnvironment() throws CoreException, IOException, URISyntaxException {
FExtProject = ResourcesPlugin.getWorkspace().getRoot().getProject(R4EUITestPlugin.PLUGIN_ID);
setupJavaProject();
setupCProject();
setupTextProject();
setupSharedFolder();
}
private static void setupJavaProject() throws CoreException, IOException, URISyntaxException {
//Create project
FJavaIProject = createProject(UI_TEST_JAVA_PROJECT_NAME);
//Create repository
FJavaRepository = createRepository(FJavaIProject);
FJavaWorkdirPrefix = getWorkDir(FJavaRepository);
//Connect main project with repository
connectProjectWithRepo(FJavaIProject, FJavaRepository);
//Set Project As Java Project
FJavaIJavaProject = setProjectAsJava(FJavaIProject);
//Add initial files to project
FJavaFile1 = addFileToProject(FJavaIProject, JAVA_FILE1_PROJ_NAME, JAVA_FILE1_EXT_PATH);
FJavaFile2 = addFileToProject(FJavaIProject, JAVA_FILE2_PROJ_NAME, JAVA_FILE2_EXT_PATH);
//Commit initial files to repository
List<IResource> resources = new ArrayList<IResource>();
resources.add(FJavaFile1);
resources.add(FJavaFile2);
addFilesToRepository(resources);
commitFiles(FJavaIProject, FJavaRepository, "first Java Commit");
//Update files (Modify File1, Remove File2, Add File 3, Add File4)
FJavaFile1 = changeContentOfFile(FJavaFile1, JAVA_FILE1_EXT_MOD_PATH);
FJavaFile2.delete(true, null);
FJavaFile3 = addFileToProject(FJavaIProject, JAVA_FILE3_PROJ_NAME, JAVA_FILE3_EXT_PATH);
FJavaFile4 = addFileToProject(FJavaIProject, JAVA_FILE4_PROJ_NAME, JAVA_FILE4_EXT_PATH);
//Commit modifications
resources.clear();
resources.add(FJavaFile1);
resources.add(FJavaFile2);
resources.add(FJavaFile3);
resources.add(FJavaFile4);
addFilesToRepository(resources);
commitFiles(FJavaIProject, FJavaRepository, "second Java Commit");
//Update files (Modify File4, Add File5, do not commit)
FJavaFile4 = changeContentOfFile(FJavaFile4, JAVA_FILE4_EXT_MOD_PATH);
FJavaFile5 = addFileToProject(FJavaIProject, JAVA_FILE5_PROJ_NAME, JAVA_FILE5_EXT_PATH);
}
private static void setupCProject() throws CoreException, IOException, URISyntaxException {
//Create project
FCIProject = createProject(UI_TEST_C_PROJECT_NAME);
//Create repository
FCRepository = createRepository(FCIProject);
FCWorkdirPrefix = getWorkDir(FCRepository);
//Connect main project with repository
connectProjectWithRepo(FCIProject, FCRepository);
//Set Project As C/C++ Project
FCICProject = setProjectAsC(FCIProject);
//Add files to project
FCFile1 = addFileToProject(FCIProject, C_FILE1_PROJ_NAME, C_FILE1_EXT_PATH);
FCFile2 = addFileToProject(FCIProject, C_FILE2_PROJ_NAME, C_FILE2_EXT_PATH);
//Commit files to repository
List<IResource> resources = new ArrayList<IResource>();
resources.add(FCFile1);
resources.add(FCFile2);
addFilesToRepository(resources);
commitFiles(FCIProject, FCRepository, "first C Commit");
//Update files (Modify File1, Remove File2, Add File 3, Add File4)
FCFile1 = changeContentOfFile(FCFile1, C_FILE1_EXT_MOD_PATH);
FCFile2.delete(true, null);
FCFile3 = addFileToProject(FCIProject, C_FILE3_PROJ_NAME, C_FILE3_EXT_PATH);
FCFile4 = addFileToProject(FCIProject, C_FILE4_PROJ_NAME, C_FILE4_EXT_PATH);
//Commit modifications
resources.clear();
resources.add(FCFile1);
resources.add(FCFile2);
resources.add(FCFile3);
resources.add(FCFile4);
addFilesToRepository(resources);
commitFiles(FCIProject, FCRepository, "second C Commit");
//Update files (Modify File4, Add File5, do not commit)
FCFile4 = changeContentOfFile(FCFile4, C_FILE4_EXT_MOD_PATH);
FCFile5 = addFileToProject(FCIProject, C_FILE5_PROJ_NAME, C_FILE5_EXT_PATH);
}
private static void setupTextProject() throws CoreException, IOException, URISyntaxException {
//Create project
FTextIProject = createProject(UI_TEST_TEXT_PROJECT_NAME);
//Create repository
FTextRepository = createRepository(FTextIProject);
FTextWorkdirPrefix = getWorkDir(FTextRepository);
//Connect main project with repository
connectProjectWithRepo(FTextIProject, FTextRepository);
//Add files to project
FTextFile1 = addFileToProject(FTextIProject, TEXT_FILE1_PROJ_NAME, TEXT_FILE1_EXT_PATH);
FTextFile2 = addFileToProject(FTextIProject, TEXT_FILE2_PROJ_NAME, TEXT_FILE2_EXT_PATH);
//Commit files to repository
List<IResource> resources = new ArrayList<IResource>();
resources.add(FTextFile1);
resources.add(FTextFile2);
addFilesToRepository(resources);
commitFiles(FTextIProject, FTextRepository, "first Text Commit");
//Update files (Modify File1, Remove File2, Add File 3, Add File4)
FTextFile1 = changeContentOfFile(FTextFile1, TEXT_FILE1_EXT_MOD_PATH);
FTextFile2.delete(true, null);
FTextFile3 = addFileToProject(FTextIProject, TEXT_FILE3_PROJ_NAME, TEXT_FILE3_EXT_PATH);
FTextFile4 = addFileToProject(FTextIProject, TEXT_FILE4_PROJ_NAME, TEXT_FILE4_EXT_PATH);
//Commit modifications
resources.clear();
resources.add(FTextFile1);
resources.add(FTextFile2);
resources.add(FTextFile3);
resources.add(FTextFile4);
addFilesToRepository(resources);
commitFiles(FTextIProject, FTextRepository, "second Text Commit");
//Update files (Modify File4, Add File5, do not commit)
FTextFile4 = changeContentOfFile(FTextFile4, TEXT_FILE4_EXT_MOD_PATH);
FTextFile5 = addFileToProject(FTextIProject, TEXT_FILE5_PROJ_NAME, TEXT_FILE5_EXT_PATH);
}
private static IProject createProject(String aProjectName) throws CoreException, IOException {
TestUtils.waitForJobs();
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IProject project = root.getProject(aProjectName);
project.create(null);
project.open(null);
return project;
}
private static Repository createRepository(IProject aProject) throws CoreException, IOException {
TestUtils.waitForJobs();
File gitDir = new File(aProject.getLocation().toOSString(), Constants.DOT_GIT);
Repository repository = new FileRepository(gitDir);
try {
repository.create();
Config storedConfig = repository.getConfig();
storedConfig.setEnum("core", null, "autocrlf", AutoCRLF.FALSE);
} catch (IllegalStateException e) {
//Jusy go on
}
return repository;
}
private static String getWorkDir(Repository aRepository) throws CoreException, IOException {
String workDir;
try {
workDir = aRepository.getWorkTree().getCanonicalPath();
} catch (IOException err) {
workDir = aRepository.getWorkTree().getAbsolutePath();
}
workDir = workDir.replace('\\', '/');
if (!workDir.endsWith("/")) {
workDir += "/"; //$NON-NLS-1$
}
return workDir;
}
private static void connectProjectWithRepo(IProject aProject, Repository aRepository) throws CoreException,
IOException {
ConnectProviderOperation op = new ConnectProviderOperation(aProject, aRepository.getDirectory());
op.execute(null);
}
private static IJavaProject setProjectAsJava(IProject aProject) throws CoreException, IOException {
IJavaProject javaProject = JavaCore.create(aProject);
IFolder binFolder = aProject.getFolder("bin");
binFolder.create(false, true, null);
IProjectDescription description = aProject.getDescription();
description.setNatureIds(new String[] { JavaCore.NATURE_ID });
aProject.setDescription(description, null);
javaProject.setRawClasspath(new IClasspathEntry[0], null);
IPath outputLocation = binFolder.getFullPath();
javaProject.setOutputLocation(outputLocation, null);
IClasspathEntry[] oldEntries = javaProject.getRawClasspath();
IClasspathEntry[] newEntries = new IClasspathEntry[oldEntries.length + 1];
System.arraycopy(oldEntries, 0, newEntries, 0, oldEntries.length);
newEntries[oldEntries.length] = JavaRuntime.getDefaultJREContainerEntry();
javaProject.setRawClasspath(newEntries, null);
return javaProject;
}
private static IProject setProjectAsC(IProject aProject) throws CoreException, IOException {
IProjectDescription description = aProject.getDescription();
description.setNatureIds(new String[] { CProjectNature.C_NATURE_ID });
aProject.setDescription(description, null);
IProject cProject = CCorePlugin.getDefault().createCDTProject(description, aProject, null);
IFolder binFolder = aProject.getFolder("bin");
binFolder.create(false, true, null);
return cProject;
}
private static IFile addFileToProject(IProject aProject, String aProjFilepath, String aExtFilePath)
throws IOException, CoreException, URISyntaxException {
URL location = FileLocator.find(Platform.getBundle(R4EUITestPlugin.PLUGIN_ID), new Path(aExtFilePath), null);
File extFile = new File(FileLocator.toFileURL(location).toURI());
FileInputStream content = new FileInputStream(extFile);
IPath filePath = new Path(aProjFilepath);
IFolder folder = null;
for (int i = 0; i < filePath.segmentCount() - 1; i++) {
if (folder == null) {
folder = aProject.getFolder(filePath.segment(i));
} else {
folder = folder.getFolder(filePath.segment(i));
}
if (!folder.exists()) {
folder.create(false, true, null);
}
}
IFile file = aProject.getFile(filePath);
file.create(content, true, null);
content.close();
return file;
}
public static IFile changeContentOfFile(IFile file, String aNewContentsFilePath) throws CoreException, IOException,
URISyntaxException {
URL location = FileLocator.find(Platform.getBundle(R4EUITestPlugin.PLUGIN_ID), new Path(aNewContentsFilePath),
null);
File extFile = new File(FileLocator.toFileURL(location).toURI());
FileInputStream newContent = new FileInputStream(extFile);
file.setContents(newContent, 0, null);
newContent.close();
return file;
}
public static void addFilesToRepository(List<IResource> aResources) throws CoreException {
new AddToIndexOperation(aResources).execute(null);
}
public static void commitFiles(IProject aProject, Repository aRepository, String aCommitMsg) throws CoreException {
CommitOperation commitOperation = new CommitOperation(null, null, null, TestUtils.AUTHOR, TestUtils.COMMITTER,
aCommitMsg);
commitOperation.setCommitAll(true);
commitOperation.setRepository(aRepository);
commitOperation.execute(null);
aProject.refreshLocal(IResource.DEPTH_INFINITE, null);
}
public static void commitAmendFiles(IProject aProject, Repository aRepository, String aCommitMsg,
Collection<String> acommitFileList) throws CoreException {
CommitOperation commitOperation = new CommitOperation(null, acommitFileList, null, TestUtils.AUTHOR,
TestUtils.COMMITTER, aCommitMsg);
commitOperation.setAmending(true);
commitOperation.setRepository(aRepository);
commitOperation.execute(null);
aProject.refreshLocal(IResource.DEPTH_INFINITE, null);
}
private static void setupSharedFolder() {
String dir = System.getProperty("java.io.tmpdir");
if (!dir.endsWith(File.separator)) {
dir += File.separator;
}
dir = dir + "R4ETest";
FSharedFolder = dir;
}
public static void startNavigatorView() {
waitForJobs();
Display.getDefault().syncExec(new Runnable() {
public void run() {
try {
//First make sure the welcome view is removed
IViewPart welcomeView = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow()
.getActivePage()
.findView("org.eclipse.ui.internal.introview"); //$NON-NLS-1$
if (welcomeView != null) {
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().hideView(welcomeView);
}
FTestNavigatorView = (ReviewNavigatorView) PlatformUI.getWorkbench()
.getActiveWorkbenchWindow()
.getActivePage()
.showView(R4E_NAVIGATOR_VIEW_NAME);
} catch (PartInitException e) {
e.printStackTrace();
}
}
});
}
public static void cleanupTestEnvironment() throws CoreException, IOException {
cleanupSharedFolder(FSharedFolder + File.separator);
cleanupProject(FTextIProject, FTextRepository);
cleanupProject(FCIProject, FCRepository);
cleanupProject(FJavaIProject, FJavaRepository);
}
public static void stopNavigatorView() {
waitForJobs();
Display.getDefault().syncExec(new Runnable() {
public void run() {
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().hideView(FTestNavigatorView);
}
});
}
private static void cleanupProject(IProject aProject, Repository aRepository) throws CoreException, IOException {
//Disconnect project from repository
disconnectProject(aProject);
//Delete Repository
deleteRepository(aRepository);
//Delete project
deleteProject(aProject);
}
private static void disconnectProject(IProject aProject) throws CoreException, IOException {
Collection<IProject> projects = Collections.singleton(aProject.getProject());
DisconnectProviderOperation disconnect = new DisconnectProviderOperation(projects);
disconnect.execute(null);
}
private static void deleteRepository(Repository aRepository) throws CoreException, IOException {
Repository repository = aRepository;
repository.close();
repository = null;
}
private static void deleteProject(IProject aProject) throws CoreException, IOException {
if (aProject.exists()) {
aProject.refreshLocal(IResource.DEPTH_INFINITE, null);
aProject.close(null);
aProject.delete(true, true, null);
} else {
File f = new File(aProject.getLocation().toOSString());
if (f.exists()) {
FileUtils.delete(f, FileUtils.RECURSIVE | FileUtils.RETRY);
}
}
}
private static void cleanupSharedFolder(String aFolder) throws IOException {
if (null != aFolder) {
File f = new File(aFolder);
if (f.exists()) {
FileUtils.delete(f, FileUtils.RECURSIVE | FileUtils.RETRY);
}
}
}
public static void waitForJobs() {
//NOTE: In order to the above to work, no backgroup jobs (such as Usage Data Collector) should be running.
//otherwise we will be blocked forever here. An alternative solution is to join our thread to the
//executing job family, but that might make the tests unreliable because we cannot control
//scheduling of the jos which might cause livelocks
while (!Job.getJobManager().isIdle()) {
delay(1000);
}
/*
try {
Job.getJobManager().join(R4EUIConstants.R4E_UI_JOB_FAMILY, null);
} catch (OperationCanceledException e) {
R4EUITestPlugin.Ftracer.traceError("Exception: " + e.toString() + " (" + e.getMessage() + ")");
} catch (InterruptedException e) {
R4EUITestPlugin.Ftracer.traceError("Exception: " + e.toString() + " (" + e.getMessage() + ")");
}
*/
}
public static void delay(long aWaitTimeMillis) {
Display display = Display.getCurrent();
//If this is the UI thread, process input
if (null != display) {
long endTimeMillis = System.currentTimeMillis() + aWaitTimeMillis;
while (System.currentTimeMillis() < endTimeMillis) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.update();
} else {
//Just sleep
try {
Thread.sleep(aWaitTimeMillis);
} catch (InterruptedException e) {
//ignore
}
}
}
/**
* Get the initial input from the R4E model and populate the UI model with it
*
* @return the root element of the UI model
*/
public static IR4EUIModelElement getInitalInput() {
R4EUIModelController.loadModel();
final IR4EUIModelElement rootTreeNode = R4EUIModelController.getRootElement();
rootTreeNode.getChildren();
return rootTreeNode;
}
public static R4EUIRootElement getRootElement() {
return FRootElement;
}
/**
* Method setDefaultUser
*/
public static void setDefaultUser() {
R4EUITestMain.getInstance().getPreferencesProxy().setUser(TestConstants.DEFAULT_USER_ID);
R4EUITestMain.getInstance().getPreferencesProxy().setEmail(TestConstants.DEFAULT_USER_EMAIL);
Assert.assertEquals(TestConstants.DEFAULT_USER_ID, R4EUITestMain.getInstance().getPreferencesProxy().getUser());
Assert.assertEquals(TestConstants.DEFAULT_USER_EMAIL, R4EUITestMain.getInstance()
.getPreferencesProxy()
.getEmail());
}
}