analysis: Move plugins to their own sub-directory
[deliverable/tracecompass.git] / org.eclipse.tracecompass.tmf.core.tests / src / org / eclipse / tracecompass / tmf / core / tests / trace / text / TextTraceTest.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 * Patrick Tasse - Move field declarations to trace
12 *******************************************************************************/
13
14 package org.eclipse.tracecompass.tmf.core.tests.trace.text;
15
16 import static org.junit.Assert.assertEquals;
17 import static org.junit.Assert.assertFalse;
18 import static org.junit.Assert.assertTrue;
19
20 import java.io.File;
21 import java.io.IOException;
22 import java.net.URI;
23 import java.net.URISyntaxException;
24 import java.net.URL;
25 import java.util.Locale;
26
27 import org.eclipse.core.resources.IResource;
28 import org.eclipse.core.resources.ResourcesPlugin;
29 import org.eclipse.core.runtime.FileLocator;
30 import org.eclipse.core.runtime.IStatus;
31 import org.eclipse.core.runtime.Path;
32 import org.eclipse.core.runtime.preferences.IEclipsePreferences;
33 import org.eclipse.core.runtime.preferences.InstanceScope;
34 import org.eclipse.tracecompass.internal.tmf.core.Activator;
35 import org.eclipse.tracecompass.tmf.core.request.ITmfEventRequest;
36 import org.eclipse.tracecompass.tmf.core.request.ITmfEventRequest.ExecutionType;
37 import org.eclipse.tracecompass.tmf.core.request.TmfEventRequest;
38 import org.eclipse.tracecompass.tmf.core.tests.TmfCoreTestPlugin;
39 import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimePreferencesConstants;
40 import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp;
41 import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimeRange;
42 import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
43 import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestampFormat;
44 import org.eclipse.tracecompass.tmf.core.trace.ITmfContext;
45 import org.eclipse.tracecompass.tmf.core.trace.TraceValidationStatus;
46 import org.eclipse.tracecompass.tmf.core.trace.text.TextTraceEventContent;
47 import org.eclipse.tracecompass.tmf.tests.stubs.trace.text.SyslogEvent;
48 import org.eclipse.tracecompass.tmf.tests.stubs.trace.text.SyslogTrace;
49 import org.eclipse.tracecompass.tmf.tests.stubs.trace.text.SyslogTrace.Field;
50 import org.junit.AfterClass;
51 import org.junit.BeforeClass;
52 import org.junit.Test;
53
54 @SuppressWarnings({ "nls", "javadoc"})
55 public class TextTraceTest {
56
57 // ------------------------------------------------------------------------
58 // Variables
59 // ------------------------------------------------------------------------
60
61 private static final String NAME = "syslog";
62 private static final String PATH = "testfiles/" + NAME;
63
64 private static final String OTHER_PATH = "testfiles/" + "A-Test-10K";
65
66 private static SyslogTrace fTrace = null;
67 private static File fTestFile = null;
68
69 // ------------------------------------------------------------------------
70 // Housekeeping
71 // ------------------------------------------------------------------------
72
73 @BeforeClass
74 public static void setUp() throws Exception {
75 IEclipsePreferences defaultPreferences = InstanceScope.INSTANCE.getNode(Activator.PLUGIN_ID);
76 defaultPreferences.put(ITmfTimePreferencesConstants.DATIME, "MMM d HH:mm:ss");
77 defaultPreferences.put(ITmfTimePreferencesConstants.SUBSEC, ITmfTimePreferencesConstants.SUBSEC_NO_FMT);
78 defaultPreferences.put(ITmfTimePreferencesConstants.LOCALE, Locale.CANADA.toLanguageTag());
79 TmfTimestampFormat.updateDefaultFormats();
80
81 if (fTrace == null) {
82 try {
83 URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(PATH), null);
84 URI uri = FileLocator.toFileURL(location).toURI();
85 fTestFile = new File(uri);
86
87 fTrace = new SyslogTrace();
88 IResource resource = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(PATH));
89 fTrace.initTrace(resource, uri.getPath(), SyslogEvent.class);
90 // Dummy request to force the trace indexing
91 TmfEventRequest request = new TmfEventRequest(
92 SyslogEvent.class,
93 TmfTimeRange.ETERNITY,
94 0,
95 ITmfEventRequest.ALL_DATA,
96 ExecutionType.FOREGROUND) {
97 };
98 fTrace.sendRequest(request);
99 request.waitForCompletion();
100 } catch (URISyntaxException e) {
101 e.printStackTrace();
102 } catch (IOException e) {
103 e.printStackTrace();
104 }
105 }
106 }
107
108 @AfterClass
109 public static void tearDown() {
110 fTrace.dispose();
111 fTrace = null;
112 IEclipsePreferences defaultPreferences = InstanceScope.INSTANCE.getNode(Activator.PLUGIN_ID);
113 defaultPreferences.put(ITmfTimePreferencesConstants.DATIME, ITmfTimePreferencesConstants.TIME_HOUR_FMT);
114 defaultPreferences.put(ITmfTimePreferencesConstants.SUBSEC, ITmfTimePreferencesConstants.SUBSEC_NANO_FMT);
115 defaultPreferences.put(ITmfTimePreferencesConstants.LOCALE, Locale.getDefault().toLanguageTag());
116 TmfTimestampFormat.updateDefaultFormats();
117 }
118
119 // ------------------------------------------------------------------------
120 // Constructors
121 // ------------------------------------------------------------------------
122 @Test
123 public void testEmptyConstructor() {
124 SyslogTrace trace = new SyslogTrace();
125 assertEquals("getType", null, trace.getType());
126 assertEquals("getPath", null, trace.getPath());
127 assertEquals("getName", "", trace.getName());
128 assertEquals("getCacheSize", 100, trace.getCacheSize());
129
130 TmfTimestamp initRange = new TmfTimestamp(60, ITmfTimestamp.SECOND_SCALE);
131 assertEquals("getInitialRangeOffset", initRange, trace.getInitialRangeOffset());
132 }
133
134 @Test
135 public void testValidation() throws URISyntaxException, IOException {
136 SyslogTrace trace = new SyslogTrace();
137 String validTracePath = fTestFile.getAbsolutePath();
138 IStatus status = trace.validate(null, validTracePath);
139 assertTrue(status.isOK());
140 assertTrue(status instanceof TraceValidationStatus);
141 assertEquals(185, ((TraceValidationStatus) status).getConfidence());
142
143 URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(OTHER_PATH), null);
144 URI uri = FileLocator.toFileURL(location).toURI();
145 File otherFile = new File(uri);
146
147 String validNoConfidenceTrace = otherFile.getAbsolutePath();
148 status = trace.validate(null, validNoConfidenceTrace);
149 assertTrue(status instanceof TraceValidationStatus);
150 assertEquals(0, ((TraceValidationStatus) status).getConfidence());
151 assertTrue(status.isOK());
152
153 String invalidTrace = fTestFile.getParentFile().getAbsolutePath();
154 status = trace.validate(null, invalidTrace);
155 assertFalse(status.isOK());
156 }
157
158 @Test
159 public void testInitTrace() throws Exception {
160 URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(PATH), null);
161 String path = FileLocator.toFileURL(location).toURI().getPath();
162 SyslogTrace trace = new SyslogTrace();
163 IResource resource = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(PATH));
164 trace.initTrace(resource, path, SyslogEvent.class);
165 assertEquals("getType", SyslogEvent.class, trace.getType());
166 assertEquals("getPath", fTestFile.toURI().getPath(), trace.getPath());
167 assertEquals("getName", NAME, trace.getName());
168 assertEquals("getCacheSize", 100, trace.getCacheSize());
169 }
170
171 // ------------------------------------------------------------------------
172 // Indexing
173 // ------------------------------------------------------------------------
174
175 @Test
176 public void testTraceIndexing() {
177 assertEquals("getNbEvents", 6, fTrace.getNbEvents());
178
179 TmfTimestamp initRange = new TmfTimestamp(60, ITmfTimestamp.SECOND_SCALE);
180 assertEquals("getInitialRangeOffset", initRange, fTrace.getInitialRangeOffset());
181 }
182
183 // ------------------------------------------------------------------------
184 // Parsing
185 // ------------------------------------------------------------------------
186
187 @Test
188 public void testTraceParsing() {
189 ITmfContext context = fTrace.seekEvent(0);
190 SyslogEvent event = fTrace.getNext(context);
191 TextTraceEventContent content = event.getContent();
192 assertEquals("getTimestamp", "Jan 1 01:01:01", event.getTimestamp().toString());
193 assertEquals("getField:HOST", "HostA", content.getFieldValue(Field.HOST));
194 assertEquals("getField:LOGGER", "LoggerA", content.getFieldValue(Field.LOGGER));
195 assertEquals("getField:FILE", "SourceFileA", content.getFieldValue(Field.FILE));
196 assertEquals("getField:LINE", "4", content.getFieldValue(Field.LINE));
197 assertEquals("getField:MESSAGE", "Message A", content.getFieldValue(Field.MESSAGE).toString());
198 event = fTrace.getNext(context);
199 content = event.getContent();
200 assertEquals("getTimestamp", "Jan 1 02:02:02", event.getTimestamp().toString());
201 assertEquals("getField:HOST", "HostB", content.getFieldValue(Field.HOST));
202 assertEquals("getField:LOGGER", "LoggerB", content.getFieldValue(Field.LOGGER));
203 assertEquals("getField:FILE", "SourceFileB", content.getFieldValue(Field.FILE));
204 assertEquals("getField:LINE", "5", content.getFieldValue(Field.LINE));
205 assertEquals("getField:MESSAGE", "Message B", content.getFieldValue(Field.MESSAGE).toString());
206 event = fTrace.getNext(context);
207 content = event.getContent();
208 assertEquals("getTimestamp", "Jan 1 03:03:03", event.getTimestamp().toString());
209 assertEquals("getField:HOST", "HostC", content.getFieldValue(Field.HOST));
210 assertEquals("getField:LOGGER", "LoggerC", content.getFieldValue(Field.LOGGER));
211 assertEquals("getField:FILE", "SourceFileC", content.getFieldValue(Field.FILE));
212 assertEquals("getField:LINE", "6", content.getFieldValue(Field.LINE));
213 assertEquals("getField:MESSAGE", "Message C", content.getFieldValue(Field.MESSAGE).toString());
214 event = fTrace.getNext(context);
215 content = event.getContent();
216 assertEquals("getTimestamp", "Jan 1 04:04:04", event.getTimestamp().toString());
217 assertEquals("getField:HOST", "HostD", content.getFieldValue(Field.HOST));
218 assertEquals("getField:LOGGER", "LoggerD", content.getFieldValue(Field.LOGGER));
219 assertEquals("getField:FILE", "SourceFileD", content.getFieldValue(Field.FILE));
220 assertEquals("getField:LINE", "7", content.getFieldValue(Field.LINE));
221 assertEquals("getField:MESSAGE", "Message D", content.getFieldValue(Field.MESSAGE).toString());
222 event = fTrace.getNext(context);
223 content = event.getContent();
224 assertEquals("getTimestamp", "Jan 1 05:05:05", event.getTimestamp().toString());
225 assertEquals("getField:HOST", "HostE", content.getFieldValue(Field.HOST));
226 assertEquals("getField:LOGGER", "LoggerE", content.getFieldValue(Field.LOGGER));
227 assertEquals("getField:FILE", "SourceFileE", content.getFieldValue(Field.FILE));
228 assertEquals("getField:LINE", "8", content.getFieldValue(Field.LINE));
229 assertEquals("getField:MESSAGE", "", content.getFieldValue(Field.MESSAGE).toString());
230 event = fTrace.getNext(context);
231 content = event.getContent();
232 assertEquals("getTimestamp", "Jan 1 06:06:06", event.getTimestamp().toString());
233 assertEquals("getField:HOST", "HostF", content.getFieldValue(Field.HOST));
234 assertEquals("getField:LOGGER", "LoggerF", content.getFieldValue(Field.LOGGER));
235 assertEquals("getField:FILE", "SourceFileF", content.getFieldValue(Field.FILE));
236 assertEquals("getField:LINE", "9", content.getFieldValue(Field.LINE));
237 assertEquals("getField:MESSAGE", "Message F", content.getFieldValue(Field.MESSAGE).toString());
238 event = fTrace.getNext(context);
239 assertEquals("event", null, event);
240 context.dispose();
241 }
242
243 @Test
244 public void testLocationRatio() {
245 ITmfContext context = fTrace.seekEvent(3);
246 double ratio = fTrace.getLocationRatio(context.getLocation());
247 SyslogEvent event = fTrace.getNext(context);
248 TextTraceEventContent content = event.getContent();
249 Object logger = content.getFieldValue(Field.LOGGER);
250 context.dispose();
251 context = fTrace.seekEvent(ratio);
252 event = fTrace.getNext(context);
253 content = event.getContent();
254 assertEquals("getField:LOGGER", logger.toString(), content.getFieldValue(Field.LOGGER).toString());
255 context.dispose();
256 context = fTrace.seekEvent(0.0);
257 event = fTrace.getNext(context);
258 content = event.getContent();
259 assertEquals("getField:LOGGER", "LoggerA", content.getFieldValue(Field.LOGGER));
260 context.dispose();
261 context = fTrace.seekEvent(1.0);
262 event = fTrace.getNext(context);
263 assertEquals("event", null, event);
264 context.dispose();
265 }
266 }
This page took 0.043816 seconds and 5 git commands to generate.