From: Michael Vorburger Date: Mon, 28 May 2018 11:56:34 +0000 (+0200) Subject: sort by descending number of suspected transaction leaks in trace output X-Git-Tag: release/fluorine~97 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=bd11e415d86b815a30e3559e199f1ad4637bd02b sort by descending number of suspected transaction leaks in trace output Change-Id: I7b780c3df72f87f6f1e693e9ec995a8f48da5c3b Signed-off-by: Michael Vorburger --- diff --git a/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingBroker.java b/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingBroker.java index 02e65e7754..9d966082ac 100644 --- a/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingBroker.java +++ b/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/dom/impl/TracingBroker.java @@ -410,7 +410,11 @@ public class TracingBroker implements TracingDOMDataBroker { private > void printRegistryOpenTransactions( CloseTrackedRegistry registry, PrintStream ps, String indent) { - Set> entries = registry.getAllUnique(); + Set> unsorted = registry.getAllUnique(); + + List> entries = new ArrayList<>(unsorted); + entries.sort((o1, o2) -> Long.compare(o2.getNumberAddedNotRemoved(), o1.getNumberAddedNotRemoved())); + if (!entries.isEmpty()) { ps.println(indent + registry.getAnchor() + " : " + registry.getCreateDescription()); } diff --git a/opendaylight/md-sal/mdsal-trace/dom-impl/src/test/java/org/opendaylight/controller/md/sal/trace/tests/TracingBrokerTest.java b/opendaylight/md-sal/mdsal-trace/dom-impl/src/test/java/org/opendaylight/controller/md/sal/trace/tests/TracingBrokerTest.java index 63629f6c8c..d0731da038 100644 --- a/opendaylight/md-sal/mdsal-trace/dom-impl/src/test/java/org/opendaylight/controller/md/sal/trace/tests/TracingBrokerTest.java +++ b/opendaylight/md-sal/mdsal-trace/dom-impl/src/test/java/org/opendaylight/controller/md/sal/trace/tests/TracingBrokerTest.java @@ -38,7 +38,11 @@ public class TracingBrokerTest { BindingNormalizedNodeSerializer codec = mock(BindingNormalizedNodeSerializer.class); TracingBroker tracingBroker = new TracingBroker(domDataBroker, config, codec); - DOMDataReadWriteTransaction tx = tracingBroker.newReadWriteTransaction(); + for (int i = 0; i < 3; i++) { + DOMDataReadWriteTransaction tx = tracingBroker.newReadWriteTransaction(); + } + DOMDataReadWriteTransaction anotherTx = tracingBroker.newReadWriteTransaction(); + DOMTransactionChain txChain = tracingBroker.createTransactionChain(null); DOMDataReadWriteTransaction txFromChain = txChain.newReadWriteTransaction(); @@ -48,7 +52,7 @@ public class TracingBrokerTest { String output = new String(baos.toByteArray(), UTF_8); assertThat(printReturnValue).isTrue(); - // Assert expections about stack trace + // Assert expectations about stack trace assertThat(output).contains("testPrintOpenTransactions(TracingBrokerTest.java"); assertThat(output).doesNotContain(TracingBroker.class.getName()); @@ -60,6 +64,9 @@ public class TracingBrokerTest { previousLine = line; } + // assert that the sorting works - the x3 is shown before the x1 + assertThat(output).contains(" DataBroker : newReadWriteTransaction()\n 3x"); + // We don't do any verify/times on the mocks, // because the main point of the test is just to verify that // printOpenTransactions runs through without any exceptions