}
entries.forEach(entry -> {
ps.println(" " + entry.getNumberAddedNotRemoved() + "x TransactionChains opened but not closed here:");
- entry.getStackTraceElements().forEach(line -> ps.println(" " + line));
+ printStackTraceElements(ps, " ", entry.getStackTraceElements());
@SuppressWarnings("resource")
TracingTransactionChain txChain = (TracingTransactionChain) entry
.getExampleCloseTracked().getRealCloseTracked();
entries.forEach(entry -> {
ps.println(indent + " " + entry.getNumberAddedNotRemoved()
+ "x transactions opened here, which are not closed:");
- entry.getStackTraceElements().forEach(line -> ps.println(indent + " " + line));
+ printStackTraceElements(ps, indent + " ", entry.getStackTraceElements());
});
if (!entries.isEmpty()) {
ps.println();
}
}
+
+ private void printStackTraceElements(PrintStream ps, String indent, List<StackTraceElement> stackTraceElements) {
+ stackTraceElements.forEach(line -> {
+ if (isStackTraceElementInteresting(line)) {
+ ps.println(indent + line);
+ } else {
+ ps.println(indent + "(...)");
+ }
+ });
+ }
+
+ private boolean isStackTraceElementInteresting(StackTraceElement element) {
+ final String className = element.getClassName();
+ return !className.startsWith(getClass().getPackage().getName())
+ && !className.startsWith(CloseTracked.class.getPackage().getName())
+ && !className.startsWith("Proxy")
+ && !className.startsWith("akka")
+ && !className.startsWith("scala")
+ && !className.startsWith("sun.reflect")
+ && !className.startsWith("java.lang.reflect")
+ && !className.startsWith("org.apache.aries.blueprint")
+ && !className.startsWith("org.osgi.util.tracker");
+ }
}
* 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.opendaylight.controller.md.sal.trace.closetracker.impl.tests;
+package org.opendaylight.controller.md.sal.trace.tests;
import static com.google.common.truth.Truth.assertThat;
import static java.nio.charset.StandardCharsets.UTF_8;
String output = new String(baos.toByteArray(), UTF_8);
assertThat(printReturnValue).isTrue();
- assertThat(output).contains("testPrintOpenTransactions(TracingBrokerTest.java:41)"); // in a stack trace
+ // Assert expections about stack trace
+ assertThat(output).contains("testPrintOpenTransactions(TracingBrokerTest.java:41)");
+ assertThat(output).doesNotContain(TracingBroker.class.getName());
// We don't do any verify/times on the mocks,
// because the main point of the test is just to verify that