7f7ac92a02b1a940d6606101fda9b96fe21bed7f
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.ui.swtbot.tests / src / org / eclipse / tracecompass / tmf / ui / swtbot / tests / viewers / events / CallsiteEventsInTableTest.java
1 /*******************************************************************************
2 * Copyright (c) 2014, 2015 Ericsson
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Bernd Hufmann - Initial API and implementation
11 *******************************************************************************/
12
13 package org.eclipse.tracecompass.tmf.ui.swtbot.tests.viewers.events;
14
15 import static org.junit.Assert.assertTrue;
16 import static org.junit.Assert.fail;
17 import static org.junit.Assume.assumeTrue;
18
19 import java.io.File;
20 import java.io.IOException;
21 import java.net.URI;
22 import java.net.URISyntaxException;
23 import java.net.URL;
24
25 import org.apache.log4j.ConsoleAppender;
26 import org.apache.log4j.Logger;
27 import org.apache.log4j.SimpleLayout;
28 import org.eclipse.core.runtime.FileLocator;
29 import org.eclipse.core.runtime.Path;
30 import org.eclipse.core.runtime.preferences.IEclipsePreferences;
31 import org.eclipse.core.runtime.preferences.InstanceScope;
32 import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
33 import org.eclipse.swtbot.eclipse.finder.matchers.WidgetMatcherFactory;
34 import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEditor;
35 import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
36 import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
37 import org.eclipse.swtbot.swt.finder.widgets.SWTBotMenu;
38 import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
39 import org.eclipse.swtbot.swt.finder.widgets.SWTBotTableItem;
40 import org.eclipse.tracecompass.internal.tmf.core.Activator;
41 import org.eclipse.tracecompass.tmf.core.tests.TmfCoreTestPlugin;
42 import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimePreferencesConstants;
43 import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestampFormat;
44 import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils;
45 import org.eclipse.ui.IEditorReference;
46 import org.hamcrest.Matcher;
47 import org.junit.AfterClass;
48 import org.junit.BeforeClass;
49 import org.junit.Test;
50 import org.junit.runner.RunWith;
51
52 /**
53 * SWTBot test for testing callsite feature.
54 *
55 * @author Bernd Hufmann
56 */
57 @RunWith(SWTBotJunit4ClassRunner.class)
58 public class CallsiteEventsInTableTest {
59
60 private static final String TRACE_PROJECT_NAME = "test";
61 private static final String CALLSITE_TRACE_NAME = "syslog_collapse";
62 private static final String CALLSITE_TRACE_PATH = "testfiles/" + CALLSITE_TRACE_NAME;
63 private static final String CALLSITE_TRACE_TYPE = "org.eclipse.linuxtools.tmf.tests.stubs.trace.text.testsyslog";
64 private static final String SOURCE_FILE_NAME = "SourceFile";
65 private static final String SOURCE_FILE_PATH = "testfiles/" + SOURCE_FILE_NAME;
66
67 private static File fTestFile = null;
68 private static File fSourceFile = null;
69
70 private static SWTWorkbenchBot fBot;
71
72 /** The Log4j logger instance. */
73 private static final Logger fLogger = Logger.getRootLogger();
74
75 /**
76 * Test Class setup
77 */
78 @BeforeClass
79 public static void init() {
80 SWTBotUtils.initialize();
81
82 /* set up test trace*/
83 URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(CALLSITE_TRACE_PATH), null);
84 URI uri;
85 try {
86 uri = FileLocator.toFileURL(location).toURI();
87 fTestFile = new File(uri);
88 } catch (URISyntaxException | IOException e) {
89 e.printStackTrace();
90 fail();
91 }
92
93 assumeTrue(fTestFile.exists());
94
95 IEclipsePreferences defaultPreferences = InstanceScope.INSTANCE.getNode(Activator.PLUGIN_ID);
96 defaultPreferences.put(ITmfTimePreferencesConstants.DATIME, "MMM d HH:mm:ss");
97 defaultPreferences.put(ITmfTimePreferencesConstants.SUBSEC, ITmfTimePreferencesConstants.SUBSEC_NO_FMT);
98 TmfTimestampFormat.updateDefaultFormats();
99
100 /* Create source file link */
101 location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(SOURCE_FILE_PATH), null);
102 try {
103 uri = FileLocator.toFileURL(location).toURI();
104 fSourceFile = new File(uri);
105 } catch (URISyntaxException | IOException e) {
106 e.printStackTrace();
107 fail();
108 }
109
110 assumeTrue(fSourceFile.exists());
111
112
113
114 /* Set up for swtbot */
115 SWTBotPreferences.TIMEOUT = 20000; /* 20 second timeout */
116 fLogger.removeAllAppenders();
117 fLogger.addAppender(new ConsoleAppender(new SimpleLayout(), ConsoleAppender.SYSTEM_OUT));
118 fBot = new SWTWorkbenchBot();
119
120 /* Close welcome view */
121 SWTBotUtils.closeView("Welcome", fBot);
122
123 /* Switch perspectives */
124 SWTBotUtils.switchToTracingPerspective();
125
126 /* Finish waiting for eclipse to load */
127 SWTBotUtils.waitForJobs();
128 }
129
130 /**
131 * Test class tear down method.
132 */
133 @AfterClass
134 public static void tearDown() {
135 fLogger.removeAllAppenders();
136 /* Set timestamp defaults */
137 IEclipsePreferences defaultPreferences = InstanceScope.INSTANCE.getNode(Activator.PLUGIN_ID);
138 defaultPreferences.put(ITmfTimePreferencesConstants.DATIME, ITmfTimePreferencesConstants.TIME_HOUR_FMT);
139 defaultPreferences.put(ITmfTimePreferencesConstants.SUBSEC, ITmfTimePreferencesConstants.SUBSEC_NANO_FMT);
140 TmfTimestampFormat.updateDefaultFormats();
141 }
142
143 /**
144 * Main test case
145 */
146 @Test
147 public void test() {
148 SWTBotUtils.createProject(TRACE_PROJECT_NAME);
149
150 // Open source file as a unknown trace
151 SWTBotUtils.openTrace(TRACE_PROJECT_NAME, fSourceFile.getAbsolutePath(), null);
152
153 // Open the actual trace
154 SWTBotUtils.openTrace(TRACE_PROJECT_NAME, fTestFile.getAbsolutePath(), CALLSITE_TRACE_TYPE);
155 SWTBotEditor editorBot = SWTBotUtils.activateEditor(fBot, fTestFile.getName());
156
157 SWTBotTable tableBot = editorBot.bot().table();
158
159 // Maximize editor area
160 SWTBotUtils.maximizeTable(tableBot);
161 SWTBotTableItem tableItem = tableBot.getTableItem(1);
162
163 // Open source code location
164 SWTBotMenu menuBot = tableItem.contextMenu("Open Source Code");
165 menuBot.click();
166
167 // Verify that source code was actually opened
168 Matcher<IEditorReference> matcher = WidgetMatcherFactory.withPartName(fSourceFile.getName());
169 final SWTBotEditor sourceEditorBot = fBot.editor(matcher);
170 assertTrue(sourceEditorBot.isActive());
171
172 editorBot.show();
173 SWTBotUtils.maximizeTable(tableBot);
174
175 fBot.closeAllEditors();
176 SWTBotUtils.deleteProject(TRACE_PROJECT_NAME, fBot);
177 }
178 }
This page took 0.037178 seconds and 4 git commands to generate.