tmf: Support folders in tracing projects
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui.tests / shared / org / eclipse / linuxtools / tmf / ui / tests / shared / ProjectModelTestData.java
index bbb4a2eae8dfa61a67ae1aaa79d32bbbb43976e4..b9db1265c7c66e1f16ac04ee9877478d0788834a 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * 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
@@ -12,9 +12,8 @@
 
 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;
@@ -22,19 +21,23 @@ import org.eclipse.core.resources.IProject;
 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
@@ -44,14 +47,14 @@ import org.eclipse.swt.widgets.Display;
 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
@@ -62,13 +65,11 @@ public class ProjectModelTestData {
      */
     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());
@@ -76,15 +77,52 @@ public class ProjectModelTestData {
             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
      *
@@ -105,7 +143,8 @@ public class ProjectModelTestData {
      */
     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();
@@ -129,7 +168,8 @@ public class ProjectModelTestData {
         }
 
         /* 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();
@@ -208,9 +248,9 @@ public class ProjectModelTestData {
      *             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) {
This page took 0.026148 seconds and 5 git commands to generate.