tmf: Try to make the shell fully visible in SWTBot at start
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.ui.swtbot.tests / src / org / eclipse / tracecompass / tmf / ui / swtbot / tests / viewers / events / SDViewTest.java
CommitLineData
608d90e7
MK
1/*******************************************************************************
2 * Copyright (c) 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 * Matthew Khouzam - Initial API and implementation
11 *******************************************************************************/
12package org.eclipse.tracecompass.tmf.ui.swtbot.tests.viewers.events;
13
14import static org.junit.Assert.assertArrayEquals;
15import static org.junit.Assert.assertEquals;
16import static org.junit.Assert.assertNotNull;
17
18import java.io.File;
19import java.io.IOException;
20import java.util.ArrayList;
21import java.util.List;
22
23import org.apache.log4j.ConsoleAppender;
24import org.apache.log4j.Logger;
25import org.apache.log4j.SimpleLayout;
4ad44445 26import org.eclipse.core.runtime.Platform;
608d90e7
MK
27import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
28import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
29import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
30import org.eclipse.swtbot.swt.finder.widgets.SWTBotToolbarButton;
31import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
32import org.eclipse.tracecompass.tmf.core.io.BufferedRandomAccessFile;
33import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils;
34import org.eclipse.tracecompass.tmf.ui.views.uml2sd.SDView;
35import org.eclipse.tracecompass.tmf.ui.views.uml2sd.core.Frame;
36import org.junit.After;
37import org.junit.AfterClass;
38import org.junit.Before;
39import org.junit.BeforeClass;
40import org.junit.Test;
41
42/**
43 * Test for Sequence Diagram view in trace compass
44 */
45public class SDViewTest {
46
47 private static final String UML2DVIEW_ID = "org.eclipse.linuxtools.tmf.ui.tmfUml2SDSyncView";
48
49 private static final String XMLSTUB_ID = "org.eclipse.linuxtools.tmf.core.tests.xmlstub";
50
51 private static final String TRACE_START = "<trace>";
52 private static final String EVENT_BEGIN = "<event timestamp=\"";
53 private static final String EVENT_MIDDLE1 = " \" name=\"";
54 private static final String EVENT_MIDDLE2 = "\">";
55 private static final String FIELD_SENDER = "<field name=\"sender\" value=\"";
56 private static final String FIELD_RECEIVER = "<field name=\"receiver\" value=\"";
57 private static final String FIELD_SIGNAL = "<field name=\"signal\" value=\"";
58 private static final String FIELD_END = "\" type=\"string\" />";
59 private static final String EVENT_END = "</event>";
60 private static final String TRACE_END = "</trace>";
61
62 private static final String PROJECT_NAME = "TestForFiltering";
63
64 /** The Log4j logger instance. */
65 private static final Logger fLogger = Logger.getRootLogger();
66 private static SWTWorkbenchBot fBot;
67
68 private static String makeEvent(int ts, String eventName, String send, String recv, String signal) {
69 return EVENT_BEGIN + Integer.toString(ts) + EVENT_MIDDLE1 + eventName + EVENT_MIDDLE2 + FIELD_SENDER + send + FIELD_END + FIELD_RECEIVER + recv + FIELD_END + FIELD_SIGNAL + signal + FIELD_END + EVENT_END + "\n";
70 }
71
72 private static File fFileLocation;
73
74 /**
75 * Initialization, creates a temp trace
76 *
77 * @throws IOException
78 * should not happen
79 */
80 @BeforeClass
81 public static void init() throws IOException {
5785ab49 82 SWTBotUtils.initialize();
608d90e7
MK
83 Thread.currentThread().setName("SWTBot Thread"); // for the debugger
84 /* set up for swtbot */
85 SWTBotPreferences.TIMEOUT = 20000; /* 20 second timeout */
f10c30a0 86 fLogger.removeAllAppenders();
608d90e7
MK
87 fLogger.addAppender(new ConsoleAppender(new SimpleLayout()));
88 fBot = new SWTWorkbenchBot();
89
90 SWTBotUtils.closeView("welcome", fBot);
91
92 SWTBotUtils.switchToTracingPerspective();
93 /* finish waiting for eclipse to load */
94 SWTBotUtils.waitForJobs();
95 fFileLocation = File.createTempFile("sample", ".xml");
96 String eventNames[] = { "test:SEND", "test:RECEIVE" };
97 String targets[] = { "peer1", "peer2" };
98
99 try (BufferedRandomAccessFile braf = new BufferedRandomAccessFile(fFileLocation, "rw")) {
100 braf.writeBytes(TRACE_START);
101 for (int i = 0; i < 100; i++) {
102 braf.writeBytes(makeEvent(i * i * 100, eventNames[i % 2], targets[i % 2], targets[(i + 1) % 2], Integer.toString(i % 2 + 1000)));
103 }
104 braf.writeBytes(TRACE_END);
105 }
106 }
107
108 /**
109 * Open a trace in an editor
110 */
111 @Before
112 public void beforeTest() {
113 SWTBotUtils.createProject(PROJECT_NAME);
114 SWTBotTreeItem treeItem = SWTBotUtils.selectTracesFolder(fBot, PROJECT_NAME);
115 assertNotNull(treeItem);
116 SWTBotUtils.openTrace(PROJECT_NAME, fFileLocation.getAbsolutePath(), XMLSTUB_ID);
117 SWTBotUtils.openView(UML2DVIEW_ID);
118 }
119
120 /**
121 * Delete the file
122 */
123 @AfterClass
124 public static void cleanUp() {
125 fFileLocation.delete();
f10c30a0 126 fLogger.removeAllAppenders();
608d90e7
MK
127 }
128
129 /**
130 * Close the editor
131 */
132 @After
133 public void tearDown() {
134 fBot.closeAllEditors();
135 SWTBotUtils.deleteProject(PROJECT_NAME, fBot);
136 }
137
138 /**
139 * Test Sequence diagram view, counting the columns
140 */
141 @Test
142 public void testSDView() {
143 SWTBotView viewBot = fBot.viewById(UML2DVIEW_ID);
144
145 assertNotNull(viewBot);
146 viewBot.setFocus();
147 SWTBotUtils.waitForJobs();
148 List<SWTBotToolbarButton> viewButtons = viewBot.getToolbarButtons();
149 List<String> titles = new ArrayList<>();
150 for (SWTBotToolbarButton buttonBot : viewButtons) {
151 titles.add(buttonBot.getToolTipText());
152 }
4ad44445
MAL
153
154 final char commandKeyChar = (char) 0x2318;
155 final String findShortcut = (Platform.getOS().equals(Platform.OS_MACOSX) ? commandKeyChar : "Ctrl+") + "F";
608d90e7
MK
156 String[] expected = { "Reset zoom factor", "Select",
157 "Zoom in the diagram", "Zoom out the diagram",
158 "Go to next page", "Go to previous page",
159 "Go to first page", "Go to last page",
4ad44445 160 "Find... (" + findShortcut + ")"
608d90e7
MK
161 };
162 assertArrayEquals("Buttons", expected, titles.toArray(new String[0]));
163 SDView view = (SDView) viewBot.getViewReference().getPart(false);
164 Frame frame = view.getFrame();
165 assertEquals(2, frame.lifeLinesCount());
166 }
167}
This page took 0.053581 seconds and 5 git commands to generate.