2 * Copyright (c) 2016 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.spi;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertNotNull;
13 import static org.junit.Assert.assertThrows;
14 import static org.junit.Assert.assertTrue;
15 import static org.mockito.Mockito.doReturn;
16 import static org.mockito.Mockito.mock;
17 import static org.mockito.Mockito.reset;
19 import com.google.common.collect.ImmutableList;
20 import com.google.common.collect.ImmutableSet;
21 import java.lang.reflect.Field;
22 import org.junit.Before;
23 import org.junit.Test;
24 import org.opendaylight.yangtools.yang.common.QName;
25 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
26 import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
27 import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
28 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
30 public class RpcRoutingStrategyTest {
32 private static RpcRoutingStrategy rpcRoutingStrategy;
33 private static final QName Q_NAME = QName.create("", "testQname");
34 private static final RpcDefinition RPC_DEFINITION = mock(RpcDefinition.class);
35 private static final DataSchemaNode DATA_SCHEMA_NODE = mock(DataSchemaNode.class);
36 private static final UnknownSchemaNode UNKNOWN_SCHEMA_NODE = mock(UnknownSchemaNode.class);
39 public void setUp() throws Exception {
40 final InputSchemaNode containerSchemaNode = mock(InputSchemaNode.class);
42 doReturn(containerSchemaNode).when(RPC_DEFINITION).getInput();
43 doReturn(ImmutableSet.of(DATA_SCHEMA_NODE)).when(containerSchemaNode).getChildNodes();
44 doReturn(ImmutableList.of(UNKNOWN_SCHEMA_NODE)).when(DATA_SCHEMA_NODE).getUnknownSchemaNodes();
45 doReturn(QName.create("", "testNode")).when(UNKNOWN_SCHEMA_NODE).getNodeType();
46 doReturn(Q_NAME).when(RPC_DEFINITION).getQName();
48 rpcRoutingStrategy = RpcRoutingStrategy.from(RPC_DEFINITION);
49 assertNotNull(rpcRoutingStrategy);
51 assertEquals(Q_NAME, rpcRoutingStrategy.getIdentifier());
52 assertFalse(rpcRoutingStrategy.isContextBasedRouted());
56 public void routedRpcStrategyTest() throws Exception {
57 final Field contextReferenceField = RpcRoutingStrategy.class.getDeclaredField("CONTEXT_REFERENCE");
58 contextReferenceField.setAccessible(true);
60 final QName contextReference = (QName) contextReferenceField.get(rpcRoutingStrategy);
62 reset(UNKNOWN_SCHEMA_NODE);
63 doReturn(contextReference).when(UNKNOWN_SCHEMA_NODE).getNodeType();
64 doReturn(Q_NAME).when(UNKNOWN_SCHEMA_NODE).getQName();
65 doReturn(Q_NAME).when(DATA_SCHEMA_NODE).getQName();
66 rpcRoutingStrategy = RpcRoutingStrategy.from(RPC_DEFINITION);
68 assertNotNull(rpcRoutingStrategy);
70 assertTrue(rpcRoutingStrategy.isContextBasedRouted());
71 assertEquals(Q_NAME, rpcRoutingStrategy.getContext());
72 assertEquals(Q_NAME, rpcRoutingStrategy.getLeaf());
76 public void getLeafTest() throws Exception {
77 assertThrows(UnsupportedOperationException.class, () -> rpcRoutingStrategy.getLeaf());
81 public void getContextTest() {
82 assertThrows(UnsupportedOperationException.class, () -> rpcRoutingStrategy.getContext());