From: Geneviève Bastien Date: Mon, 18 Apr 2016 14:51:41 +0000 (-0400) Subject: ss: Add timestamp parameter to debugPrint for intervals X-Git-Url: http://git.efficios.com/?a=commitdiff_plain;h=dbf883bb5dc68619836a9b9318239e8bcd96e6e1;p=deliverable%2Ftracecompass.git ss: Add timestamp parameter to debugPrint for intervals Printing the intervals is useful for debugging, but for large history trees, it can get very big. Printing only nodes intersecting a given time range may be more realistic, for instance to debug an incoherent interval storage when querying at time t. Change-Id: I0d71725c6cbe3bd3ad8abf9e9b5d7588aefc094f Signed-off-by: Geneviève Bastien Reviewed-on: https://git.eclipse.org/r/70886 Reviewed-by: Hudson CI Reviewed-by: Alexandre Montplaisir Tested-by: Alexandre Montplaisir --- diff --git a/statesystem/org.eclipse.tracecompass.statesystem.core/src/org/eclipse/tracecompass/internal/statesystem/core/backend/historytree/HTNode.java b/statesystem/org.eclipse.tracecompass.statesystem.core/src/org/eclipse/tracecompass/internal/statesystem/core/backend/historytree/HTNode.java index 6fb5d644a5..651120bb7d 100644 --- a/statesystem/org.eclipse.tracecompass.statesystem.core/src/org/eclipse/tracecompass/internal/statesystem/core/backend/historytree/HTNode.java +++ b/statesystem/org.eclipse.tracecompass.statesystem.core/src/org/eclipse/tracecompass/internal/statesystem/core/backend/historytree/HTNode.java @@ -604,7 +604,7 @@ public abstract class HTNode { @SuppressWarnings("nls") public void debugPrintIntervals(PrintWriter writer) { /* Only used for debugging, shouldn't be externalized */ - writer.println("Node #" + fSequenceNumber + ":"); + writer.println("Intervals for node #" + fSequenceNumber + ":"); /* Array of children */ if (getNodeType() == NodeType.CORE) { /* Only Core Nodes can have children */ diff --git a/statesystem/org.eclipse.tracecompass.statesystem.core/src/org/eclipse/tracecompass/internal/statesystem/core/backend/historytree/HistoryTree.java b/statesystem/org.eclipse.tracecompass.statesystem.core/src/org/eclipse/tracecompass/internal/statesystem/core/backend/historytree/HistoryTree.java index 33d33d120e..af0b7f6981 100644 --- a/statesystem/org.eclipse.tracecompass.statesystem.core/src/org/eclipse/tracecompass/internal/statesystem/core/backend/historytree/HistoryTree.java +++ b/statesystem/org.eclipse.tracecompass.statesystem.core/src/org/eclipse/tracecompass/internal/statesystem/core/backend/historytree/HistoryTree.java @@ -795,10 +795,13 @@ public class HistoryTree { /* Only used for debugging, shouldn't be externalized */ @SuppressWarnings("nls") private void preOrderPrint(PrintWriter writer, boolean printIntervals, - HTNode currentNode, int curDepth) { + HTNode currentNode, int curDepth, long ts) { writer.println(currentNode.toString()); - if (printIntervals) { + /* Print intervals only if timestamp is negative or within the range of the node */ + if (printIntervals && + (ts <= 0 || + (ts >= currentNode.getNodeStart() && ts <= currentNode.getNodeEnd()))) { currentNode.debugPrintIntervals(writer); } @@ -814,7 +817,7 @@ public class HistoryTree { int extension = node.getExtensionSequenceNumber(); while (extension != -1) { HTNode nextNode = fTreeIO.readNode(extension); - preOrderPrint(writer, printIntervals, nextNode, curDepth); + preOrderPrint(writer, printIntervals, nextNode, curDepth, ts); } /* Print the child nodes */ @@ -824,7 +827,7 @@ public class HistoryTree { writer.print(" "); } writer.print("+-"); - preOrderPrint(writer, printIntervals, nextNode, curDepth + 1); + preOrderPrint(writer, printIntervals, nextNode, curDepth + 1, ts); } } catch (ClosedChannelException e) { Activator.getDefault().logError(e.getMessage()); @@ -843,15 +846,18 @@ public class HistoryTree { * PrintWriter in which to write the output * @param printIntervals * Flag to enable full output of the interval information + * @param ts + * The timestamp that nodes have to intersect for intervals to be + * printed. A negative value will print intervals for all nodes. + * The timestamp only applies if printIntervals is true. */ - public void debugPrintFullTree(PrintWriter writer, boolean printIntervals) { + public void debugPrintFullTree(PrintWriter writer, boolean printIntervals, long ts) { /* Only used for debugging, shouldn't be externalized */ - preOrderPrint(writer, false, fLatestBranch.get(0), 0); + preOrderPrint(writer, false, fLatestBranch.get(0), 0, ts); if (printIntervals) { - writer.println("\nDetails of intervals:"); //$NON-NLS-1$ - preOrderPrint(writer, true, fLatestBranch.get(0), 0); + preOrderPrint(writer, true, fLatestBranch.get(0), 0, ts); } writer.println('\n'); } diff --git a/statesystem/org.eclipse.tracecompass.statesystem.core/src/org/eclipse/tracecompass/internal/statesystem/core/backend/historytree/HistoryTreeBackend.java b/statesystem/org.eclipse.tracecompass.statesystem.core/src/org/eclipse/tracecompass/internal/statesystem/core/backend/historytree/HistoryTreeBackend.java index 97dd73ee29..c867fb94c7 100644 --- a/statesystem/org.eclipse.tracecompass.statesystem.core/src/org/eclipse/tracecompass/internal/statesystem/core/backend/historytree/HistoryTreeBackend.java +++ b/statesystem/org.eclipse.tracecompass.statesystem.core/src/org/eclipse/tracecompass/internal/statesystem/core/backend/historytree/HistoryTreeBackend.java @@ -366,7 +366,7 @@ public class HistoryTreeBackend implements IStateHistoryBackend { @Override public void debugPrint(PrintWriter writer) { /* By default don't print out all the intervals */ - debugPrint(writer, false); + debugPrint(writer, false, -1); } /** @@ -379,8 +379,12 @@ public class HistoryTreeBackend implements IStateHistoryBackend { * The PrintWriter to which the debug info will be written * @param printIntervals * Should we also print every contained interval individually? + * @param ts + * The timestamp that nodes have to intersect for intervals to be + * printed. A negative value will print intervals for all nodes. + * The timestamp only applies if printIntervals is true. */ - public void debugPrint(PrintWriter writer, boolean printIntervals) { + public void debugPrint(PrintWriter writer, boolean printIntervals, long ts) { /* Only used for debugging, shouldn't be externalized */ writer.println("------------------------------"); //$NON-NLS-1$ writer.println("State History Tree:\n"); //$NON-NLS-1$ @@ -389,6 +393,6 @@ public class HistoryTreeBackend implements IStateHistoryBackend { + getAverageNodeUsage()); writer.println(""); //$NON-NLS-1$ - getSHT().debugPrintFullTree(writer, printIntervals); + getSHT().debugPrintFullTree(writer, printIntervals, ts); } }