tmf: Update unit tests for custom event type by text line or XML element
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.core.tests / src / org / eclipse / tracecompass / tmf / core / tests / parsers / custom / CustomXmlTraceDataTest.java
1 /*******************************************************************************
2 * Copyright (c) 2016 École Polytechnique de Montréal and others
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
10 package org.eclipse.tracecompass.tmf.core.tests.parsers.custom;
11
12 import static org.junit.Assert.assertEquals;
13 import static org.junit.Assert.assertTrue;
14
15 import java.io.BufferedWriter;
16 import java.io.File;
17 import java.io.FileWriter;
18 import java.io.IOException;
19 import java.text.SimpleDateFormat;
20 import java.util.Arrays;
21 import java.util.Date;
22
23 import org.eclipse.jdt.annotation.NonNull;
24 import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
25 import org.eclipse.tracecompass.tmf.core.exceptions.TmfTraceException;
26 import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomXmlEvent;
27 import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomXmlTrace;
28 import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomXmlTraceDefinition;
29 import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
30 import org.junit.runner.RunWith;
31 import org.junit.runners.Parameterized;
32 import org.junit.runners.Parameterized.Parameters;
33
34 /**
35 * Test the events parsed by a custom XML trace
36 *
37 * @author Geneviève Bastien
38 */
39 @RunWith(Parameterized.class)
40 public class CustomXmlTraceDataTest extends AbstractCustomTraceDataTest {
41
42 private static final String TRACE_PATH = TRACE_DIRECTORY + File.separator + "test.xml";
43 private static final String DEFINITION_PATH = "testfiles" + File.separator + "xml" + File.separator + "testDefinition.xml";
44
45 /**
46 * Constructor
47 *
48 * @param name
49 * The name of this test
50 * @param data
51 * The custom test data for this test case
52 */
53 public CustomXmlTraceDataTest(String name, @NonNull ICustomTestData data) {
54 super(data);
55 }
56
57 private static CustomXmlTraceDefinition getDefinition(int index) {
58 CustomXmlTraceDefinition[] definitions = CustomXmlTraceDefinition.loadAll(new File(DEFINITION_PATH).toString());
59 return definitions[index];
60 }
61
62 private static final ICustomTestData CUSTOM_XML = new ICustomTestData() {
63
64 private static final int NB_EVENTS = 10;
65 private CustomXmlTraceDefinition fDefinition;
66
67 @Override
68 public ITmfTrace getTrace() throws IOException, TmfTraceException {
69 fDefinition = getDefinition(0);
70 final File file = new File(TRACE_PATH);
71 try (BufferedWriter writer = new BufferedWriter(new FileWriter(file));) {
72 writer.write("<trace>");
73 for (int i = 0; i < NB_EVENTS; ++i) {
74 SimpleDateFormat f = new SimpleDateFormat(TIMESTAMP_FORMAT);
75 String eventStr = "<element time=\"" + f.format(new Date(i)) + "\">message</element>\n";
76 writer.write(eventStr);
77 }
78 writer.write("</trace>");
79 }
80 return new CustomXmlTrace(null, fDefinition, file.getPath(), BLOCK_SIZE);
81 }
82
83 @Override
84 public void validateEvent(ITmfEvent event) {
85 assertTrue(event instanceof CustomXmlEvent);
86 String name = fDefinition.definitionName;
87 assertEquals("Event name", name, event.getName());
88 assertEquals("Event name and type", event.getType().getName(), event.getName());
89 }
90
91 @Override
92 public void validateEventCount(int eventCount) {
93 assertEquals("Event count", NB_EVENTS, eventCount);
94 }
95
96 };
97
98 private static final ICustomTestData CUSTOM_XML_EVENT_NAME = new ICustomTestData() {
99
100 private static final int NB_EVENTS = 10;
101 private static final String DEFAULT_EVENT = "DefaultName";
102 private static final String ATTRIBUTE_EVENT = "AttributeName";
103 private static final String ELEMENT_EVENT = "ElementName";
104 private CustomXmlTraceDefinition fDefinition;
105
106 @Override
107 public ITmfTrace getTrace() throws IOException, TmfTraceException {
108 fDefinition = getDefinition(1);
109 final File file = new File(TRACE_PATH);
110 try (BufferedWriter writer = new BufferedWriter(new FileWriter(file));) {
111 writer.write("<trace>");
112 for (int i = 0; i < NB_EVENTS; ++i) {
113 String attribute = (i % 5) != 0 ? String.format(" type=\"%s\"", ATTRIBUTE_EVENT) : "";
114 String element = (i % 5) != 0 && i % 2 != 0 ? String.format("<type>%s</type>", ELEMENT_EVENT) : "";
115 String eventStr = String.format("<element time=\"" + i + "\"%s>%s</element>\n", attribute, element);
116 writer.write(eventStr);
117 }
118 writer.write("</trace>");
119 }
120 return new CustomXmlTrace(null, fDefinition, file.getPath(), BLOCK_SIZE);
121 }
122
123 @Override
124 public void validateEvent(ITmfEvent event) {
125 assertTrue(event instanceof CustomXmlEvent);
126 long ts = event.getTimestamp().getValue();
127 if (ts % 5 == 0) {
128 assertEquals("Event name", DEFAULT_EVENT, event.getName());
129 } else if (ts % 2 == 0) {
130 assertEquals("Event name", ATTRIBUTE_EVENT, event.getName());
131 } else {
132 assertEquals("Event name", ELEMENT_EVENT, event.getName());
133 }
134 assertEquals("Event name and type", event.getType().getName(), event.getName());
135 }
136
137 @Override
138 public void validateEventCount(int eventCount) {
139 assertEquals("Event count", NB_EVENTS, eventCount);
140 }
141
142 };
143
144 /**
145 * @return The arrays of parameters
146 */
147 @Parameters(name = "{index}: {0}")
148 public static Iterable<Object[]> getParameters() {
149 return Arrays.asList(new Object[][] {
150 { "Base parser", CUSTOM_XML },
151 { "Parse with event name", CUSTOM_XML_EVENT_NAME }
152 });
153 }
154
155 }
This page took 0.034958 seconds and 6 git commands to generate.