/*******************************************************************************
- * Copyright (c) 2013 École Polytechnique de Montréal
+ * Copyright (c) 2013, 2014 École Polytechnique de Montréal
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v1.0 which
package org.eclipse.linuxtools.tmf.ui.tests.shared;
-import static org.junit.Assume.assumeTrue;
-
import java.io.File;
+import java.lang.reflect.InvocationTargetException;
import java.util.concurrent.TimeoutException;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.linuxtools.internal.tmf.ui.Activator;
import org.eclipse.linuxtools.internal.tmf.ui.project.model.TmfImportHelper;
import org.eclipse.linuxtools.tmf.core.TmfCommonConstants;
-import org.eclipse.linuxtools.tmf.core.tests.shared.CtfTmfTestTrace;
+import org.eclipse.linuxtools.tmf.core.tests.shared.TmfTestTrace;
import org.eclipse.linuxtools.tmf.ui.project.model.ITmfProjectModelElement;
+import org.eclipse.linuxtools.tmf.ui.project.model.TmfCommonProjectElement;
import org.eclipse.linuxtools.tmf.ui.project.model.TmfExperimentElement;
import org.eclipse.linuxtools.tmf.ui.project.model.TmfProjectElement;
import org.eclipse.linuxtools.tmf.ui.project.model.TmfProjectRegistry;
import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceElement;
-import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceFolder;
+import org.eclipse.linuxtools.tmf.ui.project.model.TmfTracesFolder;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
/**
* Creates objects used for this package's testing purposes
public class ProjectModelTestData {
/* Maximum number of thread delays the main thread will do before timing out */
- private static final int DELAY_COUNTER = 10;
+ private static final int DELAY_COUNTER = 1000;
/* Default delay time when having the main thread sleep. */
- private static final int DEFAULT_DELAY = 500;
+ private static final long DEFAULT_DELAY = 500;
/** Default test project name */
public static final String PROJECT_NAME = "Test_Project";
- private static final CtfTmfTestTrace testTrace = CtfTmfTestTrace.KERNEL;
+ private static final TmfTestTrace testTrace = TmfTestTrace.A_TEST_10K;
/**
* Gets a project element with traces all initialized
*/
public static TmfProjectElement getFilledProject() throws CoreException {
- assumeTrue(CtfTmfTestTrace.KERNEL.exists());
-
IProject project = TmfProjectRegistry.createProject(PROJECT_NAME, null, null);
- IFolder traceFolder = project.getFolder(TmfTraceFolder.TRACE_FOLDER_NAME);
+ IFolder traceFolder = project.getFolder(TmfTracesFolder.TRACES_FOLDER_NAME);
/* Create a trace, if it exist, it will be replaced */
- File file = new File(testTrace.getPath());
+ File file = new File(testTrace.getFullPath());
String path = file.getAbsolutePath();
final IPath pathString = Path.fromOSString(path);
IResource linkedTrace = TmfImportHelper.createLink(traceFolder, pathString, pathString.lastSegment());
return null;
}
linkedTrace.setPersistentProperty(TmfCommonConstants.TRACETYPE,
- "org.eclipse.linuxtools.tmf.tests.ctf.tracetype");
+ "org.eclipse.linuxtools.tmf.core.tests.tracetype");
final TmfProjectElement projectElement = TmfProjectRegistry.getProject(project, true);
TmfTraceElement traceElement = projectElement.getTracesFolder().getTraces().get(0);
traceElement.refreshTraceType();
+ projectElement.refresh();
+
return projectElement;
}
+ /**
+ * Adds a new experiment to the project
+ *
+ * @param projectElement
+ * The project to add to
+ * @param experimentName
+ * Name of the experiment
+ * @return The newly created experiment
+ */
+ public static TmfExperimentElement addExperiment(TmfProjectElement projectElement, String experimentName) {
+ IFolder experimentFolder = projectElement.getExperimentsFolder().getResource();
+ final IFolder folder = experimentFolder.getFolder(experimentName);
+
+ WorkspaceModifyOperation operation = new WorkspaceModifyOperation() {
+ @Override
+ public void execute(IProgressMonitor monitor) throws CoreException {
+ monitor.beginTask("", 1000);
+ folder.create(false, true, monitor);
+ monitor.done();
+ }
+ };
+ try {
+ PlatformUI.getWorkbench().getProgressService().busyCursorWhile(operation);
+ } catch (InterruptedException | InvocationTargetException | RuntimeException exception) {
+
+ }
+
+ for (ITmfProjectModelElement el : projectElement.getExperimentsFolder().getChildren()) {
+ if (el.getName().equals(experimentName) && (el instanceof TmfExperimentElement)) {
+ return (TmfExperimentElement) el;
+ }
+ }
+ return null;
+ }
+
/**
* Get the name of the test trace element
*
*/
public static void deleteProject(TmfProjectElement project) {
/* Delete experiments */
- for (ITmfProjectModelElement element : project.getExperimentsFolder().getChildren()) {
+ ITmfProjectModelElement[] experiments = project.getExperimentsFolder().getChildren().toArray(new ITmfProjectModelElement[0]);
+ for (ITmfProjectModelElement element : experiments) {
if (element instanceof TmfExperimentElement) {
TmfExperimentElement experiment = (TmfExperimentElement) element;
IResource resource = experiment.getResource();
}
/* Delete traces */
- for (ITmfProjectModelElement element : project.getTracesFolder().getChildren()) {
+ ITmfProjectModelElement[] traces = project.getTracesFolder().getChildren().toArray(new ITmfProjectModelElement[0]);
+ for (ITmfProjectModelElement element : traces) {
if (element instanceof TmfTraceElement) {
TmfTraceElement trace = (TmfTraceElement) element;
IResource resource = trace.getResource();
* null, we throw a timeout exception, the trace has not opened.
*/
public static void delayUntilTraceOpened(final ITmfProjectModelElement projectElement) throws TimeoutException {
- if (projectElement instanceof TmfTraceElement) {
- TmfTraceElement traceElement = (TmfTraceElement) projectElement;
- final long deadline = System.nanoTime() + (DELAY_COUNTER * DEFAULT_DELAY * 1000000);
+ if (projectElement instanceof TmfCommonProjectElement) {
+ TmfCommonProjectElement traceElement = (TmfCommonProjectElement) projectElement;
+ final long deadline = System.nanoTime() + (DELAY_COUNTER * DEFAULT_DELAY * 1000000L);
do {
delayThread(DEFAULT_DELAY);
if (traceElement.getTrace() != null) {