2 * Copyright (c) 2017 Red Hat, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.md.sal.trace.tests;
10 import static com.google.common.truth.Truth.assertThat;
11 import static java.nio.charset.StandardCharsets.UTF_8;
12 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
13 import static org.mockito.Mockito.mock;
15 import java.io.ByteArrayOutputStream;
16 import java.io.PrintStream;
17 import org.junit.Test;
18 import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
19 import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction;
20 import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain;
21 import org.opendaylight.controller.md.sal.trace.dom.impl.TracingBroker;
22 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsaltrace.rev160908.Config;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsaltrace.rev160908.ConfigBuilder;
27 * Test of {@link TracingBroker}.
29 * @author Michael Vorburger.ch
31 public class TracingBrokerTest {
34 @SuppressWarnings({ "resource", "unused" }) // Finding resource leaks is the point of this test
35 public void testPrintOpenTransactions() {
36 DOMDataBroker domDataBroker = mock(DOMDataBroker.class, RETURNS_DEEP_STUBS);
37 Config config = new ConfigBuilder().setTransactionDebugContextEnabled(true).build();
38 BindingNormalizedNodeSerializer codec = mock(BindingNormalizedNodeSerializer.class);
39 TracingBroker tracingBroker = new TracingBroker(domDataBroker, config, codec);
41 DOMDataReadWriteTransaction tx = tracingBroker.newReadWriteTransaction();
42 DOMTransactionChain txChain = tracingBroker.createTransactionChain(null);
43 DOMDataReadWriteTransaction txFromChain = txChain.newReadWriteTransaction();
45 ByteArrayOutputStream baos = new ByteArrayOutputStream();
46 PrintStream ps = new PrintStream(baos);
47 boolean printReturnValue = tracingBroker.printOpenTransactions(ps);
48 String output = new String(baos.toByteArray(), UTF_8);
50 assertThat(printReturnValue).isTrue();
51 // Assert expections about stack trace
52 assertThat(output).contains("testPrintOpenTransactions(TracingBrokerTest.java:41)");
53 assertThat(output).doesNotContain(TracingBroker.class.getName());
55 // We don't do any verify/times on the mocks,
56 // because the main point of the test is just to verify that
57 // printOpenTransactions runs through without any exceptions
58 // (e.g. it used to have a ClassCastException).