--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2016 Ericsson
+ *
+ * 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
+ *******************************************************************************/
+package org.eclipse.tracecompass.tmf.analysis.xml.ui.swtbot.tests.timegraph;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.core.runtime.Path;
+import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
+import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
+import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
+import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.module.XmlAnalysisModuleSource;
+import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.module.XmlUtils;
+import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.timegraph.XmlTimeGraphView;
+import org.eclipse.tracecompass.tmf.analysis.xml.core.tests.Activator;
+import org.eclipse.tracecompass.tmf.analysis.xml.core.tests.common.TmfXmlTestFiles;
+import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotTimeGraph;
+import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotTimeGraphEntry;
+import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils;
+import org.eclipse.tracecompass.tmf.ui.tests.shared.WaitUtils;
+import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.widgets.TimeGraphControl;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Class for XML Timegraph View test
+ *
+ * @author Jean-Christian Kouame
+ */
+@RunWith(SWTBotJunit4ClassRunner.class)
+public class XmlTimegraphViewTest {
+
+ private static final String PROJECT_NAME = "test";
+ private static final String TRACE_TYPE = "org.eclipse.linuxtools.tmf.core.tests.xmlstub";
+ private static final String TRACE_NAME = "testTrace2.xml";
+ private static final String ANALYSIS_NAME = "test.xml.conditions";
+ private static final String VIEW_NAME = "Xml Timegraph View Test";
+ private static SWTWorkbenchBot fBot;
+
+ /**
+ * Things to setup
+ */
+ @Before
+ public void before() {
+
+ SWTBotUtils.initialize();
+ Thread.currentThread().setName("SWTBotTest");
+ /* set up for swtbot */
+ SWTBotPreferences.TIMEOUT = 10000; /* 10 second timeout */
+ SWTWorkbenchBot bot = new SWTWorkbenchBot();
+ SWTBotUtils.closeView("welcome", bot);
+ /* Switch perspectives */
+ SWTBotUtils.switchToTracingPerspective();
+ /* Finish waiting for eclipse to load */
+ WaitUtils.waitForJobs();
+
+ fBot = new SWTWorkbenchBot();
+
+ loadXmlFile();
+ openTrace();
+ openView(VIEW_NAME);
+ }
+
+ /**
+ * Bypassing the native import wizard and programmatically load the XML
+ * analysis
+ */
+ private static void loadXmlFile() {
+ XmlUtils.addXmlFile(TmfXmlTestFiles.CONDITION_FILE.getFile());
+ XmlUtils.addXmlFile(TmfXmlTestFiles.VALID_TIMEGRAPH_VIEW_ELEMENT_FILE.getFile());
+ XmlAnalysisModuleSource.notifyModuleChange();
+ }
+
+ /**
+ * Create a tracing project and open the test trace
+ */
+ private static void openTrace() {
+ SWTBotUtils.createProject(PROJECT_NAME);
+ SWTBotUtils.openTrace(PROJECT_NAME, Activator.getAbsolutePath(new Path("test_traces/testTrace2.xml")).toString(), TRACE_TYPE);
+ WaitUtils.waitForJobs();
+ }
+
+ /**
+ * Open a the timegraph view
+ *
+ * @param viewTitle
+ * The view title
+ */
+ private static void openView(final String viewTitle) {
+ SWTBotTreeItem treeItem = SWTBotUtils.selectTracesFolder(fBot, PROJECT_NAME);
+ treeItem = SWTBotUtils.getTreeItem(fBot, treeItem, TRACE_NAME, "Views", ANALYSIS_NAME, viewTitle);
+ treeItem.doubleClick();
+ }
+
+ /**
+ * Test that the timegraph view is open and is populated
+ */
+ @Test
+ public void testData() {
+ SWTBotTimeGraph timegraph = getTimegraph();
+
+ // Test the window range
+ TimeGraphControl widget = timegraph.widget;
+ assertNotNull(widget);
+ assertEquals("window start time", 1, widget.getTimeDataProvider().getTime0());
+ assertEquals("window end time", 7, widget.getTimeDataProvider().getTime1());
+
+ // test entries
+ SWTBotTimeGraphEntry[] entries = timegraph.getEntries();
+ assertEquals("number of entries", 1, entries.length);
+ entries = entries[0].getEntries();
+ assertEquals("number of entries", 1, entries.length);
+ SWTBotTimeGraphEntry entry = entries[0];
+ assertNotNull(entry);
+ assertEquals("name of entries[0]", "checkpoint", entry.getText());
+ }
+
+ private static SWTBotTimeGraph getTimegraph() {
+ SWTBotView viewBot = fBot.viewById(XmlTimeGraphView.ID);
+ SWTBotTimeGraph timegraph = new SWTBotTimeGraph(viewBot.bot());
+ assertTrue("timegraph visible", timegraph.isVisible());
+ timegraph.setFocus();
+ return timegraph;
+ }
+
+ /**
+ * Close the editor and delete the project
+ */
+ @After
+ public void tearDown() {
+ fBot.closeAllEditors();
+ SWTBotUtils.deleteProject(PROJECT_NAME, fBot);
+ }
+}