lttng.kernel: Rename analysis packages and classes
authorAlexandre Montplaisir <alexmonthy@voxpopuli.im>
Tue, 11 Nov 2014 18:18:33 +0000 (13:18 -0500)
committerAlexandre Montplaisir <alexmonthy@voxpopuli.im>
Tue, 11 Nov 2014 20:32:27 +0000 (15:32 -0500)
There are two analyses in the kernel plugin right now, "kernel" and
"cpu usage". Simply rename the packages and classes to align them
better.

Change-Id: I9b7f86d2b9bad2d3d286d234eacea4ad51143bd4
Signed-off-by: Alexandre Montplaisir <alexmonthy@voxpopuli.im>
Reviewed-on: https://git.eclipse.org/r/36290
Tested-by: Hudson CI
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
43 files changed:
org.eclipse.tracecompass.lttng2.kernel.core.tests/META-INF/MANIFEST.MF
org.eclipse.tracecompass.lttng2.kernel.core.tests/perf/org/eclipse/tracecompass/lttng2/kernel/core/tests/perf/analysis/AnalysisBenchmark.java
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/AllTests.java
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/AllTests.java [deleted file]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/LttngKernelAnalysisTest.java [deleted file]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/AllTests.java [new file with mode: 0644]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/LttngKernelAnalysisTest.java [new file with mode: 0644]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/GenerateTestValues.java [new file with mode: 0644]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/LttngKernelStateProviderTest.java [new file with mode: 0644]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/PartialStateSystemTest.java [new file with mode: 0644]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/StateSystemFullHistoryTest.java [new file with mode: 0644]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/StateSystemInMemoryTest.java [new file with mode: 0644]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/StateSystemTest.java [new file with mode: 0644]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/TestAll.java [new file with mode: 0644]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/TestValues.java [new file with mode: 0644]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/GenerateTestValues.java [deleted file]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/LttngKernelStateProviderTest.java [deleted file]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/PartialStateSystemTest.java [deleted file]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/StateSystemFullHistoryTest.java [deleted file]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/StateSystemInMemoryTest.java [deleted file]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/StateSystemTest.java [deleted file]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/TestAll.java [deleted file]
org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/TestValues.java [deleted file]
org.eclipse.tracecompass.lttng2.kernel.core/META-INF/MANIFEST.MF
org.eclipse.tracecompass.lttng2.kernel.core/plugin.xml
org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/stateprovider/LttngKernelStateProvider.java [deleted file]
org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/LttngKernelAnalysisModule.java [deleted file]
org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/Messages.java [deleted file]
org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/cpuusage/LttngKernelCpuUsageAnalysis.java [new file with mode: 0644]
org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/cpuusage/LttngKernelCpuUsageStateProvider.java [new file with mode: 0644]
org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/kernel/LttngKernelAnalysis.java [new file with mode: 0644]
org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/kernel/LttngKernelStateProvider.java [new file with mode: 0644]
org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/kernel/Messages.java [new file with mode: 0644]
org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/kernel/messages.properties [new file with mode: 0644]
org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/messages.properties [deleted file]
org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/cpuusage/LttngKernelCpuStateProvider.java [deleted file]
org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/cpuusage/LttngKernelCpuUsageAnalysis.java [deleted file]
org.eclipse.tracecompass.lttng2.kernel.ui/src/org/eclipse/tracecompass/internal/lttng2/kernel/ui/views/controlflow/ControlFlowPresentationProvider.java
org.eclipse.tracecompass.lttng2.kernel.ui/src/org/eclipse/tracecompass/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java
org.eclipse.tracecompass.lttng2.kernel.ui/src/org/eclipse/tracecompass/internal/lttng2/kernel/ui/views/cpuusage/CpuUsageComposite.java
org.eclipse.tracecompass.lttng2.kernel.ui/src/org/eclipse/tracecompass/internal/lttng2/kernel/ui/views/cpuusage/CpuUsageXYViewer.java
org.eclipse.tracecompass.lttng2.kernel.ui/src/org/eclipse/tracecompass/internal/lttng2/kernel/ui/views/resources/ResourcesPresentationProvider.java
org.eclipse.tracecompass.lttng2.kernel.ui/src/org/eclipse/tracecompass/internal/lttng2/kernel/ui/views/resources/ResourcesView.java

index be0f4cc834df9c21fe2d3f1ac57d316390e525e8..f50cbfc961f38f91a72fcbe492259a6bd2aacfae 100644 (file)
@@ -17,10 +17,10 @@ Require-Bundle: org.junit;bundle-version="4.0.0",
  org.eclipse.core.resources,
  org.eclipse.tracecompass.lttng2.control.core
 Export-Package: org.eclipse.tracecompass.lttng2.kernel.core.tests,
- org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis;x-internal:=true,
+ org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis.kernel;x-internal:=true,
+ org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis.kernel.statesystem;x-internal:=true,
  org.eclipse.tracecompass.lttng2.kernel.core.tests.event.matchandsync;x-internal:=true,
  org.eclipse.tracecompass.lttng2.kernel.core.tests.perf,
- org.eclipse.tracecompass.lttng2.kernel.core.tests.perf.analysis;x-internal:=true,
- org.eclipse.tracecompass.lttng2.kernel.core.tests.stateprovider;x-internal:=true
+ org.eclipse.tracecompass.lttng2.kernel.core.tests.perf.analysis;x-internal:=true
 Import-Package: com.google.common.collect,
  org.eclipse.test.performance
index 6a7a288817ba56e0dd39231f16d38d2cdcebed73..fb30f5cf53610046b8c1cf7745e21c23f19ee0a5 100644 (file)
@@ -21,7 +21,7 @@ import java.io.File;
 import org.eclipse.test.performance.Dimension;
 import org.eclipse.test.performance.Performance;
 import org.eclipse.test.performance.PerformanceMeter;
-import org.eclipse.tracecompass.lttng2.kernel.core.analysis.LttngKernelAnalysisModule;
+import org.eclipse.tracecompass.lttng2.kernel.core.analysis.kernel.LttngKernelAnalysis;
 import org.eclipse.tracecompass.lttng2.kernel.core.trace.LttngKernelTrace;
 import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModule;
 import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
@@ -65,7 +65,7 @@ public class AnalysisBenchmark {
         for (int i = 0; i < LOOP_COUNT; i++) {
             IAnalysisModule module = null;
             try (LttngKernelTrace trace = new LttngKernelTrace()) {
-                module = new LttngKernelAnalysisModule();
+                module = new LttngKernelAnalysis();
                 module.setId("test");
                 trace.initTrace(null, testTrace.getPath(), CtfTmfEvent.class);
                 module.setTrace(trace);
index 260b3c2639a0ca85ebe30125cc89907534c3dbc4..200f2467ff5ded73c1aabf85041583e88b48d5cf 100644 (file)
@@ -21,8 +21,8 @@ import org.junit.runner.RunWith;
 @RunWith(DebugSuite.class)
 @DebugSuite.SuiteClasses({
     ActivatorTest.class,
-    org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis.AllTests.class,
-    org.eclipse.tracecompass.lttng2.kernel.core.tests.stateprovider.TestAll.class,
+    org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis.kernel.AllTests.class,
+    org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis.kernel.statesystem.TestAll.class,
     org.eclipse.tracecompass.lttng2.kernel.core.tests.event.matchandsync.AllTests.class
 })
 public class AllTests {
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/AllTests.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/AllTests.java
deleted file mode 100644 (file)
index aa57627..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2014 Ã‰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
- *
- * Contributors:
- *   Geneviève Bastien - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-/**
- * Test suite for org.eclipse.linuxtools.lttng2.kernel.core.analysis package
- */
-@RunWith(Suite.class)
-@Suite.SuiteClasses({
-    LttngKernelAnalysisTest.class
-})
-public class AllTests {
-
-}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/LttngKernelAnalysisTest.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/LttngKernelAnalysisTest.java
deleted file mode 100644 (file)
index d0ef904..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2014 Ã‰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
- *
- * Contributors:
- *   Geneviève Bastien - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-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 static org.junit.Assume.assumeTrue;
-
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.tracecompass.internal.lttng2.kernel.core.LttngStrings;
-import org.eclipse.tracecompass.lttng2.control.core.session.SessionConfigStrings;
-import org.eclipse.tracecompass.lttng2.kernel.core.analysis.LttngKernelAnalysisModule;
-import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
-import org.eclipse.tracecompass.tmf.core.analysis.TmfAnalysisRequirement;
-import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
-import org.eclipse.tracecompass.tmf.core.tests.shared.TmfTestHelper;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTrace;
-import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import com.google.common.collect.ImmutableSet;
-
-/**
- * Test the {@link LttngKernelAnalysisModule} class
- *
- * @author Geneviève Bastien
- */
-public class LttngKernelAnalysisTest {
-
-    private ITmfTrace fTrace;
-    private LttngKernelAnalysisModule fKernelAnalysisModule;
-
-    /**
-     * Class setup
-     */
-    @BeforeClass
-    public static void setUpClass() {
-        assumeTrue(CtfTmfTestTrace.KERNEL.exists());
-    }
-
-    /**
-     * Set-up the test
-     */
-    @Before
-    public void setUp() {
-        fKernelAnalysisModule = new LttngKernelAnalysisModule();
-        fTrace = CtfTmfTestTrace.KERNEL.getTrace();
-    }
-
-    /**
-     * Dispose test objects
-     */
-    @After
-    public void tearDown() {
-        fTrace.dispose();
-        fKernelAnalysisModule.dispose();
-    }
-
-    /**
-     * Test the LTTng kernel analysis execution
-     */
-    @Test
-    public void testAnalysisExecution() {
-        fKernelAnalysisModule.setId("test");
-        try {
-            fKernelAnalysisModule.setTrace(fTrace);
-        } catch (TmfAnalysisException e) {
-            fail(e.getMessage());
-        }
-        // Assert the state system has not been initialized yet
-        ITmfStateSystem ss = fKernelAnalysisModule.getStateSystem();
-        assertNull(ss);
-
-        assertTrue(TmfTestHelper.executeAnalysis(fKernelAnalysisModule));
-
-        ss = fKernelAnalysisModule.getStateSystem();
-        assertNotNull(ss);
-
-        List<Integer> quarks = ss.getQuarks("*");
-        assertFalse(quarks.isEmpty());
-    }
-
-    /**
-     * Test the canExecute method on valid and invalid traces
-     */
-    @Test
-    public void testCanExecute() {
-        /* Test with a valid kernel trace */
-        assertNotNull(fTrace);
-        assertTrue(fKernelAnalysisModule.canExecute(fTrace));
-
-        /* Test with a CTF trace that does not have required events */
-        assumeTrue(CtfTmfTestTrace.CYG_PROFILE.exists());
-        try (CtfTmfTrace trace = CtfTmfTestTrace.CYG_PROFILE.getTrace();) {
-            /*
-             * TODO: This should be false, but for now there is no mandatory
-             * events in the kernel analysis so it will return true.
-             */
-            assertTrue(fKernelAnalysisModule.canExecute(trace));
-        }
-    }
-
-    /**
-     * Test for {@link LttngKernelAnalysisModule#getAnalysisRequirements()}
-     */
-    @Test
-    public void testGetAnalysisRequirements() {
-        Iterable<TmfAnalysisRequirement> requirements = fKernelAnalysisModule.getAnalysisRequirements();
-        assertNotNull(requirements);
-
-        /* There should be the event and domain type */
-        TmfAnalysisRequirement eventReq = null;
-        TmfAnalysisRequirement domainReq = null;
-        int numberOfRequirement = 0;
-        for (TmfAnalysisRequirement requirement : requirements) {
-            ++numberOfRequirement;
-            if (requirement.getType().equals(SessionConfigStrings.CONFIG_ELEMENT_EVENT)) {
-                eventReq = requirement;
-            } else if (requirement.getType().equals(SessionConfigStrings.CONFIG_ELEMENT_DOMAIN)) {
-                domainReq = requirement;
-            }
-        }
-        assertNotNull(eventReq);
-        assertNotNull(domainReq);
-
-        /* There should be two requirements */
-        assertEquals(2, numberOfRequirement);
-
-        /* Verify the content of the requirements themselves */
-        /* Domain should be kernel */
-        assertEquals(1, domainReq.getValues().size());
-        for (String domain : domainReq.getValues()) {
-            assertEquals(SessionConfigStrings.CONFIG_DOMAIN_TYPE_KERNEL, domain);
-        }
-
-        /* Events */
-        Set<String> expectedEvents = ImmutableSet.of(
-                LttngStrings.EXIT_SYSCALL,
-                LttngStrings.IRQ_HANDLER_ENTRY,
-                LttngStrings.IRQ_HANDLER_EXIT,
-                LttngStrings.SOFTIRQ_ENTRY,
-                LttngStrings.SOFTIRQ_EXIT,
-                LttngStrings.SOFTIRQ_RAISE,
-                LttngStrings.SCHED_SWITCH,
-                LttngStrings.SCHED_PROCESS_FORK,
-                LttngStrings.SCHED_PROCESS_EXIT,
-                LttngStrings.SCHED_PROCESS_FREE,
-                LttngStrings.STATEDUMP_PROCESS_STATE,
-                LttngStrings.SCHED_WAKEUP,
-                LttngStrings.SCHED_WAKEUP_NEW,
-                /* Add the prefix for syscalls */
-                LttngStrings.SYSCALL_PREFIX
-                );
-
-        assertEquals(14, eventReq.getValues().size());
-        for (String event : eventReq.getValues()) {
-            assertTrue("Unexpected event " + event, expectedEvents.contains(event));
-        }
-    }
-}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/AllTests.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/AllTests.java
new file mode 100644 (file)
index 0000000..80451a1
--- /dev/null
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Ã‰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
+ *
+ * Contributors:
+ *   Geneviève Bastien - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis.kernel;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/**
+ * Test suite for org.eclipse.linuxtools.lttng2.kernel.core.analysis package
+ */
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+    LttngKernelAnalysisTest.class
+})
+public class AllTests {
+
+}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/LttngKernelAnalysisTest.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/LttngKernelAnalysisTest.java
new file mode 100644 (file)
index 0000000..0e5da79
--- /dev/null
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Ã‰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
+ *
+ * Contributors:
+ *   Geneviève Bastien - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis.kernel;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+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 static org.junit.Assume.assumeTrue;
+
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.tracecompass.internal.lttng2.kernel.core.LttngStrings;
+import org.eclipse.tracecompass.lttng2.control.core.session.SessionConfigStrings;
+import org.eclipse.tracecompass.lttng2.kernel.core.analysis.kernel.LttngKernelAnalysis;
+import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
+import org.eclipse.tracecompass.tmf.core.analysis.TmfAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
+import org.eclipse.tracecompass.tmf.core.tests.shared.TmfTestHelper;
+import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
+import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTrace;
+import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * Test the {@link LttngKernelAnalysis} class
+ *
+ * @author Geneviève Bastien
+ */
+public class LttngKernelAnalysisTest {
+
+    private ITmfTrace fTrace;
+    private LttngKernelAnalysis fKernelAnalysisModule;
+
+    /**
+     * Class setup
+     */
+    @BeforeClass
+    public static void setUpClass() {
+        assumeTrue(CtfTmfTestTrace.KERNEL.exists());
+    }
+
+    /**
+     * Set-up the test
+     */
+    @Before
+    public void setUp() {
+        fKernelAnalysisModule = new LttngKernelAnalysis();
+        fTrace = CtfTmfTestTrace.KERNEL.getTrace();
+    }
+
+    /**
+     * Dispose test objects
+     */
+    @After
+    public void tearDown() {
+        fTrace.dispose();
+        fKernelAnalysisModule.dispose();
+    }
+
+    /**
+     * Test the LTTng kernel analysis execution
+     */
+    @Test
+    public void testAnalysisExecution() {
+        fKernelAnalysisModule.setId("test");
+        try {
+            fKernelAnalysisModule.setTrace(fTrace);
+        } catch (TmfAnalysisException e) {
+            fail(e.getMessage());
+        }
+        // Assert the state system has not been initialized yet
+        ITmfStateSystem ss = fKernelAnalysisModule.getStateSystem();
+        assertNull(ss);
+
+        assertTrue(TmfTestHelper.executeAnalysis(fKernelAnalysisModule));
+
+        ss = fKernelAnalysisModule.getStateSystem();
+        assertNotNull(ss);
+
+        List<Integer> quarks = ss.getQuarks("*");
+        assertFalse(quarks.isEmpty());
+    }
+
+    /**
+     * Test the canExecute method on valid and invalid traces
+     */
+    @Test
+    public void testCanExecute() {
+        /* Test with a valid kernel trace */
+        assertNotNull(fTrace);
+        assertTrue(fKernelAnalysisModule.canExecute(fTrace));
+
+        /* Test with a CTF trace that does not have required events */
+        assumeTrue(CtfTmfTestTrace.CYG_PROFILE.exists());
+        try (CtfTmfTrace trace = CtfTmfTestTrace.CYG_PROFILE.getTrace();) {
+            /*
+             * TODO: This should be false, but for now there is no mandatory
+             * events in the kernel analysis so it will return true.
+             */
+            assertTrue(fKernelAnalysisModule.canExecute(trace));
+        }
+    }
+
+    /**
+     * Test for {@link LttngKernelAnalysis#getAnalysisRequirements()}
+     */
+    @Test
+    public void testGetAnalysisRequirements() {
+        Iterable<TmfAnalysisRequirement> requirements = fKernelAnalysisModule.getAnalysisRequirements();
+        assertNotNull(requirements);
+
+        /* There should be the event and domain type */
+        TmfAnalysisRequirement eventReq = null;
+        TmfAnalysisRequirement domainReq = null;
+        int numberOfRequirement = 0;
+        for (TmfAnalysisRequirement requirement : requirements) {
+            ++numberOfRequirement;
+            if (requirement.getType().equals(SessionConfigStrings.CONFIG_ELEMENT_EVENT)) {
+                eventReq = requirement;
+            } else if (requirement.getType().equals(SessionConfigStrings.CONFIG_ELEMENT_DOMAIN)) {
+                domainReq = requirement;
+            }
+        }
+        assertNotNull(eventReq);
+        assertNotNull(domainReq);
+
+        /* There should be two requirements */
+        assertEquals(2, numberOfRequirement);
+
+        /* Verify the content of the requirements themselves */
+        /* Domain should be kernel */
+        assertEquals(1, domainReq.getValues().size());
+        for (String domain : domainReq.getValues()) {
+            assertEquals(SessionConfigStrings.CONFIG_DOMAIN_TYPE_KERNEL, domain);
+        }
+
+        /* Events */
+        Set<String> expectedEvents = ImmutableSet.of(
+                LttngStrings.EXIT_SYSCALL,
+                LttngStrings.IRQ_HANDLER_ENTRY,
+                LttngStrings.IRQ_HANDLER_EXIT,
+                LttngStrings.SOFTIRQ_ENTRY,
+                LttngStrings.SOFTIRQ_EXIT,
+                LttngStrings.SOFTIRQ_RAISE,
+                LttngStrings.SCHED_SWITCH,
+                LttngStrings.SCHED_PROCESS_FORK,
+                LttngStrings.SCHED_PROCESS_EXIT,
+                LttngStrings.SCHED_PROCESS_FREE,
+                LttngStrings.STATEDUMP_PROCESS_STATE,
+                LttngStrings.SCHED_WAKEUP,
+                LttngStrings.SCHED_WAKEUP_NEW,
+                /* Add the prefix for syscalls */
+                LttngStrings.SYSCALL_PREFIX
+                );
+
+        assertEquals(14, eventReq.getValues().size());
+        for (String event : eventReq.getValues()) {
+            assertTrue("Unexpected event " + event, expectedEvents.contains(event));
+        }
+    }
+}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/GenerateTestValues.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/GenerateTestValues.java
new file mode 100644 (file)
index 0000000..91df1d2
--- /dev/null
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ * Copyright (c) 2013, 2014 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
+ *
+ * Contributors:
+ *   Alexandre Montplaisir - Initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis.kernel.statesystem;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.util.List;
+
+import org.eclipse.tracecompass.lttng2.kernel.core.analysis.kernel.LttngKernelStateProvider;
+import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
+import org.eclipse.tracecompass.statesystem.core.interval.ITmfStateInterval;
+import org.eclipse.tracecompass.statesystem.core.statevalue.ITmfStateValue;
+import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
+import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
+import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTrace;
+import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace;
+
+/**
+ * Small program to regenerate the values used in "TestValues.java" from the
+ * current LTTng-kernel state provider.
+ *
+ * It will write its output the a file called 'TestValues<something>.java' in your
+ * temporary files directory.
+ *
+ * @author Alexandre Montplaisir
+ */
+public class GenerateTestValues {
+
+    private static CtfTmfTestTrace testTrace = CtfTmfTestTrace.TRACE2;
+    private static final long targetTimestamp = 18670067372290L + 1331649577946812237L;
+    private static final String INDENT = "    ";
+
+    /**
+     * Run the program
+     *
+     * @param args
+     *            Command-line arguments, unused.
+     * @throws Exception
+     *             I'm messing with Exception. Come at me bro!
+     */
+    public static void main(String[] args) throws Exception {
+        if (!testTrace.exists()) {
+            System.err.println("Trace files not present.");
+            return;
+        }
+
+        /* Prepare the files */
+        File logFile = File.createTempFile("TestValues", ".java");
+        try (final CtfTmfTrace trace = testTrace.getTrace();
+                PrintWriter writer = new PrintWriter(new FileWriter(logFile), true);) {
+
+            /* Build and query the state system */
+            TmfStateSystemAnalysisModule module = new TmfStateSystemAnalysisModule() {
+                @Override
+                protected ITmfStateProvider createStateProvider() {
+                    return new LttngKernelStateProvider(trace);
+                }
+
+                @Override
+                protected String getSsFileName() {
+                    return "test-values";
+                }
+            };
+
+            module.setTrace(trace);
+            module.setId("test-values");
+            module.schedule();
+            module.waitForCompletion();
+            ITmfStateSystem ssq = module.getStateSystem();
+            if (ssq == null) {
+                throw new IllegalStateException();
+            }
+
+            List<ITmfStateInterval> fullState = ssq.queryFullState(targetTimestamp);
+
+            /* Start printing the java file's contents */
+            writer.println("interface TestValues {");
+            writer.println();
+            writer.println(INDENT + "static final int size = " + fullState.size() + ";");
+            writer.println();
+
+            /* Print the array contents */
+            writer.println(INDENT + "static final long[] startTimes = {");
+            for (ITmfStateInterval interval : fullState) {
+                writer.println(INDENT + INDENT + String.valueOf(interval.getStartTime()) + "L,");
+            }
+            writer.println(INDENT + "};");
+            writer.println();
+
+            writer.println(INDENT + "static final long[] endTimes = {");
+            for (ITmfStateInterval interval : fullState) {
+                writer.println(INDENT + INDENT + String.valueOf(interval.getEndTime()) + "L,");
+            }
+            writer.println(INDENT + "};");
+            writer.println();
+
+            writer.println(INDENT + "static final ITmfStateValue[] values = {");
+            for (ITmfStateInterval interval : fullState) {
+                ITmfStateValue val = interval.getStateValue();
+                writer.print(INDENT + INDENT);
+
+                switch (val.getType()) {
+                case NULL:
+                    writer.println("TmfStateValue.nullValue(),");
+                    break;
+                case INTEGER:
+                    writer.println("TmfStateValue.newValueInt(" + val.unboxInt() + "),");
+                    break;
+                case LONG:
+                    writer.println("TmfStateValue.newValueLong(" + val.unboxLong() + "),");
+                    break;
+                case DOUBLE:
+                    writer.println("TmfStateValue.newValueDouble(" + val.unboxDouble() + "),");
+                    break;
+                case STRING:
+                    writer.println("TmfStateValue.newValueString(\"" + val.unboxStr() + "\"),");
+                    break;
+                default:
+                    writer.println(val.toString());
+                    break;
+                }
+            }
+            writer.println(INDENT + "};");
+
+            writer.println("}");
+            writer.println();
+
+            module.dispose();
+        }
+        System.exit(0);
+    }
+
+}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/LttngKernelStateProviderTest.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/LttngKernelStateProviderTest.java
new file mode 100644 (file)
index 0000000..43470dc
--- /dev/null
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2013 Ericsson
+ * Copyright (c) 2010, 2011 Ã‰cole Polytechnique de Montréal
+ * Copyright (c) 2010, 2011 Alexandre Montplaisir <alexandre.montplaisir@gmail.com>
+ *
+ * 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.lttng2.kernel.core.tests.analysis.kernel.statesystem;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assume.assumeTrue;
+
+import org.eclipse.tracecompass.lttng2.kernel.core.analysis.kernel.LttngKernelStateProvider;
+import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
+import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTrace;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * Tests for the {@link LttngKernelStateProvider}
+ *
+ * @author Alexandre Montplaisir
+ */
+public class LttngKernelStateProviderTest {
+
+    private static final CtfTmfTestTrace testTrace = CtfTmfTestTrace.TRACE2;
+
+    private static ITmfStateProvider input;
+
+    /**
+     * Set-up.
+     */
+    @BeforeClass
+    public static void initialize() {
+        assumeTrue(testTrace.exists());
+        input = new LttngKernelStateProvider(testTrace.getTrace());
+
+    }
+
+    /**
+     * Test loading the state provider.
+     */
+    @Test
+    public void testOpening() {
+        long testStartTime;
+        testStartTime = input.getStartTime();
+        assertEquals(testStartTime, StateSystemTest.startTime);
+    }
+
+}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/PartialStateSystemTest.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/PartialStateSystemTest.java
new file mode 100644 (file)
index 0000000..302e996
--- /dev/null
@@ -0,0 +1,194 @@
+/*******************************************************************************
+ * Copyright (c) 2013, 2014 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
+ *
+ * Contributors:
+ *   Alexandre Montplaisir - Initial API and implementation
+ *   Bernd Hufmann - Use state system analysis module instead of factory
+ ******************************************************************************/
+
+package org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis.kernel.statesystem;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.tracecompass.lttng2.kernel.core.analysis.kernel.LttngKernelStateProvider;
+import org.eclipse.tracecompass.statesystem.core.exceptions.TimeRangeException;
+import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
+import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
+import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
+import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
+import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
+import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * State system tests using a partial history.
+ *
+ * @author Alexandre Montplaisir
+ */
+public class PartialStateSystemTest extends StateSystemTest {
+
+    private static final @NonNull String TEST_FILE_NAME = "test-partial";
+
+    private static File stateFile;
+    private static TestLttngKernelAnalysisModule module;
+
+    /**
+     * Test class setup
+     */
+    @BeforeClass
+    public static void initialize() {
+        if (!testTrace.exists()) {
+            traceIsPresent = false;
+            return;
+        }
+        traceIsPresent = true;
+
+        stateFile = new File(TmfTraceManager.getSupplementaryFileDir(testTrace.getTrace()) + TEST_FILE_NAME);
+        if (stateFile.exists()) {
+            stateFile.delete();
+        }
+
+        module = new TestLttngKernelAnalysisModule(TEST_FILE_NAME);
+        try {
+            module.setTrace(testTrace.getTrace());
+        } catch (TmfAnalysisException e) {
+            fail();
+        }
+        module.schedule();
+        assertTrue(module.waitForCompletion());
+
+        fixture = module.getStateSystem();
+    }
+
+    /**
+     * Class clean-up
+     */
+    @AfterClass
+    public static void cleanup() {
+        if (module != null) {
+            module.dispose();
+        }
+        if (stateFile != null) {
+            stateFile.delete();
+        }
+        if (fixture != null) {
+            fixture.dispose();
+        }
+        module = null;
+        fixture = null;
+    }
+
+    /**
+     * Partial histories cannot get the intervals' end times. The fake value that
+     * is returned is equal to the query's timestamp. So override this here
+     * so that {@link #testFullQueryThorough} keeps working.
+     */
+    @Override
+    protected long getEndTimes(int idx) {
+        return interestingTimestamp1;
+    }
+
+    // ------------------------------------------------------------------------
+    // Skip tests using single-queries (unsupported in partial history)
+    // ------------------------------------------------------------------------
+
+    @Override
+    @Test(expected = UnsupportedOperationException.class)
+    public void testSingleQuery1() {
+        super.testSingleQuery1();
+    }
+
+    @Override
+    @Test(expected = UnsupportedOperationException.class)
+    public void testRangeQuery1() {
+        super.testRangeQuery1();
+    }
+
+    @Override
+    @Test(expected = UnsupportedOperationException.class)
+    public void testRangeQuery2() {
+        super.testRangeQuery2();
+    }
+
+    @Override
+    @Test(expected = UnsupportedOperationException.class)
+    public void testRangeQuery3() {
+        super.testRangeQuery3();
+    }
+
+    @Override
+    @Test(expected = UnsupportedOperationException.class)
+    public void testSingleQueryInvalidTime1() throws TimeRangeException {
+        super.testSingleQueryInvalidTime1();
+    }
+
+    @Override
+    @Test(expected = UnsupportedOperationException.class)
+    public void testSingleQueryInvalidTime2() throws TimeRangeException {
+        super.testSingleQueryInvalidTime2();
+    }
+
+    @Override
+    @Test(expected = UnsupportedOperationException.class)
+    public void testRangeQueryInvalidTime1() throws TimeRangeException {
+        super.testRangeQueryInvalidTime1();
+    }
+
+    @Override
+    @Test(expected = UnsupportedOperationException.class)
+    public void testRangeQueryInvalidTime2() throws TimeRangeException {
+        super.testRangeQueryInvalidTime2();
+    }
+
+    @NonNullByDefault
+    private static class TestLttngKernelAnalysisModule extends TmfStateSystemAnalysisModule {
+
+        private final String htFileName;
+
+        /**
+         * Constructor adding the views to the analysis
+         * @param htFileName
+         *      The History File Name
+         */
+        public TestLttngKernelAnalysisModule(String htFileName) {
+            super();
+            this.htFileName = htFileName;
+        }
+
+        @Override
+        public void setTrace(@Nullable ITmfTrace trace) throws TmfAnalysisException {
+            if (!(trace instanceof CtfTmfTrace)) {
+                throw new IllegalStateException("TestLttngKernelAnalysisModule: trace should be of type CtfTmfTrace"); //$NON-NLS-1$
+            }
+            super.setTrace(trace);
+        }
+
+        @Override
+        protected ITmfStateProvider createStateProvider() {
+            return new LttngKernelStateProvider(getTrace());
+        }
+
+        @Override
+        protected StateSystemBackendType getBackendType() {
+            return StateSystemBackendType.PARTIAL;
+        }
+
+        @Override
+        protected String getSsFileName() {
+            return htFileName;
+        }
+
+    }
+}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/StateSystemFullHistoryTest.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/StateSystemFullHistoryTest.java
new file mode 100644 (file)
index 0000000..7a45c67
--- /dev/null
@@ -0,0 +1,199 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2014 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
+ *
+ * Contributors:
+ *   Alexandre Montplaisir - Initial API and implementation
+ *   Bernd Hufmann - Use state system analysis module instead of factory
+ ******************************************************************************/
+
+package org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis.kernel.statesystem;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.tracecompass.lttng2.kernel.core.analysis.kernel.LttngKernelStateProvider;
+import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
+import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
+import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
+import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
+import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
+import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
+import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * State system tests using a full history back-end and the LTTng kernel state
+ * input.
+ *
+ * @author Alexandre Montplaisir
+ */
+public class StateSystemFullHistoryTest extends StateSystemTest {
+
+    private static final @NonNull String TEST_FILE_NAME = "test.ht";
+    private static final @NonNull String BENCHMARK_FILE_NAME = "test.benchmark.ht";
+
+    private static File stateFile;
+    private static File stateFileBenchmark;
+    private static TestLttngKernelAnalysisModule module;
+
+    /**
+     * Test class setup
+     */
+    @BeforeClass
+    public static void initialize() {
+        if (!testTrace.exists()) {
+            traceIsPresent = false;
+            return;
+        }
+        traceIsPresent = true;
+
+        stateFile = createStateFile(TEST_FILE_NAME);
+        stateFileBenchmark = createStateFile(BENCHMARK_FILE_NAME);
+
+        module = new TestLttngKernelAnalysisModule(TEST_FILE_NAME);
+        try {
+            module.setTrace(testTrace.getTrace());
+        } catch (TmfAnalysisException e) {
+            fail();
+        }
+        module.schedule();
+        assertTrue(module.waitForCompletion());
+
+        fixture = module.getStateSystem();
+    }
+
+    /**
+     * Clean-up
+     */
+    @AfterClass
+    public static void cleanup() {
+        if (module != null) {
+            module.dispose();
+        }
+        if (stateFile != null) {
+            stateFile.delete();
+        }
+        if (stateFileBenchmark != null) {
+            stateFileBenchmark.delete();
+        }
+        if (fixture != null) {
+            fixture.dispose();
+        }
+        module = null;
+        fixture = null;
+    }
+
+    // ------------------------------------------------------------------------
+    // Tests specific to a full-history
+    // ------------------------------------------------------------------------
+
+    /**
+     * Rebuild independently so we can benchmark it. Too bad JUnit doesn't allow
+     * us to @Test the @BeforeClass...
+     */
+    @Test
+    public void testBuild() {
+        TestLttngKernelAnalysisModule module2 = new TestLttngKernelAnalysisModule(BENCHMARK_FILE_NAME);
+        try {
+            module2.setTrace(testTrace.getTrace());
+        } catch (TmfAnalysisException e) {
+            module2.dispose();
+            fail();
+        }
+        module2.schedule();
+        assertTrue(module2.waitForCompletion());
+        ITmfStateSystem ssb2 = module2.getStateSystem();
+
+        assertNotNull(ssb2);
+        assertEquals(startTime, ssb2.getStartTime());
+        assertEquals(endTime, ssb2.getCurrentEndTime());
+
+        module2.dispose();
+    }
+
+    /**
+     * Test re-opening the existing file.
+     */
+    @Test
+    public void testOpenExistingStateFile() {
+        /* 'newStateFile' should have already been created */
+        TestLttngKernelAnalysisModule module2 = new TestLttngKernelAnalysisModule(TEST_FILE_NAME);
+        try {
+            module2.setTrace(testTrace.getTrace());
+        } catch (TmfAnalysisException e) {
+            module2.dispose();
+            fail();
+        }
+        module2.schedule();
+        assertTrue(module2.waitForCompletion());
+        ITmfStateSystem ssb2 = module2.getStateSystem();
+
+        assertNotNull(ssb2);
+        assertEquals(startTime, ssb2.getStartTime());
+        assertEquals(endTime, ssb2.getCurrentEndTime());
+
+        module2.dispose();
+    }
+
+    @NonNullByDefault
+    private static class TestLttngKernelAnalysisModule extends TmfStateSystemAnalysisModule {
+
+        private final String htFileName;
+
+        /**
+         * Constructor adding the views to the analysis
+         * @param htFileName
+         *      The History File Name
+         */
+        public TestLttngKernelAnalysisModule(String htFileName) {
+            super();
+            this.htFileName = htFileName;
+        }
+
+        @Override
+        public void setTrace(@Nullable ITmfTrace trace) throws TmfAnalysisException {
+            if (!(trace instanceof CtfTmfTrace)) {
+                throw new IllegalStateException("TestLttngKernelAnalysisModule: trace should be of type CtfTmfTrace"); //$NON-NLS-1$
+            }
+            super.setTrace(trace);
+        }
+
+        @Override
+        protected ITmfStateProvider createStateProvider() {
+            return new LttngKernelStateProvider(getTrace());
+        }
+
+        @Override
+        protected StateSystemBackendType getBackendType() {
+            return StateSystemBackendType.FULL;
+        }
+
+        @Override
+        protected String getSsFileName() {
+            return htFileName;
+        }
+    }
+
+    private static File createStateFile(String name) {
+        File file = new File(TmfTraceManager.getSupplementaryFileDir(testTrace.getTrace()) + name);
+        if (file.exists()) {
+            file.delete();
+        }
+        return file;
+    }
+
+}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/StateSystemInMemoryTest.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/StateSystemInMemoryTest.java
new file mode 100644 (file)
index 0000000..f1a0f80
--- /dev/null
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2013, 2014 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
+ *
+ * Contributors:
+ *   Alexandre Montplaisir - Initial API and implementation
+ *   Bernd Hufmann - Use state system analysis module instead of factory
+ ******************************************************************************/
+
+package org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis.kernel.statesystem;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.tracecompass.lttng2.kernel.core.analysis.kernel.LttngKernelStateProvider;
+import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
+import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
+import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
+import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
+import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+
+/**
+ * State system tests using the in-memory back-end.
+ *
+ * @author Alexandre Montplaisir
+ */
+public class StateSystemInMemoryTest extends StateSystemTest {
+
+    private static TestLttngKernelAnalysisModule module;
+
+    /**
+     * Test class setup
+     */
+    @BeforeClass
+    public static void initialize() {
+        if (!testTrace.exists()) {
+            traceIsPresent = false;
+            return;
+        }
+        traceIsPresent = true;
+
+        module = new TestLttngKernelAnalysisModule();
+        try {
+            module.setTrace(testTrace.getTrace());
+        } catch (TmfAnalysisException e) {
+            fail();
+        }
+        module.schedule();
+        assertTrue(module.waitForCompletion());
+
+        fixture = module.getStateSystem();
+    }
+
+    /**
+     * Class cleanup
+     */
+    @AfterClass
+    public static void cleanup() {
+        if (module != null) {
+            module.dispose();
+        }
+        if (fixture != null) {
+            fixture.dispose();
+        }
+        module = null;
+        fixture = null;
+    }
+
+    private static class TestLttngKernelAnalysisModule extends TmfStateSystemAnalysisModule {
+
+        /**
+         * Constructor adding the views to the analysis
+         */
+        public TestLttngKernelAnalysisModule() {
+            super();
+        }
+
+        @Override
+        public void setTrace(ITmfTrace trace) throws TmfAnalysisException {
+            if (!(trace instanceof CtfTmfTrace)) {
+                throw new IllegalStateException("TestLttngKernelAnalysisModule: trace should be of type CtfTmfTrace"); //$NON-NLS-1$
+            }
+            super.setTrace(trace);
+        }
+
+        @Override
+        protected ITmfStateProvider createStateProvider() {
+            return new LttngKernelStateProvider(getTrace());
+        }
+
+        @Override
+        protected StateSystemBackendType getBackendType() {
+            return StateSystemBackendType.INMEM;
+        }
+    }
+}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/StateSystemTest.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/StateSystemTest.java
new file mode 100644 (file)
index 0000000..1e489cd
--- /dev/null
@@ -0,0 +1,436 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2010, 2011 Ã‰cole Polytechnique de Montréal
+ * Copyright (c) 2010, 2011 Alexandre Montplaisir <alexandre.montplaisir@gmail.com>
+ *
+ * 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.lttng2.kernel.core.tests.analysis.kernel.statesystem;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.junit.Assume.assumeTrue;
+
+import java.util.List;
+
+import org.eclipse.tracecompass.internal.lttng2.kernel.core.Attributes;
+import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
+import org.eclipse.tracecompass.statesystem.core.StateSystemUtils;
+import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundException;
+import org.eclipse.tracecompass.statesystem.core.exceptions.StateSystemDisposedException;
+import org.eclipse.tracecompass.statesystem.core.exceptions.StateValueTypeException;
+import org.eclipse.tracecompass.statesystem.core.exceptions.TimeRangeException;
+import org.eclipse.tracecompass.statesystem.core.interval.ITmfStateInterval;
+import org.eclipse.tracecompass.statesystem.core.statevalue.ITmfStateValue;
+import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTrace;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestRule;
+import org.junit.rules.Timeout;
+
+/**
+ * Base unit tests for the StateHistorySystem. Extension can be made to test
+ * different state back-end types or configurations.
+ *
+ * @author Alexandre Montplaisir
+ */
+@SuppressWarnings("javadoc")
+public abstract class StateSystemTest {
+
+    /** Timeout the tests after 2 minutes */
+    @Rule
+    public TestRule timeoutRule = new Timeout(120000);
+
+    /** Test trace used for these tests */
+    protected static final CtfTmfTestTrace testTrace = CtfTmfTestTrace.TRACE2;
+
+    /** Expected start time of the test trace/state history */
+    protected static final long startTime = 1331668247314038062L;
+
+    /** Expected end time of the state history built from the test trace */
+    protected static final long endTime = 1331668259054285979L;
+
+    /** Offset in the trace + start time of the trace */
+    protected static final long interestingTimestamp1 = 18670067372290L + 1331649577946812237L;
+
+    /** Number of nanoseconds in one second */
+    private static final long NANOSECS_PER_SEC = 1000000000L;
+
+    protected static ITmfStateSystem fixture;
+    protected static boolean traceIsPresent = false;
+
+    /**
+     * Test set-up
+     */
+    @Before
+    public void setUp() {
+        assumeTrue(traceIsPresent);
+        /* Subclasses should set-up 'fixture' */
+        assertNotNull(fixture);
+    }
+
+    @Test
+    public void testFullQuery1() {
+        List<ITmfStateInterval> list;
+        ITmfStateInterval interval;
+        int quark, valueInt;
+        String valueStr;
+
+        try {
+            list = fixture.queryFullState(interestingTimestamp1);
+
+            quark = fixture.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
+            interval = list.get(quark);
+            valueInt = interval.getStateValue().unboxInt();
+            assertEquals(1397, valueInt);
+
+            quark = fixture.getQuarkAbsolute(Attributes.THREADS, "1432", Attributes.EXEC_NAME);
+            interval = list.get(quark);
+            valueStr = interval.getStateValue().unboxStr();
+            assertEquals("gdbus", valueStr);
+
+            quark = fixture.getQuarkAbsolute(Attributes.THREADS, "1432", Attributes.SYSTEM_CALL);
+            interval = list.get(quark);
+            valueStr = interval.getStateValue().unboxStr();
+            assertTrue(valueStr.equals("sys_poll"));
+
+        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
+            fail();
+        }
+    }
+
+    @Test
+    public void testSingleQuery1() {
+        long timestamp = interestingTimestamp1;
+        int quark;
+        ITmfStateInterval interval;
+        String valueStr;
+
+        try {
+            quark = fixture.getQuarkAbsolute(Attributes.THREADS, "1432", Attributes.EXEC_NAME);
+            interval = fixture.querySingleState(timestamp, quark);
+            valueStr = interval.getStateValue().unboxStr();
+            assertEquals("gdbus", valueStr);
+
+        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
+            fail();
+        }
+    }
+
+    /**
+     * Test a range query (with no resolution parameter, so all intervals)
+     */
+    @Test
+    public void testRangeQuery1() {
+        long time1 = interestingTimestamp1;
+        long time2 = time1 + 1L * NANOSECS_PER_SEC;
+        int quark;
+        List<ITmfStateInterval> intervals;
+
+        final ITmfStateSystem ss = fixture;
+        assertNotNull(ss);
+
+        try {
+            quark = ss.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
+            intervals = StateSystemUtils.queryHistoryRange(ss, quark, time1, time2);
+            assertEquals(487, intervals.size()); /* Number of context switches! */
+            assertEquals(1685, intervals.get(100).getStateValue().unboxInt());
+            assertEquals(1331668248427681372L, intervals.get(205).getEndTime());
+
+        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
+            fail();
+        }
+    }
+
+    /**
+     * Range query, but with a t2 far off the end of the trace. The result
+     * should still be valid.
+     */
+    @Test
+    public void testRangeQuery2() {
+        List<ITmfStateInterval> intervals;
+
+        final ITmfStateSystem ss = fixture;
+        assertNotNull(ss);
+
+        try {
+            int quark = ss.getQuarkAbsolute(Attributes.RESOURCES, Attributes.IRQS, "1");
+            long ts1 = ss.getStartTime(); /* start of the trace */
+            long ts2 = startTime + 20L * NANOSECS_PER_SEC; /* invalid, but ignored */
+
+            intervals = StateSystemUtils.queryHistoryRange(ss, quark, ts1, ts2);
+
+            /* Activity of IRQ 1 over the whole trace */
+            assertEquals(65, intervals.size());
+
+        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
+            fail();
+        }
+    }
+
+    /**
+     * Test a range query with a resolution
+     */
+    @Test
+    public void testRangeQuery3() {
+        long time1 = interestingTimestamp1;
+        long time2 = time1 + 1L * NANOSECS_PER_SEC;
+        long resolution = 1000000; /* One query every millisecond */
+        int quark;
+        List<ITmfStateInterval> intervals;
+
+        final ITmfStateSystem ss = fixture;
+        assertNotNull(ss);
+
+        try {
+            quark = ss.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
+            intervals = StateSystemUtils.queryHistoryRange(ss, quark, time1, time2, resolution, null);
+            assertEquals(126, intervals.size()); /* Number of context switches! */
+            assertEquals(1452, intervals.get(50).getStateValue().unboxInt());
+            assertEquals(1331668248815698779L, intervals.get(100).getEndTime());
+
+        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
+            fail();
+        }
+    }
+
+    /**
+     * Ask for a time range outside of the trace's range
+     */
+    @Test(expected = TimeRangeException.class)
+    public void testFullQueryInvalidTime1() throws TimeRangeException,
+            StateSystemDisposedException {
+        long ts = startTime + 20L * NANOSECS_PER_SEC;
+        fixture.queryFullState(ts);
+    }
+
+    @Test(expected = TimeRangeException.class)
+    public void testFullQueryInvalidTime2() throws TimeRangeException,
+            StateSystemDisposedException {
+        long ts = startTime - 20L * NANOSECS_PER_SEC;
+        fixture.queryFullState(ts);
+    }
+
+    @Test(expected = TimeRangeException.class)
+    public void testSingleQueryInvalidTime1() throws TimeRangeException {
+        try {
+            int quark = fixture.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
+            long ts = startTime + 20L * NANOSECS_PER_SEC;
+            fixture.querySingleState(ts, quark);
+
+        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
+            fail();
+        }
+    }
+
+    @Test(expected = TimeRangeException.class)
+    public void testSingleQueryInvalidTime2() throws TimeRangeException {
+        try {
+            int quark = fixture.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
+            long ts = startTime - 20L * NANOSECS_PER_SEC;
+            fixture.querySingleState(ts, quark);
+
+        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
+            fail();
+        }
+    }
+
+    @Test(expected = TimeRangeException.class)
+    public void testRangeQueryInvalidTime1() throws TimeRangeException {
+        final ITmfStateSystem ss = fixture;
+        assertNotNull(ss);
+
+        try {
+            int quark = ss.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
+            long ts1 = startTime - 20L * NANOSECS_PER_SEC; /* invalid */
+            long ts2 = startTime + 1L * NANOSECS_PER_SEC; /* valid */
+            StateSystemUtils.queryHistoryRange(ss, quark, ts1, ts2);
+
+        } catch (AttributeNotFoundException e) {
+            fail();
+        } catch (StateSystemDisposedException e) {
+            fail();
+        }
+    }
+
+    @Test(expected = TimeRangeException.class)
+    public void testRangeQueryInvalidTime2() throws TimeRangeException {
+        final ITmfStateSystem ss = fixture;
+        assertNotNull(ss);
+
+        try {
+            int quark = ss.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
+            long ts1 = startTime - 1L * NANOSECS_PER_SEC; /* invalid */
+            long ts2 = startTime + 20L * NANOSECS_PER_SEC; /* invalid */
+            StateSystemUtils.queryHistoryRange(ss, quark, ts1, ts2);
+
+        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
+            fail();
+        }
+    }
+
+    /**
+     * Ask for a non-existing attribute
+     *
+     * @throws AttributeNotFoundException
+     */
+    @Test(expected = AttributeNotFoundException.class)
+    public void testQueryInvalidAttribute() throws AttributeNotFoundException {
+        fixture.getQuarkAbsolute("There", "is", "no", "cow", "level");
+    }
+
+    /**
+     * Query but with the wrong State Value type
+     */
+    @Test(expected = StateValueTypeException.class)
+    public void testQueryInvalidValuetype1() throws StateValueTypeException {
+        List<ITmfStateInterval> list;
+        ITmfStateInterval interval;
+        int quark;
+
+        try {
+            list = fixture.queryFullState(interestingTimestamp1);
+            quark = fixture.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
+            interval = list.get(quark);
+
+            /* This is supposed to be an int value */
+            interval.getStateValue().unboxStr();
+
+        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
+            fail();
+        }
+    }
+
+    @Test(expected = StateValueTypeException.class)
+    public void testQueryInvalidValuetype2() throws StateValueTypeException {
+        List<ITmfStateInterval> list;
+        ITmfStateInterval interval;
+        int quark;
+
+        try {
+            list = fixture.queryFullState(interestingTimestamp1);
+            quark = fixture.getQuarkAbsolute(Attributes.THREADS, "1432", Attributes.EXEC_NAME);
+            interval = list.get(quark);
+
+            /* This is supposed to be a String value */
+            interval.getStateValue().unboxInt();
+
+        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
+            fail();
+        }
+    }
+
+    @Test
+    public void testFullAttributeName() {
+        try {
+            int quark = fixture.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
+            String name = fixture.getFullAttributePath(quark);
+            assertEquals(name, "CPUs/0/Current_thread");
+
+        } catch (AttributeNotFoundException e) {
+            fail();
+        }
+    }
+
+    @Test
+    public void testGetQuarks_begin() {
+        List<Integer> list = fixture.getQuarks("*", "1577", Attributes.EXEC_NAME);
+
+        assertEquals(1, list.size());
+    }
+
+    @Test
+    public void testGetQuarks_middle() {
+        List<Integer> list = fixture.getQuarks(Attributes.THREADS, "*", Attributes.EXEC_NAME);
+
+        /* Number of different kernel threads in the trace */
+        assertEquals(168, list.size());
+    }
+
+    @Test
+    public void testGetQuarks_end() {
+        List<Integer> list = fixture.getQuarks(Attributes.THREADS, "1577", "*");
+
+        /* There should be 4 sub-attributes for each Thread node */
+        assertEquals(4, list.size());
+    }
+
+    // ------------------------------------------------------------------------
+    // Tests verifying the *complete* results of a full queries
+    // ------------------------------------------------------------------------
+
+    protected long getStartTimes(int idx) {
+        return TestValues.startTimes[idx];
+    }
+
+    protected long getEndTimes(int idx) {
+        return TestValues.endTimes[idx];
+    }
+
+    protected ITmfStateValue getStateValues(int idx) {
+        return TestValues.values[idx];
+    }
+
+    @Test
+    public void testFullQueryThorough() {
+        try {
+            List<ITmfStateInterval> state = fixture.queryFullState(interestingTimestamp1);
+            assertEquals(TestValues.size, state.size());
+
+            for (int i = 0; i < state.size(); i++) {
+                /* Test each component of the intervals */
+                assertEquals(getStartTimes(i), state.get(i).getStartTime());
+                assertEquals(getEndTimes(i), state.get(i).getEndTime());
+                assertEquals(i, state.get(i).getAttribute());
+                assertEquals(getStateValues(i), state.get(i).getStateValue());
+            }
+
+        } catch (StateSystemDisposedException e) {
+            fail();
+        }
+    }
+
+    @Test
+    public void testFirstIntervalIsConsidered() {
+        try {
+            List<ITmfStateInterval> list = fixture.queryFullState(1331668248014135800L);
+            ITmfStateInterval interval = list.get(233);
+            assertEquals(1331668247516664825L, interval.getStartTime());
+
+            int valueInt = interval.getStateValue().unboxInt();
+            assertEquals(1, valueInt);
+
+        } catch (StateSystemDisposedException e) {
+            fail();
+        }
+    }
+
+    @Test
+    public void testParentAttribute() {
+        String[] path = { "CPUs/0/Current_thread",
+                          "CPUs/0",
+                          "CPUs" };
+        try {
+            int q = fixture.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
+            for (int i = 0; i < path.length; i++) {
+                String name = fixture.getFullAttributePath(q);
+                assertEquals(path[i], name);
+                q = fixture.getParentAttributeQuark(q);
+            }
+            assertEquals(-1, q);
+            q = fixture.getParentAttributeQuark(q);
+            assertEquals(-1, q);
+        } catch (AttributeNotFoundException e) {
+            fail();
+        }
+    }
+
+}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/TestAll.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/TestAll.java
new file mode 100644 (file)
index 0000000..247ef2d
--- /dev/null
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2013 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
+ *
+ * Contributors:
+ *   Alexandre Montplaisir - Initial implementation
+ ******************************************************************************/
+
+package org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis.kernel.statesystem;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/**
+ * Runner for the LTTng kernel state system tests.
+ */
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+    LttngKernelStateProviderTest.class,
+    PartialStateSystemTest.class,
+    StateSystemFullHistoryTest.class,
+    StateSystemInMemoryTest.class
+})
+public class TestAll {
+
+}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/TestValues.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/analysis/kernel/statesystem/TestValues.java
new file mode 100644 (file)
index 0000000..471d10d
--- /dev/null
@@ -0,0 +1,2625 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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
+ *
+ * Contributors:
+ *   Alexandre Montplaisir - Initial API and implementation
+ ******************************************************************************/
+
+package org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis.kernel.statesystem;
+
+import org.eclipse.tracecompass.statesystem.core.statevalue.ITmfStateValue;
+import org.eclipse.tracecompass.statesystem.core.statevalue.TmfStateValue;
+
+/**
+ * Expected return values of querying test trace #1's state system at time
+ * "18670067372290L + 1331649577946812237L"
+ *
+ * @author Alexandre Montplaisir
+ */
+interface TestValues {
+
+    static final int size = 863;
+
+    static final long[] startTimes = {
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668248014145796L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247399757985L,
+        1331668247316320929L,
+        1331668247316334243L,
+        1331668247314046266L,
+        1331668247314038062L,
+        1331668248014183954L,
+        1331668247314038062L,
+        1331668247327098502L,
+        1331668247327098502L,
+        1331668247327098502L,
+        1331668247327098502L,
+        1331668247314038062L,
+        1331668247415001807L,
+        1331668247415001807L,
+        1331668247415001807L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668248013353414L,
+        1331668248004935409L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668248014184526L,
+        1331668248014130616L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668248011125682L,
+        1331668247314038062L,
+        1331668247931793142L,
+        1331668247959041965L,
+        1331668248011129576L,
+        1331668247314038062L,
+        1331668247335106720L,
+        1331668247335106720L,
+        1331668247335106720L,
+        1331668247335106720L,
+        1331668247931782426L,
+        1331668247315274351L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247335112802L,
+        1331668247335112802L,
+        1331668247335112802L,
+        1331668247335112802L,
+        1331668247314038062L,
+        1331668248004705322L,
+        1331668247314038062L,
+        1331668248004935409L,
+        1331668248004925240L,
+        1331668247316553071L,
+        1331668247314038062L,
+        1331668247399743968L,
+        1331668247316925661L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247999256178L,
+        1331668247999250697L,
+        1331668247318567561L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247999336085L,
+        1331668247999327778L,
+        1331668247318631139L,
+        1331668247314038062L,
+        1331668247960265258L,
+        1331668247314038062L,
+        1331668247903884233L,
+        1331668247903869067L,
+        1331668247328403934L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247908495390L,
+        1331668247908464125L,
+        1331668247328921944L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247903840082L,
+        1331668247903831313L,
+        1331668247329404733L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247960291263L,
+        1331668247314038062L,
+        1331668247330548245L,
+        1331668247314038062L,
+        1331668247340039213L,
+        1331668247340083580L,
+        1331668247966976915L,
+        1331668247314038062L,
+        1331668248004729173L,
+        1331668247314038062L,
+        1331668247371137735L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247387196023L,
+        1331668247387191465L,
+        1331668247376420842L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247400231496L,
+        1331668247400218303L,
+        1331668247378430187L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247751186217L,
+        1331668247314038062L,
+        1331668247387136191L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247415047817L,
+        1331668247415047817L,
+        1331668247415047817L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247400095883L,
+        1331668247400085049L,
+        1331668247399991225L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247401441000L,
+        1331668247401428073L,
+        1331668247400779449L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247410754305L,
+        1331668247314038062L,
+        1331668247519727372L,
+        1331668247314038062L,
+        1331668247412887695L,
+        1331668247314038062L,
+        1331668247413704524L,
+        1331668247412877246L,
+        1331668247410583861L,
+        1331668247314038062L,
+        1331668247410735104L,
+        1331668247410594291L,
+        1331668247314038062L,
+        1331668247413682702L,
+        1331668247410844189L,
+        1331668247314038062L,
+        1331668247519712481L,
+        1331668247411099759L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247924029486L,
+        1331668247924012402L,
+        1331668247412302666L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247924105876L,
+        1331668247924098044L,
+        1331668247417574343L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668248014184526L,
+        1331668248014130616L,
+        1331668247417635948L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247928627023L,
+        1331668247928621067L,
+        1331668247417978805L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247928556625L,
+        1331668247928529840L,
+        1331668247418470511L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247930341625L,
+        1331668247314038062L,
+        1331668248014184526L,
+        1331668248013793850L,
+        1331668247419578477L,
+        1331668247314038062L,
+        1331668247930328175L,
+        1331668247419655652L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668248013753736L,
+        1331668248013749389L,
+        1331668247420382626L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247930579872L,
+        1331668247930574368L,
+        1331668247420451876L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247926378321L,
+        1331668247926367737L,
+        1331668247423543945L,
+        1331668247314038062L,
+        1331668247619316825L,
+        1331668247619491008L,
+        1331668247314038062L,
+        1331668247619505885L,
+        1331668247619495072L,
+        1331668247434248026L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247434551326L,
+        1331668247434546203L,
+        1331668247434365352L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247908325947L,
+        1331668247908319810L,
+        1331668247467380509L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247908677700L,
+        1331668247908640244L,
+        1331668247467447781L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247869556425L,
+        1331668247869544380L,
+        1331668247503177108L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247504321893L,
+        1331668247504319470L,
+        1331668247503423094L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668248014183954L,
+        1331668248014183954L,
+        1331668247512172527L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247539381562L,
+        1331668247539369787L,
+        1331668247539325848L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247735177820L,
+        1331668247735170303L,
+        1331668247735128110L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247735168206L,
+        1331668247735161964L,
+        1331668247735152717L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247775218227L,
+        1331668247314038062L,
+        1331668247775231079L,
+        1331668247775205377L,
+        1331668247775191569L,
+        1331668247314038062L,
+        1331668247775223776L,
+        1331668247775218227L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247869483379L,
+        1331668247869477795L,
+        1331668247869457807L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247941667986L,
+        1331668247941650415L,
+        1331668247941620894L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+        1331668247314038062L,
+    };
+
+    static final long[] endTimes = {
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248014620024L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054130388L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248014185078L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248014620024L,
+        1331668248014620024L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248014548923L,
+        1331668248014188534L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248015040151L,
+        1331668259054285979L,
+        1331668248482983146L,
+        1331668248015041609L,
+        1331668248015176320L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248483009726L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248015959980L,
+        1331668259054285979L,
+        1331668248016172023L,
+        1331668248016194935L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054136697L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248016556933L,
+        1331668248016592456L,
+        1331668252511012367L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248016623209L,
+        1331668248016645047L,
+        1331668252843104826L,
+        1331668259054285979L,
+        1331668248486545657L,
+        1331668259054285979L,
+        1331668248502954816L,
+        1331668248503000162L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248020364249L,
+        1331668248020419523L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248020866943L,
+        1331668248020888352L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248531200073L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668257323835062L,
+        1331668257323879563L,
+        1331668248021867385L,
+        1331668259054285979L,
+        1331668248175307354L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259051873438L,
+        1331668259051879701L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248751061201L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259051838247L,
+        1331668259051846351L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668257325265220L,
+        1331668257325277639L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668250005943125L,
+        1331668259054285979L,
+        1331668248014565260L,
+        1331668259054285979L,
+        1331668250006219013L,
+        1331668259054285979L,
+        1331668250004649129L,
+        1331668250006228246L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668250005962644L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668250004668081L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248014624125L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248414826115L,
+        1331668248414875444L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248420327828L,
+        1331668248420342919L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248015353903L,
+        1331668248015428919L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248420617453L,
+        1331668248420709272L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248421112139L,
+        1331668248421137268L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248421291701L,
+        1331668259054285979L,
+        1331668248014188534L,
+        1331668248014188534L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248421940554L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248014548923L,
+        1331668248014550770L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248422509298L,
+        1331668248422523601L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248424325503L,
+        1331668248424394073L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248140683324L,
+        1331668248140686546L,
+        1331668259054285979L,
+        1331668248140727269L,
+        1331668248140780012L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251031789570L,
+        1331668251031812282L,
+        1331668252047037657L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248269586770L,
+        1331668248269613258L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248141167328L,
+        1331668248141400164L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248141004006L,
+        1331668248141028631L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248141324868L,
+        1331668248141345677L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248014185078L,
+        1331668248014185078L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248539549580L,
+        1331668248539579511L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668255234884605L,
+        1331668255234905622L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668255234936617L,
+        1331668255234941684L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252778982101L,
+        1331668259054285979L,
+        1331668252779007563L,
+        1331668252781320133L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252781341690L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248869653287L,
+        1331668248869679933L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248941858743L,
+        1331668248941885421L,
+        1331668252782929207L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248207116451L,
+        1331668248207177650L,
+        1331668248207163589L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248207165629L,
+        1331668248207212201L,
+        1331668248207197204L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248763171129L,
+        1331668259054285979L,
+        1331668248763179780L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668248895005379L,
+        1331668248895062414L,
+        1331668248895035146L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668249000328909L,
+        1331668249000373092L,
+        1331668249000350716L,
+        1331668259054285979L,
+        1331668249548101920L,
+        1331668259054285979L,
+        1331668249947171998L,
+        1331668249947269897L,
+        1331668249947249018L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668249951033184L,
+        1331668249951077605L,
+        1331668249951058138L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668249959079406L,
+        1331668259054285979L,
+        1331668249959100633L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668249970937981L,
+        1331668259054285979L,
+        1331668249970963407L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668250007423753L,
+        1331668250007449251L,
+        1331668250007428034L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668250231124169L,
+        1331668250231169946L,
+        1331668250231148973L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668250326525622L,
+        1331668250329519305L,
+        1331668250329507458L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251063191270L,
+        1331668251063256143L,
+        1331668251063222335L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251065026369L,
+        1331668251065048462L,
+        1331668251065030498L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251065058051L,
+        1331668251065091761L,
+        1331668251065069765L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251065364590L,
+        1331668251065412381L,
+        1331668251065407607L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251065462500L,
+        1331668251065477027L,
+        1331668251065465604L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251065780572L,
+        1331668251065836719L,
+        1331668251065829440L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251065899750L,
+        1331668251065913891L,
+        1331668251065902892L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251066057402L,
+        1331668251066070617L,
+        1331668251066060363L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251066495616L,
+        1331668251066520321L,
+        1331668251066506338L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251066532840L,
+        1331668251066546436L,
+        1331668251066535866L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251066658006L,
+        1331668251066671812L,
+        1331668251066660635L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251066883302L,
+        1331668251066906446L,
+        1331668251066887423L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251067153808L,
+        1331668251067176405L,
+        1331668251067157534L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251067407214L,
+        1331668251067420770L,
+        1331668251067410220L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251067763731L,
+        1331668251067818612L,
+        1331668251067811009L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251067884367L,
+        1331668251067897382L,
+        1331668251067887136L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251068275691L,
+        1331668251068288692L,
+        1331668251068278423L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251068706355L,
+        1331668251068719015L,
+        1331668251068709290L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251069067645L,
+        1331668251069122518L,
+        1331668251069116275L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251069178617L,
+        1331668251069191305L,
+        1331668251069181300L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251069664884L,
+        1331668251069684555L,
+        1331668251069668097L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251069682852L,
+        1331668251069708201L,
+        1331668251069690226L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251715054925L,
+        1331668259054285979L,
+        1331668251715066022L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251803784493L,
+        1331668251803827591L,
+        1331668251803808547L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251983438636L,
+        1331668251983448709L,
+        1331668251983441583L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668251992993580L,
+        1331668251993008591L,
+        1331668251992998928L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252022091542L,
+        1331668252022091542L,
+        1331668252022091542L,
+        1331668252022091542L,
+        1331668259054285979L,
+        1331668252031771660L,
+        1331668252031777595L,
+        1331668252031773847L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252032463013L,
+        1331668252032502964L,
+        1331668252032497700L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252032506884L,
+        1331668252032559227L,
+        1331668252032539402L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252039535067L,
+        1331668259054285979L,
+        1331668252039537404L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252044008981L,
+        1331668252044014257L,
+        1331668252044010861L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252044059151L,
+        1331668252044064004L,
+        1331668252044060420L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252179391423L,
+        1331668252184781913L,
+        1331668252184772369L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252193425490L,
+        1331668252193432385L,
+        1331668252193427706L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252253575716L,
+        1331668252253592491L,
+        1331668252253581852L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252472449352L,
+        1331668252472474547L,
+        1331668252472458163L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252487295286L,
+        1331668252487300925L,
+        1331668252487297683L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252495759849L,
+        1331668252495766026L,
+        1331668252495762178L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252496219924L,
+        1331668252496245837L,
+        1331668252496228816L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252523291829L,
+        1331668252523482082L,
+        1331668252523469395L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252764810964L,
+        1331668252764829827L,
+        1331668252764814570L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252765021775L,
+        1331668252765026623L,
+        1331668252765023841L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252769399706L,
+        1331668259054285979L,
+        1331668252769401404L,
+        1331668259054285979L,
+        1331668252769446847L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252769456141L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252784988923L,
+        1331668259054285979L,
+        1331668252785262589L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252795062126L,
+        1331668259054285979L,
+        1331668252795122600L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252828832090L,
+        1331668259054285979L,
+        1331668252828859292L,
+        1331668252828904216L,
+        1331668252828866041L,
+        1331668259054285979L,
+        1331668252829060434L,
+        1331668252828992804L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252829505108L,
+        1331668259054285979L,
+        1331668252829527974L,
+        1331668252829719292L,
+        1331668252829638887L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252829643060L,
+        1331668259054285979L,
+        1331668252829660274L,
+        1331668259054285979L,
+        1331668252829683896L,
+        1331668259054285979L,
+        1331668252829799248L,
+        1331668259054285979L,
+        1331668252829802278L,
+        1331668259054285979L,
+        1331668252829821642L,
+        1331668259054285979L,
+        1331668252829840961L,
+        1331668259054285979L,
+        1331668252829859256L,
+        1331668259054285979L,
+        1331668252829976501L,
+        1331668252830107659L,
+        1331668252830085595L,
+        1331668259054285979L,
+        1331668252830154848L,
+        1331668252830139534L,
+        1331668259054285979L,
+        1331668252830212497L,
+        1331668252830194969L,
+        1331668259054285979L,
+        1331668252830382459L,
+        1331668252830368625L,
+        1331668259054285979L,
+        1331668252830526491L,
+        1331668252830499169L,
+        1331668259054285979L,
+        1331668252830576634L,
+        1331668252830564658L,
+        1331668259054285979L,
+        1331668252831112505L,
+        1331668252831083126L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252831228714L,
+        1331668252831318123L,
+        1331668252831301843L,
+        1331668259054285979L,
+        1331668252831543926L,
+        1331668252831527998L,
+        1331668259054285979L,
+        1331668252831834393L,
+        1331668252831817197L,
+        1331668259054285979L,
+        1331668252832056760L,
+        1331668252832046333L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252883172744L,
+        1331668252883172744L,
+        1331668252883172744L,
+        1331668252883172744L,
+        1331668259054285979L,
+        1331668252885827603L,
+        1331668252885827603L,
+        1331668252885827603L,
+        1331668252885827603L,
+        1331668259054285979L,
+        1331668252889337098L,
+        1331668259054285979L,
+        1331668252889396688L,
+        1331668252889396688L,
+        1331668252889396688L,
+        1331668252889396688L,
+        1331668252901232798L,
+        1331668252901118256L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252901540914L,
+        1331668252901540914L,
+        1331668252901540914L,
+        1331668252901540914L,
+        1331668259054285979L,
+        1331668252901573889L,
+        1331668252901586635L,
+        1331668252901577276L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252906764880L,
+        1331668252906764880L,
+        1331668252906764880L,
+        1331668252906764880L,
+        1331668259054285979L,
+        1331668252912042743L,
+        1331668259054285979L,
+        1331668252912048618L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668252927449371L,
+        1331668252927449371L,
+        1331668252927449371L,
+        1331668252927449371L,
+        1331668259054285979L,
+        1331668252947156908L,
+        1331668252947156908L,
+        1331668252947156908L,
+        1331668252947156908L,
+        1331668259054285979L,
+        1331668252947197386L,
+        1331668252947197386L,
+        1331668252947197386L,
+        1331668252947197386L,
+        1331668259054285979L,
+        1331668253035499713L,
+        1331668253035499713L,
+        1331668253035499713L,
+        1331668253035499713L,
+        1331668259054285979L,
+        1331668253036766769L,
+        1331668253036766769L,
+        1331668253036766769L,
+        1331668253036766769L,
+        1331668259054285979L,
+        1331668253037890651L,
+        1331668253037890651L,
+        1331668253037890651L,
+        1331668253037890651L,
+        1331668259054285979L,
+        1331668253051945128L,
+        1331668253051945128L,
+        1331668253051945128L,
+        1331668253051945128L,
+        1331668259054285979L,
+        1331668253054627961L,
+        1331668253054627961L,
+        1331668253054627961L,
+        1331668253054627961L,
+        1331668259054285979L,
+        1331668253057609433L,
+        1331668253057609433L,
+        1331668253057609433L,
+        1331668253057609433L,
+        1331668259054285979L,
+        1331668253062222314L,
+        1331668253062222314L,
+        1331668253062222314L,
+        1331668253062222314L,
+        1331668259054285979L,
+        1331668253097239708L,
+        1331668253097239708L,
+        1331668253097239708L,
+        1331668253097239708L,
+        1331668259054285979L,
+        1331668253097518746L,
+        1331668253097518746L,
+        1331668253097518746L,
+        1331668253097518746L,
+        1331668259054285979L,
+        1331668253267104284L,
+        1331668253267117055L,
+        1331668253267107624L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668253267342015L,
+        1331668253267378405L,
+        1331668253267367303L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668253278218713L,
+        1331668253278218713L,
+        1331668253278218713L,
+        1331668253278218713L,
+        1331668259054285979L,
+        1331668253324119756L,
+        1331668253324119756L,
+        1331668253324119756L,
+        1331668253324119756L,
+        1331668259054285979L,
+        1331668253614347227L,
+        1331668253614347227L,
+        1331668253614347227L,
+        1331668253614347227L,
+        1331668259054285979L,
+        1331668253619459320L,
+        1331668253619459320L,
+        1331668253619459320L,
+        1331668253619459320L,
+        1331668259054285979L,
+        1331668253619867625L,
+        1331668253619867625L,
+        1331668253619867625L,
+        1331668253619867625L,
+        1331668259054285979L,
+        1331668253621486721L,
+        1331668253621508851L,
+        1331668253621491536L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668253622429608L,
+        1331668253622429608L,
+        1331668253622429608L,
+        1331668253622429608L,
+        1331668259054285979L,
+        1331668253857465365L,
+        1331668253857465365L,
+        1331668253857465365L,
+        1331668253857465365L,
+        1331668259054285979L,
+        1331668253858125091L,
+        1331668253858125091L,
+        1331668253858125091L,
+        1331668253858125091L,
+        1331668259054285979L,
+        1331668253910194540L,
+        1331668253910194540L,
+        1331668253910194540L,
+        1331668253910194540L,
+        1331668259054285979L,
+        1331668253910329721L,
+        1331668253910329721L,
+        1331668253910329721L,
+        1331668253910329721L,
+        1331668259054285979L,
+        1331668253984922308L,
+        1331668253984922308L,
+        1331668253984922308L,
+        1331668253984922308L,
+        1331668259054285979L,
+        1331668254004098152L,
+        1331668254004098152L,
+        1331668254004098152L,
+        1331668254004098152L,
+        1331668259054285979L,
+        1331668254047839900L,
+        1331668254047839900L,
+        1331668254047839900L,
+        1331668254047839900L,
+        1331668259054285979L,
+        1331668254093066195L,
+        1331668254093066195L,
+        1331668254093066195L,
+        1331668254093066195L,
+        1331668259054285979L,
+        1331668254106326339L,
+        1331668254106326339L,
+        1331668254106326339L,
+        1331668254106326339L,
+        1331668259054285979L,
+        1331668255052411647L,
+        1331668255052411647L,
+        1331668255052411647L,
+        1331668255052411647L,
+        1331668259054285979L,
+        1331668255157088064L,
+        1331668255157101973L,
+        1331668255157091812L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668256244508635L,
+        1331668256244508635L,
+        1331668256244508635L,
+        1331668256244508635L,
+        1331668259054285979L,
+        1331668257246987050L,
+        1331668257247036372L,
+        1331668257247027684L,
+        1331668259054285979L,
+        1331668259054285979L,
+        1331668259045096840L,
+        1331668259045096840L,
+        1331668259045096840L,
+        1331668259045096840L,
+        1331668259054285979L,
+        1331668259052126585L,
+        1331668259052126585L,
+        1331668259052126585L,
+        1331668259052126585L,
+        1331668259054285979L,
+        1331668259053345550L,
+        1331668259054285979L,
+        1331668259053349544L,
+        1331668259054285979L,
+    };
+
+    static final ITmfStateValue[] values = {
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1397),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("lttng-consumerd"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(5),
+        TmfStateValue.newValueString("swapper/1"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1432),
+        TmfStateValue.newValueInt(2),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("lttng-consumerd"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_ppoll"),
+        TmfStateValue.newValueString("alsa-sink"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueString("sys_epoll_wait"),
+        TmfStateValue.newValueString("lttng-sessiond"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_futex"),
+        TmfStateValue.newValueString("firefox"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("firefox"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("gnome-terminal"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_select"),
+        TmfStateValue.newValueString("Xorg"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("metacity"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueString("kworker/0:1"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueString("ksoftirqd/0"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_read"),
+        TmfStateValue.newValueString("rsyslogd"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_futex"),
+        TmfStateValue.newValueString("rs:main Q:Reg"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueString("kworker/1:1"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_select"),
+        TmfStateValue.newValueString("rsyslogd"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_read"),
+        TmfStateValue.newValueString("bash"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("bamfdaemon"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("gnome-settings-"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("unity-2d-shell"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("unity-2d-panel"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("indicator-multi"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("gdbus"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("dbus-daemon"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("gdbus"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("indicator-appli"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(3),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("gdbus"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("gdbus"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(5),
+        TmfStateValue.newValueString("sys_futex"),
+        TmfStateValue.newValueString("unity-panel-ser"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("hud-service"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("gdbus"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("openvpn"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("firefox"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_futex"),
+        TmfStateValue.newValueString("thunderbird-bin"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("thunderbird-bin"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("thunderbird-bin"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_futex"),
+        TmfStateValue.newValueString("thunderbird-bin"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(2),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueString("gdbus"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_nanosleep"),
+        TmfStateValue.newValueString("gvfs-afc-volume"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("rtkit-daemon"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("rtkit-daemon"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("thunderbird-bin"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueString("sys_poll"),
+        TmfStateValue.newValueString("thunderbird-bin"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_futex"),
+        TmfStateValue.newValueString("thunderbird-bin"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.newValueInt(1),
+        TmfStateValue.newValueString("sys_futex"),
+        TmfStateValue.newValueString("firefox"),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+        TmfStateValue.nullValue(),
+    };
+}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/GenerateTestValues.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/GenerateTestValues.java
deleted file mode 100644 (file)
index d07a8a2..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013, 2014 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
- *
- * Contributors:
- *   Alexandre Montplaisir - Initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.tracecompass.lttng2.kernel.core.tests.stateprovider;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.PrintWriter;
-import java.util.List;
-
-import org.eclipse.tracecompass.internal.lttng2.kernel.core.stateprovider.LttngKernelStateProvider;
-import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
-import org.eclipse.tracecompass.statesystem.core.interval.ITmfStateInterval;
-import org.eclipse.tracecompass.statesystem.core.statevalue.ITmfStateValue;
-import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
-import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
-import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTrace;
-import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace;
-
-/**
- * Small program to regenerate the values used in "TestValues.java" from the
- * current LTTng-kernel state provider.
- *
- * It will write its output the a file called 'TestValues<something>.java' in your
- * temporary files directory.
- *
- * @author Alexandre Montplaisir
- */
-public class GenerateTestValues {
-
-    private static CtfTmfTestTrace testTrace = CtfTmfTestTrace.TRACE2;
-    private static final long targetTimestamp = 18670067372290L + 1331649577946812237L;
-    private static final String INDENT = "    ";
-
-    /**
-     * Run the program
-     *
-     * @param args
-     *            Command-line arguments, unused.
-     * @throws Exception
-     *             I'm messing with Exception. Come at me bro!
-     */
-    public static void main(String[] args) throws Exception {
-        if (!testTrace.exists()) {
-            System.err.println("Trace files not present.");
-            return;
-        }
-
-        /* Prepare the files */
-        File logFile = File.createTempFile("TestValues", ".java");
-        try (final CtfTmfTrace trace = testTrace.getTrace();
-                PrintWriter writer = new PrintWriter(new FileWriter(logFile), true);) {
-
-            /* Build and query the state system */
-            TmfStateSystemAnalysisModule module = new TmfStateSystemAnalysisModule() {
-                @Override
-                protected ITmfStateProvider createStateProvider() {
-                    return new LttngKernelStateProvider(trace);
-                }
-
-                @Override
-                protected String getSsFileName() {
-                    return "test-values";
-                }
-            };
-
-            module.setTrace(trace);
-            module.setId("test-values");
-            module.schedule();
-            module.waitForCompletion();
-            ITmfStateSystem ssq = module.getStateSystem();
-            if (ssq == null) {
-                throw new IllegalStateException();
-            }
-
-            List<ITmfStateInterval> fullState = ssq.queryFullState(targetTimestamp);
-
-            /* Start printing the java file's contents */
-            writer.println("interface TestValues {");
-            writer.println();
-            writer.println(INDENT + "static final int size = " + fullState.size() + ";");
-            writer.println();
-
-            /* Print the array contents */
-            writer.println(INDENT + "static final long[] startTimes = {");
-            for (ITmfStateInterval interval : fullState) {
-                writer.println(INDENT + INDENT + String.valueOf(interval.getStartTime()) + "L,");
-            }
-            writer.println(INDENT + "};");
-            writer.println();
-
-            writer.println(INDENT + "static final long[] endTimes = {");
-            for (ITmfStateInterval interval : fullState) {
-                writer.println(INDENT + INDENT + String.valueOf(interval.getEndTime()) + "L,");
-            }
-            writer.println(INDENT + "};");
-            writer.println();
-
-            writer.println(INDENT + "static final ITmfStateValue[] values = {");
-            for (ITmfStateInterval interval : fullState) {
-                ITmfStateValue val = interval.getStateValue();
-                writer.print(INDENT + INDENT);
-
-                switch (val.getType()) {
-                case NULL:
-                    writer.println("TmfStateValue.nullValue(),");
-                    break;
-                case INTEGER:
-                    writer.println("TmfStateValue.newValueInt(" + val.unboxInt() + "),");
-                    break;
-                case LONG:
-                    writer.println("TmfStateValue.newValueLong(" + val.unboxLong() + "),");
-                    break;
-                case DOUBLE:
-                    writer.println("TmfStateValue.newValueDouble(" + val.unboxDouble() + "),");
-                    break;
-                case STRING:
-                    writer.println("TmfStateValue.newValueString(\"" + val.unboxStr() + "\"),");
-                    break;
-                default:
-                    writer.println(val.toString());
-                    break;
-                }
-            }
-            writer.println(INDENT + "};");
-
-            writer.println("}");
-            writer.println();
-
-            module.dispose();
-        }
-        System.exit(0);
-    }
-
-}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/LttngKernelStateProviderTest.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/LttngKernelStateProviderTest.java
deleted file mode 100644 (file)
index ad185af..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012, 2013 Ericsson
- * Copyright (c) 2010, 2011 Ã‰cole Polytechnique de Montréal
- * Copyright (c) 2010, 2011 Alexandre Montplaisir <alexandre.montplaisir@gmail.com>
- *
- * 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.lttng2.kernel.core.tests.stateprovider;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assume.assumeTrue;
-
-import org.eclipse.tracecompass.internal.lttng2.kernel.core.stateprovider.LttngKernelStateProvider;
-import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
-import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTrace;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-/**
- * Tests for the {@link LttngKernelStateProvider}
- *
- * @author Alexandre Montplaisir
- */
-public class LttngKernelStateProviderTest {
-
-    private static final CtfTmfTestTrace testTrace = CtfTmfTestTrace.TRACE2;
-
-    private static ITmfStateProvider input;
-
-    /**
-     * Set-up.
-     */
-    @BeforeClass
-    public static void initialize() {
-        assumeTrue(testTrace.exists());
-        input = new LttngKernelStateProvider(testTrace.getTrace());
-
-    }
-
-    /**
-     * Test loading the state provider.
-     */
-    @Test
-    public void testOpening() {
-        long testStartTime;
-        testStartTime = input.getStartTime();
-        assertEquals(testStartTime, StateSystemTest.startTime);
-    }
-
-}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/PartialStateSystemTest.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/PartialStateSystemTest.java
deleted file mode 100644 (file)
index 96638db..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013, 2014 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
- *
- * Contributors:
- *   Alexandre Montplaisir - Initial API and implementation
- *   Bernd Hufmann - Use state system analysis module instead of factory
- ******************************************************************************/
-
-package org.eclipse.tracecompass.lttng2.kernel.core.tests.stateprovider;
-
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.File;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.tracecompass.internal.lttng2.kernel.core.stateprovider.LttngKernelStateProvider;
-import org.eclipse.tracecompass.statesystem.core.exceptions.TimeRangeException;
-import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
-import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
-import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
-import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-/**
- * State system tests using a partial history.
- *
- * @author Alexandre Montplaisir
- */
-public class PartialStateSystemTest extends StateSystemTest {
-
-    private static final @NonNull String TEST_FILE_NAME = "test-partial";
-
-    private static File stateFile;
-    private static TestLttngKernelAnalysisModule module;
-
-    /**
-     * Test class setup
-     */
-    @BeforeClass
-    public static void initialize() {
-        if (!testTrace.exists()) {
-            traceIsPresent = false;
-            return;
-        }
-        traceIsPresent = true;
-
-        stateFile = new File(TmfTraceManager.getSupplementaryFileDir(testTrace.getTrace()) + TEST_FILE_NAME);
-        if (stateFile.exists()) {
-            stateFile.delete();
-        }
-
-        module = new TestLttngKernelAnalysisModule(TEST_FILE_NAME);
-        try {
-            module.setTrace(testTrace.getTrace());
-        } catch (TmfAnalysisException e) {
-            fail();
-        }
-        module.schedule();
-        assertTrue(module.waitForCompletion());
-
-        fixture = module.getStateSystem();
-    }
-
-    /**
-     * Class clean-up
-     */
-    @AfterClass
-    public static void cleanup() {
-        if (module != null) {
-            module.dispose();
-        }
-        if (stateFile != null) {
-            stateFile.delete();
-        }
-        if (fixture != null) {
-            fixture.dispose();
-        }
-        module = null;
-        fixture = null;
-    }
-
-    /**
-     * Partial histories cannot get the intervals' end times. The fake value that
-     * is returned is equal to the query's timestamp. So override this here
-     * so that {@link #testFullQueryThorough} keeps working.
-     */
-    @Override
-    protected long getEndTimes(int idx) {
-        return interestingTimestamp1;
-    }
-
-    // ------------------------------------------------------------------------
-    // Skip tests using single-queries (unsupported in partial history)
-    // ------------------------------------------------------------------------
-
-    @Override
-    @Test(expected = UnsupportedOperationException.class)
-    public void testSingleQuery1() {
-        super.testSingleQuery1();
-    }
-
-    @Override
-    @Test(expected = UnsupportedOperationException.class)
-    public void testRangeQuery1() {
-        super.testRangeQuery1();
-    }
-
-    @Override
-    @Test(expected = UnsupportedOperationException.class)
-    public void testRangeQuery2() {
-        super.testRangeQuery2();
-    }
-
-    @Override
-    @Test(expected = UnsupportedOperationException.class)
-    public void testRangeQuery3() {
-        super.testRangeQuery3();
-    }
-
-    @Override
-    @Test(expected = UnsupportedOperationException.class)
-    public void testSingleQueryInvalidTime1() throws TimeRangeException {
-        super.testSingleQueryInvalidTime1();
-    }
-
-    @Override
-    @Test(expected = UnsupportedOperationException.class)
-    public void testSingleQueryInvalidTime2() throws TimeRangeException {
-        super.testSingleQueryInvalidTime2();
-    }
-
-    @Override
-    @Test(expected = UnsupportedOperationException.class)
-    public void testRangeQueryInvalidTime1() throws TimeRangeException {
-        super.testRangeQueryInvalidTime1();
-    }
-
-    @Override
-    @Test(expected = UnsupportedOperationException.class)
-    public void testRangeQueryInvalidTime2() throws TimeRangeException {
-        super.testRangeQueryInvalidTime2();
-    }
-
-    @NonNullByDefault
-    private static class TestLttngKernelAnalysisModule extends TmfStateSystemAnalysisModule {
-
-        private final String htFileName;
-
-        /**
-         * Constructor adding the views to the analysis
-         * @param htFileName
-         *      The History File Name
-         */
-        public TestLttngKernelAnalysisModule(String htFileName) {
-            super();
-            this.htFileName = htFileName;
-        }
-
-        @Override
-        public void setTrace(@Nullable ITmfTrace trace) throws TmfAnalysisException {
-            if (!(trace instanceof CtfTmfTrace)) {
-                throw new IllegalStateException("TestLttngKernelAnalysisModule: trace should be of type CtfTmfTrace"); //$NON-NLS-1$
-            }
-            super.setTrace(trace);
-        }
-
-        @Override
-        protected ITmfStateProvider createStateProvider() {
-            return new LttngKernelStateProvider(getTrace());
-        }
-
-        @Override
-        protected StateSystemBackendType getBackendType() {
-            return StateSystemBackendType.PARTIAL;
-        }
-
-        @Override
-        protected String getSsFileName() {
-            return htFileName;
-        }
-
-    }
-}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/StateSystemFullHistoryTest.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/StateSystemFullHistoryTest.java
deleted file mode 100644 (file)
index 65f66c3..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012, 2014 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
- *
- * Contributors:
- *   Alexandre Montplaisir - Initial API and implementation
- *   Bernd Hufmann - Use state system analysis module instead of factory
- ******************************************************************************/
-
-package org.eclipse.tracecompass.lttng2.kernel.core.tests.stateprovider;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.File;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.tracecompass.internal.lttng2.kernel.core.stateprovider.LttngKernelStateProvider;
-import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
-import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
-import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
-import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
-import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-/**
- * State system tests using a full history back-end and the LTTng kernel state
- * input.
- *
- * @author Alexandre Montplaisir
- */
-public class StateSystemFullHistoryTest extends StateSystemTest {
-
-    private static final @NonNull String TEST_FILE_NAME = "test.ht";
-    private static final @NonNull String BENCHMARK_FILE_NAME = "test.benchmark.ht";
-
-    private static File stateFile;
-    private static File stateFileBenchmark;
-    private static TestLttngKernelAnalysisModule module;
-
-    /**
-     * Test class setup
-     */
-    @BeforeClass
-    public static void initialize() {
-        if (!testTrace.exists()) {
-            traceIsPresent = false;
-            return;
-        }
-        traceIsPresent = true;
-
-        stateFile = createStateFile(TEST_FILE_NAME);
-        stateFileBenchmark = createStateFile(BENCHMARK_FILE_NAME);
-
-        module = new TestLttngKernelAnalysisModule(TEST_FILE_NAME);
-        try {
-            module.setTrace(testTrace.getTrace());
-        } catch (TmfAnalysisException e) {
-            fail();
-        }
-        module.schedule();
-        assertTrue(module.waitForCompletion());
-
-        fixture = module.getStateSystem();
-    }
-
-    /**
-     * Clean-up
-     */
-    @AfterClass
-    public static void cleanup() {
-        if (module != null) {
-            module.dispose();
-        }
-        if (stateFile != null) {
-            stateFile.delete();
-        }
-        if (stateFileBenchmark != null) {
-            stateFileBenchmark.delete();
-        }
-        if (fixture != null) {
-            fixture.dispose();
-        }
-        module = null;
-        fixture = null;
-    }
-
-    // ------------------------------------------------------------------------
-    // Tests specific to a full-history
-    // ------------------------------------------------------------------------
-
-    /**
-     * Rebuild independently so we can benchmark it. Too bad JUnit doesn't allow
-     * us to @Test the @BeforeClass...
-     */
-    @Test
-    public void testBuild() {
-        TestLttngKernelAnalysisModule module2 = new TestLttngKernelAnalysisModule(BENCHMARK_FILE_NAME);
-        try {
-            module2.setTrace(testTrace.getTrace());
-        } catch (TmfAnalysisException e) {
-            module2.dispose();
-            fail();
-        }
-        module2.schedule();
-        assertTrue(module2.waitForCompletion());
-        ITmfStateSystem ssb2 = module2.getStateSystem();
-
-        assertNotNull(ssb2);
-        assertEquals(startTime, ssb2.getStartTime());
-        assertEquals(endTime, ssb2.getCurrentEndTime());
-
-        module2.dispose();
-    }
-
-    /**
-     * Test re-opening the existing file.
-     */
-    @Test
-    public void testOpenExistingStateFile() {
-        /* 'newStateFile' should have already been created */
-        TestLttngKernelAnalysisModule module2 = new TestLttngKernelAnalysisModule(TEST_FILE_NAME);
-        try {
-            module2.setTrace(testTrace.getTrace());
-        } catch (TmfAnalysisException e) {
-            module2.dispose();
-            fail();
-        }
-        module2.schedule();
-        assertTrue(module2.waitForCompletion());
-        ITmfStateSystem ssb2 = module2.getStateSystem();
-
-        assertNotNull(ssb2);
-        assertEquals(startTime, ssb2.getStartTime());
-        assertEquals(endTime, ssb2.getCurrentEndTime());
-
-        module2.dispose();
-    }
-
-    @NonNullByDefault
-    private static class TestLttngKernelAnalysisModule extends TmfStateSystemAnalysisModule {
-
-        private final String htFileName;
-
-        /**
-         * Constructor adding the views to the analysis
-         * @param htFileName
-         *      The History File Name
-         */
-        public TestLttngKernelAnalysisModule(String htFileName) {
-            super();
-            this.htFileName = htFileName;
-        }
-
-        @Override
-        public void setTrace(@Nullable ITmfTrace trace) throws TmfAnalysisException {
-            if (!(trace instanceof CtfTmfTrace)) {
-                throw new IllegalStateException("TestLttngKernelAnalysisModule: trace should be of type CtfTmfTrace"); //$NON-NLS-1$
-            }
-            super.setTrace(trace);
-        }
-
-        @Override
-        protected ITmfStateProvider createStateProvider() {
-            return new LttngKernelStateProvider(getTrace());
-        }
-
-        @Override
-        protected StateSystemBackendType getBackendType() {
-            return StateSystemBackendType.FULL;
-        }
-
-        @Override
-        protected String getSsFileName() {
-            return htFileName;
-        }
-    }
-
-    private static File createStateFile(String name) {
-        File file = new File(TmfTraceManager.getSupplementaryFileDir(testTrace.getTrace()) + name);
-        if (file.exists()) {
-            file.delete();
-        }
-        return file;
-    }
-
-}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/StateSystemInMemoryTest.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/StateSystemInMemoryTest.java
deleted file mode 100644 (file)
index 0fe0839..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013, 2014 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
- *
- * Contributors:
- *   Alexandre Montplaisir - Initial API and implementation
- *   Bernd Hufmann - Use state system analysis module instead of factory
- ******************************************************************************/
-
-package org.eclipse.tracecompass.lttng2.kernel.core.tests.stateprovider;
-
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import org.eclipse.tracecompass.internal.lttng2.kernel.core.stateprovider.LttngKernelStateProvider;
-import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
-import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
-import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-
-/**
- * State system tests using the in-memory back-end.
- *
- * @author Alexandre Montplaisir
- */
-public class StateSystemInMemoryTest extends StateSystemTest {
-
-    private static TestLttngKernelAnalysisModule module;
-
-    /**
-     * Test class setup
-     */
-    @BeforeClass
-    public static void initialize() {
-        if (!testTrace.exists()) {
-            traceIsPresent = false;
-            return;
-        }
-        traceIsPresent = true;
-
-        module = new TestLttngKernelAnalysisModule();
-        try {
-            module.setTrace(testTrace.getTrace());
-        } catch (TmfAnalysisException e) {
-            fail();
-        }
-        module.schedule();
-        assertTrue(module.waitForCompletion());
-
-        fixture = module.getStateSystem();
-    }
-
-    /**
-     * Class cleanup
-     */
-    @AfterClass
-    public static void cleanup() {
-        if (module != null) {
-            module.dispose();
-        }
-        if (fixture != null) {
-            fixture.dispose();
-        }
-        module = null;
-        fixture = null;
-    }
-
-    private static class TestLttngKernelAnalysisModule extends TmfStateSystemAnalysisModule {
-
-        /**
-         * Constructor adding the views to the analysis
-         */
-        public TestLttngKernelAnalysisModule() {
-            super();
-        }
-
-        @Override
-        public void setTrace(ITmfTrace trace) throws TmfAnalysisException {
-            if (!(trace instanceof CtfTmfTrace)) {
-                throw new IllegalStateException("TestLttngKernelAnalysisModule: trace should be of type CtfTmfTrace"); //$NON-NLS-1$
-            }
-            super.setTrace(trace);
-        }
-
-        @Override
-        protected ITmfStateProvider createStateProvider() {
-            return new LttngKernelStateProvider(getTrace());
-        }
-
-        @Override
-        protected StateSystemBackendType getBackendType() {
-            return StateSystemBackendType.INMEM;
-        }
-    }
-}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/StateSystemTest.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/StateSystemTest.java
deleted file mode 100644 (file)
index 06b8fb0..0000000
+++ /dev/null
@@ -1,436 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012, 2014 Ericsson
- * Copyright (c) 2010, 2011 Ã‰cole Polytechnique de Montréal
- * Copyright (c) 2010, 2011 Alexandre Montplaisir <alexandre.montplaisir@gmail.com>
- *
- * 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.lttng2.kernel.core.tests.stateprovider;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.junit.Assume.assumeTrue;
-
-import java.util.List;
-
-import org.eclipse.tracecompass.internal.lttng2.kernel.core.Attributes;
-import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
-import org.eclipse.tracecompass.statesystem.core.StateSystemUtils;
-import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundException;
-import org.eclipse.tracecompass.statesystem.core.exceptions.StateSystemDisposedException;
-import org.eclipse.tracecompass.statesystem.core.exceptions.StateValueTypeException;
-import org.eclipse.tracecompass.statesystem.core.exceptions.TimeRangeException;
-import org.eclipse.tracecompass.statesystem.core.interval.ITmfStateInterval;
-import org.eclipse.tracecompass.statesystem.core.statevalue.ITmfStateValue;
-import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTrace;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TestRule;
-import org.junit.rules.Timeout;
-
-/**
- * Base unit tests for the StateHistorySystem. Extension can be made to test
- * different state back-end types or configurations.
- *
- * @author Alexandre Montplaisir
- */
-@SuppressWarnings("javadoc")
-public abstract class StateSystemTest {
-
-    /** Timeout the tests after 2 minutes */
-    @Rule
-    public TestRule timeoutRule = new Timeout(120000);
-
-    /** Test trace used for these tests */
-    protected static final CtfTmfTestTrace testTrace = CtfTmfTestTrace.TRACE2;
-
-    /** Expected start time of the test trace/state history */
-    protected static final long startTime = 1331668247314038062L;
-
-    /** Expected end time of the state history built from the test trace */
-    protected static final long endTime = 1331668259054285979L;
-
-    /** Offset in the trace + start time of the trace */
-    protected static final long interestingTimestamp1 = 18670067372290L + 1331649577946812237L;
-
-    /** Number of nanoseconds in one second */
-    private static final long NANOSECS_PER_SEC = 1000000000L;
-
-    protected static ITmfStateSystem fixture;
-    protected static boolean traceIsPresent = false;
-
-    /**
-     * Test set-up
-     */
-    @Before
-    public void setUp() {
-        assumeTrue(traceIsPresent);
-        /* Subclasses should set-up 'fixture' */
-        assertNotNull(fixture);
-    }
-
-    @Test
-    public void testFullQuery1() {
-        List<ITmfStateInterval> list;
-        ITmfStateInterval interval;
-        int quark, valueInt;
-        String valueStr;
-
-        try {
-            list = fixture.queryFullState(interestingTimestamp1);
-
-            quark = fixture.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
-            interval = list.get(quark);
-            valueInt = interval.getStateValue().unboxInt();
-            assertEquals(1397, valueInt);
-
-            quark = fixture.getQuarkAbsolute(Attributes.THREADS, "1432", Attributes.EXEC_NAME);
-            interval = list.get(quark);
-            valueStr = interval.getStateValue().unboxStr();
-            assertEquals("gdbus", valueStr);
-
-            quark = fixture.getQuarkAbsolute(Attributes.THREADS, "1432", Attributes.SYSTEM_CALL);
-            interval = list.get(quark);
-            valueStr = interval.getStateValue().unboxStr();
-            assertTrue(valueStr.equals("sys_poll"));
-
-        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
-            fail();
-        }
-    }
-
-    @Test
-    public void testSingleQuery1() {
-        long timestamp = interestingTimestamp1;
-        int quark;
-        ITmfStateInterval interval;
-        String valueStr;
-
-        try {
-            quark = fixture.getQuarkAbsolute(Attributes.THREADS, "1432", Attributes.EXEC_NAME);
-            interval = fixture.querySingleState(timestamp, quark);
-            valueStr = interval.getStateValue().unboxStr();
-            assertEquals("gdbus", valueStr);
-
-        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
-            fail();
-        }
-    }
-
-    /**
-     * Test a range query (with no resolution parameter, so all intervals)
-     */
-    @Test
-    public void testRangeQuery1() {
-        long time1 = interestingTimestamp1;
-        long time2 = time1 + 1L * NANOSECS_PER_SEC;
-        int quark;
-        List<ITmfStateInterval> intervals;
-
-        final ITmfStateSystem ss = fixture;
-        assertNotNull(ss);
-
-        try {
-            quark = ss.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
-            intervals = StateSystemUtils.queryHistoryRange(ss, quark, time1, time2);
-            assertEquals(487, intervals.size()); /* Number of context switches! */
-            assertEquals(1685, intervals.get(100).getStateValue().unboxInt());
-            assertEquals(1331668248427681372L, intervals.get(205).getEndTime());
-
-        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
-            fail();
-        }
-    }
-
-    /**
-     * Range query, but with a t2 far off the end of the trace. The result
-     * should still be valid.
-     */
-    @Test
-    public void testRangeQuery2() {
-        List<ITmfStateInterval> intervals;
-
-        final ITmfStateSystem ss = fixture;
-        assertNotNull(ss);
-
-        try {
-            int quark = ss.getQuarkAbsolute(Attributes.RESOURCES, Attributes.IRQS, "1");
-            long ts1 = ss.getStartTime(); /* start of the trace */
-            long ts2 = startTime + 20L * NANOSECS_PER_SEC; /* invalid, but ignored */
-
-            intervals = StateSystemUtils.queryHistoryRange(ss, quark, ts1, ts2);
-
-            /* Activity of IRQ 1 over the whole trace */
-            assertEquals(65, intervals.size());
-
-        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
-            fail();
-        }
-    }
-
-    /**
-     * Test a range query with a resolution
-     */
-    @Test
-    public void testRangeQuery3() {
-        long time1 = interestingTimestamp1;
-        long time2 = time1 + 1L * NANOSECS_PER_SEC;
-        long resolution = 1000000; /* One query every millisecond */
-        int quark;
-        List<ITmfStateInterval> intervals;
-
-        final ITmfStateSystem ss = fixture;
-        assertNotNull(ss);
-
-        try {
-            quark = ss.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
-            intervals = StateSystemUtils.queryHistoryRange(ss, quark, time1, time2, resolution, null);
-            assertEquals(126, intervals.size()); /* Number of context switches! */
-            assertEquals(1452, intervals.get(50).getStateValue().unboxInt());
-            assertEquals(1331668248815698779L, intervals.get(100).getEndTime());
-
-        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
-            fail();
-        }
-    }
-
-    /**
-     * Ask for a time range outside of the trace's range
-     */
-    @Test(expected = TimeRangeException.class)
-    public void testFullQueryInvalidTime1() throws TimeRangeException,
-            StateSystemDisposedException {
-        long ts = startTime + 20L * NANOSECS_PER_SEC;
-        fixture.queryFullState(ts);
-    }
-
-    @Test(expected = TimeRangeException.class)
-    public void testFullQueryInvalidTime2() throws TimeRangeException,
-            StateSystemDisposedException {
-        long ts = startTime - 20L * NANOSECS_PER_SEC;
-        fixture.queryFullState(ts);
-    }
-
-    @Test(expected = TimeRangeException.class)
-    public void testSingleQueryInvalidTime1() throws TimeRangeException {
-        try {
-            int quark = fixture.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
-            long ts = startTime + 20L * NANOSECS_PER_SEC;
-            fixture.querySingleState(ts, quark);
-
-        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
-            fail();
-        }
-    }
-
-    @Test(expected = TimeRangeException.class)
-    public void testSingleQueryInvalidTime2() throws TimeRangeException {
-        try {
-            int quark = fixture.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
-            long ts = startTime - 20L * NANOSECS_PER_SEC;
-            fixture.querySingleState(ts, quark);
-
-        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
-            fail();
-        }
-    }
-
-    @Test(expected = TimeRangeException.class)
-    public void testRangeQueryInvalidTime1() throws TimeRangeException {
-        final ITmfStateSystem ss = fixture;
-        assertNotNull(ss);
-
-        try {
-            int quark = ss.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
-            long ts1 = startTime - 20L * NANOSECS_PER_SEC; /* invalid */
-            long ts2 = startTime + 1L * NANOSECS_PER_SEC; /* valid */
-            StateSystemUtils.queryHistoryRange(ss, quark, ts1, ts2);
-
-        } catch (AttributeNotFoundException e) {
-            fail();
-        } catch (StateSystemDisposedException e) {
-            fail();
-        }
-    }
-
-    @Test(expected = TimeRangeException.class)
-    public void testRangeQueryInvalidTime2() throws TimeRangeException {
-        final ITmfStateSystem ss = fixture;
-        assertNotNull(ss);
-
-        try {
-            int quark = ss.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
-            long ts1 = startTime - 1L * NANOSECS_PER_SEC; /* invalid */
-            long ts2 = startTime + 20L * NANOSECS_PER_SEC; /* invalid */
-            StateSystemUtils.queryHistoryRange(ss, quark, ts1, ts2);
-
-        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
-            fail();
-        }
-    }
-
-    /**
-     * Ask for a non-existing attribute
-     *
-     * @throws AttributeNotFoundException
-     */
-    @Test(expected = AttributeNotFoundException.class)
-    public void testQueryInvalidAttribute() throws AttributeNotFoundException {
-        fixture.getQuarkAbsolute("There", "is", "no", "cow", "level");
-    }
-
-    /**
-     * Query but with the wrong State Value type
-     */
-    @Test(expected = StateValueTypeException.class)
-    public void testQueryInvalidValuetype1() throws StateValueTypeException {
-        List<ITmfStateInterval> list;
-        ITmfStateInterval interval;
-        int quark;
-
-        try {
-            list = fixture.queryFullState(interestingTimestamp1);
-            quark = fixture.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
-            interval = list.get(quark);
-
-            /* This is supposed to be an int value */
-            interval.getStateValue().unboxStr();
-
-        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
-            fail();
-        }
-    }
-
-    @Test(expected = StateValueTypeException.class)
-    public void testQueryInvalidValuetype2() throws StateValueTypeException {
-        List<ITmfStateInterval> list;
-        ITmfStateInterval interval;
-        int quark;
-
-        try {
-            list = fixture.queryFullState(interestingTimestamp1);
-            quark = fixture.getQuarkAbsolute(Attributes.THREADS, "1432", Attributes.EXEC_NAME);
-            interval = list.get(quark);
-
-            /* This is supposed to be a String value */
-            interval.getStateValue().unboxInt();
-
-        } catch (AttributeNotFoundException | StateSystemDisposedException e) {
-            fail();
-        }
-    }
-
-    @Test
-    public void testFullAttributeName() {
-        try {
-            int quark = fixture.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
-            String name = fixture.getFullAttributePath(quark);
-            assertEquals(name, "CPUs/0/Current_thread");
-
-        } catch (AttributeNotFoundException e) {
-            fail();
-        }
-    }
-
-    @Test
-    public void testGetQuarks_begin() {
-        List<Integer> list = fixture.getQuarks("*", "1577", Attributes.EXEC_NAME);
-
-        assertEquals(1, list.size());
-    }
-
-    @Test
-    public void testGetQuarks_middle() {
-        List<Integer> list = fixture.getQuarks(Attributes.THREADS, "*", Attributes.EXEC_NAME);
-
-        /* Number of different kernel threads in the trace */
-        assertEquals(168, list.size());
-    }
-
-    @Test
-    public void testGetQuarks_end() {
-        List<Integer> list = fixture.getQuarks(Attributes.THREADS, "1577", "*");
-
-        /* There should be 4 sub-attributes for each Thread node */
-        assertEquals(4, list.size());
-    }
-
-    // ------------------------------------------------------------------------
-    // Tests verifying the *complete* results of a full queries
-    // ------------------------------------------------------------------------
-
-    protected long getStartTimes(int idx) {
-        return TestValues.startTimes[idx];
-    }
-
-    protected long getEndTimes(int idx) {
-        return TestValues.endTimes[idx];
-    }
-
-    protected ITmfStateValue getStateValues(int idx) {
-        return TestValues.values[idx];
-    }
-
-    @Test
-    public void testFullQueryThorough() {
-        try {
-            List<ITmfStateInterval> state = fixture.queryFullState(interestingTimestamp1);
-            assertEquals(TestValues.size, state.size());
-
-            for (int i = 0; i < state.size(); i++) {
-                /* Test each component of the intervals */
-                assertEquals(getStartTimes(i), state.get(i).getStartTime());
-                assertEquals(getEndTimes(i), state.get(i).getEndTime());
-                assertEquals(i, state.get(i).getAttribute());
-                assertEquals(getStateValues(i), state.get(i).getStateValue());
-            }
-
-        } catch (StateSystemDisposedException e) {
-            fail();
-        }
-    }
-
-    @Test
-    public void testFirstIntervalIsConsidered() {
-        try {
-            List<ITmfStateInterval> list = fixture.queryFullState(1331668248014135800L);
-            ITmfStateInterval interval = list.get(233);
-            assertEquals(1331668247516664825L, interval.getStartTime());
-
-            int valueInt = interval.getStateValue().unboxInt();
-            assertEquals(1, valueInt);
-
-        } catch (StateSystemDisposedException e) {
-            fail();
-        }
-    }
-
-    @Test
-    public void testParentAttribute() {
-        String[] path = { "CPUs/0/Current_thread",
-                          "CPUs/0",
-                          "CPUs" };
-        try {
-            int q = fixture.getQuarkAbsolute(Attributes.CPUS, "0", Attributes.CURRENT_THREAD);
-            for (int i = 0; i < path.length; i++) {
-                String name = fixture.getFullAttributePath(q);
-                assertEquals(path[i], name);
-                q = fixture.getParentAttributeQuark(q);
-            }
-            assertEquals(-1, q);
-            q = fixture.getParentAttributeQuark(q);
-            assertEquals(-1, q);
-        } catch (AttributeNotFoundException e) {
-            fail();
-        }
-    }
-
-}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/TestAll.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/TestAll.java
deleted file mode 100644 (file)
index d2e5da9..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012, 2013 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
- *
- * Contributors:
- *   Alexandre Montplaisir - Initial implementation
- ******************************************************************************/
-
-package org.eclipse.tracecompass.lttng2.kernel.core.tests.stateprovider;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-/**
- * Runner for the LTTng kernel state system tests.
- */
-@RunWith(Suite.class)
-@Suite.SuiteClasses({
-    LttngKernelStateProviderTest.class,
-    PartialStateSystemTest.class,
-    StateSystemFullHistoryTest.class,
-    StateSystemInMemoryTest.class
-})
-public class TestAll {
-
-}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/TestValues.java b/org.eclipse.tracecompass.lttng2.kernel.core.tests/src/org/eclipse/tracecompass/lttng2/kernel/core/tests/stateprovider/TestValues.java
deleted file mode 100644 (file)
index 3caddb4..0000000
+++ /dev/null
@@ -1,2625 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 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
- *
- * Contributors:
- *   Alexandre Montplaisir - Initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.tracecompass.lttng2.kernel.core.tests.stateprovider;
-
-import org.eclipse.tracecompass.statesystem.core.statevalue.ITmfStateValue;
-import org.eclipse.tracecompass.statesystem.core.statevalue.TmfStateValue;
-
-/**
- * Expected return values of querying test trace #1's state system at time
- * "18670067372290L + 1331649577946812237L"
- *
- * @author Alexandre Montplaisir
- */
-interface TestValues {
-
-    static final int size = 863;
-
-    static final long[] startTimes = {
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668248014145796L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247399757985L,
-        1331668247316320929L,
-        1331668247316334243L,
-        1331668247314046266L,
-        1331668247314038062L,
-        1331668248014183954L,
-        1331668247314038062L,
-        1331668247327098502L,
-        1331668247327098502L,
-        1331668247327098502L,
-        1331668247327098502L,
-        1331668247314038062L,
-        1331668247415001807L,
-        1331668247415001807L,
-        1331668247415001807L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668248013353414L,
-        1331668248004935409L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668248014184526L,
-        1331668248014130616L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668248011125682L,
-        1331668247314038062L,
-        1331668247931793142L,
-        1331668247959041965L,
-        1331668248011129576L,
-        1331668247314038062L,
-        1331668247335106720L,
-        1331668247335106720L,
-        1331668247335106720L,
-        1331668247335106720L,
-        1331668247931782426L,
-        1331668247315274351L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247335112802L,
-        1331668247335112802L,
-        1331668247335112802L,
-        1331668247335112802L,
-        1331668247314038062L,
-        1331668248004705322L,
-        1331668247314038062L,
-        1331668248004935409L,
-        1331668248004925240L,
-        1331668247316553071L,
-        1331668247314038062L,
-        1331668247399743968L,
-        1331668247316925661L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247999256178L,
-        1331668247999250697L,
-        1331668247318567561L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247999336085L,
-        1331668247999327778L,
-        1331668247318631139L,
-        1331668247314038062L,
-        1331668247960265258L,
-        1331668247314038062L,
-        1331668247903884233L,
-        1331668247903869067L,
-        1331668247328403934L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247908495390L,
-        1331668247908464125L,
-        1331668247328921944L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247903840082L,
-        1331668247903831313L,
-        1331668247329404733L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247960291263L,
-        1331668247314038062L,
-        1331668247330548245L,
-        1331668247314038062L,
-        1331668247340039213L,
-        1331668247340083580L,
-        1331668247966976915L,
-        1331668247314038062L,
-        1331668248004729173L,
-        1331668247314038062L,
-        1331668247371137735L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247387196023L,
-        1331668247387191465L,
-        1331668247376420842L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247400231496L,
-        1331668247400218303L,
-        1331668247378430187L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247751186217L,
-        1331668247314038062L,
-        1331668247387136191L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247415047817L,
-        1331668247415047817L,
-        1331668247415047817L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247400095883L,
-        1331668247400085049L,
-        1331668247399991225L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247401441000L,
-        1331668247401428073L,
-        1331668247400779449L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247410754305L,
-        1331668247314038062L,
-        1331668247519727372L,
-        1331668247314038062L,
-        1331668247412887695L,
-        1331668247314038062L,
-        1331668247413704524L,
-        1331668247412877246L,
-        1331668247410583861L,
-        1331668247314038062L,
-        1331668247410735104L,
-        1331668247410594291L,
-        1331668247314038062L,
-        1331668247413682702L,
-        1331668247410844189L,
-        1331668247314038062L,
-        1331668247519712481L,
-        1331668247411099759L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247924029486L,
-        1331668247924012402L,
-        1331668247412302666L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247924105876L,
-        1331668247924098044L,
-        1331668247417574343L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668248014184526L,
-        1331668248014130616L,
-        1331668247417635948L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247928627023L,
-        1331668247928621067L,
-        1331668247417978805L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247928556625L,
-        1331668247928529840L,
-        1331668247418470511L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247930341625L,
-        1331668247314038062L,
-        1331668248014184526L,
-        1331668248013793850L,
-        1331668247419578477L,
-        1331668247314038062L,
-        1331668247930328175L,
-        1331668247419655652L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668248013753736L,
-        1331668248013749389L,
-        1331668247420382626L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247930579872L,
-        1331668247930574368L,
-        1331668247420451876L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247926378321L,
-        1331668247926367737L,
-        1331668247423543945L,
-        1331668247314038062L,
-        1331668247619316825L,
-        1331668247619491008L,
-        1331668247314038062L,
-        1331668247619505885L,
-        1331668247619495072L,
-        1331668247434248026L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247434551326L,
-        1331668247434546203L,
-        1331668247434365352L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247908325947L,
-        1331668247908319810L,
-        1331668247467380509L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247908677700L,
-        1331668247908640244L,
-        1331668247467447781L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247869556425L,
-        1331668247869544380L,
-        1331668247503177108L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247504321893L,
-        1331668247504319470L,
-        1331668247503423094L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668248014183954L,
-        1331668248014183954L,
-        1331668247512172527L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247539381562L,
-        1331668247539369787L,
-        1331668247539325848L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247735177820L,
-        1331668247735170303L,
-        1331668247735128110L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247735168206L,
-        1331668247735161964L,
-        1331668247735152717L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247775218227L,
-        1331668247314038062L,
-        1331668247775231079L,
-        1331668247775205377L,
-        1331668247775191569L,
-        1331668247314038062L,
-        1331668247775223776L,
-        1331668247775218227L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247869483379L,
-        1331668247869477795L,
-        1331668247869457807L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247941667986L,
-        1331668247941650415L,
-        1331668247941620894L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-        1331668247314038062L,
-    };
-
-    static final long[] endTimes = {
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248014620024L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054130388L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248014185078L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248014620024L,
-        1331668248014620024L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248014548923L,
-        1331668248014188534L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248015040151L,
-        1331668259054285979L,
-        1331668248482983146L,
-        1331668248015041609L,
-        1331668248015176320L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248483009726L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248015959980L,
-        1331668259054285979L,
-        1331668248016172023L,
-        1331668248016194935L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054136697L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248016556933L,
-        1331668248016592456L,
-        1331668252511012367L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248016623209L,
-        1331668248016645047L,
-        1331668252843104826L,
-        1331668259054285979L,
-        1331668248486545657L,
-        1331668259054285979L,
-        1331668248502954816L,
-        1331668248503000162L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248020364249L,
-        1331668248020419523L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248020866943L,
-        1331668248020888352L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248531200073L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668257323835062L,
-        1331668257323879563L,
-        1331668248021867385L,
-        1331668259054285979L,
-        1331668248175307354L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259051873438L,
-        1331668259051879701L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248751061201L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259051838247L,
-        1331668259051846351L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668257325265220L,
-        1331668257325277639L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668250005943125L,
-        1331668259054285979L,
-        1331668248014565260L,
-        1331668259054285979L,
-        1331668250006219013L,
-        1331668259054285979L,
-        1331668250004649129L,
-        1331668250006228246L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668250005962644L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668250004668081L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248014624125L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248414826115L,
-        1331668248414875444L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248420327828L,
-        1331668248420342919L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248015353903L,
-        1331668248015428919L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248420617453L,
-        1331668248420709272L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248421112139L,
-        1331668248421137268L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248421291701L,
-        1331668259054285979L,
-        1331668248014188534L,
-        1331668248014188534L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248421940554L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248014548923L,
-        1331668248014550770L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248422509298L,
-        1331668248422523601L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248424325503L,
-        1331668248424394073L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248140683324L,
-        1331668248140686546L,
-        1331668259054285979L,
-        1331668248140727269L,
-        1331668248140780012L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251031789570L,
-        1331668251031812282L,
-        1331668252047037657L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248269586770L,
-        1331668248269613258L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248141167328L,
-        1331668248141400164L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248141004006L,
-        1331668248141028631L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248141324868L,
-        1331668248141345677L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248014185078L,
-        1331668248014185078L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248539549580L,
-        1331668248539579511L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668255234884605L,
-        1331668255234905622L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668255234936617L,
-        1331668255234941684L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252778982101L,
-        1331668259054285979L,
-        1331668252779007563L,
-        1331668252781320133L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252781341690L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248869653287L,
-        1331668248869679933L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248941858743L,
-        1331668248941885421L,
-        1331668252782929207L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248207116451L,
-        1331668248207177650L,
-        1331668248207163589L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248207165629L,
-        1331668248207212201L,
-        1331668248207197204L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248763171129L,
-        1331668259054285979L,
-        1331668248763179780L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668248895005379L,
-        1331668248895062414L,
-        1331668248895035146L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668249000328909L,
-        1331668249000373092L,
-        1331668249000350716L,
-        1331668259054285979L,
-        1331668249548101920L,
-        1331668259054285979L,
-        1331668249947171998L,
-        1331668249947269897L,
-        1331668249947249018L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668249951033184L,
-        1331668249951077605L,
-        1331668249951058138L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668249959079406L,
-        1331668259054285979L,
-        1331668249959100633L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668249970937981L,
-        1331668259054285979L,
-        1331668249970963407L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668250007423753L,
-        1331668250007449251L,
-        1331668250007428034L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668250231124169L,
-        1331668250231169946L,
-        1331668250231148973L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668250326525622L,
-        1331668250329519305L,
-        1331668250329507458L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251063191270L,
-        1331668251063256143L,
-        1331668251063222335L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251065026369L,
-        1331668251065048462L,
-        1331668251065030498L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251065058051L,
-        1331668251065091761L,
-        1331668251065069765L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251065364590L,
-        1331668251065412381L,
-        1331668251065407607L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251065462500L,
-        1331668251065477027L,
-        1331668251065465604L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251065780572L,
-        1331668251065836719L,
-        1331668251065829440L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251065899750L,
-        1331668251065913891L,
-        1331668251065902892L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251066057402L,
-        1331668251066070617L,
-        1331668251066060363L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251066495616L,
-        1331668251066520321L,
-        1331668251066506338L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251066532840L,
-        1331668251066546436L,
-        1331668251066535866L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251066658006L,
-        1331668251066671812L,
-        1331668251066660635L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251066883302L,
-        1331668251066906446L,
-        1331668251066887423L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251067153808L,
-        1331668251067176405L,
-        1331668251067157534L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251067407214L,
-        1331668251067420770L,
-        1331668251067410220L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251067763731L,
-        1331668251067818612L,
-        1331668251067811009L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251067884367L,
-        1331668251067897382L,
-        1331668251067887136L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251068275691L,
-        1331668251068288692L,
-        1331668251068278423L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251068706355L,
-        1331668251068719015L,
-        1331668251068709290L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251069067645L,
-        1331668251069122518L,
-        1331668251069116275L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251069178617L,
-        1331668251069191305L,
-        1331668251069181300L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251069664884L,
-        1331668251069684555L,
-        1331668251069668097L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251069682852L,
-        1331668251069708201L,
-        1331668251069690226L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251715054925L,
-        1331668259054285979L,
-        1331668251715066022L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251803784493L,
-        1331668251803827591L,
-        1331668251803808547L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251983438636L,
-        1331668251983448709L,
-        1331668251983441583L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668251992993580L,
-        1331668251993008591L,
-        1331668251992998928L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252022091542L,
-        1331668252022091542L,
-        1331668252022091542L,
-        1331668252022091542L,
-        1331668259054285979L,
-        1331668252031771660L,
-        1331668252031777595L,
-        1331668252031773847L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252032463013L,
-        1331668252032502964L,
-        1331668252032497700L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252032506884L,
-        1331668252032559227L,
-        1331668252032539402L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252039535067L,
-        1331668259054285979L,
-        1331668252039537404L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252044008981L,
-        1331668252044014257L,
-        1331668252044010861L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252044059151L,
-        1331668252044064004L,
-        1331668252044060420L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252179391423L,
-        1331668252184781913L,
-        1331668252184772369L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252193425490L,
-        1331668252193432385L,
-        1331668252193427706L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252253575716L,
-        1331668252253592491L,
-        1331668252253581852L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252472449352L,
-        1331668252472474547L,
-        1331668252472458163L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252487295286L,
-        1331668252487300925L,
-        1331668252487297683L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252495759849L,
-        1331668252495766026L,
-        1331668252495762178L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252496219924L,
-        1331668252496245837L,
-        1331668252496228816L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252523291829L,
-        1331668252523482082L,
-        1331668252523469395L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252764810964L,
-        1331668252764829827L,
-        1331668252764814570L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252765021775L,
-        1331668252765026623L,
-        1331668252765023841L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252769399706L,
-        1331668259054285979L,
-        1331668252769401404L,
-        1331668259054285979L,
-        1331668252769446847L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252769456141L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252784988923L,
-        1331668259054285979L,
-        1331668252785262589L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252795062126L,
-        1331668259054285979L,
-        1331668252795122600L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252828832090L,
-        1331668259054285979L,
-        1331668252828859292L,
-        1331668252828904216L,
-        1331668252828866041L,
-        1331668259054285979L,
-        1331668252829060434L,
-        1331668252828992804L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252829505108L,
-        1331668259054285979L,
-        1331668252829527974L,
-        1331668252829719292L,
-        1331668252829638887L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252829643060L,
-        1331668259054285979L,
-        1331668252829660274L,
-        1331668259054285979L,
-        1331668252829683896L,
-        1331668259054285979L,
-        1331668252829799248L,
-        1331668259054285979L,
-        1331668252829802278L,
-        1331668259054285979L,
-        1331668252829821642L,
-        1331668259054285979L,
-        1331668252829840961L,
-        1331668259054285979L,
-        1331668252829859256L,
-        1331668259054285979L,
-        1331668252829976501L,
-        1331668252830107659L,
-        1331668252830085595L,
-        1331668259054285979L,
-        1331668252830154848L,
-        1331668252830139534L,
-        1331668259054285979L,
-        1331668252830212497L,
-        1331668252830194969L,
-        1331668259054285979L,
-        1331668252830382459L,
-        1331668252830368625L,
-        1331668259054285979L,
-        1331668252830526491L,
-        1331668252830499169L,
-        1331668259054285979L,
-        1331668252830576634L,
-        1331668252830564658L,
-        1331668259054285979L,
-        1331668252831112505L,
-        1331668252831083126L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252831228714L,
-        1331668252831318123L,
-        1331668252831301843L,
-        1331668259054285979L,
-        1331668252831543926L,
-        1331668252831527998L,
-        1331668259054285979L,
-        1331668252831834393L,
-        1331668252831817197L,
-        1331668259054285979L,
-        1331668252832056760L,
-        1331668252832046333L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252883172744L,
-        1331668252883172744L,
-        1331668252883172744L,
-        1331668252883172744L,
-        1331668259054285979L,
-        1331668252885827603L,
-        1331668252885827603L,
-        1331668252885827603L,
-        1331668252885827603L,
-        1331668259054285979L,
-        1331668252889337098L,
-        1331668259054285979L,
-        1331668252889396688L,
-        1331668252889396688L,
-        1331668252889396688L,
-        1331668252889396688L,
-        1331668252901232798L,
-        1331668252901118256L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252901540914L,
-        1331668252901540914L,
-        1331668252901540914L,
-        1331668252901540914L,
-        1331668259054285979L,
-        1331668252901573889L,
-        1331668252901586635L,
-        1331668252901577276L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252906764880L,
-        1331668252906764880L,
-        1331668252906764880L,
-        1331668252906764880L,
-        1331668259054285979L,
-        1331668252912042743L,
-        1331668259054285979L,
-        1331668252912048618L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668252927449371L,
-        1331668252927449371L,
-        1331668252927449371L,
-        1331668252927449371L,
-        1331668259054285979L,
-        1331668252947156908L,
-        1331668252947156908L,
-        1331668252947156908L,
-        1331668252947156908L,
-        1331668259054285979L,
-        1331668252947197386L,
-        1331668252947197386L,
-        1331668252947197386L,
-        1331668252947197386L,
-        1331668259054285979L,
-        1331668253035499713L,
-        1331668253035499713L,
-        1331668253035499713L,
-        1331668253035499713L,
-        1331668259054285979L,
-        1331668253036766769L,
-        1331668253036766769L,
-        1331668253036766769L,
-        1331668253036766769L,
-        1331668259054285979L,
-        1331668253037890651L,
-        1331668253037890651L,
-        1331668253037890651L,
-        1331668253037890651L,
-        1331668259054285979L,
-        1331668253051945128L,
-        1331668253051945128L,
-        1331668253051945128L,
-        1331668253051945128L,
-        1331668259054285979L,
-        1331668253054627961L,
-        1331668253054627961L,
-        1331668253054627961L,
-        1331668253054627961L,
-        1331668259054285979L,
-        1331668253057609433L,
-        1331668253057609433L,
-        1331668253057609433L,
-        1331668253057609433L,
-        1331668259054285979L,
-        1331668253062222314L,
-        1331668253062222314L,
-        1331668253062222314L,
-        1331668253062222314L,
-        1331668259054285979L,
-        1331668253097239708L,
-        1331668253097239708L,
-        1331668253097239708L,
-        1331668253097239708L,
-        1331668259054285979L,
-        1331668253097518746L,
-        1331668253097518746L,
-        1331668253097518746L,
-        1331668253097518746L,
-        1331668259054285979L,
-        1331668253267104284L,
-        1331668253267117055L,
-        1331668253267107624L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668253267342015L,
-        1331668253267378405L,
-        1331668253267367303L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668253278218713L,
-        1331668253278218713L,
-        1331668253278218713L,
-        1331668253278218713L,
-        1331668259054285979L,
-        1331668253324119756L,
-        1331668253324119756L,
-        1331668253324119756L,
-        1331668253324119756L,
-        1331668259054285979L,
-        1331668253614347227L,
-        1331668253614347227L,
-        1331668253614347227L,
-        1331668253614347227L,
-        1331668259054285979L,
-        1331668253619459320L,
-        1331668253619459320L,
-        1331668253619459320L,
-        1331668253619459320L,
-        1331668259054285979L,
-        1331668253619867625L,
-        1331668253619867625L,
-        1331668253619867625L,
-        1331668253619867625L,
-        1331668259054285979L,
-        1331668253621486721L,
-        1331668253621508851L,
-        1331668253621491536L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668253622429608L,
-        1331668253622429608L,
-        1331668253622429608L,
-        1331668253622429608L,
-        1331668259054285979L,
-        1331668253857465365L,
-        1331668253857465365L,
-        1331668253857465365L,
-        1331668253857465365L,
-        1331668259054285979L,
-        1331668253858125091L,
-        1331668253858125091L,
-        1331668253858125091L,
-        1331668253858125091L,
-        1331668259054285979L,
-        1331668253910194540L,
-        1331668253910194540L,
-        1331668253910194540L,
-        1331668253910194540L,
-        1331668259054285979L,
-        1331668253910329721L,
-        1331668253910329721L,
-        1331668253910329721L,
-        1331668253910329721L,
-        1331668259054285979L,
-        1331668253984922308L,
-        1331668253984922308L,
-        1331668253984922308L,
-        1331668253984922308L,
-        1331668259054285979L,
-        1331668254004098152L,
-        1331668254004098152L,
-        1331668254004098152L,
-        1331668254004098152L,
-        1331668259054285979L,
-        1331668254047839900L,
-        1331668254047839900L,
-        1331668254047839900L,
-        1331668254047839900L,
-        1331668259054285979L,
-        1331668254093066195L,
-        1331668254093066195L,
-        1331668254093066195L,
-        1331668254093066195L,
-        1331668259054285979L,
-        1331668254106326339L,
-        1331668254106326339L,
-        1331668254106326339L,
-        1331668254106326339L,
-        1331668259054285979L,
-        1331668255052411647L,
-        1331668255052411647L,
-        1331668255052411647L,
-        1331668255052411647L,
-        1331668259054285979L,
-        1331668255157088064L,
-        1331668255157101973L,
-        1331668255157091812L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668256244508635L,
-        1331668256244508635L,
-        1331668256244508635L,
-        1331668256244508635L,
-        1331668259054285979L,
-        1331668257246987050L,
-        1331668257247036372L,
-        1331668257247027684L,
-        1331668259054285979L,
-        1331668259054285979L,
-        1331668259045096840L,
-        1331668259045096840L,
-        1331668259045096840L,
-        1331668259045096840L,
-        1331668259054285979L,
-        1331668259052126585L,
-        1331668259052126585L,
-        1331668259052126585L,
-        1331668259052126585L,
-        1331668259054285979L,
-        1331668259053345550L,
-        1331668259054285979L,
-        1331668259053349544L,
-        1331668259054285979L,
-    };
-
-    static final ITmfStateValue[] values = {
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1397),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("lttng-consumerd"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(5),
-        TmfStateValue.newValueString("swapper/1"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1432),
-        TmfStateValue.newValueInt(2),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("lttng-consumerd"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_ppoll"),
-        TmfStateValue.newValueString("alsa-sink"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueString("sys_epoll_wait"),
-        TmfStateValue.newValueString("lttng-sessiond"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_futex"),
-        TmfStateValue.newValueString("firefox"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("firefox"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("gnome-terminal"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_select"),
-        TmfStateValue.newValueString("Xorg"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("metacity"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueString("kworker/0:1"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueString("ksoftirqd/0"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_read"),
-        TmfStateValue.newValueString("rsyslogd"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_futex"),
-        TmfStateValue.newValueString("rs:main Q:Reg"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueString("kworker/1:1"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_select"),
-        TmfStateValue.newValueString("rsyslogd"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_read"),
-        TmfStateValue.newValueString("bash"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("bamfdaemon"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("gnome-settings-"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("unity-2d-shell"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("unity-2d-panel"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("indicator-multi"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("gdbus"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("dbus-daemon"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("gdbus"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("indicator-appli"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(3),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("gdbus"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("gdbus"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(5),
-        TmfStateValue.newValueString("sys_futex"),
-        TmfStateValue.newValueString("unity-panel-ser"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("hud-service"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("gdbus"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("openvpn"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("firefox"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_futex"),
-        TmfStateValue.newValueString("thunderbird-bin"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("thunderbird-bin"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("thunderbird-bin"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_futex"),
-        TmfStateValue.newValueString("thunderbird-bin"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(2),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueString("gdbus"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_nanosleep"),
-        TmfStateValue.newValueString("gvfs-afc-volume"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("rtkit-daemon"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("rtkit-daemon"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("thunderbird-bin"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueString("sys_poll"),
-        TmfStateValue.newValueString("thunderbird-bin"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_futex"),
-        TmfStateValue.newValueString("thunderbird-bin"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.newValueInt(1),
-        TmfStateValue.newValueString("sys_futex"),
-        TmfStateValue.newValueString("firefox"),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-        TmfStateValue.nullValue(),
-    };
-}
index 49d9d1756fa6fa8f2ad4e82beab507dd7f415b47..25a1fbed7ff1ff6cdeb5e9b98c2f7da100947456 100644 (file)
@@ -15,9 +15,8 @@ Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.tracecompass.tmf.ctf.core,
  org.eclipse.tracecompass.lttng2.control.core
 Export-Package: org.eclipse.tracecompass.internal.lttng2.kernel.core;x-friends:="org.eclipse.tracecompass.lttng2.kernel.ui,org.eclipse.tracecompass.lttng2.kernel.core.tests",
- org.eclipse.tracecompass.internal.lttng2.kernel.core.stateprovider;x-friends:="org.eclipse.tracecompass.lttng2.kernel.ui,org.eclipse.tracecompass.lttng2.kernel.core.tests",
- org.eclipse.tracecompass.lttng2.kernel.core.analysis,
- org.eclipse.tracecompass.lttng2.kernel.core.cpuusage,
+ org.eclipse.tracecompass.lttng2.kernel.core.analysis.cpuusage,
+ org.eclipse.tracecompass.lttng2.kernel.core.analysis.kernel,
  org.eclipse.tracecompass.lttng2.kernel.core.event.matching,
  org.eclipse.tracecompass.lttng2.kernel.core.trace
 Import-Package: com.google.common.collect
index 86ce5bb527e65c5e4d73e9b9651ddb918f8c66ed..85cb786cc3d239cd29cc60eb917ee18640d261ac 100644 (file)
@@ -15,7 +15,7 @@
    <extension
          point="org.eclipse.linuxtools.tmf.core.analysis">
       <module
-            analysis_module="org.eclipse.tracecompass.lttng2.kernel.core.analysis.LttngKernelAnalysisModule"
+            analysis_module="org.eclipse.tracecompass.lttng2.kernel.core.analysis.kernel.LttngKernelAnalysis"
             automatic="true"
             id="org.eclipse.linuxtools.lttng2.kernel.analysis"
             name="%analysis.lttngkernel">
@@ -24,7 +24,7 @@
          </tracetype>
       </module>
       <module
-            analysis_module="org.eclipse.tracecompass.lttng2.kernel.core.cpuusage.LttngKernelCpuUsageAnalysis"
+            analysis_module="org.eclipse.tracecompass.lttng2.kernel.core.analysis.cpuusage.LttngKernelCpuUsageAnalysis"
             id="org.eclipse.linuxtools.lttng2.kernel.core.cpuusage"
             name="%cpuusage.lttng.kernel">
          <tracetype
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/stateprovider/LttngKernelStateProvider.java b/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/stateprovider/LttngKernelStateProvider.java
deleted file mode 100644 (file)
index 33a173f..0000000
+++ /dev/null
@@ -1,559 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012, 2014 Ericsson
- * Copyright (c) 2010, 2011 Ã‰cole Polytechnique de Montréal
- * Copyright (c) 2010, 2011 Alexandre Montplaisir <alexandre.montplaisir@gmail.com>
- *
- * 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.internal.lttng2.kernel.core.stateprovider;
-
-import org.eclipse.tracecompass.internal.lttng2.kernel.core.Attributes;
-import org.eclipse.tracecompass.internal.lttng2.kernel.core.LttngStrings;
-import org.eclipse.tracecompass.internal.lttng2.kernel.core.StateValues;
-import org.eclipse.tracecompass.statesystem.core.ITmfStateSystemBuilder;
-import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundException;
-import org.eclipse.tracecompass.statesystem.core.exceptions.StateValueTypeException;
-import org.eclipse.tracecompass.statesystem.core.exceptions.TimeRangeException;
-import org.eclipse.tracecompass.statesystem.core.statevalue.ITmfStateValue;
-import org.eclipse.tracecompass.statesystem.core.statevalue.TmfStateValue;
-import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
-import org.eclipse.tracecompass.tmf.core.event.ITmfEventField;
-import org.eclipse.tracecompass.tmf.core.statesystem.AbstractTmfStateProvider;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-
-/**
- * This is the state change input plugin for TMF's state system which handles
- * the LTTng 2.0 kernel traces in CTF format.
- *
- * It uses the reference handler defined in CTFKernelHandler.java.
- *
- * @author alexmont
- *
- */
-public class LttngKernelStateProvider extends AbstractTmfStateProvider {
-
-    /**
-     * Version number of this state provider. Please bump this if you modify the
-     * contents of the generated state history in some way.
-     */
-    private static final int VERSION = 4;
-
-    // ------------------------------------------------------------------------
-    // Constructor
-    // ------------------------------------------------------------------------
-
-    /**
-     * Instantiate a new state provider plugin.
-     *
-     * @param trace
-     *            The LTTng 2.0 kernel trace directory
-     */
-    public LttngKernelStateProvider(ITmfTrace trace) {
-        super(trace, ITmfEvent.class, "LTTng Kernel"); //$NON-NLS-1$
-    }
-
-    // ------------------------------------------------------------------------
-    // IStateChangeInput
-    // ------------------------------------------------------------------------
-
-    @Override
-    public int getVersion() {
-        return VERSION;
-    }
-
-    @Override
-    public void assignTargetStateSystem(ITmfStateSystemBuilder ssb) {
-        /* We can only set up the locations once the state system is assigned */
-        super.assignTargetStateSystem(ssb);
-    }
-
-    @Override
-    public LttngKernelStateProvider getNewInstance() {
-        return new LttngKernelStateProvider(this.getTrace());
-    }
-
-    @Override
-    protected void eventHandle(ITmfEvent event) {
-        /*
-         * AbstractStateChangeInput should have already checked for the correct
-         * class type
-         */
-
-        final String eventName = event.getType().getName();
-        final long ts = event.getTimestamp().getValue();
-
-        try {
-            /* Shortcut for the "current CPU" attribute node */
-            final Integer currentCPUNode = ss.getQuarkRelativeAndAdd(getNodeCPUs(), event.getSource());
-
-            /*
-             * Shortcut for the "current thread" attribute node. It requires
-             * querying the current CPU's current thread.
-             */
-            int quark = ss.getQuarkRelativeAndAdd(currentCPUNode, Attributes.CURRENT_THREAD);
-            ITmfStateValue value = ss.queryOngoingState(quark);
-            int thread = value.isNull() ? -1 : value.unboxInt();
-            final Integer currentThreadNode = ss.getQuarkRelativeAndAdd(getNodeThreads(), String.valueOf(thread));
-
-            /*
-             * Feed event to the history system if it's known to cause a state
-             * transition.
-             */
-            switch (eventName) {
-
-            case LttngStrings.EXIT_SYSCALL:
-            /* Fields: int64 ret */
-            {
-                /* Clear the current system call on the process */
-                quark = ss.getQuarkRelativeAndAdd(currentThreadNode, Attributes.SYSTEM_CALL);
-                value = TmfStateValue.nullValue();
-                ss.modifyAttribute(ts, value, quark);
-
-                /* Put the process' status back to user mode */
-                quark = ss.getQuarkRelativeAndAdd(currentThreadNode, Attributes.STATUS);
-                value = StateValues.PROCESS_STATUS_RUN_USERMODE_VALUE;
-                ss.modifyAttribute(ts, value, quark);
-
-                /* Put the CPU's status back to user mode */
-                quark = ss.getQuarkRelativeAndAdd(currentCPUNode, Attributes.STATUS);
-                value = StateValues.CPU_STATUS_RUN_USERMODE_VALUE;
-                ss.modifyAttribute(ts, value, quark);
-            }
-                break;
-
-            case LttngStrings.IRQ_HANDLER_ENTRY:
-            /* Fields: int32 irq, string name */
-            {
-                Integer irqId = ((Long) event.getContent().getField(LttngStrings.IRQ).getValue()).intValue();
-
-                /* Mark this IRQ as active in the resource tree.
-                 * The state value = the CPU on which this IRQ is sitting */
-                quark = ss.getQuarkRelativeAndAdd(getNodeIRQs(), irqId.toString());
-                value = TmfStateValue.newValueInt(Integer.parseInt(event.getSource()));
-                ss.modifyAttribute(ts, value, quark);
-
-                /* Change the status of the running process to interrupted */
-                quark = ss.getQuarkRelativeAndAdd(currentThreadNode, Attributes.STATUS);
-                value = StateValues.PROCESS_STATUS_INTERRUPTED_VALUE;
-                ss.modifyAttribute(ts, value, quark);
-
-                /* Change the status of the CPU to interrupted */
-                quark = ss.getQuarkRelativeAndAdd(currentCPUNode, Attributes.STATUS);
-                value = StateValues.CPU_STATUS_IRQ_VALUE;
-                ss.modifyAttribute(ts, value, quark);
-            }
-                break;
-
-            case LttngStrings.IRQ_HANDLER_EXIT:
-            /* Fields: int32 irq, int32 ret */
-            {
-                Integer irqId = ((Long) event.getContent().getField(LttngStrings.IRQ).getValue()).intValue();
-
-                /* Put this IRQ back to inactive in the resource tree */
-                quark = ss.getQuarkRelativeAndAdd(getNodeIRQs(), irqId.toString());
-                value = TmfStateValue.nullValue();
-                ss.modifyAttribute(ts, value, quark);
-
-                /* Set the previous process back to running */
-                setProcessToRunning(ts, currentThreadNode);
-
-                /* Set the CPU status back to running or "idle" */
-                cpuExitInterrupt(ts, currentCPUNode, currentThreadNode);
-            }
-                break;
-
-            case LttngStrings.SOFTIRQ_ENTRY:
-            /* Fields: int32 vec */
-            {
-                Integer softIrqId = ((Long) event.getContent().getField(LttngStrings.VEC).getValue()).intValue();
-
-                /* Mark this SoftIRQ as active in the resource tree.
-                 * The state value = the CPU on which this SoftIRQ is processed */
-                quark = ss.getQuarkRelativeAndAdd(getNodeSoftIRQs(), softIrqId.toString());
-                value = TmfStateValue.newValueInt(Integer.parseInt(event.getSource()));
-                ss.modifyAttribute(ts, value, quark);
-
-                /* Change the status of the running process to interrupted */
-                quark = ss.getQuarkRelativeAndAdd(currentThreadNode, Attributes.STATUS);
-                value = StateValues.PROCESS_STATUS_INTERRUPTED_VALUE;
-                ss.modifyAttribute(ts, value, quark);
-
-                /* Change the status of the CPU to interrupted */
-                quark = ss.getQuarkRelativeAndAdd(currentCPUNode, Attributes.STATUS);
-                value = StateValues.CPU_STATUS_SOFTIRQ_VALUE;
-                ss.modifyAttribute(ts, value, quark);
-            }
-                break;
-
-            case LttngStrings.SOFTIRQ_EXIT:
-            /* Fields: int32 vec */
-            {
-                Integer softIrqId = ((Long) event.getContent().getField(LttngStrings.VEC).getValue()).intValue();
-
-                /* Put this SoftIRQ back to inactive (= -1) in the resource tree */
-                quark = ss.getQuarkRelativeAndAdd(getNodeSoftIRQs(), softIrqId.toString());
-                value = TmfStateValue.nullValue();
-                ss.modifyAttribute(ts, value, quark);
-
-                /* Set the previous process back to running */
-                setProcessToRunning(ts, currentThreadNode);
-
-                /* Set the CPU status back to "busy" or "idle" */
-                cpuExitInterrupt(ts, currentCPUNode, currentThreadNode);
-            }
-                break;
-
-            case LttngStrings.SOFTIRQ_RAISE:
-            /* Fields: int32 vec */
-            {
-                Integer softIrqId = ((Long) event.getContent().getField(LttngStrings.VEC).getValue()).intValue();
-
-                /* Mark this SoftIRQ as *raised* in the resource tree.
-                 * State value = -2 */
-                quark = ss.getQuarkRelativeAndAdd(getNodeSoftIRQs(), softIrqId.toString());
-                value = StateValues.SOFT_IRQ_RAISED_VALUE;
-                ss.modifyAttribute(ts, value, quark);
-            }
-                break;
-
-            case LttngStrings.SCHED_SWITCH:
-            /*
-             * Fields: string prev_comm, int32 prev_tid, int32 prev_prio, int64 prev_state,
-             *         string next_comm, int32 next_tid, int32 next_prio
-             */
-            {
-                ITmfEventField content = event.getContent();
-                Integer prevTid = ((Long) content.getField(LttngStrings.PREV_TID).getValue()).intValue();
-                Long prevState = (Long) content.getField(LttngStrings.PREV_STATE).getValue();
-                String nextProcessName = (String) content.getField(LttngStrings.NEXT_COMM).getValue();
-                Integer nextTid = ((Long) content.getField(LttngStrings.NEXT_TID).getValue()).intValue();
-
-                Integer formerThreadNode = ss.getQuarkRelativeAndAdd(getNodeThreads(), prevTid.toString());
-                Integer newCurrentThreadNode = ss.getQuarkRelativeAndAdd(getNodeThreads(), nextTid.toString());
-
-                /* Set the status of the process that got scheduled out. */
-                quark = ss.getQuarkRelativeAndAdd(formerThreadNode, Attributes.STATUS);
-                if (prevState != 0) {
-                    value = StateValues.PROCESS_STATUS_WAIT_BLOCKED_VALUE;
-                } else {
-                    value = StateValues.PROCESS_STATUS_WAIT_FOR_CPU_VALUE;
-                }
-                ss.modifyAttribute(ts, value, quark);
-
-                /* Set the status of the new scheduled process */
-                setProcessToRunning(ts, newCurrentThreadNode);
-
-                /* Set the exec name of the new process */
-                quark = ss.getQuarkRelativeAndAdd(newCurrentThreadNode, Attributes.EXEC_NAME);
-                value = TmfStateValue.newValueString(nextProcessName);
-                ss.modifyAttribute(ts, value, quark);
-
-                /* Make sure the PPID and system_call sub-attributes exist */
-                ss.getQuarkRelativeAndAdd(newCurrentThreadNode, Attributes.SYSTEM_CALL);
-                ss.getQuarkRelativeAndAdd(newCurrentThreadNode, Attributes.PPID);
-
-                /* Set the current scheduled process on the relevant CPU */
-                quark = ss.getQuarkRelativeAndAdd(currentCPUNode, Attributes.CURRENT_THREAD);
-                value = TmfStateValue.newValueInt(nextTid);
-                ss.modifyAttribute(ts, value, quark);
-
-                /* Set the status of the CPU itself */
-                if (nextTid > 0) {
-                    /* Check if the entering process is in kernel or user mode */
-                    quark = ss.getQuarkRelativeAndAdd(newCurrentThreadNode, Attributes.SYSTEM_CALL);
-                    if (ss.queryOngoingState(quark).isNull()) {
-                        value = StateValues.CPU_STATUS_RUN_USERMODE_VALUE;
-                    } else {
-                        value = StateValues.CPU_STATUS_RUN_SYSCALL_VALUE;
-                    }
-                } else {
-                    value = StateValues.CPU_STATUS_IDLE_VALUE;
-                }
-                quark = ss.getQuarkRelativeAndAdd(currentCPUNode, Attributes.STATUS);
-                ss.modifyAttribute(ts, value, quark);
-            }
-                break;
-
-            case LttngStrings.SCHED_PROCESS_FORK:
-            /* Fields: string parent_comm, int32 parent_tid,
-             *         string child_comm, int32 child_tid */
-            {
-                ITmfEventField content = event.getContent();
-                // String parentProcessName = (String) event.getFieldValue("parent_comm");
-                String childProcessName = (String) content.getField(LttngStrings.CHILD_COMM).getValue();
-                // assert ( parentProcessName.equals(childProcessName) );
-
-                Integer parentTid = ((Long) content.getField(LttngStrings.PARENT_TID).getValue()).intValue();
-                Integer childTid = ((Long) content.getField(LttngStrings.CHILD_TID).getValue()).intValue();
-
-                Integer parentTidNode = ss.getQuarkRelativeAndAdd(getNodeThreads(), parentTid.toString());
-                Integer childTidNode = ss.getQuarkRelativeAndAdd(getNodeThreads(), childTid.toString());
-
-                /* Assign the PPID to the new process */
-                quark = ss.getQuarkRelativeAndAdd(childTidNode, Attributes.PPID);
-                value = TmfStateValue.newValueInt(parentTid);
-                ss.modifyAttribute(ts, value, quark);
-
-                /* Set the new process' exec_name */
-                quark = ss.getQuarkRelativeAndAdd(childTidNode, Attributes.EXEC_NAME);
-                value = TmfStateValue.newValueString(childProcessName);
-                ss.modifyAttribute(ts, value, quark);
-
-                /* Set the new process' status */
-                quark = ss.getQuarkRelativeAndAdd(childTidNode, Attributes.STATUS);
-                value = StateValues.PROCESS_STATUS_WAIT_FOR_CPU_VALUE;
-                ss.modifyAttribute(ts, value, quark);
-
-                /* Set the process' syscall name, to be the same as the parent's */
-                quark = ss.getQuarkRelativeAndAdd(parentTidNode, Attributes.SYSTEM_CALL);
-                value = ss.queryOngoingState(quark);
-                if (value.isNull()) {
-                    /*
-                     * Maybe we were missing info about the parent? At least we
-                     * will set the child right. Let's suppose "sys_clone".
-                     */
-                    value = TmfStateValue.newValueString(LttngStrings.SYS_CLONE);
-                }
-                quark = ss.getQuarkRelativeAndAdd(childTidNode, Attributes.SYSTEM_CALL);
-                ss.modifyAttribute(ts, value, quark);
-            }
-                break;
-
-            case LttngStrings.SCHED_PROCESS_EXIT:
-            /* Fields: string comm, int32 tid, int32 prio */
-                break;
-
-            case LttngStrings.SCHED_PROCESS_FREE:
-            /* Fields: string comm, int32 tid, int32 prio */
-            /*
-             * A sched_process_free will always happen after the sched_switch
-             * that will remove the process from the cpu for the last time. So
-             * this is when we should delete everything wrt to the process.
-             */
-            {
-                Integer tid = ((Long) event.getContent().getField(LttngStrings.TID).getValue()).intValue();
-                /*
-                 * Remove the process and all its sub-attributes from the
-                 * current state
-                 */
-                quark = ss.getQuarkRelativeAndAdd(getNodeThreads(), tid.toString());
-                ss.removeAttribute(ts, quark);
-            }
-                break;
-
-            case LttngStrings.STATEDUMP_PROCESS_STATE:
-            /* Fields:
-             * int32 type, int32 mode, int32 pid, int32 submode, int32 vpid,
-             * int32 ppid, int32 tid, string name, int32 status, int32 vtid */
-            {
-                ITmfEventField content = event.getContent();
-                int tid = ((Long) content.getField(LttngStrings.TID).getValue()).intValue();
-                int pid = ((Long) content.getField(LttngStrings.PID).getValue()).intValue();
-                int ppid = ((Long) content.getField(LttngStrings.PPID).getValue()).intValue();
-                int status = ((Long) content.getField(LttngStrings.STATUS).getValue()).intValue();
-                String name = (String) content.getField(LttngStrings.NAME).getValue();
-                /*
-                 * "mode" could be interesting too, but it doesn't seem to be
-                 * populated with anything relevant for now.
-                 */
-
-                int curThreadNode = ss.getQuarkRelativeAndAdd(getNodeThreads(), String.valueOf(tid));
-
-                /* Set the process' name */
-                quark = ss.getQuarkRelativeAndAdd(curThreadNode, Attributes.EXEC_NAME);
-                if (ss.queryOngoingState(quark).isNull()) {
-                    /* If the value didn't exist previously, set it */
-                    value = TmfStateValue.newValueString(name);
-                    ss.modifyAttribute(ts, value, quark);
-                }
-
-                /* Set the process' PPID */
-                quark = ss.getQuarkRelativeAndAdd(curThreadNode, Attributes.PPID);
-                if (ss.queryOngoingState(quark).isNull()) {
-                    if (pid == tid) {
-                        /* We have a process. Use the 'PPID' field. */
-                        value = TmfStateValue.newValueInt(ppid);
-                    } else {
-                        /* We have a thread, use the 'PID' field for the parent. */
-                        value = TmfStateValue.newValueInt(pid);
-                    }
-                    ss.modifyAttribute(ts, value, quark);
-                }
-
-                /* Set the process' status */
-                quark = ss.getQuarkRelativeAndAdd(curThreadNode, Attributes.STATUS);
-                if (ss.queryOngoingState(quark).isNull()) {
-                     /* "2" here means "WAIT_FOR_CPU", and "5" "WAIT_BLOCKED" in the LTTng kernel. */
-                    if (status == 2) {
-                        value = StateValues.PROCESS_STATUS_WAIT_FOR_CPU_VALUE;
-                    } else if (status == 5) {
-                        value = StateValues.PROCESS_STATUS_WAIT_BLOCKED_VALUE;
-                    } else {
-                        value = StateValues.PROCESS_STATUS_UNKNOWN_VALUE;
-                    }
-                    ss.modifyAttribute(ts, value, quark);
-                }
-            }
-                break;
-
-            case LttngStrings.SCHED_WAKEUP:
-            case LttngStrings.SCHED_WAKEUP_NEW:
-            /* Fields (same fields for both types):
-             * string comm, int32 pid, int32 prio, int32 success,
-             * int32 target_cpu */
-            {
-                final int tid = ((Long) event.getContent().getField(LttngStrings.TID).getValue()).intValue();
-                final int threadNode = ss.getQuarkRelativeAndAdd(getNodeThreads(), String.valueOf(tid));
-
-                /*
-                 * The process indicated in the event's payload is now ready to
-                 * run. Assign it to the "wait for cpu" state, but only if it
-                 * was not already running.
-                 */
-                quark = ss.getQuarkRelativeAndAdd(threadNode, Attributes.STATUS);
-                int status = ss.queryOngoingState(quark).unboxInt();
-
-                if (status != StateValues.PROCESS_STATUS_RUN_SYSCALL &&
-                    status != StateValues.PROCESS_STATUS_RUN_USERMODE) {
-                    value = StateValues.PROCESS_STATUS_WAIT_FOR_CPU_VALUE;
-                    ss.modifyAttribute(ts, value, quark);
-                }
-            }
-                break;
-
-            default:
-            /* Other event types not covered by the main switch */
-            {
-                if (eventName.startsWith(LttngStrings.SYSCALL_PREFIX)
-                        || eventName.startsWith(LttngStrings.COMPAT_SYSCALL_PREFIX)) {
-                    /*
-                     * This is a replacement for the old sys_enter event. Now
-                     * syscall names are listed into the event type
-                     */
-
-                    /* Assign the new system call to the process */
-                    quark = ss.getQuarkRelativeAndAdd(currentThreadNode, Attributes.SYSTEM_CALL);
-                    value = TmfStateValue.newValueString(eventName);
-                    ss.modifyAttribute(ts, value, quark);
-
-                    /* Put the process in system call mode */
-                    quark = ss.getQuarkRelativeAndAdd(currentThreadNode, Attributes.STATUS);
-                    value = StateValues.PROCESS_STATUS_RUN_SYSCALL_VALUE;
-                    ss.modifyAttribute(ts, value, quark);
-
-                    /* Put the CPU in system call (kernel) mode */
-                    quark = ss.getQuarkRelativeAndAdd(currentCPUNode, Attributes.STATUS);
-                    value = StateValues.CPU_STATUS_RUN_SYSCALL_VALUE;
-                    ss.modifyAttribute(ts, value, quark);
-                }
-            }
-                break;
-            } // End of big switch
-
-        } catch (AttributeNotFoundException ae) {
-            /*
-             * This would indicate a problem with the logic of the manager here,
-             * so it shouldn't happen.
-             */
-            ae.printStackTrace();
-
-        } catch (TimeRangeException tre) {
-            /*
-             * This would happen if the events in the trace aren't ordered
-             * chronologically, which should never be the case ...
-             */
-            System.err.println("TimeRangeExcpetion caught in the state system's event manager."); //$NON-NLS-1$
-            System.err.println("Are the events in the trace correctly ordered?"); //$NON-NLS-1$
-            tre.printStackTrace();
-
-        } catch (StateValueTypeException sve) {
-            /*
-             * This would happen if we were trying to push/pop attributes not of
-             * type integer. Which, once again, should never happen.
-             */
-            sve.printStackTrace();
-        }
-    }
-
-    // ------------------------------------------------------------------------
-    // Convenience methods for commonly-used attribute tree locations
-    // ------------------------------------------------------------------------
-
-    private int getNodeCPUs() {
-        return ss.getQuarkAbsoluteAndAdd(Attributes.CPUS);
-    }
-
-    private int getNodeThreads() {
-        return ss.getQuarkAbsoluteAndAdd(Attributes.THREADS);
-    }
-
-    private int getNodeIRQs() {
-        return ss.getQuarkAbsoluteAndAdd(Attributes.RESOURCES, Attributes.IRQS);
-    }
-
-    private int getNodeSoftIRQs() {
-        return ss.getQuarkAbsoluteAndAdd(Attributes.RESOURCES, Attributes.SOFT_IRQS);
-    }
-
-    // ------------------------------------------------------------------------
-    // Advanced state-setting methods
-    // ------------------------------------------------------------------------
-
-    /**
-     * When we want to set a process back to a "running" state, first check
-     * its current System_call attribute. If there is a system call active, we
-     * put the process back in the syscall state. If not, we put it back in
-     * user mode state.
-     */
-    private void setProcessToRunning(long ts, int currentThreadNode)
-            throws AttributeNotFoundException, TimeRangeException,
-            StateValueTypeException {
-        int quark;
-        ITmfStateValue value;
-
-        quark = ss.getQuarkRelativeAndAdd(currentThreadNode, Attributes.SYSTEM_CALL);
-        if (ss.queryOngoingState(quark).isNull()) {
-            /* We were in user mode before the interruption */
-            value = StateValues.PROCESS_STATUS_RUN_USERMODE_VALUE;
-        } else {
-            /* We were previously in kernel mode */
-            value = StateValues.PROCESS_STATUS_RUN_SYSCALL_VALUE;
-        }
-        quark = ss.getQuarkRelativeAndAdd(currentThreadNode, Attributes.STATUS);
-        ss.modifyAttribute(ts, value, quark);
-    }
-
-    /**
-     * Similar logic as above, but to set the CPU's status when it's coming out
-     * of an interruption.
-     */
-    private void cpuExitInterrupt(long ts, int currentCpuNode, int currentThreadNode)
-            throws StateValueTypeException, AttributeNotFoundException,
-            TimeRangeException {
-        int quark;
-        ITmfStateValue value;
-
-        quark = ss.getQuarkRelativeAndAdd(currentCpuNode, Attributes.CURRENT_THREAD);
-        if (ss.queryOngoingState(quark).unboxInt() > 0) {
-            /* There was a process on the CPU */
-            quark = ss.getQuarkRelative(currentThreadNode, Attributes.SYSTEM_CALL);
-            if (ss.queryOngoingState(quark).isNull()) {
-                /* That process was in user mode */
-                value = StateValues.CPU_STATUS_RUN_USERMODE_VALUE;
-            } else {
-                /* That process was in a system call */
-                value = StateValues.CPU_STATUS_RUN_SYSCALL_VALUE;
-            }
-        } else {
-            /* There was no real process scheduled, CPU was idle */
-            value = StateValues.CPU_STATUS_IDLE_VALUE;
-        }
-        quark = ss.getQuarkRelativeAndAdd(currentCpuNode, Attributes.STATUS);
-        ss.modifyAttribute(ts, value, quark);
-    }
-}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/LttngKernelAnalysisModule.java b/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/LttngKernelAnalysisModule.java
deleted file mode 100644 (file)
index d9e3e5e..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013, 2014 Ã‰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
- *
- * Contributors:
- *   Geneviève Bastien - Initial API and implementation
- *   Mathieu Rail - Provide the requirements of the analysis
- *******************************************************************************/
-
-package org.eclipse.tracecompass.lttng2.kernel.core.analysis;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.tracecompass.internal.lttng2.kernel.core.LttngStrings;
-import org.eclipse.tracecompass.internal.lttng2.kernel.core.stateprovider.LttngKernelStateProvider;
-import org.eclipse.tracecompass.lttng2.control.core.session.SessionConfigStrings;
-import org.eclipse.tracecompass.tmf.core.analysis.TmfAnalysisRequirement;
-import org.eclipse.tracecompass.tmf.core.analysis.TmfAnalysisRequirement.ValuePriorityLevel;
-import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
-import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
-
-import com.google.common.collect.ImmutableSet;
-
-/**
- * State System Module for lttng kernel traces
- *
- * @author Geneviève Bastien
- * @since 3.0
- */
-public class LttngKernelAnalysisModule extends TmfStateSystemAnalysisModule {
-
-    /**
-     * The file name of the History Tree
-     */
-    public static final @NonNull String HISTORY_TREE_FILE_NAME = "stateHistory.ht"; //$NON-NLS-1$
-
-    /** The ID of this analysis module */
-    public static final @NonNull String ID = "org.eclipse.linuxtools.lttng2.kernel.analysis"; //$NON-NLS-1$
-
-    /*
-     * TODO: Decide which events should be mandatory for the analysis, once the
-     * appropriate error messages and session setup are in place.
-     */
-    private static final ImmutableSet<String> REQUIRED_EVENTS = ImmutableSet.of();
-
-    private static final ImmutableSet<String> OPTIONAL_EVENTS = ImmutableSet.of(
-            LttngStrings.EXIT_SYSCALL,
-            LttngStrings.IRQ_HANDLER_ENTRY,
-            LttngStrings.IRQ_HANDLER_EXIT,
-            LttngStrings.SOFTIRQ_ENTRY,
-            LttngStrings.SOFTIRQ_EXIT,
-            LttngStrings.SOFTIRQ_RAISE,
-            LttngStrings.SCHED_PROCESS_FORK,
-            LttngStrings.SCHED_PROCESS_EXIT,
-            LttngStrings.SCHED_PROCESS_FREE,
-            LttngStrings.SCHED_SWITCH,
-            LttngStrings.STATEDUMP_PROCESS_STATE,
-            LttngStrings.SCHED_WAKEUP,
-            LttngStrings.SCHED_WAKEUP_NEW,
-
-            /* FIXME Add the prefix for syscalls */
-            LttngStrings.SYSCALL_PREFIX
-            );
-
-    /** The requirements as an immutable set */
-    private static final ImmutableSet<TmfAnalysisRequirement> REQUIREMENTS;
-
-    static {
-        /* initialize the requirement: domain and events */
-        TmfAnalysisRequirement domainReq = new TmfAnalysisRequirement(SessionConfigStrings.CONFIG_ELEMENT_DOMAIN);
-        domainReq.addValue(SessionConfigStrings.CONFIG_DOMAIN_TYPE_KERNEL, ValuePriorityLevel.MANDATORY);
-
-        TmfAnalysisRequirement eventReq = new TmfAnalysisRequirement(SessionConfigStrings.CONFIG_ELEMENT_EVENT, REQUIRED_EVENTS, ValuePriorityLevel.MANDATORY);
-        eventReq.addValues(OPTIONAL_EVENTS, ValuePriorityLevel.OPTIONAL);
-
-        REQUIREMENTS = ImmutableSet.of(domainReq, eventReq);
-    }
-
-    @Override
-    @NonNull
-    protected ITmfStateProvider createStateProvider() {
-        return new LttngKernelStateProvider(getTrace());
-    }
-
-    @Override
-    @NonNull
-    protected String getSsFileName() {
-        return HISTORY_TREE_FILE_NAME;
-    }
-
-    @Override
-    protected String getFullHelpText() {
-        return Messages.LttngKernelAnalysisModule_Help;
-    }
-
-    @Override
-    public Iterable<TmfAnalysisRequirement> getAnalysisRequirements() {
-        return REQUIREMENTS;
-    }
-}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/Messages.java b/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/Messages.java
deleted file mode 100644 (file)
index 16b6c5b..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2014 Ã‰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
- *
- * Contributors:
- *   Geneviève Bastien - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.tracecompass.lttng2.kernel.core.analysis;
-
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Externalized message strings from the LTTng Kernel Analysis
- *
- * @author Geneviève Bastien
- * @since 3.0
- */
-@SuppressWarnings("javadoc")
-public class Messages extends NLS {
-    private static final String BUNDLE_NAME = "org.eclipse.tracecompass.lttng2.kernel.core.analysis.messages"; //$NON-NLS-1$
-
-    public static String LttngKernelAnalysisModule_Help;
-
-    static {
-        // initialize resource bundle
-        NLS.initializeMessages(BUNDLE_NAME, Messages.class);
-    }
-
-    private Messages() {
-    }
-}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/cpuusage/LttngKernelCpuUsageAnalysis.java b/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/cpuusage/LttngKernelCpuUsageAnalysis.java
new file mode 100644 (file)
index 0000000..aeca4a7
--- /dev/null
@@ -0,0 +1,254 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Ã‰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
+ *
+ * Contributors:
+ *   Geneviève Bastien - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.lttng2.kernel.core.analysis.cpuusage;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.tracecompass.internal.lttng2.kernel.core.Activator;
+import org.eclipse.tracecompass.internal.lttng2.kernel.core.Attributes;
+import org.eclipse.tracecompass.lttng2.kernel.core.analysis.kernel.LttngKernelAnalysis;
+import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
+import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundException;
+import org.eclipse.tracecompass.statesystem.core.exceptions.StateSystemDisposedException;
+import org.eclipse.tracecompass.statesystem.core.exceptions.StateValueTypeException;
+import org.eclipse.tracecompass.statesystem.core.exceptions.TimeRangeException;
+import org.eclipse.tracecompass.statesystem.core.interval.ITmfStateInterval;
+import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
+import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
+import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
+
+/**
+ * This analysis module computes the CPU usage of a system from a kernel trace.
+ * It requires the LTTng Kernel analysis module to have accurate CPU usage data.
+ *
+ * @author Geneviève Bastien
+ * @since 3.0
+ */
+public class LttngKernelCpuUsageAnalysis extends TmfStateSystemAnalysisModule {
+
+    /** The ID of this analysis */
+    public static final String ID = "org.eclipse.linuxtools.lttng2.kernel.core.cpuusage"; //$NON-NLS-1$
+
+    /** Text used to identify 'total' entries in the returned maps */
+    public static final String TOTAL = "total"; //$NON-NLS-1$
+    /** String used to separate elements in the returned maps */
+    public static final String SPLIT_STRING = "/"; //$NON-NLS-1$
+    /** Idle process thread ID */
+    public static final String TID_ZERO = "0"; //$NON-NLS-1$
+
+    @Override
+    protected ITmfStateProvider createStateProvider() {
+        return new LttngKernelCpuUsageStateProvider(getTrace());
+    }
+
+    @Override
+    protected StateSystemBackendType getBackendType() {
+        return StateSystemBackendType.FULL;
+    }
+
+    @Override
+    protected boolean executeAnalysis(IProgressMonitor monitor) {
+        /*
+         * This analysis depends on the LTTng kernel analysis, so we'll start
+         * that build at the same time
+         */
+        LttngKernelAnalysis module = getTrace().getAnalysisModuleOfClass(LttngKernelAnalysis.class, LttngKernelAnalysis.ID);
+        if (module != null) {
+            module.schedule();
+        }
+        return super.executeAnalysis(monitor);
+    }
+
+    /**
+     * Get a map of time spent on CPU by various threads during a time range.
+     *
+     * @param start
+     *            Start time of requested range
+     * @param end
+     *            End time of requested range
+     * @return A map of TID -> time spent on CPU in the [start, end] interval
+     */
+    public Map<String, Long> getCpuUsageInRange(long start, long end) {
+        Map<String, Long> map = new HashMap<>();
+        Map<String, Long> totalMap = new HashMap<>();
+
+        ITmfTrace trace = getTrace();
+        ITmfStateSystem cpuSs = getStateSystem();
+        if (trace == null || cpuSs == null) {
+            return map;
+        }
+        ITmfStateSystem kernelSs = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysis.ID);
+        if (kernelSs == null) {
+            return map;
+        }
+
+        /*
+         * Make sure the start/end times are within the state history, so we
+         * don't get TimeRange exceptions.
+         */
+        long startTime = Math.max(start, cpuSs.getStartTime());
+        startTime = Math.max(startTime, kernelSs.getStartTime());
+        long endTime = Math.min(end, cpuSs.getCurrentEndTime());
+        endTime = Math.min(endTime, kernelSs.getCurrentEndTime());
+        long totalTime = 0;
+        if (endTime < startTime) {
+            return map;
+        }
+
+        try {
+            /* Get the list of quarks for each CPU and CPU's TIDs */
+            int cpusNode = cpuSs.getQuarkAbsolute(Attributes.CPUS);
+            Map<Integer, List<Integer>> tidsPerCpu = new HashMap<>();
+            for (int cpuNode : cpuSs.getSubAttributes(cpusNode, false)) {
+                tidsPerCpu.put(cpuNode, cpuSs.getSubAttributes(cpuNode, false));
+            }
+
+            /* Query full states at start and end times */
+            List<ITmfStateInterval> kernelEndState = kernelSs.queryFullState(endTime);
+            List<ITmfStateInterval> endState = cpuSs.queryFullState(endTime);
+            List<ITmfStateInterval> kernelStartState = kernelSs.queryFullState(startTime);
+            List<ITmfStateInterval> startState = cpuSs.queryFullState(startTime);
+
+            long countAtStart, countAtEnd;
+
+            for (Entry<Integer, List<Integer>> entry : tidsPerCpu.entrySet()) {
+                int cpuNode = entry.getKey();
+                List<Integer> tidNodes = entry.getValue();
+
+                String curCpuName = cpuSs.getAttributeName(cpuNode);
+                long cpuTotal = 0;
+
+                /* Get the quark of the thread running on this CPU */
+                int currentThreadQuark = kernelSs.getQuarkAbsolute(Attributes.CPUS, curCpuName, Attributes.CURRENT_THREAD);
+                /* Get the currently running thread on this CPU */
+                int startThread = kernelStartState.get(currentThreadQuark).getStateValue().unboxInt();
+                int endThread = kernelEndState.get(currentThreadQuark).getStateValue().unboxInt();
+
+                for (int tidNode : tidNodes) {
+                    String curTidName = cpuSs.getAttributeName(tidNode);
+                    int tid = Integer.parseInt(curTidName);
+
+                    countAtEnd = endState.get(tidNode).getStateValue().unboxLong();
+                    countAtStart = startState.get(tidNode).getStateValue().unboxLong();
+                    if (countAtStart == -1) {
+                        countAtStart = 0;
+                    }
+                    if (countAtEnd == -1) {
+                        countAtEnd = 0;
+                    }
+
+                    /*
+                     * Interpolate start and end time of threads running at
+                     * those times
+                     */
+                    if (tid == startThread || startThread == -1) {
+                        long runningTime = kernelStartState.get(currentThreadQuark).getEndTime() - kernelStartState.get(currentThreadQuark).getStartTime();
+                        long runningEnd = kernelStartState.get(currentThreadQuark).getEndTime();
+
+                        countAtStart = interpolateCount(countAtStart, startTime, runningEnd, runningTime);
+                    }
+                    if (tid == endThread) {
+                        long runningTime = kernelEndState.get(currentThreadQuark).getEndTime() - kernelEndState.get(currentThreadQuark).getStartTime();
+                        long runningEnd = kernelEndState.get(currentThreadQuark).getEndTime();
+
+                        countAtEnd = interpolateCount(countAtEnd, endTime, runningEnd, runningTime);
+                    }
+                    /*
+                     * If startThread is -1, we made the hypothesis that the
+                     * process running at start was the current one. If the
+                     * count is negative, we were wrong in this hypothesis. Also
+                     * if the time at end is 0, it either means the process
+                     * hasn't been on the CPU or that we still don't know who is
+                     * running. In both cases, that invalidates the hypothesis.
+                     */
+                    if ((startThread == -1) && ((countAtEnd - countAtStart < 0) || (countAtEnd == 0))) {
+                        countAtStart = 0;
+                    }
+
+                    long currentCount = countAtEnd - countAtStart;
+                    if (currentCount < 0) {
+                        Activator.getDefault().logWarning(String.format("Negative count: start %d, end %d", countAtStart, countAtEnd)); //$NON-NLS-1$
+                        currentCount = 0;
+                    } else if (currentCount > endTime - startTime) {
+                        Activator.getDefault().logWarning(String.format("CPU Usage: Spent more time on CPU than allowed: %s spent %d when max should be %d", curTidName, currentCount, endTime - startTime)); //$NON-NLS-1$
+                        currentCount = 0;
+                    }
+                    cpuTotal += currentCount;
+                    map.put(curCpuName + SPLIT_STRING + curTidName, currentCount);
+                    addToMap(totalMap, curTidName, currentCount);
+                    totalTime += (currentCount);
+                }
+                map.put(curCpuName, cpuTotal);
+            }
+
+            /* Add the totals to the map */
+            for (Entry<String, Long> entry : totalMap.entrySet()) {
+                map.put(TOTAL + SPLIT_STRING + entry.getKey(), entry.getValue());
+            }
+            map.put(TOTAL, totalTime);
+
+        } catch (TimeRangeException | AttributeNotFoundException e) {
+            /*
+             * Assume there is no events or the attribute does not exist yet,
+             * nothing will be put in the map.
+             */
+        } catch (StateValueTypeException | StateSystemDisposedException e) {
+            /*
+             * These other exception types would show a logic problem, so they
+             * should not happen.
+             */
+            Activator.getDefault().logError("Error getting CPU usage in a time range", e); //$NON-NLS-1$
+        }
+
+        return map;
+    }
+
+    private static long interpolateCount(long count, long ts, long runningEnd, long runningTime) {
+        long newCount = count;
+
+        /* sanity check */
+        if (runningTime > 0) {
+
+            long runningStart = runningEnd - runningTime;
+
+            if (ts < runningStart) {
+                /*
+                 * This interval was not started, this can happen if the current
+                 * running thread is unknown and we execute this method. It just
+                 * means that this process was not the one running
+                 */
+                return newCount;
+            }
+            newCount += (ts - runningStart);
+        }
+        return newCount;
+    }
+
+    /*
+     * Add the value to the previous value in the map. If the key was not set,
+     * assume 0
+     */
+    private static void addToMap(Map<String, Long> map, String key, Long value) {
+        Long addTo = map.get(key);
+        if (addTo == null) {
+            map.put(key, value);
+        } else {
+            map.put(key, addTo + value);
+        }
+    }
+
+}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/cpuusage/LttngKernelCpuUsageStateProvider.java b/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/cpuusage/LttngKernelCpuUsageStateProvider.java
new file mode 100644 (file)
index 0000000..2004f71
--- /dev/null
@@ -0,0 +1,141 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Ã‰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
+ *
+ * Contributors:
+ *   François Rajotte - Initial API and implementation
+ *   Geneviève Bastien - Revision of the initial implementation
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.lttng2.kernel.core.analysis.cpuusage;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.tracecompass.internal.lttng2.kernel.core.Activator;
+import org.eclipse.tracecompass.internal.lttng2.kernel.core.Attributes;
+import org.eclipse.tracecompass.internal.lttng2.kernel.core.LttngStrings;
+import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundException;
+import org.eclipse.tracecompass.statesystem.core.statevalue.ITmfStateValue;
+import org.eclipse.tracecompass.statesystem.core.statevalue.TmfStateValue;
+import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
+import org.eclipse.tracecompass.tmf.core.event.ITmfEventField;
+import org.eclipse.tracecompass.tmf.core.statesystem.AbstractTmfStateProvider;
+import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
+
+/**
+ * Creates a state system with the total time spent on CPU for each thread and
+ * for each CPU from a kernel trace.
+ *
+ * This state system in itself keeps the total time on CPU since last time the
+ * process was scheduled out. The state system queries will only be accurate
+ * when the process is not in a running state. To have exact CPU usage when
+ * running, this state system needs to be used along the LTTng Kernel analysis.
+ *
+ * It requires only the 'sched_switch' events enabled on the trace.
+ *
+ * @author François Rajotte
+ * @since 3.0
+ */
+public class LttngKernelCpuUsageStateProvider extends AbstractTmfStateProvider {
+
+    private static final int VERSION = 1;
+
+    /* For each CPU, maps the last time a thread was scheduled in */
+    private final Map<String, Long> fLastStartTimes = new HashMap<>();
+    private final long fTraceStart;
+
+    /**
+     * Constructor
+     *
+     * @param trace
+     *            The trace from which to get the CPU usage
+     */
+    public LttngKernelCpuUsageStateProvider(ITmfTrace trace) {
+        super(trace, ITmfEvent.class, "LTTng Kernel CPU usage"); //$NON-NLS-1$
+        fTraceStart = trace.getStartTime().getValue();
+    }
+
+    // ------------------------------------------------------------------------
+    // ITmfStateProvider
+    // ------------------------------------------------------------------------
+
+    @Override
+    public int getVersion() {
+        return VERSION;
+    }
+
+    @Override
+    public LttngKernelCpuUsageStateProvider getNewInstance() {
+        return new LttngKernelCpuUsageStateProvider(this.getTrace());
+    }
+
+    @Override
+    protected void eventHandle(ITmfEvent event) {
+        final String eventName = event.getType().getName();
+
+        if (eventName.equals(LttngStrings.SCHED_SWITCH)) {
+            /*
+             * Fields: string prev_comm, int32 prev_tid, int32 prev_prio, int64
+             * prev_state, string next_comm, int32 next_tid, int32 next_prio
+             */
+
+            ITmfEventField content = event.getContent();
+            long ts = event.getTimestamp().getValue();
+            String cpu = event.getSource();
+
+            Long prevTid = (Long) content.getField(LttngStrings.PREV_TID).getValue();
+
+            try {
+                Integer currentCPUNode = ss.getQuarkRelativeAndAdd(getNodeCPUs(), cpu);
+
+                /*
+                 * This quark contains the value of the cumulative time spent on
+                 * the source CPU by the currently running thread
+                 */
+                Integer cumulativeTimeQuark = ss.getQuarkRelativeAndAdd(currentCPUNode, prevTid.toString());
+                Long startTime = fLastStartTimes.get(cpu);
+                /*
+                 * If start time is null, we haven't seen the start of the
+                 * process, so we assume beginning of the trace
+                 */
+                if (startTime == null) {
+                    startTime = fTraceStart;
+                }
+
+                /*
+                 * We add the time from startTime until now to the cumulative
+                 * time of the thread
+                 */
+                if (startTime != null) {
+                    ITmfStateValue value = ss.queryOngoingState(cumulativeTimeQuark);
+
+                    /*
+                     * Modify cumulative time for this CPU/TID combo: The total
+                     * time changes when the process is scheduled out. Nothing
+                     * happens when the process is scheduled in.
+                     */
+                    long prevCumulativeTime = value.unboxLong();
+                    long newCumulativeTime = prevCumulativeTime + (ts - startTime);
+
+                    value = TmfStateValue.newValueLong(newCumulativeTime);
+                    ss.modifyAttribute(ts, value, cumulativeTimeQuark);
+                    fLastStartTimes.put(cpu, ts);
+                }
+            } catch (AttributeNotFoundException e) {
+                Activator.getDefault().logError("Attribute not found in LttngKernelCpuStateProvider", e); //$NON-NLS-1$
+            }
+
+        }
+    }
+
+    /* Shortcut for the "current CPU" attribute node */
+    private int getNodeCPUs() {
+        return ss.getQuarkAbsoluteAndAdd(Attributes.CPUS);
+    }
+
+}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/kernel/LttngKernelAnalysis.java b/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/kernel/LttngKernelAnalysis.java
new file mode 100644 (file)
index 0000000..31b56b2
--- /dev/null
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2013, 2014 Ã‰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
+ *
+ * Contributors:
+ *   Geneviève Bastien - Initial API and implementation
+ *   Mathieu Rail - Provide the requirements of the analysis
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.lttng2.kernel.core.analysis.kernel;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.tracecompass.internal.lttng2.kernel.core.LttngStrings;
+import org.eclipse.tracecompass.lttng2.control.core.session.SessionConfigStrings;
+import org.eclipse.tracecompass.tmf.core.analysis.TmfAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.TmfAnalysisRequirement.ValuePriorityLevel;
+import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
+import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
+
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * State System Module for lttng kernel traces
+ *
+ * @author Geneviève Bastien
+ * @since 3.0
+ */
+public class LttngKernelAnalysis extends TmfStateSystemAnalysisModule {
+
+    /**
+     * The file name of the History Tree
+     */
+    public static final @NonNull String HISTORY_TREE_FILE_NAME = "stateHistory.ht"; //$NON-NLS-1$
+
+    /** The ID of this analysis module */
+    public static final @NonNull String ID = "org.eclipse.linuxtools.lttng2.kernel.analysis"; //$NON-NLS-1$
+
+    /*
+     * TODO: Decide which events should be mandatory for the analysis, once the
+     * appropriate error messages and session setup are in place.
+     */
+    private static final ImmutableSet<String> REQUIRED_EVENTS = ImmutableSet.of();
+
+    private static final ImmutableSet<String> OPTIONAL_EVENTS = ImmutableSet.of(
+            LttngStrings.EXIT_SYSCALL,
+            LttngStrings.IRQ_HANDLER_ENTRY,
+            LttngStrings.IRQ_HANDLER_EXIT,
+            LttngStrings.SOFTIRQ_ENTRY,
+            LttngStrings.SOFTIRQ_EXIT,
+            LttngStrings.SOFTIRQ_RAISE,
+            LttngStrings.SCHED_PROCESS_FORK,
+            LttngStrings.SCHED_PROCESS_EXIT,
+            LttngStrings.SCHED_PROCESS_FREE,
+            LttngStrings.SCHED_SWITCH,
+            LttngStrings.STATEDUMP_PROCESS_STATE,
+            LttngStrings.SCHED_WAKEUP,
+            LttngStrings.SCHED_WAKEUP_NEW,
+
+            /* FIXME Add the prefix for syscalls */
+            LttngStrings.SYSCALL_PREFIX
+            );
+
+    /** The requirements as an immutable set */
+    private static final ImmutableSet<TmfAnalysisRequirement> REQUIREMENTS;
+
+    static {
+        /* initialize the requirement: domain and events */
+        TmfAnalysisRequirement domainReq = new TmfAnalysisRequirement(SessionConfigStrings.CONFIG_ELEMENT_DOMAIN);
+        domainReq.addValue(SessionConfigStrings.CONFIG_DOMAIN_TYPE_KERNEL, ValuePriorityLevel.MANDATORY);
+
+        TmfAnalysisRequirement eventReq = new TmfAnalysisRequirement(SessionConfigStrings.CONFIG_ELEMENT_EVENT, REQUIRED_EVENTS, ValuePriorityLevel.MANDATORY);
+        eventReq.addValues(OPTIONAL_EVENTS, ValuePriorityLevel.OPTIONAL);
+
+        REQUIREMENTS = ImmutableSet.of(domainReq, eventReq);
+    }
+
+    @Override
+    @NonNull
+    protected ITmfStateProvider createStateProvider() {
+        return new LttngKernelStateProvider(getTrace());
+    }
+
+    @Override
+    @NonNull
+    protected String getSsFileName() {
+        return HISTORY_TREE_FILE_NAME;
+    }
+
+    @Override
+    protected String getFullHelpText() {
+        return Messages.LttngKernelAnalysisModule_Help;
+    }
+
+    @Override
+    public Iterable<TmfAnalysisRequirement> getAnalysisRequirements() {
+        return REQUIREMENTS;
+    }
+}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/kernel/LttngKernelStateProvider.java b/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/kernel/LttngKernelStateProvider.java
new file mode 100644 (file)
index 0000000..06222b0
--- /dev/null
@@ -0,0 +1,559 @@
+/*******************************************************************************
+ * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2010, 2011 Ã‰cole Polytechnique de Montréal
+ * Copyright (c) 2010, 2011 Alexandre Montplaisir <alexandre.montplaisir@gmail.com>
+ *
+ * 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.lttng2.kernel.core.analysis.kernel;
+
+import org.eclipse.tracecompass.internal.lttng2.kernel.core.Attributes;
+import org.eclipse.tracecompass.internal.lttng2.kernel.core.LttngStrings;
+import org.eclipse.tracecompass.internal.lttng2.kernel.core.StateValues;
+import org.eclipse.tracecompass.statesystem.core.ITmfStateSystemBuilder;
+import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundException;
+import org.eclipse.tracecompass.statesystem.core.exceptions.StateValueTypeException;
+import org.eclipse.tracecompass.statesystem.core.exceptions.TimeRangeException;
+import org.eclipse.tracecompass.statesystem.core.statevalue.ITmfStateValue;
+import org.eclipse.tracecompass.statesystem.core.statevalue.TmfStateValue;
+import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
+import org.eclipse.tracecompass.tmf.core.event.ITmfEventField;
+import org.eclipse.tracecompass.tmf.core.statesystem.AbstractTmfStateProvider;
+import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
+
+/**
+ * This is the state change input plugin for TMF's state system which handles
+ * the LTTng 2.0 kernel traces in CTF format.
+ *
+ * It uses the reference handler defined in CTFKernelHandler.java.
+ *
+ * @author alexmont
+ *
+ */
+public class LttngKernelStateProvider extends AbstractTmfStateProvider {
+
+    /**
+     * Version number of this state provider. Please bump this if you modify the
+     * contents of the generated state history in some way.
+     */
+    private static final int VERSION = 4;
+
+    // ------------------------------------------------------------------------
+    // Constructor
+    // ------------------------------------------------------------------------
+
+    /**
+     * Instantiate a new state provider plugin.
+     *
+     * @param trace
+     *            The LTTng 2.0 kernel trace directory
+     */
+    public LttngKernelStateProvider(ITmfTrace trace) {
+        super(trace, ITmfEvent.class, "LTTng Kernel"); //$NON-NLS-1$
+    }
+
+    // ------------------------------------------------------------------------
+    // IStateChangeInput
+    // ------------------------------------------------------------------------
+
+    @Override
+    public int getVersion() {
+        return VERSION;
+    }
+
+    @Override
+    public void assignTargetStateSystem(ITmfStateSystemBuilder ssb) {
+        /* We can only set up the locations once the state system is assigned */
+        super.assignTargetStateSystem(ssb);
+    }
+
+    @Override
+    public LttngKernelStateProvider getNewInstance() {
+        return new LttngKernelStateProvider(this.getTrace());
+    }
+
+    @Override
+    protected void eventHandle(ITmfEvent event) {
+        /*
+         * AbstractStateChangeInput should have already checked for the correct
+         * class type
+         */
+
+        final String eventName = event.getType().getName();
+        final long ts = event.getTimestamp().getValue();
+
+        try {
+            /* Shortcut for the "current CPU" attribute node */
+            final Integer currentCPUNode = ss.getQuarkRelativeAndAdd(getNodeCPUs(), event.getSource());
+
+            /*
+             * Shortcut for the "current thread" attribute node. It requires
+             * querying the current CPU's current thread.
+             */
+            int quark = ss.getQuarkRelativeAndAdd(currentCPUNode, Attributes.CURRENT_THREAD);
+            ITmfStateValue value = ss.queryOngoingState(quark);
+            int thread = value.isNull() ? -1 : value.unboxInt();
+            final Integer currentThreadNode = ss.getQuarkRelativeAndAdd(getNodeThreads(), String.valueOf(thread));
+
+            /*
+             * Feed event to the history system if it's known to cause a state
+             * transition.
+             */
+            switch (eventName) {
+
+            case LttngStrings.EXIT_SYSCALL:
+            /* Fields: int64 ret */
+            {
+                /* Clear the current system call on the process */
+                quark = ss.getQuarkRelativeAndAdd(currentThreadNode, Attributes.SYSTEM_CALL);
+                value = TmfStateValue.nullValue();
+                ss.modifyAttribute(ts, value, quark);
+
+                /* Put the process' status back to user mode */
+                quark = ss.getQuarkRelativeAndAdd(currentThreadNode, Attributes.STATUS);
+                value = StateValues.PROCESS_STATUS_RUN_USERMODE_VALUE;
+                ss.modifyAttribute(ts, value, quark);
+
+                /* Put the CPU's status back to user mode */
+                quark = ss.getQuarkRelativeAndAdd(currentCPUNode, Attributes.STATUS);
+                value = StateValues.CPU_STATUS_RUN_USERMODE_VALUE;
+                ss.modifyAttribute(ts, value, quark);
+            }
+                break;
+
+            case LttngStrings.IRQ_HANDLER_ENTRY:
+            /* Fields: int32 irq, string name */
+            {
+                Integer irqId = ((Long) event.getContent().getField(LttngStrings.IRQ).getValue()).intValue();
+
+                /* Mark this IRQ as active in the resource tree.
+                 * The state value = the CPU on which this IRQ is sitting */
+                quark = ss.getQuarkRelativeAndAdd(getNodeIRQs(), irqId.toString());
+                value = TmfStateValue.newValueInt(Integer.parseInt(event.getSource()));
+                ss.modifyAttribute(ts, value, quark);
+
+                /* Change the status of the running process to interrupted */
+                quark = ss.getQuarkRelativeAndAdd(currentThreadNode, Attributes.STATUS);
+                value = StateValues.PROCESS_STATUS_INTERRUPTED_VALUE;
+                ss.modifyAttribute(ts, value, quark);
+
+                /* Change the status of the CPU to interrupted */
+                quark = ss.getQuarkRelativeAndAdd(currentCPUNode, Attributes.STATUS);
+                value = StateValues.CPU_STATUS_IRQ_VALUE;
+                ss.modifyAttribute(ts, value, quark);
+            }
+                break;
+
+            case LttngStrings.IRQ_HANDLER_EXIT:
+            /* Fields: int32 irq, int32 ret */
+            {
+                Integer irqId = ((Long) event.getContent().getField(LttngStrings.IRQ).getValue()).intValue();
+
+                /* Put this IRQ back to inactive in the resource tree */
+                quark = ss.getQuarkRelativeAndAdd(getNodeIRQs(), irqId.toString());
+                value = TmfStateValue.nullValue();
+                ss.modifyAttribute(ts, value, quark);
+
+                /* Set the previous process back to running */
+                setProcessToRunning(ts, currentThreadNode);
+
+                /* Set the CPU status back to running or "idle" */
+                cpuExitInterrupt(ts, currentCPUNode, currentThreadNode);
+            }
+                break;
+
+            case LttngStrings.SOFTIRQ_ENTRY:
+            /* Fields: int32 vec */
+            {
+                Integer softIrqId = ((Long) event.getContent().getField(LttngStrings.VEC).getValue()).intValue();
+
+                /* Mark this SoftIRQ as active in the resource tree.
+                 * The state value = the CPU on which this SoftIRQ is processed */
+                quark = ss.getQuarkRelativeAndAdd(getNodeSoftIRQs(), softIrqId.toString());
+                value = TmfStateValue.newValueInt(Integer.parseInt(event.getSource()));
+                ss.modifyAttribute(ts, value, quark);
+
+                /* Change the status of the running process to interrupted */
+                quark = ss.getQuarkRelativeAndAdd(currentThreadNode, Attributes.STATUS);
+                value = StateValues.PROCESS_STATUS_INTERRUPTED_VALUE;
+                ss.modifyAttribute(ts, value, quark);
+
+                /* Change the status of the CPU to interrupted */
+                quark = ss.getQuarkRelativeAndAdd(currentCPUNode, Attributes.STATUS);
+                value = StateValues.CPU_STATUS_SOFTIRQ_VALUE;
+                ss.modifyAttribute(ts, value, quark);
+            }
+                break;
+
+            case LttngStrings.SOFTIRQ_EXIT:
+            /* Fields: int32 vec */
+            {
+                Integer softIrqId = ((Long) event.getContent().getField(LttngStrings.VEC).getValue()).intValue();
+
+                /* Put this SoftIRQ back to inactive (= -1) in the resource tree */
+                quark = ss.getQuarkRelativeAndAdd(getNodeSoftIRQs(), softIrqId.toString());
+                value = TmfStateValue.nullValue();
+                ss.modifyAttribute(ts, value, quark);
+
+                /* Set the previous process back to running */
+                setProcessToRunning(ts, currentThreadNode);
+
+                /* Set the CPU status back to "busy" or "idle" */
+                cpuExitInterrupt(ts, currentCPUNode, currentThreadNode);
+            }
+                break;
+
+            case LttngStrings.SOFTIRQ_RAISE:
+            /* Fields: int32 vec */
+            {
+                Integer softIrqId = ((Long) event.getContent().getField(LttngStrings.VEC).getValue()).intValue();
+
+                /* Mark this SoftIRQ as *raised* in the resource tree.
+                 * State value = -2 */
+                quark = ss.getQuarkRelativeAndAdd(getNodeSoftIRQs(), softIrqId.toString());
+                value = StateValues.SOFT_IRQ_RAISED_VALUE;
+                ss.modifyAttribute(ts, value, quark);
+            }
+                break;
+
+            case LttngStrings.SCHED_SWITCH:
+            /*
+             * Fields: string prev_comm, int32 prev_tid, int32 prev_prio, int64 prev_state,
+             *         string next_comm, int32 next_tid, int32 next_prio
+             */
+            {
+                ITmfEventField content = event.getContent();
+                Integer prevTid = ((Long) content.getField(LttngStrings.PREV_TID).getValue()).intValue();
+                Long prevState = (Long) content.getField(LttngStrings.PREV_STATE).getValue();
+                String nextProcessName = (String) content.getField(LttngStrings.NEXT_COMM).getValue();
+                Integer nextTid = ((Long) content.getField(LttngStrings.NEXT_TID).getValue()).intValue();
+
+                Integer formerThreadNode = ss.getQuarkRelativeAndAdd(getNodeThreads(), prevTid.toString());
+                Integer newCurrentThreadNode = ss.getQuarkRelativeAndAdd(getNodeThreads(), nextTid.toString());
+
+                /* Set the status of the process that got scheduled out. */
+                quark = ss.getQuarkRelativeAndAdd(formerThreadNode, Attributes.STATUS);
+                if (prevState != 0) {
+                    value = StateValues.PROCESS_STATUS_WAIT_BLOCKED_VALUE;
+                } else {
+                    value = StateValues.PROCESS_STATUS_WAIT_FOR_CPU_VALUE;
+                }
+                ss.modifyAttribute(ts, value, quark);
+
+                /* Set the status of the new scheduled process */
+                setProcessToRunning(ts, newCurrentThreadNode);
+
+                /* Set the exec name of the new process */
+                quark = ss.getQuarkRelativeAndAdd(newCurrentThreadNode, Attributes.EXEC_NAME);
+                value = TmfStateValue.newValueString(nextProcessName);
+                ss.modifyAttribute(ts, value, quark);
+
+                /* Make sure the PPID and system_call sub-attributes exist */
+                ss.getQuarkRelativeAndAdd(newCurrentThreadNode, Attributes.SYSTEM_CALL);
+                ss.getQuarkRelativeAndAdd(newCurrentThreadNode, Attributes.PPID);
+
+                /* Set the current scheduled process on the relevant CPU */
+                quark = ss.getQuarkRelativeAndAdd(currentCPUNode, Attributes.CURRENT_THREAD);
+                value = TmfStateValue.newValueInt(nextTid);
+                ss.modifyAttribute(ts, value, quark);
+
+                /* Set the status of the CPU itself */
+                if (nextTid > 0) {
+                    /* Check if the entering process is in kernel or user mode */
+                    quark = ss.getQuarkRelativeAndAdd(newCurrentThreadNode, Attributes.SYSTEM_CALL);
+                    if (ss.queryOngoingState(quark).isNull()) {
+                        value = StateValues.CPU_STATUS_RUN_USERMODE_VALUE;
+                    } else {
+                        value = StateValues.CPU_STATUS_RUN_SYSCALL_VALUE;
+                    }
+                } else {
+                    value = StateValues.CPU_STATUS_IDLE_VALUE;
+                }
+                quark = ss.getQuarkRelativeAndAdd(currentCPUNode, Attributes.STATUS);
+                ss.modifyAttribute(ts, value, quark);
+            }
+                break;
+
+            case LttngStrings.SCHED_PROCESS_FORK:
+            /* Fields: string parent_comm, int32 parent_tid,
+             *         string child_comm, int32 child_tid */
+            {
+                ITmfEventField content = event.getContent();
+                // String parentProcessName = (String) event.getFieldValue("parent_comm");
+                String childProcessName = (String) content.getField(LttngStrings.CHILD_COMM).getValue();
+                // assert ( parentProcessName.equals(childProcessName) );
+
+                Integer parentTid = ((Long) content.getField(LttngStrings.PARENT_TID).getValue()).intValue();
+                Integer childTid = ((Long) content.getField(LttngStrings.CHILD_TID).getValue()).intValue();
+
+                Integer parentTidNode = ss.getQuarkRelativeAndAdd(getNodeThreads(), parentTid.toString());
+                Integer childTidNode = ss.getQuarkRelativeAndAdd(getNodeThreads(), childTid.toString());
+
+                /* Assign the PPID to the new process */
+                quark = ss.getQuarkRelativeAndAdd(childTidNode, Attributes.PPID);
+                value = TmfStateValue.newValueInt(parentTid);
+                ss.modifyAttribute(ts, value, quark);
+
+                /* Set the new process' exec_name */
+                quark = ss.getQuarkRelativeAndAdd(childTidNode, Attributes.EXEC_NAME);
+                value = TmfStateValue.newValueString(childProcessName);
+                ss.modifyAttribute(ts, value, quark);
+
+                /* Set the new process' status */
+                quark = ss.getQuarkRelativeAndAdd(childTidNode, Attributes.STATUS);
+                value = StateValues.PROCESS_STATUS_WAIT_FOR_CPU_VALUE;
+                ss.modifyAttribute(ts, value, quark);
+
+                /* Set the process' syscall name, to be the same as the parent's */
+                quark = ss.getQuarkRelativeAndAdd(parentTidNode, Attributes.SYSTEM_CALL);
+                value = ss.queryOngoingState(quark);
+                if (value.isNull()) {
+                    /*
+                     * Maybe we were missing info about the parent? At least we
+                     * will set the child right. Let's suppose "sys_clone".
+                     */
+                    value = TmfStateValue.newValueString(LttngStrings.SYS_CLONE);
+                }
+                quark = ss.getQuarkRelativeAndAdd(childTidNode, Attributes.SYSTEM_CALL);
+                ss.modifyAttribute(ts, value, quark);
+            }
+                break;
+
+            case LttngStrings.SCHED_PROCESS_EXIT:
+            /* Fields: string comm, int32 tid, int32 prio */
+                break;
+
+            case LttngStrings.SCHED_PROCESS_FREE:
+            /* Fields: string comm, int32 tid, int32 prio */
+            /*
+             * A sched_process_free will always happen after the sched_switch
+             * that will remove the process from the cpu for the last time. So
+             * this is when we should delete everything wrt to the process.
+             */
+            {
+                Integer tid = ((Long) event.getContent().getField(LttngStrings.TID).getValue()).intValue();
+                /*
+                 * Remove the process and all its sub-attributes from the
+                 * current state
+                 */
+                quark = ss.getQuarkRelativeAndAdd(getNodeThreads(), tid.toString());
+                ss.removeAttribute(ts, quark);
+            }
+                break;
+
+            case LttngStrings.STATEDUMP_PROCESS_STATE:
+            /* Fields:
+             * int32 type, int32 mode, int32 pid, int32 submode, int32 vpid,
+             * int32 ppid, int32 tid, string name, int32 status, int32 vtid */
+            {
+                ITmfEventField content = event.getContent();
+                int tid = ((Long) content.getField(LttngStrings.TID).getValue()).intValue();
+                int pid = ((Long) content.getField(LttngStrings.PID).getValue()).intValue();
+                int ppid = ((Long) content.getField(LttngStrings.PPID).getValue()).intValue();
+                int status = ((Long) content.getField(LttngStrings.STATUS).getValue()).intValue();
+                String name = (String) content.getField(LttngStrings.NAME).getValue();
+                /*
+                 * "mode" could be interesting too, but it doesn't seem to be
+                 * populated with anything relevant for now.
+                 */
+
+                int curThreadNode = ss.getQuarkRelativeAndAdd(getNodeThreads(), String.valueOf(tid));
+
+                /* Set the process' name */
+                quark = ss.getQuarkRelativeAndAdd(curThreadNode, Attributes.EXEC_NAME);
+                if (ss.queryOngoingState(quark).isNull()) {
+                    /* If the value didn't exist previously, set it */
+                    value = TmfStateValue.newValueString(name);
+                    ss.modifyAttribute(ts, value, quark);
+                }
+
+                /* Set the process' PPID */
+                quark = ss.getQuarkRelativeAndAdd(curThreadNode, Attributes.PPID);
+                if (ss.queryOngoingState(quark).isNull()) {
+                    if (pid == tid) {
+                        /* We have a process. Use the 'PPID' field. */
+                        value = TmfStateValue.newValueInt(ppid);
+                    } else {
+                        /* We have a thread, use the 'PID' field for the parent. */
+                        value = TmfStateValue.newValueInt(pid);
+                    }
+                    ss.modifyAttribute(ts, value, quark);
+                }
+
+                /* Set the process' status */
+                quark = ss.getQuarkRelativeAndAdd(curThreadNode, Attributes.STATUS);
+                if (ss.queryOngoingState(quark).isNull()) {
+                     /* "2" here means "WAIT_FOR_CPU", and "5" "WAIT_BLOCKED" in the LTTng kernel. */
+                    if (status == 2) {
+                        value = StateValues.PROCESS_STATUS_WAIT_FOR_CPU_VALUE;
+                    } else if (status == 5) {
+                        value = StateValues.PROCESS_STATUS_WAIT_BLOCKED_VALUE;
+                    } else {
+                        value = StateValues.PROCESS_STATUS_UNKNOWN_VALUE;
+                    }
+                    ss.modifyAttribute(ts, value, quark);
+                }
+            }
+                break;
+
+            case LttngStrings.SCHED_WAKEUP:
+            case LttngStrings.SCHED_WAKEUP_NEW:
+            /* Fields (same fields for both types):
+             * string comm, int32 pid, int32 prio, int32 success,
+             * int32 target_cpu */
+            {
+                final int tid = ((Long) event.getContent().getField(LttngStrings.TID).getValue()).intValue();
+                final int threadNode = ss.getQuarkRelativeAndAdd(getNodeThreads(), String.valueOf(tid));
+
+                /*
+                 * The process indicated in the event's payload is now ready to
+                 * run. Assign it to the "wait for cpu" state, but only if it
+                 * was not already running.
+                 */
+                quark = ss.getQuarkRelativeAndAdd(threadNode, Attributes.STATUS);
+                int status = ss.queryOngoingState(quark).unboxInt();
+
+                if (status != StateValues.PROCESS_STATUS_RUN_SYSCALL &&
+                    status != StateValues.PROCESS_STATUS_RUN_USERMODE) {
+                    value = StateValues.PROCESS_STATUS_WAIT_FOR_CPU_VALUE;
+                    ss.modifyAttribute(ts, value, quark);
+                }
+            }
+                break;
+
+            default:
+            /* Other event types not covered by the main switch */
+            {
+                if (eventName.startsWith(LttngStrings.SYSCALL_PREFIX)
+                        || eventName.startsWith(LttngStrings.COMPAT_SYSCALL_PREFIX)) {
+                    /*
+                     * This is a replacement for the old sys_enter event. Now
+                     * syscall names are listed into the event type
+                     */
+
+                    /* Assign the new system call to the process */
+                    quark = ss.getQuarkRelativeAndAdd(currentThreadNode, Attributes.SYSTEM_CALL);
+                    value = TmfStateValue.newValueString(eventName);
+                    ss.modifyAttribute(ts, value, quark);
+
+                    /* Put the process in system call mode */
+                    quark = ss.getQuarkRelativeAndAdd(currentThreadNode, Attributes.STATUS);
+                    value = StateValues.PROCESS_STATUS_RUN_SYSCALL_VALUE;
+                    ss.modifyAttribute(ts, value, quark);
+
+                    /* Put the CPU in system call (kernel) mode */
+                    quark = ss.getQuarkRelativeAndAdd(currentCPUNode, Attributes.STATUS);
+                    value = StateValues.CPU_STATUS_RUN_SYSCALL_VALUE;
+                    ss.modifyAttribute(ts, value, quark);
+                }
+            }
+                break;
+            } // End of big switch
+
+        } catch (AttributeNotFoundException ae) {
+            /*
+             * This would indicate a problem with the logic of the manager here,
+             * so it shouldn't happen.
+             */
+            ae.printStackTrace();
+
+        } catch (TimeRangeException tre) {
+            /*
+             * This would happen if the events in the trace aren't ordered
+             * chronologically, which should never be the case ...
+             */
+            System.err.println("TimeRangeExcpetion caught in the state system's event manager."); //$NON-NLS-1$
+            System.err.println("Are the events in the trace correctly ordered?"); //$NON-NLS-1$
+            tre.printStackTrace();
+
+        } catch (StateValueTypeException sve) {
+            /*
+             * This would happen if we were trying to push/pop attributes not of
+             * type integer. Which, once again, should never happen.
+             */
+            sve.printStackTrace();
+        }
+    }
+
+    // ------------------------------------------------------------------------
+    // Convenience methods for commonly-used attribute tree locations
+    // ------------------------------------------------------------------------
+
+    private int getNodeCPUs() {
+        return ss.getQuarkAbsoluteAndAdd(Attributes.CPUS);
+    }
+
+    private int getNodeThreads() {
+        return ss.getQuarkAbsoluteAndAdd(Attributes.THREADS);
+    }
+
+    private int getNodeIRQs() {
+        return ss.getQuarkAbsoluteAndAdd(Attributes.RESOURCES, Attributes.IRQS);
+    }
+
+    private int getNodeSoftIRQs() {
+        return ss.getQuarkAbsoluteAndAdd(Attributes.RESOURCES, Attributes.SOFT_IRQS);
+    }
+
+    // ------------------------------------------------------------------------
+    // Advanced state-setting methods
+    // ------------------------------------------------------------------------
+
+    /**
+     * When we want to set a process back to a "running" state, first check
+     * its current System_call attribute. If there is a system call active, we
+     * put the process back in the syscall state. If not, we put it back in
+     * user mode state.
+     */
+    private void setProcessToRunning(long ts, int currentThreadNode)
+            throws AttributeNotFoundException, TimeRangeException,
+            StateValueTypeException {
+        int quark;
+        ITmfStateValue value;
+
+        quark = ss.getQuarkRelativeAndAdd(currentThreadNode, Attributes.SYSTEM_CALL);
+        if (ss.queryOngoingState(quark).isNull()) {
+            /* We were in user mode before the interruption */
+            value = StateValues.PROCESS_STATUS_RUN_USERMODE_VALUE;
+        } else {
+            /* We were previously in kernel mode */
+            value = StateValues.PROCESS_STATUS_RUN_SYSCALL_VALUE;
+        }
+        quark = ss.getQuarkRelativeAndAdd(currentThreadNode, Attributes.STATUS);
+        ss.modifyAttribute(ts, value, quark);
+    }
+
+    /**
+     * Similar logic as above, but to set the CPU's status when it's coming out
+     * of an interruption.
+     */
+    private void cpuExitInterrupt(long ts, int currentCpuNode, int currentThreadNode)
+            throws StateValueTypeException, AttributeNotFoundException,
+            TimeRangeException {
+        int quark;
+        ITmfStateValue value;
+
+        quark = ss.getQuarkRelativeAndAdd(currentCpuNode, Attributes.CURRENT_THREAD);
+        if (ss.queryOngoingState(quark).unboxInt() > 0) {
+            /* There was a process on the CPU */
+            quark = ss.getQuarkRelative(currentThreadNode, Attributes.SYSTEM_CALL);
+            if (ss.queryOngoingState(quark).isNull()) {
+                /* That process was in user mode */
+                value = StateValues.CPU_STATUS_RUN_USERMODE_VALUE;
+            } else {
+                /* That process was in a system call */
+                value = StateValues.CPU_STATUS_RUN_SYSCALL_VALUE;
+            }
+        } else {
+            /* There was no real process scheduled, CPU was idle */
+            value = StateValues.CPU_STATUS_IDLE_VALUE;
+        }
+        quark = ss.getQuarkRelativeAndAdd(currentCpuNode, Attributes.STATUS);
+        ss.modifyAttribute(ts, value, quark);
+    }
+}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/kernel/Messages.java b/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/kernel/Messages.java
new file mode 100644 (file)
index 0000000..b20debc
--- /dev/null
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Ã‰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
+ *
+ * Contributors:
+ *   Geneviève Bastien - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.lttng2.kernel.core.analysis.kernel;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * Externalized message strings from the LTTng Kernel Analysis
+ *
+ * @author Geneviève Bastien
+ * @since 3.0
+ */
+@SuppressWarnings("javadoc")
+public class Messages extends NLS {
+    private static final String BUNDLE_NAME = "org.eclipse.tracecompass.lttng2.kernel.core.analysis.messages"; //$NON-NLS-1$
+
+    public static String LttngKernelAnalysisModule_Help;
+
+    static {
+        // initialize resource bundle
+        NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+    }
+
+    private Messages() {
+    }
+}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/kernel/messages.properties b/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/kernel/messages.properties
new file mode 100644 (file)
index 0000000..6933aa6
--- /dev/null
@@ -0,0 +1,13 @@
+###############################################################################
+# Copyright (c) 2014 Ã‰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
+#
+# Contributors:
+#     Geneviève Bastien - Initial API and implementation
+###############################################################################
+
+LttngKernelAnalysisModule_Help=Builds the LTTng2 kernel state system to populate the Control Flow view and the Resources View
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/messages.properties b/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/analysis/messages.properties
deleted file mode 100644 (file)
index 6933aa6..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-###############################################################################
-# Copyright (c) 2014 Ã‰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
-#
-# Contributors:
-#     Geneviève Bastien - Initial API and implementation
-###############################################################################
-
-LttngKernelAnalysisModule_Help=Builds the LTTng2 kernel state system to populate the Control Flow view and the Resources View
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/cpuusage/LttngKernelCpuStateProvider.java b/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/cpuusage/LttngKernelCpuStateProvider.java
deleted file mode 100644 (file)
index a01ee09..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2014 Ã‰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
- *
- * Contributors:
- *   François Rajotte - Initial API and implementation
- *   Geneviève Bastien - Revision of the initial implementation
- *******************************************************************************/
-
-package org.eclipse.tracecompass.lttng2.kernel.core.cpuusage;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.tracecompass.internal.lttng2.kernel.core.Activator;
-import org.eclipse.tracecompass.internal.lttng2.kernel.core.Attributes;
-import org.eclipse.tracecompass.internal.lttng2.kernel.core.LttngStrings;
-import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundException;
-import org.eclipse.tracecompass.statesystem.core.statevalue.ITmfStateValue;
-import org.eclipse.tracecompass.statesystem.core.statevalue.TmfStateValue;
-import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
-import org.eclipse.tracecompass.tmf.core.event.ITmfEventField;
-import org.eclipse.tracecompass.tmf.core.statesystem.AbstractTmfStateProvider;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-
-/**
- * Creates a state system with the total time spent on CPU for each thread and
- * for each CPU from a kernel trace.
- *
- * This state system in itself keeps the total time on CPU since last time the
- * process was scheduled out. The state system queries will only be accurate
- * when the process is not in a running state. To have exact CPU usage when
- * running, this state system needs to be used along the LTTng Kernel analysis.
- *
- * It requires only the 'sched_switch' events enabled on the trace.
- *
- * @author François Rajotte
- * @since 3.0
- */
-public class LttngKernelCpuStateProvider extends AbstractTmfStateProvider {
-
-    private static final int VERSION = 1;
-
-    /* For each CPU, maps the last time a thread was scheduled in */
-    private final Map<String, Long> fLastStartTimes = new HashMap<>();
-    private final long fTraceStart;
-
-    /**
-     * Constructor
-     *
-     * @param trace
-     *            The trace from which to get the CPU usage
-     */
-    public LttngKernelCpuStateProvider(ITmfTrace trace) {
-        super(trace, ITmfEvent.class, "LTTng Kernel CPU usage"); //$NON-NLS-1$
-        fTraceStart = trace.getStartTime().getValue();
-    }
-
-    // ------------------------------------------------------------------------
-    // ITmfStateProvider
-    // ------------------------------------------------------------------------
-
-    @Override
-    public int getVersion() {
-        return VERSION;
-    }
-
-    @Override
-    public LttngKernelCpuStateProvider getNewInstance() {
-        return new LttngKernelCpuStateProvider(this.getTrace());
-    }
-
-    @Override
-    protected void eventHandle(ITmfEvent event) {
-        final String eventName = event.getType().getName();
-
-        if (eventName.equals(LttngStrings.SCHED_SWITCH)) {
-            /*
-             * Fields: string prev_comm, int32 prev_tid, int32 prev_prio, int64
-             * prev_state, string next_comm, int32 next_tid, int32 next_prio
-             */
-
-            ITmfEventField content = event.getContent();
-            long ts = event.getTimestamp().getValue();
-            String cpu = event.getSource();
-
-            Long prevTid = (Long) content.getField(LttngStrings.PREV_TID).getValue();
-
-            try {
-                Integer currentCPUNode = ss.getQuarkRelativeAndAdd(getNodeCPUs(), cpu);
-
-                /*
-                 * This quark contains the value of the cumulative time spent on
-                 * the source CPU by the currently running thread
-                 */
-                Integer cumulativeTimeQuark = ss.getQuarkRelativeAndAdd(currentCPUNode, prevTid.toString());
-                Long startTime = fLastStartTimes.get(cpu);
-                /*
-                 * If start time is null, we haven't seen the start of the
-                 * process, so we assume beginning of the trace
-                 */
-                if (startTime == null) {
-                    startTime = fTraceStart;
-                }
-
-                /*
-                 * We add the time from startTime until now to the cumulative
-                 * time of the thread
-                 */
-                if (startTime != null) {
-                    ITmfStateValue value = ss.queryOngoingState(cumulativeTimeQuark);
-
-                    /*
-                     * Modify cumulative time for this CPU/TID combo: The total
-                     * time changes when the process is scheduled out. Nothing
-                     * happens when the process is scheduled in.
-                     */
-                    long prevCumulativeTime = value.unboxLong();
-                    long newCumulativeTime = prevCumulativeTime + (ts - startTime);
-
-                    value = TmfStateValue.newValueLong(newCumulativeTime);
-                    ss.modifyAttribute(ts, value, cumulativeTimeQuark);
-                    fLastStartTimes.put(cpu, ts);
-                }
-            } catch (AttributeNotFoundException e) {
-                Activator.getDefault().logError("Attribute not found in LttngKernelCpuStateProvider", e); //$NON-NLS-1$
-            }
-
-        }
-    }
-
-    /* Shortcut for the "current CPU" attribute node */
-    private int getNodeCPUs() {
-        return ss.getQuarkAbsoluteAndAdd(Attributes.CPUS);
-    }
-
-}
diff --git a/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/cpuusage/LttngKernelCpuUsageAnalysis.java b/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/lttng2/kernel/core/cpuusage/LttngKernelCpuUsageAnalysis.java
deleted file mode 100644 (file)
index c867ab6..0000000
+++ /dev/null
@@ -1,254 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2014 Ã‰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
- *
- * Contributors:
- *   Geneviève Bastien - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.tracecompass.lttng2.kernel.core.cpuusage;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.tracecompass.internal.lttng2.kernel.core.Activator;
-import org.eclipse.tracecompass.internal.lttng2.kernel.core.Attributes;
-import org.eclipse.tracecompass.lttng2.kernel.core.analysis.LttngKernelAnalysisModule;
-import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
-import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundException;
-import org.eclipse.tracecompass.statesystem.core.exceptions.StateSystemDisposedException;
-import org.eclipse.tracecompass.statesystem.core.exceptions.StateValueTypeException;
-import org.eclipse.tracecompass.statesystem.core.exceptions.TimeRangeException;
-import org.eclipse.tracecompass.statesystem.core.interval.ITmfStateInterval;
-import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
-import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-
-/**
- * This analysis module computes the CPU usage of a system from a kernel trace.
- * It requires the LTTng Kernel analysis module to have accurate CPU usage data.
- *
- * @author Geneviève Bastien
- * @since 3.0
- */
-public class LttngKernelCpuUsageAnalysis extends TmfStateSystemAnalysisModule {
-
-    /** The ID of this analysis */
-    public static final String ID = "org.eclipse.linuxtools.lttng2.kernel.core.cpuusage"; //$NON-NLS-1$
-
-    /** Text used to identify 'total' entries in the returned maps */
-    public static final String TOTAL = "total"; //$NON-NLS-1$
-    /** String used to separate elements in the returned maps */
-    public static final String SPLIT_STRING = "/"; //$NON-NLS-1$
-    /** Idle process thread ID */
-    public static final String TID_ZERO = "0"; //$NON-NLS-1$
-
-    @Override
-    protected ITmfStateProvider createStateProvider() {
-        return new LttngKernelCpuStateProvider(getTrace());
-    }
-
-    @Override
-    protected StateSystemBackendType getBackendType() {
-        return StateSystemBackendType.FULL;
-    }
-
-    @Override
-    protected boolean executeAnalysis(IProgressMonitor monitor) {
-        /*
-         * This analysis depends on the LTTng kernel analysis, so we'll start
-         * that build at the same time
-         */
-        LttngKernelAnalysisModule module = getTrace().getAnalysisModuleOfClass(LttngKernelAnalysisModule.class, LttngKernelAnalysisModule.ID);
-        if (module != null) {
-            module.schedule();
-        }
-        return super.executeAnalysis(monitor);
-    }
-
-    /**
-     * Get a map of time spent on CPU by various threads during a time range.
-     *
-     * @param start
-     *            Start time of requested range
-     * @param end
-     *            End time of requested range
-     * @return A map of TID -> time spent on CPU in the [start, end] interval
-     */
-    public Map<String, Long> getCpuUsageInRange(long start, long end) {
-        Map<String, Long> map = new HashMap<>();
-        Map<String, Long> totalMap = new HashMap<>();
-
-        ITmfTrace trace = getTrace();
-        ITmfStateSystem cpuSs = getStateSystem();
-        if (trace == null || cpuSs == null) {
-            return map;
-        }
-        ITmfStateSystem kernelSs = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysisModule.ID);
-        if (kernelSs == null) {
-            return map;
-        }
-
-        /*
-         * Make sure the start/end times are within the state history, so we
-         * don't get TimeRange exceptions.
-         */
-        long startTime = Math.max(start, cpuSs.getStartTime());
-        startTime = Math.max(startTime, kernelSs.getStartTime());
-        long endTime = Math.min(end, cpuSs.getCurrentEndTime());
-        endTime = Math.min(endTime, kernelSs.getCurrentEndTime());
-        long totalTime = 0;
-        if (endTime < startTime) {
-            return map;
-        }
-
-        try {
-            /* Get the list of quarks for each CPU and CPU's TIDs */
-            int cpusNode = cpuSs.getQuarkAbsolute(Attributes.CPUS);
-            Map<Integer, List<Integer>> tidsPerCpu = new HashMap<>();
-            for (int cpuNode : cpuSs.getSubAttributes(cpusNode, false)) {
-                tidsPerCpu.put(cpuNode, cpuSs.getSubAttributes(cpuNode, false));
-            }
-
-            /* Query full states at start and end times */
-            List<ITmfStateInterval> kernelEndState = kernelSs.queryFullState(endTime);
-            List<ITmfStateInterval> endState = cpuSs.queryFullState(endTime);
-            List<ITmfStateInterval> kernelStartState = kernelSs.queryFullState(startTime);
-            List<ITmfStateInterval> startState = cpuSs.queryFullState(startTime);
-
-            long countAtStart, countAtEnd;
-
-            for (Entry<Integer, List<Integer>> entry : tidsPerCpu.entrySet()) {
-                int cpuNode = entry.getKey();
-                List<Integer> tidNodes = entry.getValue();
-
-                String curCpuName = cpuSs.getAttributeName(cpuNode);
-                long cpuTotal = 0;
-
-                /* Get the quark of the thread running on this CPU */
-                int currentThreadQuark = kernelSs.getQuarkAbsolute(Attributes.CPUS, curCpuName, Attributes.CURRENT_THREAD);
-                /* Get the currently running thread on this CPU */
-                int startThread = kernelStartState.get(currentThreadQuark).getStateValue().unboxInt();
-                int endThread = kernelEndState.get(currentThreadQuark).getStateValue().unboxInt();
-
-                for (int tidNode : tidNodes) {
-                    String curTidName = cpuSs.getAttributeName(tidNode);
-                    int tid = Integer.parseInt(curTidName);
-
-                    countAtEnd = endState.get(tidNode).getStateValue().unboxLong();
-                    countAtStart = startState.get(tidNode).getStateValue().unboxLong();
-                    if (countAtStart == -1) {
-                        countAtStart = 0;
-                    }
-                    if (countAtEnd == -1) {
-                        countAtEnd = 0;
-                    }
-
-                    /*
-                     * Interpolate start and end time of threads running at
-                     * those times
-                     */
-                    if (tid == startThread || startThread == -1) {
-                        long runningTime = kernelStartState.get(currentThreadQuark).getEndTime() - kernelStartState.get(currentThreadQuark).getStartTime();
-                        long runningEnd = kernelStartState.get(currentThreadQuark).getEndTime();
-
-                        countAtStart = interpolateCount(countAtStart, startTime, runningEnd, runningTime);
-                    }
-                    if (tid == endThread) {
-                        long runningTime = kernelEndState.get(currentThreadQuark).getEndTime() - kernelEndState.get(currentThreadQuark).getStartTime();
-                        long runningEnd = kernelEndState.get(currentThreadQuark).getEndTime();
-
-                        countAtEnd = interpolateCount(countAtEnd, endTime, runningEnd, runningTime);
-                    }
-                    /*
-                     * If startThread is -1, we made the hypothesis that the
-                     * process running at start was the current one. If the
-                     * count is negative, we were wrong in this hypothesis. Also
-                     * if the time at end is 0, it either means the process
-                     * hasn't been on the CPU or that we still don't know who is
-                     * running. In both cases, that invalidates the hypothesis.
-                     */
-                    if ((startThread == -1) && ((countAtEnd - countAtStart < 0) || (countAtEnd == 0))) {
-                        countAtStart = 0;
-                    }
-
-                    long currentCount = countAtEnd - countAtStart;
-                    if (currentCount < 0) {
-                        Activator.getDefault().logWarning(String.format("Negative count: start %d, end %d", countAtStart, countAtEnd)); //$NON-NLS-1$
-                        currentCount = 0;
-                    } else if (currentCount > endTime - startTime) {
-                        Activator.getDefault().logWarning(String.format("CPU Usage: Spent more time on CPU than allowed: %s spent %d when max should be %d", curTidName, currentCount, endTime - startTime)); //$NON-NLS-1$
-                        currentCount = 0;
-                    }
-                    cpuTotal += currentCount;
-                    map.put(curCpuName + SPLIT_STRING + curTidName, currentCount);
-                    addToMap(totalMap, curTidName, currentCount);
-                    totalTime += (currentCount);
-                }
-                map.put(curCpuName, cpuTotal);
-            }
-
-            /* Add the totals to the map */
-            for (Entry<String, Long> entry : totalMap.entrySet()) {
-                map.put(TOTAL + SPLIT_STRING + entry.getKey(), entry.getValue());
-            }
-            map.put(TOTAL, totalTime);
-
-        } catch (TimeRangeException | AttributeNotFoundException e) {
-            /*
-             * Assume there is no events or the attribute does not exist yet,
-             * nothing will be put in the map.
-             */
-        } catch (StateValueTypeException | StateSystemDisposedException e) {
-            /*
-             * These other exception types would show a logic problem, so they
-             * should not happen.
-             */
-            Activator.getDefault().logError("Error getting CPU usage in a time range", e); //$NON-NLS-1$
-        }
-
-        return map;
-    }
-
-    private static long interpolateCount(long count, long ts, long runningEnd, long runningTime) {
-        long newCount = count;
-
-        /* sanity check */
-        if (runningTime > 0) {
-
-            long runningStart = runningEnd - runningTime;
-
-            if (ts < runningStart) {
-                /*
-                 * This interval was not started, this can happen if the current
-                 * running thread is unknown and we execute this method. It just
-                 * means that this process was not the one running
-                 */
-                return newCount;
-            }
-            newCount += (ts - runningStart);
-        }
-        return newCount;
-    }
-
-    /*
-     * Add the value to the previous value in the map. If the key was not set,
-     * assume 0
-     */
-    private static void addToMap(Map<String, Long> map, String key, Long value) {
-        Long addTo = map.get(key);
-        if (addTo == null) {
-            map.put(key, value);
-        } else {
-            map.put(key, addTo + value);
-        }
-    }
-
-}
index c5b03cdc4f12200be86e067dec93746621523a9f..0ce58bff6d1430b57cc1cc42b209e08bead4bdec 100644 (file)
@@ -25,7 +25,7 @@ import org.eclipse.tracecompass.internal.lttng2.kernel.core.Attributes;
 import org.eclipse.tracecompass.internal.lttng2.kernel.core.StateValues;
 import org.eclipse.tracecompass.internal.lttng2.kernel.ui.Activator;
 import org.eclipse.tracecompass.internal.lttng2.kernel.ui.Messages;
-import org.eclipse.tracecompass.lttng2.kernel.core.analysis.LttngKernelAnalysisModule;
+import org.eclipse.tracecompass.lttng2.kernel.core.analysis.kernel.LttngKernelAnalysis;
 import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
 import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundException;
 import org.eclipse.tracecompass.statesystem.core.exceptions.StateSystemDisposedException;
@@ -128,7 +128,7 @@ public class ControlFlowPresentationProvider extends TimeGraphPresentationProvid
             return retMap;
         }
         ControlFlowEntry entry = (ControlFlowEntry) event.getEntry();
-        ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysisModule.ID);
+        ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysis.ID);
         if (ssq == null) {
             return retMap;
         }
@@ -185,7 +185,7 @@ public class ControlFlowPresentationProvider extends TimeGraphPresentationProvid
             return;
         }
         ControlFlowEntry entry = (ControlFlowEntry) event.getEntry();
-        ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysisModule.ID);
+        ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysis.ID);
         if (ss == null) {
             return;
         }
index a81d2ed7058bfa99f94db0c0196ab4c47908626a..f0d9072f3894a72a48a0517974b2b820cf442ce5 100644 (file)
@@ -27,7 +27,7 @@ import org.eclipse.jface.dialogs.IDialogSettings;
 import org.eclipse.tracecompass.internal.lttng2.kernel.core.Attributes;
 import org.eclipse.tracecompass.internal.lttng2.kernel.ui.Activator;
 import org.eclipse.tracecompass.internal.lttng2.kernel.ui.Messages;
-import org.eclipse.tracecompass.lttng2.kernel.core.analysis.LttngKernelAnalysisModule;
+import org.eclipse.tracecompass.lttng2.kernel.core.analysis.kernel.LttngKernelAnalysis;
 import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
 import org.eclipse.tracecompass.statesystem.core.StateSystemUtils;
 import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundException;
@@ -226,7 +226,7 @@ public class ControlFlowView extends AbstractTimeGraphView {
         if (trace == null) {
             return;
         }
-        ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysisModule.ID);
+        ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysis.ID);
         if (ssq == null) {
             return;
         }
@@ -376,7 +376,7 @@ public class ControlFlowView extends AbstractTimeGraphView {
 
     private void buildStatusEvents(ITmfTrace trace, ControlFlowEntry entry, IProgressMonitor monitor, long start, long end) {
         if (start < entry.getEndTime() && end > entry.getStartTime()) {
-            ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysisModule.ID);
+            ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysis.ID);
             if (ssq == null) {
                 return;
             }
@@ -415,7 +415,7 @@ public class ControlFlowView extends AbstractTimeGraphView {
         if (realEnd <= realStart) {
             return null;
         }
-        ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysisModule.ID);
+        ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysis.ID);
         if (ssq == null) {
             return null;
         }
@@ -473,7 +473,7 @@ public class ControlFlowView extends AbstractTimeGraphView {
             if (trace == null) {
                 continue;
             }
-            ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysisModule.ID);
+            ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysis.ID);
             if (ssq == null) {
                 continue;
             }
@@ -530,7 +530,7 @@ public class ControlFlowView extends AbstractTimeGraphView {
             if (trace == null) {
                 continue;
             }
-            ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysisModule.ID);
+            ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysis.ID);
             if (ssq == null) {
                 continue;
             }
index 477d258f6e36fdcb205b0310d55b2f810148e12e..c7dbf7252ee5cbdfaaed844c97ac8173b0627232 100644 (file)
@@ -25,8 +25,8 @@ import org.eclipse.jface.viewers.ViewerComparator;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.tracecompass.internal.lttng2.kernel.core.Attributes;
-import org.eclipse.tracecompass.lttng2.kernel.core.analysis.LttngKernelAnalysisModule;
-import org.eclipse.tracecompass.lttng2.kernel.core.cpuusage.LttngKernelCpuUsageAnalysis;
+import org.eclipse.tracecompass.lttng2.kernel.core.analysis.cpuusage.LttngKernelCpuUsageAnalysis;
+import org.eclipse.tracecompass.lttng2.kernel.core.analysis.kernel.LttngKernelAnalysis;
 import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
 import org.eclipse.tracecompass.statesystem.core.StateSystemUtils;
 import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundException;
@@ -266,7 +266,7 @@ public class CpuUsageComposite extends AbstractTmfTreeViewer {
         if (trace == null) {
             return tid;
         }
-        ITmfStateSystem kernelSs = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysisModule.ID);
+        ITmfStateSystem kernelSs = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysis.ID);
         if (kernelSs == null) {
             return tid;
         }
index 01e45215f7d772256ed14fb5d188c1c2f3fbb2e9..cf2ee31763bbedbfe3de1e9bb8f91054dc8ee827 100644 (file)
@@ -21,7 +21,7 @@ import java.util.Map.Entry;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.tracecompass.internal.lttng2.kernel.ui.Activator;
-import org.eclipse.tracecompass.lttng2.kernel.core.cpuusage.LttngKernelCpuUsageAnalysis;
+import org.eclipse.tracecompass.lttng2.kernel.core.analysis.cpuusage.LttngKernelCpuUsageAnalysis;
 import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
 import org.eclipse.tracecompass.statesystem.core.exceptions.StateValueTypeException;
 import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts.TmfCommonXLineChartViewer;
index 061d60b49b2781486432f5e47b7bfcd32a87e777..373ac575d452d2c0e38c8a39a43991422794742c 100644 (file)
@@ -27,7 +27,7 @@ import org.eclipse.tracecompass.internal.lttng2.kernel.core.StateValues;
 import org.eclipse.tracecompass.internal.lttng2.kernel.ui.Activator;
 import org.eclipse.tracecompass.internal.lttng2.kernel.ui.Messages;
 import org.eclipse.tracecompass.internal.lttng2.kernel.ui.views.resources.ResourcesEntry.Type;
-import org.eclipse.tracecompass.lttng2.kernel.core.analysis.LttngKernelAnalysisModule;
+import org.eclipse.tracecompass.lttng2.kernel.core.analysis.kernel.LttngKernelAnalysis;
 import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
 import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundException;
 import org.eclipse.tracecompass.statesystem.core.exceptions.StateSystemDisposedException;
@@ -162,7 +162,7 @@ public class ResourcesPresentationProvider extends TimeGraphPresentationProvider
             ResourcesEntry entry = (ResourcesEntry) event.getEntry();
 
             if (tcEvent.hasValue()) {
-                ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysisModule.ID);
+                ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysis.ID);
                 if (ss == null) {
                     return retMap;
                 }
@@ -301,7 +301,7 @@ public class ResourcesPresentationProvider extends TimeGraphPresentationProvider
             return;
         }
 
-        ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysisModule.ID);
+        ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysis.ID);
         if (ss == null) {
             return;
         }
index e6b9adddd784a3719fa1199763f38781b56e1ab2..44dad6612eb137a14e1373a36afde7c66cba76d6 100644 (file)
@@ -25,7 +25,7 @@ import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.tracecompass.internal.lttng2.kernel.core.Attributes;
 import org.eclipse.tracecompass.internal.lttng2.kernel.ui.Messages;
 import org.eclipse.tracecompass.internal.lttng2.kernel.ui.views.resources.ResourcesEntry.Type;
-import org.eclipse.tracecompass.lttng2.kernel.core.analysis.LttngKernelAnalysisModule;
+import org.eclipse.tracecompass.lttng2.kernel.core.analysis.kernel.LttngKernelAnalysis;
 import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
 import org.eclipse.tracecompass.statesystem.core.StateSystemUtils;
 import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundException;
@@ -100,7 +100,7 @@ public class ResourcesView extends AbstractTimeGraphView {
         if (trace == null) {
             return;
         }
-        ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysisModule.ID);
+        ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysis.ID);
         if (ssq == null) {
             return;
         }
@@ -208,7 +208,7 @@ public class ResourcesView extends AbstractTimeGraphView {
             long startTime, long endTime, long resolution,
             IProgressMonitor monitor) {
         ResourcesEntry resourcesEntry = (ResourcesEntry) entry;
-        ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(resourcesEntry.getTrace(), LttngKernelAnalysisModule.ID);
+        ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(resourcesEntry.getTrace(), LttngKernelAnalysis.ID);
         if (ssq == null) {
             return null;
         }
This page took 0.129359 seconds and 5 git commands to generate.