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
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;
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);
@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 {
+++ /dev/null
-/*******************************************************************************
- * 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 {
-
-}
+++ /dev/null
-/*******************************************************************************
- * 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));
- }
- }
-}
--- /dev/null
+/*******************************************************************************
+ * 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 {
+
+}
--- /dev/null
+/*******************************************************************************
+ * 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));
+ }
+ }
+}
--- /dev/null
+/*******************************************************************************
+ * 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);
+ }
+
+}
--- /dev/null
+/*******************************************************************************
+ * 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);
+ }
+
+}
--- /dev/null
+/*******************************************************************************
+ * 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;
+ }
+
+ }
+}
--- /dev/null
+/*******************************************************************************
+ * 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;
+ }
+
+}
--- /dev/null
+/*******************************************************************************
+ * 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;
+ }
+ }
+}
--- /dev/null
+/*******************************************************************************
+ * 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();
+ }
+ }
+
+}
--- /dev/null
+/*******************************************************************************
+ * 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 {
+
+}
--- /dev/null
+/*******************************************************************************
+ * 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(),
+ };
+}
+++ /dev/null
-/*******************************************************************************
- * 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);
- }
-
-}
+++ /dev/null
-/*******************************************************************************
- * 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);
- }
-
-}
+++ /dev/null
-/*******************************************************************************
- * 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;
- }
-
- }
-}
+++ /dev/null
-/*******************************************************************************
- * 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;
- }
-
-}
+++ /dev/null
-/*******************************************************************************
- * 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;
- }
- }
-}
+++ /dev/null
-/*******************************************************************************
- * 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();
- }
- }
-
-}
+++ /dev/null
-/*******************************************************************************
- * 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 {
-
-}
+++ /dev/null
-/*******************************************************************************
- * 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(),
- };
-}
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
<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">
</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
+++ /dev/null
-/*******************************************************************************
- * 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);
- }
-}
+++ /dev/null
-/*******************************************************************************
- * 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;
- }
-}
+++ /dev/null
-/*******************************************************************************
- * 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() {
- }
-}
--- /dev/null
+/*******************************************************************************
+ * 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);
+ }
+ }
+
+}
--- /dev/null
+/*******************************************************************************
+ * 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);
+ }
+
+}
--- /dev/null
+/*******************************************************************************
+ * 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;
+ }
+}
--- /dev/null
+/*******************************************************************************
+ * 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);
+ }
+}
--- /dev/null
+/*******************************************************************************
+ * 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() {
+ }
+}
--- /dev/null
+###############################################################################
+# 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
+++ /dev/null
-###############################################################################
-# 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
+++ /dev/null
-/*******************************************************************************
- * 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);
- }
-
-}
+++ /dev/null
-/*******************************************************************************
- * 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);
- }
- }
-
-}
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;
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;
}
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;
}
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;
if (trace == null) {
return;
}
- ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysisModule.ID);
+ ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysis.ID);
if (ssq == null) {
return;
}
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;
}
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;
}
if (trace == null) {
continue;
}
- ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysisModule.ID);
+ ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysis.ID);
if (ssq == null) {
continue;
}
if (trace == null) {
continue;
}
- ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysisModule.ID);
+ ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysis.ID);
if (ssq == null) {
continue;
}
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;
if (trace == null) {
return tid;
}
- ITmfStateSystem kernelSs = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysisModule.ID);
+ ITmfStateSystem kernelSs = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysis.ID);
if (kernelSs == null) {
return tid;
}
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;
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;
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;
}
return;
}
- ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysisModule.ID);
+ ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(entry.getTrace(), LttngKernelAnalysis.ID);
if (ss == null) {
return;
}
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;
if (trace == null) {
return;
}
- ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysisModule.ID);
+ ITmfStateSystem ssq = TmfStateSystemAnalysisModule.getStateSystem(trace, LttngKernelAnalysis.ID);
if (ssq == null) {
return;
}
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;
}