/*******************************************************************************
- * 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;
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 */
}
}
+ @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 {
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());
}
// ------------------------------------------------------------------------
@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());
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();
}