KernelAnalysis: Use Threads CoreAttributes to store "Status"
[deliverable/tracecompass.git] / lttng / org.eclipse.tracecompass.lttng2.kernel.core.tests / src / org / eclipse / tracecompass / lttng2 / kernel / core / tests / analysis / kernel / statesystem / StateSystemTest.java
index ebb379b34efedc08d7835d855cb9f45447ac52dd..8a6f1d09df6415df3f5fa7e7ee708307d6186e85 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2012, 2015 Ericsson
+ * Copyright (c) 2012, 2016 Ericsson
  * Copyright (c) 2010, 2011 École Polytechnique de Montréal
  * Copyright (c) 2010, 2011 Alexandre Montplaisir <alexandre.montplaisir@gmail.com>
  *
 
 package org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis.kernel.statesystem;
 
+import static org.eclipse.tracecompass.statesystem.core.ITmfStateSystem.INVALID_ATTRIBUTE;
+import static org.eclipse.tracecompass.statesystem.core.ITmfStateSystem.ROOT_ATTRIBUTE;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.tracecompass.analysis.os.linux.core.kernelanalysis.Attributes;
+import org.eclipse.tracecompass.internal.analysis.os.linux.core.kernel.Attributes;
 import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
 import org.eclipse.tracecompass.statesystem.core.StateSystemUtils;
 import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundException;
@@ -160,7 +164,7 @@ public abstract class StateSystemTest {
         assertNotNull(ss);
 
         try {
-            int quark = ss.getQuarkAbsolute(Attributes.RESOURCES, Attributes.IRQS, "1");
+            int quark = ss.getQuarkAbsolute(Attributes.CPUS, Integer.toString(0), Attributes.IRQS, "1");
             long ts1 = ss.getStartTime(); /* start of the trace */
             long ts2 = startTime + 20L * NANOSECS_PER_SEC; /* invalid, but ignored */
 
@@ -326,6 +330,49 @@ public abstract class StateSystemTest {
         }
     }
 
+    @Test
+    public void testOptQuarkAbsolute() {
+        int quark = fixture.optQuarkAbsolute();
+        assertEquals(ROOT_ATTRIBUTE, quark);
+
+        quark = fixture.optQuarkAbsolute(Attributes.THREADS, "1432", Attributes.EXEC_NAME);
+        assertNotEquals(INVALID_ATTRIBUTE, quark);
+        assertEquals(Attributes.EXEC_NAME, fixture.getAttributeName(quark));
+
+        quark = fixture.optQuarkAbsolute(Attributes.THREADS, "1432", "absent");
+        assertEquals(INVALID_ATTRIBUTE, quark);
+
+        quark = fixture.optQuarkAbsolute(Attributes.THREADS, "absent", Attributes.EXEC_NAME);
+        assertEquals(INVALID_ATTRIBUTE, quark);
+
+        quark = fixture.optQuarkAbsolute("absent", "1432", Attributes.EXEC_NAME);
+        assertEquals(INVALID_ATTRIBUTE, quark);
+    }
+
+    @Test
+    public void testOptQuarkRelative() {
+        int threadsQuark = INVALID_ATTRIBUTE;
+        try {
+            threadsQuark = fixture.getQuarkAbsolute(Attributes.THREADS);
+        } catch (AttributeNotFoundException e) {
+            fail();
+        }
+        assertNotEquals(INVALID_ATTRIBUTE, threadsQuark);
+
+        int quark = fixture.optQuarkRelative(threadsQuark);
+        assertEquals(threadsQuark, quark);
+
+        quark = fixture.optQuarkRelative(threadsQuark, "1432", Attributes.EXEC_NAME);
+        assertNotEquals(INVALID_ATTRIBUTE, quark);
+        assertEquals(Attributes.EXEC_NAME, fixture.getAttributeName(quark));
+
+        quark = fixture.optQuarkRelative(threadsQuark, "1432", "absent");
+        assertEquals(INVALID_ATTRIBUTE, quark);
+
+        quark = fixture.optQuarkRelative(threadsQuark, "absent", Attributes.EXEC_NAME);
+        assertEquals(INVALID_ATTRIBUTE, quark);
+    }
+
     @Test
     public void testFullAttributeName() {
         try {
@@ -350,15 +397,94 @@ public abstract class StateSystemTest {
         List<Integer> list = fixture.getQuarks(Attributes.THREADS, "*", Attributes.EXEC_NAME);
 
         /* Number of different kernel threads in the trace */
-        assertEquals(168, list.size());
+        assertEquals(169, list.size());
     }
 
     @Test
     public void testGetQuarks_end() {
         List<Integer> list = fixture.getQuarks(Attributes.THREADS, "1577", "*");
 
-        /* There should be 5 sub-attributes for each Thread node */
-        assertEquals(5, list.size());
+        /* There should be 4 sub-attributes for each Thread node */
+        assertEquals(4, list.size());
+    }
+
+    @Test
+    public void testGetQuarks_middle_end() {
+        List<Integer> list = fixture.getQuarks(Attributes.THREADS, "*", "*");
+
+        /* There should be 169 threads and 4 sub-attributes per thread */
+        assertEquals(169 * 4, list.size());
+    }
+
+    @Test
+    public void testGetQuarks_empty() {
+        List<Integer> list = fixture.getQuarks();
+
+        assertEquals(Arrays.asList(ITmfStateSystem.ROOT_ATTRIBUTE), list);
+    }
+
+    @Test
+    public void testGetQuarks_relative() {
+        int threadsQuark = INVALID_ATTRIBUTE;
+        try {
+            threadsQuark = fixture.getQuarkAbsolute(Attributes.THREADS);
+        } catch (AttributeNotFoundException e) {
+            fail();
+        }
+        assertNotEquals(INVALID_ATTRIBUTE, threadsQuark);
+
+        List<Integer> list = fixture.getQuarks(threadsQuark, "*", Attributes.EXEC_NAME);
+
+        /* Number of different kernel threads in the trace */
+        assertEquals(169, list.size());
+    }
+
+    @Test
+    public void testGetQuarks_relative_up_wildcard() {
+        int threadsQuark = INVALID_ATTRIBUTE;
+        try {
+            threadsQuark = fixture.getQuarkAbsolute(Attributes.THREADS);
+        } catch (AttributeNotFoundException e) {
+            fail();
+        }
+        assertNotEquals(INVALID_ATTRIBUTE, threadsQuark);
+
+        List<Integer> list = fixture.getQuarks(threadsQuark, "..", Attributes.CPUS, "*");
+
+        /* There should be 2 CPUs */
+        assertEquals(2, list.size());
+    }
+
+    @Test
+    public void testGetQuarks_relative_empty() {
+        int threadsQuark = INVALID_ATTRIBUTE;
+        try {
+            threadsQuark = fixture.getQuarkAbsolute(Attributes.THREADS);
+        } catch (AttributeNotFoundException e) {
+            fail();
+        }
+        assertNotEquals(INVALID_ATTRIBUTE, threadsQuark);
+
+        List<Integer> list = fixture.getQuarks(threadsQuark, new String[0]);
+        assertEquals(Arrays.asList(threadsQuark), list);
+
+        list = fixture.getQuarks(threadsQuark);
+        assertEquals(Arrays.asList(threadsQuark), list);
+    }
+
+    @Test
+    public void testGetQuarksNoMatch() {
+        List<Integer> list = fixture.getQuarks("invalid");
+        assertEquals(0, list.size());
+
+        list = fixture.getQuarks("*", "invalid");
+        assertEquals(0, list.size());
+
+        list = fixture.getQuarks("invalid", "*");
+        assertEquals(0, list.size());
+
+        list = fixture.getQuarks(Attributes.THREADS, "*", "invalid");
+        assertEquals(0, list.size());
     }
 
     // ------------------------------------------------------------------------
@@ -399,7 +525,7 @@ public abstract class StateSystemTest {
     @Test
     public void testFirstIntervalIsConsidered() {
         try {
-            int quark = fixture.getQuarkAbsolute(Attributes.THREADS, "1397", Attributes.STATUS);
+            int quark = fixture.getQuarkAbsolute(Attributes.THREADS, "1397");
             List<ITmfStateInterval> list = fixture.queryFullState(1331668248014135800L);
             ITmfStateInterval interval = list.get(quark);
             assertEquals(1331668247516664825L, interval.getStartTime());
@@ -424,9 +550,9 @@ public abstract class StateSystemTest {
                 assertEquals(path[i], name);
                 q = fixture.getParentAttributeQuark(q);
             }
-            assertEquals(-1, q);
+            assertEquals(ROOT_ATTRIBUTE, q);
             q = fixture.getParentAttributeQuark(q);
-            assertEquals(-1, q);
+            assertEquals(ROOT_ATTRIBUTE, q);
         } catch (AttributeNotFoundException e) {
             fail();
         }
This page took 0.031418 seconds and 5 git commands to generate.