X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fmdsal-trace%2Fdom-impl%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Ftrace%2Ftests%2FTracingBrokerTest.java;h=0a0d7b3a64612c13d9cd7ea0d8888f78f4e2ca0d;hp=3179b2a20d5957a6fe6cfa7de3b7890c9a7a4b81;hb=aaea3e9a92ae9d6fac04c4a065db4b35cbca9ed0;hpb=fdb974a6521e280793cf4b22d085acafb0dae036 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 3179b2a20d..0a0d7b3a64 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 @@ -9,12 +9,14 @@ package org.opendaylight.controller.md.sal.trace.tests; import static com.google.common.truth.Truth.assertThat; import static java.nio.charset.StandardCharsets.UTF_8; +import static java.util.Collections.singletonList; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import org.junit.Test; +import org.opendaylight.controller.md.sal.binding.test.DataBrokerTestModule; import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain; @@ -28,30 +30,61 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsaltra * * @author Michael Vorburger.ch */ +@Deprecated public class TracingBrokerTest { + @Test + public void testEnd2End() { + DataBrokerTestModule wiring = new DataBrokerTestModule(true); + wiring.getDataBroker(); // required so DataBrokerTestModule creates the DOMDataBroker + DOMDataBroker realDomBroker = wiring.getDOMDataBroker(); + TracingBroker tracingDomBroker = new TracingBroker("Test", realDomBroker, new ConfigBuilder() + // CONTROLLER-1877: configure it like the default/initial mdsaltrace_config.xml in mdsal-trace-api + .setTransactionDebugContextEnabled(true) + .setWriteWatches(singletonList("/this/will/never/exist")) + .setRegistrationWatches(singletonList("/this/will/never/exist")) + .build(), + wiring.getBindingToNormalizedNodeCodec()); + tracingDomBroker.newWriteOnlyTransaction().cancel(); + } + @Test @SuppressWarnings({ "resource", "unused" }) // Finding resource leaks is the point of this test public void testPrintOpenTransactions() { DOMDataBroker domDataBroker = mock(DOMDataBroker.class, RETURNS_DEEP_STUBS); Config config = new ConfigBuilder().setTransactionDebugContextEnabled(true).build(); BindingNormalizedNodeSerializer codec = mock(BindingNormalizedNodeSerializer.class); - TracingBroker tracingBroker = new TracingBroker(domDataBroker, config, codec); + TracingBroker tracingBroker = new TracingBroker("mock", domDataBroker, config, codec); + + for (int i = 0; i < 3; i++) { + DOMDataReadWriteTransaction tx = tracingBroker.newReadWriteTransaction(); + } + DOMDataReadWriteTransaction anotherTx = tracingBroker.newReadWriteTransaction(); - DOMDataReadWriteTransaction tx = tracingBroker.newReadWriteTransaction(); DOMTransactionChain txChain = tracingBroker.createTransactionChain(null); DOMDataReadWriteTransaction txFromChain = txChain.newReadWriteTransaction(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(baos); - boolean printReturnValue = tracingBroker.printOpenTransactions(ps); + boolean printReturnValue = tracingBroker.printOpenTransactions(ps, 1); String output = new String(baos.toByteArray(), UTF_8); assertThat(printReturnValue).isTrue(); - // Assert expections about stack trace - assertThat(output).contains("testPrintOpenTransactions(TracingBrokerTest.java:41)"); + // Assert expectations about stack trace + assertThat(output).contains("testPrintOpenTransactions(TracingBrokerTest.java"); assertThat(output).doesNotContain(TracingBroker.class.getName()); + String previousLine = ""; + for (String line : output.split("\n")) { + if (line.contains("(...")) { + assertThat(previousLine.contains("(...)")).isFalse(); + } + 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