Make DOMSchemaService operate of EffectiveModelContext
[mdsal.git] / dom / mdsal-dom-broker / src / test / java / org / opendaylight / mdsal / dom / broker / DOMRpcRouterTest.java
1 /*
2  * Copyright (c) 2016, 2017 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.mdsal.dom.broker;
9
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;
15
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;
23
24 public class DOMRpcRouterTest extends TestUtils {
25
26     @Test
27     public void registerRpcImplementation() {
28         try (DOMRpcRouter rpcRouter = new DOMRpcRouter()) {
29             DOMRpcRoutingTable routingTable = rpcRouter.routingTable();
30             assertFalse(routingTable.getOperations().containsKey(SchemaPath.ROOT));
31
32             rpcRouter.getRpcProviderService().registerRpcImplementation(getTestRpcImplementation(),
33                 DOMRpcIdentifier.create(SchemaPath.ROOT, null));
34             routingTable = rpcRouter.routingTable();
35             assertTrue(routingTable.getOperations().containsKey(SchemaPath.ROOT));
36
37             rpcRouter.getRpcProviderService().registerRpcImplementation(getTestRpcImplementation(),
38                 DOMRpcIdentifier.create(SchemaPath.SAME, null));
39             routingTable = rpcRouter.routingTable();
40             assertTrue(routingTable.getOperations().containsKey(SchemaPath.SAME));
41         }
42     }
43
44     @Test
45     public void invokeRpc() {
46         try (DOMRpcRouter rpcRouter = new DOMRpcRouter()) {
47             assertNotNull(rpcRouter.getRpcService().invokeRpc(SchemaPath.create(false, TestModel.TEST_QNAME), null));
48         }
49     }
50
51     @Test
52     public void registerRpcListener() {
53         try (DOMRpcRouter rpcRouter = new DOMRpcRouter()) {
54             final DOMRpcAvailabilityListener listener = mock(DOMRpcAvailabilityListener.class);
55
56             final Collection<?> listenersOriginal = rpcRouter.listeners();
57
58             assertNotNull(rpcRouter.getRpcService().registerRpcListener(listener));
59
60             final Collection<?> listenersChanged = rpcRouter.listeners();
61             assertNotEquals(listenersOriginal, listenersChanged);
62             assertTrue(listenersOriginal.isEmpty());
63             assertFalse(listenersChanged.isEmpty());
64         }
65     }
66
67     @Test
68     public void onGlobalContextUpdated() {
69         try (DOMRpcRouter rpcRouter = new DOMRpcRouter()) {
70
71             final DOMRpcRoutingTable routingTableOriginal = rpcRouter.routingTable();
72
73             rpcRouter.onModelContextUpdated(TestModel.createTestContext());
74
75             final DOMRpcRoutingTable routingTableChanged = rpcRouter.routingTable();
76             assertNotEquals(routingTableOriginal, routingTableChanged);
77         }
78     }
79
80     @Test(expected = RejectedExecutionException.class)
81     public void close() {
82         final DOMRpcRouter rpcRouter = new DOMRpcRouter();
83         rpcRouter.close();
84         rpcRouter.getRpcProviderService().registerRpcImplementation(getTestRpcImplementation(),
85             DOMRpcIdentifier.create(SchemaPath.ROOT, null));
86     }
87 }