blob: aa0ecb908d47fd3a6cd318b287432bd6f03a2573 [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.latency;
import static org.junit.Assert.fail;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Logger;
import org.apache.log4j.SimpleLayout;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
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.testtraces.ctf.CtfTestTrace;
import org.eclipse.tracecompass.tmf.analysis.xml.core.tests.common.TmfXmlTestFiles;
import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils;
import org.eclipse.tracecompass.tmf.ui.tests.shared.WaitUtils;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
/**
* Base class for pattern latency view test
*
* @author Jean-Christian Kouame
*/
@RunWith(SWTBotJunit4ClassRunner.class)
public abstract class PatternLatencyViewTestBase {
private static final String PROJECT_NAME = "test";
private static final String TRACE_TYPE = "org.eclipse.linuxtools.lttng2.kernel.tracetype";
private static final String TRACE_NAME = "bug446190";
/** The Log4j logger instance. */
private static final Logger fLogger = Logger.getRootLogger();
/**
* The workbench bot
*/
protected static SWTWorkbenchBot fBot;
/**
* Things to setup
*/
@BeforeClass
public static void beforeClass() {
SWTBotUtils.initialize();
Thread.currentThread().setName("SWTBotTest");
/* set up for swtbot */
SWTBotPreferences.TIMEOUT = 20000; /* 20 second timeout */
SWTBotPreferences.KEYBOARD_LAYOUT = "EN_US";
fLogger.removeAllAppenders();
fLogger.addAppender(new ConsoleAppender(new SimpleLayout(), ConsoleAppender.SYSTEM_OUT));
/* Finish waiting for eclipse to load */
WaitUtils.waitForJobs();
fBot = new SWTWorkbenchBot();
loadXmlFile();
openTrace();
}
/**
* Clean up
*/
@AfterClass
public static void afterClass() {
fLogger.removeAllAppenders();
}
/**
* Create a tracing project and open the test trace
*/
private static void openTrace() {
try {
String tracePath = FileUtils.toFile(FileLocator.toFileURL(CtfTestTrace.ARM_64_BIT_HEADER.getTraceURL())).getAbsolutePath();
SWTBotUtils.createProject(PROJECT_NAME);
SWTBotUtils.openTrace(PROJECT_NAME, tracePath, TRACE_TYPE);
WaitUtils.waitForJobs();
} catch (IOException e) {
fail("Failed to get the trace.");
}
}
/**
* Bypassing the native import wizard and programmatically load the XML
* analysis
*/
private static void loadXmlFile() {
XmlUtils.addXmlFile(TmfXmlTestFiles.VALID_PATTERN_FILE.getFile());
XmlAnalysisModuleSource.notifyModuleChange();
}
/**
* set up before the test and open the latency view
*/
@Before
public void before() {
openView(getViewTitle());
}
/**
* Closes the view
*/
@After
public void closeView() {
fBot.closeAllEditors();
SWTBotUtils.deleteProject(PROJECT_NAME, fBot);
SWTBotUtils.closeViewById(getViewId(), fBot);
}
/**
* Open a pattern latency 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", "XML system call analysis", viewTitle);
treeItem.doubleClick();
WaitUtils.waitForJobs();
}
/**
* Get the id of the latency view tested
*
* @return The view id
*/
protected abstract String getViewId();
/**
* Get the the latency view title
*
* @return The view title
*/
protected abstract String getViewTitle();
}