tmf : Add test suite for XML pattern analysis providers
authorJean-Christian Kouame <jean-christian.kouame@ericsson.com>
Mon, 9 May 2016 19:28:56 +0000 (15:28 -0400)
committerJean-Christian Kouame <jean-christian.kouame@ericsson.com>
Fri, 13 May 2016 17:01:00 +0000 (13:01 -0400)
Change-Id: Ic6a5cc85897e657296446bfdc86eb69cc365f2e7
Signed-off-by: Jean-Christian Kouame <jean-christian.kouame@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/72326
Reviewed-by: Hudson CI
Reviewed-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
Tested-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
tmf/org.eclipse.tracecompass.tmf.analysis.xml.core.tests/META-INF/MANIFEST.MF
tmf/org.eclipse.tracecompass.tmf.analysis.xml.core.tests/src/org/eclipse/tracecompass/tmf/analysis/xml/core/tests/stateprovider/PatternProvidersTest.java [new file with mode: 0644]
tmf/org.eclipse.tracecompass.tmf.analysis.xml.core.tests/src/org/eclipse/tracecompass/tmf/analysis/xml/core/tests/stateprovider/StateProviderTest.java
tmf/org.eclipse.tracecompass.tmf.analysis.xml.core.tests/src/org/eclipse/tracecompass/tmf/analysis/xml/core/tests/stateprovider/XmlProviderTestBase.java [new file with mode: 0644]
tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/META-INF/MANIFEST.MF

index 33fa99c19721d7d5c61246c0b87e36766a94fd2f..8c56503bd2fcff2d6f43ba0585bba87cb1275049 100644 (file)
@@ -14,7 +14,8 @@ Require-Bundle: org.junit,
  org.eclipse.tracecompass.tmf.ctf.core,
  org.eclipse.tracecompass.tmf.ctf.core.tests,
  org.eclipse.tracecompass.statesystem.core,
- org.eclipse.tracecompass.segmentstore.core
+ org.eclipse.tracecompass.segmentstore.core,
+ org.eclipse.tracecompass.analysis.timing.core
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-ActivationPolicy: lazy
 Import-Package: com.google.common.collect;version="10.0.1",
diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core.tests/src/org/eclipse/tracecompass/tmf/analysis/xml/core/tests/stateprovider/PatternProvidersTest.java b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core.tests/src/org/eclipse/tracecompass/tmf/analysis/xml/core/tests/stateprovider/PatternProvidersTest.java
new file mode 100644 (file)
index 0000000..665b8db
--- /dev/null
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Ericsson
+ *
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.tracecompass.tmf.analysis.xml.core.tests.stateprovider;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.tracecompass.analysis.timing.core.segmentstore.ISegmentStoreProvider;
+import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.stateprovider.TmfXmlStrings;
+import org.eclipse.tracecompass.segmentstore.core.ISegment;
+import org.eclipse.tracecompass.segmentstore.core.ISegmentStore;
+import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace;
+import org.eclipse.tracecompass.tmf.analysis.xml.core.tests.common.TmfXmlTestFiles;
+import org.junit.Test;
+
+/**
+ * Test suite for the XML pattern analysis. This class test the state system and
+ * the segment store generated
+ *
+ * @author Jean-Christian Kouame
+ */
+public class PatternProvidersTest extends XmlProviderTestBase {
+
+    @Override
+    protected CtfTestTrace getTrace() {
+        return CtfTestTrace.ARM_64_BIT_HEADER;
+    }
+
+    @Override
+    protected TmfXmlTestFiles getXmlFile() {
+        return TmfXmlTestFiles.VALID_PATTERN_FILE;
+    }
+
+    @Override
+    protected @NonNull String getAnalysisNodeName() {
+        return TmfXmlStrings.PATTERN;
+    }
+
+    /**
+     * Test the generated segment store
+     */
+    @Test
+    public void testSegmentStore() {
+        assertTrue(getModule().waitForCompletion(new NullProgressMonitor()));
+        ISegmentStore<@NonNull ISegment> ss = ((ISegmentStoreProvider) getModule()).getSegmentStore();
+        assertNotNull(ss);
+        assertFalse(ss.isEmpty());
+    }
+
+}
index f823087cd145b51b36a118d091d5575ccc20a1ee..997a02c0e4e045b3871cd2c2f3b465c4a3074a2e 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013, 2014 École Polytechnique de Montréal
+ * Copyright (c) 2013, 2016 École Polytechnique de Montréal
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -9,32 +9,12 @@
  * Contributors:
  *   Geneviève Bastien - Initial API and implementation
  *******************************************************************************/
-
 package org.eclipse.tracecompass.tmf.analysis.xml.core.tests.stateprovider;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.util.List;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.stateprovider.TmfXmlStrings;
-import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.stateprovider.XmlStateSystemModule;
-import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
 import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace;
 import org.eclipse.tracecompass.tmf.analysis.xml.core.tests.common.TmfXmlTestFiles;
-import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTraceUtils;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
 
 /**
  * Test suite for the xml state providers
@@ -44,62 +24,21 @@ import org.w3c.dom.NodeList;
  *
  * @author Geneviève Bastien
  */
-public class StateProviderTest {
-
-    private ITmfTrace fTrace;
-    private XmlStateSystemModule fModule;
-
-    /**
-     * Setup the test fields
-     */
-    @Before
-    public void setupTest() {
-        /* Initialize the trace */
-        ITmfTrace trace = CtfTmfTestTraceUtils.getTrace(CtfTestTrace.KERNEL);
-        fTrace = trace;
+public class StateProviderTest extends XmlProviderTestBase {
 
-        /* Initialize the state provider module */
-        Document doc = TmfXmlTestFiles.VALID_FILE.getXmlDocument();
-        assertNotNull(doc);
-
-        /* get State Providers modules */
-        NodeList stateproviderNodes = doc.getElementsByTagName(TmfXmlStrings.STATE_PROVIDER);
-
-        Element node = (Element) stateproviderNodes.item(0);
-        fModule = new XmlStateSystemModule();
-        String moduleId = node.getAttribute(TmfXmlStrings.ID);
-        assertNotNull(moduleId);
-        fModule.setId(moduleId);
-
-        fModule.setXmlFile(new Path(TmfXmlTestFiles.VALID_FILE.getFile().getAbsolutePath()));
-
-        try {
-            fModule.setTrace(trace);
-            fModule.schedule();
-        } catch (TmfAnalysisException e) {
-            fail("Cannot set trace " + e.getMessage());
-        }
+    @Override
+    protected @NonNull String getAnalysisNodeName() {
+        return TmfXmlStrings.STATE_PROVIDER;
     }
 
-    /**
-     * Cleanup after the test
-     */
-    @After
-    public void cleanupTest() {
-        fTrace.dispose();
+    @Override
+    protected TmfXmlTestFiles getXmlFile() {
+        return TmfXmlTestFiles.VALID_FILE;
     }
 
-    /**
-     * Test the building of the state system
-     */
-    @Test
-    public void testStateSystem() {
-        assertTrue(fModule.waitForCompletion(new NullProgressMonitor()));
-        ITmfStateSystem ss = fModule.getStateSystem();
-        assertNotNull(ss);
-
-        List<Integer> quarks = ss.getQuarks("*");
-        assertFalse(quarks.isEmpty());
+    @Override
+    protected @NonNull CtfTestTrace getTrace() {
+        return CtfTestTrace.KERNEL;
     }
 
-}
+}
\ No newline at end of file
diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core.tests/src/org/eclipse/tracecompass/tmf/analysis/xml/core/tests/stateprovider/XmlProviderTestBase.java b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core.tests/src/org/eclipse/tracecompass/tmf/analysis/xml/core/tests/stateprovider/XmlProviderTestBase.java
new file mode 100644 (file)
index 0000000..38dd04f
--- /dev/null
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Ericsson
+ *
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.tracecompass.tmf.analysis.xml.core.tests.stateprovider;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.List;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.pattern.stateprovider.XmlPatternAnalysis;
+import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.stateprovider.TmfXmlStrings;
+import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.stateprovider.XmlStateSystemModule;
+import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
+import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace;
+import org.eclipse.tracecompass.tmf.analysis.xml.core.tests.common.TmfXmlTestFiles;
+import org.eclipse.tracecompass.tmf.core.analysis.TmfAbstractAnalysisModule;
+import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
+import org.eclipse.tracecompass.tmf.core.statesystem.ITmfAnalysisModuleWithStateSystems;
+import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
+import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTraceUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+/**
+ * Base unit test for XML analyses
+ *
+ * @author Jean-Christian Kouame
+ */
+public abstract class XmlProviderTestBase {
+
+    private ITmfTrace fTrace;
+    private TmfAbstractAnalysisModule fModule;
+
+    /**
+     * Setup the test fields
+     */
+    @Before
+    public void setupTest() {
+        /* Initialize the trace */
+        ITmfTrace trace = CtfTmfTestTraceUtils.getTrace(getTrace());
+        fTrace = trace;
+
+        /* Initialize the state provider module */
+        Document doc = getXmlFile().getXmlDocument();
+        assertNotNull(doc);
+
+        /* get State Providers modules */
+        NodeList analysisNodes = doc.getElementsByTagName(getAnalysisNodeName());
+
+        Element node = (Element) analysisNodes.item(0);
+        switch (getAnalysisNodeName()) {
+        case TmfXmlStrings.PATTERN:
+            fModule = new XmlPatternAnalysis();
+            ((XmlPatternAnalysis) fModule).setXmlFile(new Path(getXmlFile().getFile().getAbsolutePath()));
+            break;
+        case TmfXmlStrings.STATE_PROVIDER:
+            fModule = new XmlStateSystemModule();
+            ((XmlStateSystemModule) fModule).setXmlFile(new Path(getXmlFile().getFile().getAbsolutePath()));
+            break;
+
+        default:
+            fail();
+        }
+        String moduleId = node.getAttribute(TmfXmlStrings.ID);
+        assertNotNull(moduleId);
+        fModule.setId(moduleId);
+
+        try {
+            fModule.setTrace(trace);
+            fModule.schedule();
+        } catch (TmfAnalysisException e) {
+            fail("Cannot set trace " + e.getMessage());
+        }
+    }
+
+    /**
+     * The node name of the analysis in the file
+     *
+     * @return The name
+     */
+    protected abstract @NonNull String getAnalysisNodeName();
+
+    /**
+     * Get the XML file this test use
+     *
+     * @return The XML file
+     */
+    protected abstract TmfXmlTestFiles getXmlFile();
+
+    /**
+     * Get the trace this test use
+     *
+     * @return The trace
+     */
+    protected abstract @NonNull CtfTestTrace getTrace();
+
+    /**
+     * Cleanup after the test
+     */
+    @After
+    public void cleanupTest() {
+        fTrace.dispose();
+    }
+
+    /**
+     * Test the building of the state system
+     */
+    @Test
+    public void testStateSystem() {
+        assertTrue(fModule instanceof ITmfAnalysisModuleWithStateSystems);
+        assertTrue(fModule.waitForCompletion(new NullProgressMonitor()));
+        ITmfStateSystem ss = ((ITmfAnalysisModuleWithStateSystems) fModule).getStateSystem(fModule.getId());
+        assertNotNull(ss);
+
+        List<Integer> quarks = ss.getQuarks("*");
+        assertFalse(quarks.isEmpty());
+    }
+
+    /**
+     * Get the module of this analysis
+     *
+     * @return The module
+     */
+    protected TmfAbstractAnalysisModule getModule() {
+        return fModule;
+    }
+
+}
index 9f826b95699379351d905c0c03d37adcf6507873..0659479d1291ffc0b5f63bd702c64ee2104a64b6 100644 (file)
@@ -18,7 +18,7 @@ Export-Package: org.eclipse.tracecompass.internal.tmf.analysis.xml.core;x-friend
  org.eclipse.tracecompass.internal.tmf.analysis.xml.core.model.readonly;x-friends:="org.eclipse.tracecompass.tmf.analysis.xml.core.tests,org.eclipse.tracecompass.tmf.analysis.xml.ui",
  org.eclipse.tracecompass.internal.tmf.analysis.xml.core.model.readwrite;x-friends:="org.eclipse.tracecompass.tmf.analysis.xml.core.tests,org.eclipse.tracecompass.tmf.analysis.xml.ui",
  org.eclipse.tracecompass.internal.tmf.analysis.xml.core.module;x-friends:="org.eclipse.tracecompass.tmf.analysis.xml.core.tests,org.eclipse.tracecompass.tmf.analysis.xml.ui",
- org.eclipse.tracecompass.internal.tmf.analysis.xml.core.pattern.stateprovider;x-friends:="org.eclipse.tracecompass.tmf.analysis.xml.ui",
+ org.eclipse.tracecompass.internal.tmf.analysis.xml.core.pattern.stateprovider;x-friends:="org.eclipse.tracecompass.tmf.analysis.xml.ui,org.eclipse.tracecompass.tmf.analysis.xml.core.tests",
  org.eclipse.tracecompass.internal.tmf.analysis.xml.core.segment;x-friends:="org.eclipse.tracecompass.tmf.analysis.xml.core.tests",
  org.eclipse.tracecompass.internal.tmf.analysis.xml.core.stateprovider;x-friends:="org.eclipse.tracecompass.tmf.analysis.xml.core.tests,org.eclipse.tracecompass.tmf.analysis.xml.ui"
 Import-Package: com.google.common.collect
This page took 0.0292 seconds and 5 git commands to generate.