2 * Copyright (c) 2016, 2017 Cisco Systems, 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.mdsal.dom.broker;
10 import static org.junit.Assert.assertFalse;
11 import static org.junit.Assert.assertNotEquals;
12 import static org.junit.Assert.assertNotNull;
13 import static org.junit.Assert.assertTrue;
14 import static org.mockito.Mockito.mock;
16 import java.util.Collection;
17 import java.util.concurrent.RejectedExecutionException;
18 import org.junit.Test;
19 import org.opendaylight.mdsal.dom.api.DOMRpcAvailabilityListener;
20 import org.opendaylight.mdsal.dom.api.DOMRpcIdentifier;
21 import org.opendaylight.mdsal.dom.broker.util.TestModel;
22 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
24 public class DOMRpcRouterTest extends TestUtils {
27 public void registerRpcImplementation() {
28 try (DOMRpcRouter rpcRouter = new DOMRpcRouter()) {
29 DOMRpcRoutingTable routingTable = rpcRouter.routingTable();
30 assertFalse(routingTable.getOperations().containsKey(SchemaPath.ROOT));
32 rpcRouter.getRpcProviderService().registerRpcImplementation(getTestRpcImplementation(),
33 DOMRpcIdentifier.create(SchemaPath.ROOT, null));
34 routingTable = rpcRouter.routingTable();
35 assertTrue(routingTable.getOperations().containsKey(SchemaPath.ROOT));
37 rpcRouter.getRpcProviderService().registerRpcImplementation(getTestRpcImplementation(),
38 DOMRpcIdentifier.create(SchemaPath.SAME, null));
39 routingTable = rpcRouter.routingTable();
40 assertTrue(routingTable.getOperations().containsKey(SchemaPath.SAME));
45 public void invokeRpc() {
46 try (DOMRpcRouter rpcRouter = new DOMRpcRouter()) {
47 assertNotNull(rpcRouter.getRpcService().invokeRpc(SchemaPath.create(false, TestModel.TEST_QNAME), null));
52 public void registerRpcListener() {
53 try (DOMRpcRouter rpcRouter = new DOMRpcRouter()) {
54 final DOMRpcAvailabilityListener listener = mock(DOMRpcAvailabilityListener.class);
56 final Collection<?> listenersOriginal = rpcRouter.listeners();
58 assertNotNull(rpcRouter.getRpcService().registerRpcListener(listener));
60 final Collection<?> listenersChanged = rpcRouter.listeners();
61 assertNotEquals(listenersOriginal, listenersChanged);
62 assertTrue(listenersOriginal.isEmpty());
63 assertFalse(listenersChanged.isEmpty());
68 public void onGlobalContextUpdated() {
69 try (DOMRpcRouter rpcRouter = new DOMRpcRouter()) {
71 final DOMRpcRoutingTable routingTableOriginal = rpcRouter.routingTable();
73 rpcRouter.onModelContextUpdated(TestModel.createTestContext());
75 final DOMRpcRoutingTable routingTableChanged = rpcRouter.routingTable();
76 assertNotEquals(routingTableOriginal, routingTableChanged);
80 @Test(expected = RejectedExecutionException.class)
82 final DOMRpcRouter rpcRouter = new DOMRpcRouter();
84 rpcRouter.getRpcProviderService().registerRpcImplementation(getTestRpcImplementation(),
85 DOMRpcIdentifier.create(SchemaPath.ROOT, null));