7c8fd433218e202fcfc9db731a1239154dbc69a0
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.ui.swtbot.tests / src / org / eclipse / tracecompass / tmf / ui / swtbot / tests / parsers / custom / TestCustomTxtWizard.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 * Matthew Khouzam - Initial API and implementation
11 *******************************************************************************/
12
13 package org.eclipse.tracecompass.tmf.ui.swtbot.tests.parsers.custom;
14
15 import static org.junit.Assert.assertEquals;
16 import static org.junit.Assert.assertNotNull;
17
18 import java.io.File;
19 import java.io.FileNotFoundException;
20 import java.io.FileWriter;
21 import java.io.IOException;
22
23 import org.eclipse.core.resources.ResourcesPlugin;
24 import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
25 import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
26 import org.eclipse.swtbot.swt.finder.waits.Conditions;
27 import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
28 import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils;
29 import org.junit.Test;
30 import org.junit.runner.RunWith;
31
32 /**
33 * Custom text wizard tests
34 *
35 * Some reminders to help making tests (javadoc to keep formatting)
36 *
37 * Button reminder
38 *
39 * <pre>
40 * 0 Time Stamp Format Help
41 * 1 Remove line
42 * 2 Add next line
43 * 3 Add child line
44 * 4 Move up
45 * 5 Move down
46 * 6 Regular Expression Help
47 * 7 Remove group (group 1 toggle)
48 * 8 Remove group (group 2 toggle)
49 * 9 Add group (group 3 toggle ...)
50 * 10 Show parsing result
51 * 11 Preview Legend
52 * </pre>
53 *
54 * Combo box reminder
55 *
56 * <pre>
57 * 0 cardinality
58 * 1 event type (message, timestamp...)
59 * 2 how to handle the data (set, append...)
60 * repeat
61 * </pre>
62 *
63 * @author Matthew Khouzam
64 */
65 @RunWith(SWTBotJunit4ClassRunner.class)
66 public class TestCustomTxtWizard extends AbstractCustomParserWizard {
67
68 private static final String MANAGE_CUSTOM_PARSERS_SHELL_TITLE = "Manage Custom Parsers";
69 private static final String CUSTOM_TEXT_PARSER_SHELL_TITLE = "Custom Text Parser";
70 private static final String PROJECT_NAME = "TestText";
71 private static final String CATEGORY_NAME = "Test Category";
72 private static final String TRACETYPE_NAME = "Test Trace";
73 private static final String EXPECTED_TEST_DEFINITION = "<Definition category=\"Test Category\" name=\"Test Trace\">\n" +
74 "<TimeStampOutputFormat>ss</TimeStampOutputFormat>\n" +
75 "<InputLine>\n" +
76 "<Cardinality max=\"2147483647\" min=\"0\"/>\n" +
77 "<RegEx>\\s*(\\d\\d)\\s(.*\\S)</RegEx>\n" +
78 "<InputData action=\"0\" format=\"ss\" name=\"Time Stamp\"/>\n" +
79 "<InputData action=\"0\" name=\"Message\"/>\n" +
80 "</InputLine>\n" +
81 "<InputLine>\n" +
82 "<Cardinality max=\"2147483647\" min=\"0\"/>\n" +
83 "<RegEx>([^0-9]*)</RegEx>\n" +
84 "<InputData action=\"2\" name=\"Message\"/>\n" +
85 "</InputLine>\n" +
86 "<OutputColumn name=\"Time Stamp\"/>\n" +
87 "<OutputColumn name=\"Message\"/>\n";
88
89 /**
90 * Test to create a custom txt trace and compare the xml
91 *
92 * @throws IOException
93 * the xml file is not accessible, this is bad
94 * @throws FileNotFoundException
95 * the xml file wasn't written, this is bad
96 */
97 @Test
98 public void testNew() throws FileNotFoundException, IOException {
99 File xmlFile = ResourcesPlugin.getWorkspace().getRoot().getLocation().append(".metadata/.plugins/org.eclipse.tracecompass.tmf.core/custom_txt_parsers.xml").toFile();
100 SWTBotUtils.createProject(PROJECT_NAME);
101 SWTBotView proejctExplorerBot = fBot.viewByTitle("Project Explorer");
102 proejctExplorerBot.show();
103 SWTBotTreeItem treeItem = proejctExplorerBot.bot().tree().getTreeItem(PROJECT_NAME);
104 treeItem.select();
105 treeItem.expand();
106 SWTBotTreeItem treeNode = null;
107 for (String node : treeItem.getNodes()) {
108 if (node.startsWith("Trace")) {
109 treeNode = treeItem.getNode(node);
110 break;
111 }
112
113 }
114 assertNotNull(treeNode);
115 treeNode.contextMenu("Manage Custom Parsers...").click();
116 fBot.waitUntil(Conditions.shellIsActive(MANAGE_CUSTOM_PARSERS_SHELL_TITLE));
117 fBot.shell(MANAGE_CUSTOM_PARSERS_SHELL_TITLE).setFocus();
118
119 fBot.button("New...").click();
120 fBot.waitUntil(Conditions.shellIsActive(CUSTOM_TEXT_PARSER_SHELL_TITLE));
121
122 fBot.textWithLabel("Category:").setText(CATEGORY_NAME);
123 fBot.textWithLabel("Trace type:").setText(TRACETYPE_NAME);
124 fBot.textWithLabel("Time Stamp format:").setText("ss");
125 fBot.comboBox(1).setSelection("Time Stamp");
126 fBot.textWithLabel("format:").setText("ss");
127 fBot.button(8).click();
128 fBot.button(2).click();
129 SWTBotTreeItem[] treeItems = fBot.tree().getAllItems();
130 SWTBotTreeItem eventLine[] = new SWTBotTreeItem[2];
131 treeItems = fBot.tree().getAllItems();
132 for (SWTBotTreeItem item : treeItems) {
133 if (item.getText().startsWith("Root Line 1")) {
134 eventLine[0] = item;
135 }
136 if (item.getText().startsWith("Root Line 2")) {
137 eventLine[1] = item;
138 }
139 }
140 assertNotNull(eventLine[0]);
141 assertNotNull(eventLine[1]);
142 fBot.styledText().setText("12 Hello\nWorld\n23 Goodbye\ncruel world");
143 eventLine[0].select();
144 SWTBotUtils.waitForJobs();
145 fBot.textWithLabel("Regular expression:").setText("\\s*(\\d\\d)\\s(.*\\S)");
146 eventLine[1].select();
147 fBot.textWithLabel("Regular expression:").setText("([^0-9]*)");
148 fBot.button(7).click();
149 fBot.comboBox("Set").setSelection("Append with |");
150 fBot.button("Highlight All").click();
151 fBot.button("Next >").click();
152 fBot.button("Finish").click();
153 fBot.waitUntil(new CustomDefinitionHasContent(xmlFile, CATEGORY_NAME, TRACETYPE_NAME, EXPECTED_TEST_DEFINITION));
154 String xmlPart = extractTestXml(xmlFile, CATEGORY_NAME, TRACETYPE_NAME);
155 assertEquals(EXPECTED_TEST_DEFINITION, xmlPart);
156 fBot.list().select(CATEGORY_NAME + " : " + TRACETYPE_NAME);
157 fBot.button("Delete").click();
158 fBot.button("Yes").click();
159 fBot.button("Close").click();
160 fBot.waitUntil(new CustomDefinitionHasContent(xmlFile, CATEGORY_NAME, TRACETYPE_NAME, ""));
161 xmlPart = extractTestXml(xmlFile, CATEGORY_NAME, TRACETYPE_NAME);
162 assertEquals("", xmlPart);
163
164 SWTBotUtils.deleteProject(PROJECT_NAME, fBot);
165 }
166
167 /**
168 * Test to edit a custom txt trace and compare the xml
169 *
170 * @throws IOException
171 * the xml file is not accessible, this is bad
172 * @throws FileNotFoundException
173 * the xml file wasn't written, this is bad
174 */
175 @Test
176 public void testEdit() throws FileNotFoundException, IOException {
177 File xmlFile = ResourcesPlugin.getWorkspace().getRoot().getLocation().append(".metadata/.plugins/org.eclipse.tracecompass.tmf.core/custom_txt_parsers.xml").toFile();
178 try (FileWriter fw = new FileWriter(xmlFile)) {
179 String xmlContent = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n" +
180 "<CustomTxtTraceDefinitionList>\n" +
181 "<Definition category=\"Demo Category\" name=\"Demo trace\">\n" +
182 "<TimeStampOutputFormat>sss</TimeStampOutputFormat>\n" +
183 "<InputLine>\n" +
184 "<Cardinality max=\"2147483647\" min=\"0\"/>\n" +
185 "<RegEx>\\s*(\\d*)\\s(.*)</RegEx>\n" +
186 "<InputData action=\"0\" format=\"sss\" name=\"Time Stamp\"/>\n" +
187 "<InputData action=\"0\" name=\"Message\"/>\n" +
188 "</InputLine>\n" +
189 "<OutputColumn name=\"Time Stamp\"/>\n" +
190 "<OutputColumn name=\"Message\"/>\n" +
191 "</Definition>\n" +
192 "<Definition name=\"dmesg\">\n" +
193 "<TimeStampOutputFormat>sssssss.ssssss</TimeStampOutputFormat>\n" +
194 "<InputLine>\n" +
195 "<Cardinality max=\"2147483647\" min=\"0\"/>\n" +
196 "<RegEx>^[([0-9]*\\.[0.9]*)]\\s(.*)</RegEx>\n" +
197 "<InputData action=\"0\" format=\"sssss.sssss\" name=\"Time Stamp\"/>\n" +
198 "<InputData action=\"0\" name=\"Message\"/>\n" +
199 "</InputLine>\n" +
200 "<OutputColumn name=\"Time Stamp\"/>\n" +
201 "<OutputColumn name=\"Message\"/>\n" +
202 "</Definition>\n" +
203 "</CustomTxtTraceDefinitionList>";
204 fw.write(xmlContent);
205 fw.flush();
206 }
207 SWTBotUtils.createProject(PROJECT_NAME);
208 SWTBotView proejctExplorerBot = fBot.viewByTitle("Project Explorer");
209 proejctExplorerBot.show();
210 SWTBotTreeItem treeItem = proejctExplorerBot.bot().tree().getTreeItem(PROJECT_NAME);
211 treeItem.select();
212 treeItem.expand();
213 SWTBotTreeItem treeNode = null;
214 for (String node : treeItem.getNodes()) {
215 if (node.startsWith("Trace")) {
216 treeNode = treeItem.getNode(node);
217 break;
218 }
219
220 }
221 assertNotNull(treeNode);
222 treeNode.contextMenu("Manage Custom Parsers...").click();
223 fBot.waitUntil(Conditions.shellIsActive(MANAGE_CUSTOM_PARSERS_SHELL_TITLE));
224 fBot.shell(MANAGE_CUSTOM_PARSERS_SHELL_TITLE).setFocus();
225 fBot.list().select("Demo Category : Demo trace");
226 fBot.button("Edit...").click();
227 fBot.waitUntil(Conditions.shellIsActive(CUSTOM_TEXT_PARSER_SHELL_TITLE));
228
229 fBot.textWithLabel("Category:").setText(CATEGORY_NAME);
230 fBot.textWithLabel("Trace type:").setText(TRACETYPE_NAME);
231 fBot.textWithLabel("Time Stamp format:").setText("ss");
232 fBot.comboBox(1).setSelection("Time Stamp");
233 fBot.textWithLabel("format:").setText("ss");
234 fBot.button(2).click();
235 SWTBotTreeItem[] treeItems = fBot.tree().getAllItems();
236 SWTBotTreeItem eventLine[] = new SWTBotTreeItem[2];
237 for (SWTBotTreeItem item : treeItems) {
238 if (item.getText().startsWith("Root Line 1")) {
239 eventLine[0] = item;
240 }
241 if (item.getText().startsWith("Root Line 2")) {
242 eventLine[1] = item;
243 }
244 }
245 treeItems = fBot.tree().getAllItems();
246 assertNotNull(eventLine[0]);
247 assertNotNull(eventLine[1]);
248 fBot.styledText().setText("12 Hello\nWorld\n23 Goodbye\ncruel world");
249 eventLine[0].select();
250 SWTBotUtils.waitForJobs();
251 fBot.textWithLabel("Regular expression:").setText("\\s*(\\d\\d)\\s(.*\\S)");
252 eventLine[1].select();
253 fBot.textWithLabel("Regular expression:").setText("([^0-9]*)");
254 fBot.button(7).click();
255 fBot.comboBox("Set").setSelection("Append with |");
256 fBot.button("Highlight All").click();
257 fBot.button("Next >").click();
258 fBot.button("Finish").click();
259 fBot.waitUntil(new CustomDefinitionHasContent(xmlFile, CATEGORY_NAME, TRACETYPE_NAME, EXPECTED_TEST_DEFINITION));
260 String xmlPart = extractTestXml(xmlFile, CATEGORY_NAME, TRACETYPE_NAME);
261 assertEquals(EXPECTED_TEST_DEFINITION, xmlPart);
262 fBot.list().select(CATEGORY_NAME + " : " + TRACETYPE_NAME);
263 fBot.button("Delete").click();
264 fBot.button("Yes").click();
265 fBot.button("Close").click();
266 fBot.waitUntil(new CustomDefinitionHasContent(xmlFile, CATEGORY_NAME, TRACETYPE_NAME, ""));
267 xmlPart = extractTestXml(xmlFile, CATEGORY_NAME, TRACETYPE_NAME);
268 assertEquals("", xmlPart);
269
270 SWTBotUtils.deleteProject(PROJECT_NAME, fBot);
271 }
272 }
This page took 0.051084 seconds and 4 git commands to generate.