blob: 7521e82220548ec648bd07bb1dcd0e94b6f69c0e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016, 2018 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
package org.eclipse.tracecompass.tmf.analysis.xml.ui.swtbot.tests.timegraph;
import static org.junit.Assert.assertEquals;
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 */
/* 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();
WaitUtils.waitForJobs();
}
/**
* 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;
SWTBotUtils.waitUntil(control -> control.getTimeDataProvider().getTime0() == 1, widget, "window start time");
SWTBotUtils.waitUntil(control -> control.getTimeDataProvider().getTime1() == 7, widget, "window end time");
// test entries
SWTBotTimeGraphEntry traceEntry = timegraph.getEntry(TRACE_NAME);
SWTBotTimeGraphEntry entry = traceEntry.getEntry("checkpoint");
assertEquals("number of entries", 1, timegraph.getEntries().length);
assertEquals("number of entries", 1, traceEntry.getEntries().length);
assertEquals("name of entry", "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);
}
}