X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=tmf%2Forg.eclipse.tracecompass.tmf.core.tests%2Fsrc%2Forg%2Feclipse%2Ftracecompass%2Ftmf%2Fcore%2Ftests%2Fparsers%2Fcustom%2FCustomTxtTraceDataTest.java;h=f78e22aafcfb824a10e92e81217d6c18e8655432;hb=efeeb73397f31c0c375555ca56b7225f68ebe4b0;hp=1a62b5add66843c4967f8a71a69dc81bd5d59321;hpb=a36fa387f725817df2daa740af1ce6a0a58ab50c;p=deliverable%2Ftracecompass.git diff --git a/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/parsers/custom/CustomTxtTraceDataTest.java b/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/parsers/custom/CustomTxtTraceDataTest.java index 1a62b5add6..f78e22aafc 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/parsers/custom/CustomTxtTraceDataTest.java +++ b/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/parsers/custom/CustomTxtTraceDataTest.java @@ -10,7 +10,10 @@ package org.eclipse.tracecompass.tmf.core.tests.parsers.custom; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import java.io.BufferedWriter; import java.io.File; @@ -26,6 +29,8 @@ import org.eclipse.tracecompass.tmf.core.event.ITmfEvent; import org.eclipse.tracecompass.tmf.core.event.aspect.ITmfEventAspect; import org.eclipse.tracecompass.tmf.core.event.aspect.TmfBaseAspects; import org.eclipse.tracecompass.tmf.core.exceptions.TmfTraceException; +import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomTraceDefinition; +import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomTraceDefinition.Tag; import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomTxtEvent; import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomTxtTrace; import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomTxtTraceDefinition; @@ -50,14 +55,15 @@ public class CustomTxtTraceDataTest extends AbstractCustomTraceDataTest { /** * Constructor * - * @param name The name of the test - * @param data The test data + * @param name + * The name of the test + * @param data + * The test data */ public CustomTxtTraceDataTest(String name, @NonNull ICustomTestData data) { super(data); } - private static CustomTxtTraceDefinition getDefinition(int index) { CustomTxtTraceDefinition[] definitions = CustomTxtTraceDefinition.loadAll(new File(DEFINITION_PATH).toString()); return definitions[index]; @@ -158,6 +164,93 @@ public class CustomTxtTraceDataTest extends AbstractCustomTraceDataTest { }; + private static final ICustomTestData CUSTOM_TXT_EXTRA_FIELDS = new ICustomTestData() { + + private static final int NB_EVENTS = 6; + private static final String FOO = "foo"; + private static final String BAR = "bar"; + private static final String BAZ = "baz"; + private static final String MESSAGE = "message"; + private CustomTxtTraceDefinition fDefinition; + + @Override + public ITmfTrace getTrace() throws IOException, TmfTraceException { + fDefinition = getDefinition(2); + final File file = new File(TRACE_PATH); + try (BufferedWriter writer = new BufferedWriter(new FileWriter(file));) { + // Event with one field to set + String eventStr = String.format("1 %s %s=%s\n", MESSAGE, FOO, BAR); + writer.write(eventStr); + // Event with 2 different fields and different values + eventStr = String.format("2 %s %s=%s %s=%s\n", MESSAGE, FOO, BAR, BAR, FOO); + writer.write(eventStr); + // Event with an extra field that conflicts with a built-in field + eventStr = String.format("3 %s Message=%s\n", MESSAGE, FOO); + writer.write(eventStr); + // Event with 2 extra fields with same name where the values + // should be appended + eventStr = String.format("4 %s %s=%s %s=%s\n", MESSAGE, FOO, BAR, FOO, BAZ); + writer.write(eventStr); + // Event with 2 extra fields with same name, where the values + // should be set + eventStr = String.format("5 %s %s=%s %s=%s %s=%s\n", MESSAGE, FOO, BAR, FOO, BAZ, BAR, BAZ); + writer.write(eventStr); + // Event with 2 non matching number extra field names/values + eventStr = String.format("6 %s %s=%s other %s\n", MESSAGE, FOO, BAR, BAZ); + writer.write(eventStr); + } + return new CustomTxtTrace(null, fDefinition, file.getPath(), BLOCK_SIZE); + } + + @Override + public void validateEvent(ITmfEvent event) { + assertTrue(event instanceof CustomTxtEvent); + long ts = event.getTimestamp().getValue(); + switch ((int) ts) { + case 1: + assertNotNull(event.getContent().getField(FOO)); + assertEquals(BAR, event.getContent().getField(FOO).getValue()); + assertNull(event.getContent().getField(BAR)); + break; + case 2: + assertNotNull(event.getContent().getField(FOO)); + assertEquals(BAR, event.getContent().getField(FOO).getValue()); + assertNotNull(event.getContent().getField(BAR)); + assertEquals(FOO, event.getContent().getField(BAR).getValue()); + break; + case 3: + assertNotNull(event.getContent().getField(Tag.MESSAGE.toString())); + assertEquals(MESSAGE, event.getContent().getField(Tag.MESSAGE.toString()).getValue()); + break; + case 4: + assertNotNull(event.getContent().getField(FOO)); + assertEquals(BAR + CustomTraceDefinition.SEPARATOR + BAZ, event.getContent().getField(FOO).getValue()); + assertNull(event.getContent().getField(BAR)); + break; + case 5: + assertNotNull(event.getContent().getField(FOO)); + assertEquals(BAZ, event.getContent().getField(FOO).getValue()); + assertNotNull(event.getContent().getField(BAR)); + assertEquals(BAZ, event.getContent().getField(BAR).getValue()); + break; + case 6: + assertNotNull(event.getContent().getField(FOO)); + assertEquals(BAR + CustomTraceDefinition.SEPARATOR + BAZ, event.getContent().getField(FOO).getValue()); + assertNull(event.getContent().getField(BAR)); + break; + default: + fail("unknown timestamp " + ts); + } + assertEquals("Event name and type", event.getType().getName(), event.getName()); + } + + @Override + public void validateEventCount(int eventCount) { + assertEquals("Event count", NB_EVENTS, eventCount); + } + + }; + /** * @return The arrays of parameters */ @@ -165,7 +258,8 @@ public class CustomTxtTraceDataTest extends AbstractCustomTraceDataTest { public static Iterable getParameters() { return Arrays.asList(new Object[][] { { "Base parser", CUSTOM_TXT }, - { "Parse with event name", CUSTOM_TXT_EVENT_NAME } + { "Parse with event name", CUSTOM_TXT_EVENT_NAME }, + { "Parse with extra fields", CUSTOM_TXT_EXTRA_FIELDS } }); }