tmf: Add waitUntil / condition to tmf.ui.tests
[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.tracecompass.tmf.ui.tests.shared.WaitUtils;
46 import org.eclipse.ui.IEditorReference;
47 import org.hamcrest.Matcher;
48 import org.junit.AfterClass;
49 import org.junit.BeforeClass;
50 import org.junit.Test;
51 import org.junit.runner.RunWith;
52
53 /**
54 * SWTBot test for testing callsite feature.
55 *
56 * @author Bernd Hufmann
57 */
58 @RunWith(SWTBotJunit4ClassRunner.class)
59 public class CallsiteEventsInTableTest {
60
61 private static final String TRACE_PROJECT_NAME = "test";
62 private static final String CALLSITE_TRACE_NAME = "syslog_collapse";
63 private static final String CALLSITE_TRACE_PATH = "testfiles/" + CALLSITE_TRACE_NAME;
64 private static final String CALLSITE_TRACE_TYPE = "org.eclipse.linuxtools.tmf.tests.stubs.trace.text.testsyslog";
65 private static final String SOURCE_FILE_NAME = "SourceFile";
66 private static final String SOURCE_FILE_PATH = "testfiles/" + SOURCE_FILE_NAME;
67
68 private static File fTestFile = null;
69 private static File fSourceFile = null;
70
71 private static SWTWorkbenchBot fBot;
72
73 /** The Log4j logger instance. */
74 private static final Logger fLogger = Logger.getRootLogger();
75
76 /**
77 * Test Class setup
78 */
79 @BeforeClass
80 public static void init() {
81 SWTBotUtils.initialize();
82
83 /* set up test trace*/
84 URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(CALLSITE_TRACE_PATH), null);
85 URI uri;
86 try {
87 uri = FileLocator.toFileURL(location).toURI();
88 fTestFile = new File(uri);
89 } catch (URISyntaxException | IOException e) {
90 e.printStackTrace();
91 fail();
92 }
93
94 assumeTrue(fTestFile.exists());
95
96 IEclipsePreferences defaultPreferences = InstanceScope.INSTANCE.getNode(Activator.PLUGIN_ID);
97 defaultPreferences.put(ITmfTimePreferencesConstants.DATIME, "MMM d HH:mm:ss");
98 defaultPreferences.put(ITmfTimePreferencesConstants.SUBSEC, ITmfTimePreferencesConstants.SUBSEC_NO_FMT);
99 TmfTimestampFormat.updateDefaultFormats();
100
101 /* Create source file link */
102 location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(SOURCE_FILE_PATH), null);
103 try {
104 uri = FileLocator.toFileURL(location).toURI();
105 fSourceFile = new File(uri);
106 } catch (URISyntaxException | IOException e) {
107 e.printStackTrace();
108 fail();
109 }
110
111 assumeTrue(fSourceFile.exists());
112
113
114
115 /* Set up for swtbot */
116 SWTBotPreferences.TIMEOUT = 20000; /* 20 second timeout */
117 fLogger.removeAllAppenders();
118 fLogger.addAppender(new ConsoleAppender(new SimpleLayout(), ConsoleAppender.SYSTEM_OUT));
119 fBot = new SWTWorkbenchBot();
120
121 /* Close welcome view */
122 SWTBotUtils.closeView("Welcome", fBot);
123
124 /* Switch perspectives */
125 SWTBotUtils.switchToTracingPerspective();
126
127 /* Finish waiting for eclipse to load */
128 WaitUtils.waitForJobs();
129 }
130
131 /**
132 * Test class tear down method.
133 */
134 @AfterClass
135 public static void tearDown() {
136 fLogger.removeAllAppenders();
137 /* Set timestamp defaults */
138 IEclipsePreferences defaultPreferences = InstanceScope.INSTANCE.getNode(Activator.PLUGIN_ID);
139 defaultPreferences.put(ITmfTimePreferencesConstants.DATIME, ITmfTimePreferencesConstants.TIME_HOUR_FMT);
140 defaultPreferences.put(ITmfTimePreferencesConstants.SUBSEC, ITmfTimePreferencesConstants.SUBSEC_NANO_FMT);
141 TmfTimestampFormat.updateDefaultFormats();
142 }
143
144 /**
145 * Main test case
146 */
147 @Test
148 public void test() {
149 SWTBotUtils.createProject(TRACE_PROJECT_NAME);
150
151 // Open source file as a unknown trace
152 SWTBotUtils.openTrace(TRACE_PROJECT_NAME, fSourceFile.getAbsolutePath(), null);
153
154 // Open the actual trace
155 SWTBotUtils.openTrace(TRACE_PROJECT_NAME, fTestFile.getAbsolutePath(), CALLSITE_TRACE_TYPE);
156 SWTBotEditor editorBot = SWTBotUtils.activateEditor(fBot, fTestFile.getName());
157
158 SWTBotTable tableBot = editorBot.bot().table();
159
160 // Maximize editor area
161 SWTBotUtils.maximizeTable(tableBot);
162 SWTBotTableItem tableItem = tableBot.getTableItem(1);
163
164 // Open source code location
165 SWTBotMenu menuBot = tableItem.contextMenu("Open Source Code");
166 menuBot.click();
167
168 // Verify that source code was actually opened
169 Matcher<IEditorReference> matcher = WidgetMatcherFactory.withPartName(fSourceFile.getName());
170 final SWTBotEditor sourceEditorBot = fBot.editor(matcher);
171 assertTrue(sourceEditorBot.isActive());
172
173 editorBot.show();
174 SWTBotUtils.maximizeTable(tableBot);
175
176 fBot.closeAllEditors();
177 SWTBotUtils.deleteProject(TRACE_PROJECT_NAME, fBot);
178 }
179 }
This page took 0.036295 seconds and 5 git commands to generate.