tmf: Add properties to the state system analyses
authorGeneviève Bastien <gbastien+lttng@versatic.net>
Wed, 27 Jan 2016 04:17:27 +0000 (23:17 -0500)
committerGenevieve Bastien <gbastien+lttng@versatic.net>
Wed, 17 Feb 2016 01:06:35 +0000 (20:06 -0500)
Change-Id: I91b9a583fd269c1f8d2de72dc517dce2ab2cf2d8
Signed-off-by: Geneviève Bastien <gbastien+lttng@versatic.net>
Reviewed-on: https://git.eclipse.org/r/65228
Reviewed-by: Hudson CI
Reviewed-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
Tested-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
common/org.eclipse.tracecompass.common.core/annotations/org/apache/commons/io/FileUtils.eea [new file with mode: 0644]
rcp/org.eclipse.tracecompass.rcp/feature.xml
rcp/org.eclipse.tracecompass.rcp/pom.xml
releng/org.eclipse.tracecompass.target/tracecompass-e4.5.target
releng/org.eclipse.tracecompass.target/tracecompass-eStaging.target
tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/statesystem/StateSystemAnalysisModuleTest.java
tmf/org.eclipse.tracecompass.tmf.core/META-INF/MANIFEST.MF
tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/statesystem/Messages.java [new file with mode: 0644]
tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/statesystem/TmfStateSystemAnalysisModule.java
tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/statesystem/messages.properties [new file with mode: 0644]

diff --git a/common/org.eclipse.tracecompass.common.core/annotations/org/apache/commons/io/FileUtils.eea b/common/org.eclipse.tracecompass.common.core/annotations/org/apache/commons/io/FileUtils.eea
new file mode 100644 (file)
index 0000000..e5dcaf1
--- /dev/null
@@ -0,0 +1,4 @@
+class org/apache/commons/io/FileUtils
+byteCountToDisplaySize
+ (J)Ljava/lang/String;
+ (J)L1java/lang/String;
index bd3be349c54488a2dc77f3a9629f6a7dfc74c3d7..8d3a96c6965753347f5902d639650faa56b7ec4f 100644 (file)
          version="0.0.0"
          unpack="false"/>
 
+   <plugin
+         id="org.apache.commons.io"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
 </feature>
index 651c6a7cc2430ecdabfe448babf26fb9d6afd30d..3d136b3cd7b0454499eb41498d553139a637efcb 100644 (file)
@@ -73,6 +73,7 @@
                 <plugin id="org.sat4j.pb"/>
                 <plugin id="org.swtchart"/>
                 <plugin id="com.google.guava"/>
+                <plugin id="org.apache.commons.io"/>
               </excludes>
             </configuration>
           </execution>
index b35867c96f6ec31acc2030315c14c146cd08e712..e78814a46da55104b39a98353d735b42df9a32ac 100644 (file)
@@ -25,6 +25,7 @@
 <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
 <unit id="org.antlr.runtime" version="3.2.0.v201101311130"/>
 <unit id="org.antlr.runtime.source" version="3.2.0.v201101311130"/>
+<unit id="org.apache.commons.io" version="0.0.0"/>
 <unit id="org.swtchart" version="0.0.0"/>
 <unit id="com.google.guava" version="15.0.0.v201403281430"/>
 <unit id="org.json" version="0.0.0"/>
index ad3b6d7018b3b05a667c9b65daaaed1be06735b8..5df007f431a2942d3dbb43b0671ae5010a29a529 100644 (file)
@@ -26,6 +26,7 @@
 <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
 <unit id="org.antlr.runtime" version="3.2.0.v201101311130"/>
 <unit id="org.antlr.runtime.source" version="3.2.0.v201101311130"/>
+<unit id="org.apache.commons.io" version="0.0.0"/>
 <unit id="org.swtchart" version="0.0.0"/>
 <unit id="com.google.guava" version="15.0.0.v201403281430"/>
 <unit id="org.json" version="0.0.0"/>
index dd212311eaadc51a4f70567ede617744a531104f..56dc6ce7e488eafb166e5089cd296f7f46261d83 100644 (file)
 
 package org.eclipse.tracecompass.tmf.core.tests.statesystem;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.fail;
 
+import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
@@ -96,4 +98,19 @@ public class StateSystemAnalysisModuleTest {
         assertNotNull(module.getStateSystem());
     }
 
+    /**
+     * Test that helper returns the right properties
+     */
+    @Test
+    public void testProperties() {
+
+        TmfStateSystemAnalysisModule mod = module;
+        assertNotNull(mod);
+
+        /* The stub state system has in mem backend so only 1 property */
+        Map<String, String> properties = mod.getProperties();
+        assertEquals(1, properties.size());
+
+    }
+
 }
index e74a3e95696b286a5763493009ce08e1a73a162e..1ce1d551238935831be4dfffe72d8e92059e8ba5 100644 (file)
@@ -61,4 +61,5 @@ Export-Package: org.eclipse.tracecompass.internal.tmf.core;x-friends:="org.eclip
  org.eclipse.tracecompass.tmf.core.util
 Import-Package: com.google.common.base,
  com.google.common.collect,
- com.google.common.hash;version="15.0.0"
+ com.google.common.hash;version="15.0.0",
+ org.apache.commons.io
diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/statesystem/Messages.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/statesystem/Messages.java
new file mode 100644 (file)
index 0000000..6900f75
--- /dev/null
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 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
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.tmf.core.statesystem;
+
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * Message bundle for org.eclipse.tracecompass.tmf.core.statesystem
+ *
+ * @author Geneviève Bastien
+ * @since 2.0
+ */
+public class Messages extends NLS {
+    private static final String BUNDLE_NAME = "org.eclipse.tracecompass.tmf.core.statesystem.messages"; //$NON-NLS-1$
+
+    /**
+     * Analysis not executed text
+     */
+    public static @Nullable String TmfStateSystemAnalysisModule_PropertiesAnalysisNotExecuted;
+    /**
+     * Backend property text
+     */
+    public static @Nullable String TmfStateSystemAnalysisModule_PropertiesBackend;
+    /**
+     * File size property text
+     */
+    public static @Nullable String TmfStateSystemAnalysisModule_PropertiesFileSize;
+
+    static {
+        // initialize resource bundle
+        NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+    }
+
+    private Messages() {
+    }
+}
index f4f6e61aa114746906179246fd5b24afb4764447..28ff14887243718e5b4405b8279c607b8f72b759 100644 (file)
@@ -18,12 +18,17 @@ import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull;
 import java.io.File;
 import java.io.IOException;
 import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.concurrent.CountDownLatch;
 
+import org.apache.commons.io.FileUtils;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.tracecompass.common.core.NonNullUtils;
 import org.eclipse.tracecompass.internal.tmf.core.statesystem.backends.partial.PartialHistoryBackend;
 import org.eclipse.tracecompass.internal.tmf.core.statesystem.backends.partial.PartialStateSystem;
 import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
@@ -34,6 +39,7 @@ import org.eclipse.tracecompass.statesystem.core.backend.StateHistoryBackendFact
 import org.eclipse.tracecompass.tmf.core.analysis.TmfAbstractAnalysisModule;
 import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
 import org.eclipse.tracecompass.tmf.core.exceptions.TmfTraceException;
+import org.eclipse.tracecompass.tmf.core.project.model.ITmfPropertiesProvider;
 import org.eclipse.tracecompass.tmf.core.request.ITmfEventRequest;
 import org.eclipse.tracecompass.tmf.core.request.TmfEventRequest;
 import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler;
@@ -57,7 +63,7 @@ import org.eclipse.tracecompass.tmf.core.trace.experiment.TmfExperiment;
  * @author Geneviève Bastien
  */
 public abstract class TmfStateSystemAnalysisModule extends TmfAbstractAnalysisModule
-        implements ITmfAnalysisModuleWithStateSystems {
+        implements ITmfAnalysisModuleWithStateSystems, ITmfPropertiesProvider {
 
     private static final String EXTENSION = ".ht"; //$NON-NLS-1$
 
@@ -171,6 +177,16 @@ public abstract class TmfStateSystemAnalysisModule extends TmfAbstractAnalysisMo
     // TmfAbstractAnalysisModule
     // ------------------------------------------------------------------------
 
+    private @Nullable File getSsFile() {
+        ITmfTrace trace = getTrace();
+        if (trace == null) {
+            return null;
+        }
+        String directory = TmfTraceManager.getSupplementaryFileDir(trace);
+        File htFile = new File(directory + getSsFileName());
+        return htFile;
+    }
+
     @Override
     protected boolean executeAnalysis(@Nullable final  IProgressMonitor monitor) {
         IProgressMonitor mon = (monitor == null ? new NullProgressMonitor() : monitor);
@@ -182,8 +198,7 @@ public abstract class TmfStateSystemAnalysisModule extends TmfAbstractAnalysisMo
         try {
             /* Get the state system according to backend */
             StateSystemBackendType backend = getBackendType();
-            String directory;
-            File htFile;
+
 
             ITmfTrace trace = getTrace();
             if (trace == null) {
@@ -192,15 +207,21 @@ public abstract class TmfStateSystemAnalysisModule extends TmfAbstractAnalysisMo
                 return false;
             }
             switch (backend) {
-            case FULL:
-                directory = TmfTraceManager.getSupplementaryFileDir(trace);
-                htFile = new File(directory + getSsFileName());
+            case FULL: {
+                File htFile = getSsFile();
+                if (htFile == null) {
+                    return false;
+                }
                 createFullHistory(id, provider, htFile);
+            }
                 break;
-            case PARTIAL:
-                directory = TmfTraceManager.getSupplementaryFileDir(trace);
-                htFile = new File(directory + getSsFileName());
+            case PARTIAL: {
+                File htFile = getSsFile();
+                if (htFile == null) {
+                    return false;
+                }
                 createPartialHistory(id, provider, htFile);
+            }
                 break;
             case INMEM:
                 createInMemoryHistory(id, provider);
@@ -560,4 +581,38 @@ public abstract class TmfStateSystemAnalysisModule extends TmfAbstractAnalysisMo
     private static boolean isCompleteTrace(ITmfTrace trace) {
         return !(trace instanceof ITmfTraceCompleteness) || ((ITmfTraceCompleteness) trace).isComplete();
     }
+
+    // ------------------------------------------------------------------------
+    // ITmfPropertiesProvider
+    // ------------------------------------------------------------------------
+
+    /**
+     * @since 2.0
+     */
+    @Override
+    public @NonNull Map<@NonNull String, @NonNull String> getProperties() {
+        Map<@NonNull String, @NonNull String> properties = new HashMap<>();
+
+        StateSystemBackendType backend = getBackendType();
+        properties.put(NonNullUtils.checkNotNull(Messages.TmfStateSystemAnalysisModule_PropertiesBackend), NonNullUtils.checkNotNull(backend.name()));
+        switch (backend) {
+        case FULL:
+        case PARTIAL:
+            File htFile = getSsFile();
+            if (htFile != null) {
+                if (htFile.exists()) {
+                    properties.put(NonNullUtils.checkNotNull(Messages.TmfStateSystemAnalysisModule_PropertiesFileSize), FileUtils.byteCountToDisplaySize(htFile.length()));
+                } else {
+                    properties.put(NonNullUtils.checkNotNull(Messages.TmfStateSystemAnalysisModule_PropertiesFileSize), NonNullUtils.checkNotNull(Messages.TmfStateSystemAnalysisModule_PropertiesAnalysisNotExecuted));
+                }
+            }
+            break;
+        case INMEM:
+        case NULL:
+        default:
+            break;
+
+        }
+        return properties;
+    }
 }
diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/statesystem/messages.properties b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/statesystem/messages.properties
new file mode 100644 (file)
index 0000000..c9b5351
--- /dev/null
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 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 accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+###############################################################################
+
+TmfStateSystemAnalysisModule_PropertiesAnalysisNotExecuted=Analysis hasn't been executed
+TmfStateSystemAnalysisModule_PropertiesBackend=Backend type
+TmfStateSystemAnalysisModule_PropertiesFileSize=Size on disk
This page took 0.031211 seconds and 5 git commands to generate.