+++ /dev/null
-/*
- * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.netconf.impl.osgi;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.verify;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.opendaylight.netconf.api.DocumentedException;
-import org.opendaylight.netconf.api.xml.XmlUtil;
-import org.opendaylight.netconf.mapping.api.HandlingPriority;
-import org.opendaylight.netconf.mapping.api.NetconfOperation;
-import org.opendaylight.netconf.mapping.api.NetconfOperationChainedExecution;
-import org.opendaylight.netconf.mapping.api.NetconfOperationService;
-import org.w3c.dom.Document;
-import org.xml.sax.SAXException;
-
-public class NetconfOperationRouterImplTest {
-
- private static final String TEST_RPC = "<rpc message-id=\"101\" "
- + "xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"><test/></rpc>\n";
- private static final String MAX_PRIORITY_REPLY = "<high/>";
- private static final String DEFAULT_PRIORITY_REPLY = "<default/>";
-
- private static Document TEST_RPC_DOC;
-
- @Mock
- private NetconfOperationService operationService;
- @Mock
- private NetconfOperationService operationService2;
- @Mock
- private NetconfOperation maxPrioMock;
- @Mock
- private NetconfOperation defaultPrioMock;
-
- private NetconfOperationRouterImpl operationRouter;
- private NetconfOperationRouterImpl emptyOperationRouter;
-
- @BeforeClass
- public static void suiteSetUp() throws IOException, SAXException {
- TEST_RPC_DOC = XmlUtil.readXmlToDocument(TEST_RPC);
- }
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
-
- doReturn(HandlingPriority.HANDLE_WITH_MAX_PRIORITY).when(maxPrioMock).canHandle(any(Document.class));
- doReturn(XmlUtil.readXmlToDocument(MAX_PRIORITY_REPLY)).when(maxPrioMock).handle(any(Document.class),
- any(NetconfOperationChainedExecution.class));
-
- doReturn(HandlingPriority.HANDLE_WITH_DEFAULT_PRIORITY).when(defaultPrioMock).canHandle(any(Document.class));
- doReturn(XmlUtil.readXmlToDocument(DEFAULT_PRIORITY_REPLY)).when(defaultPrioMock).handle(any(Document.class),
- any(NetconfOperationChainedExecution.class));
-
- final Set<NetconfOperation> operations = new HashSet<>();
- operations.add(maxPrioMock);
- operations.add(defaultPrioMock);
- doReturn(operations).when(operationService).getNetconfOperations();
- doNothing().when(operationService).close();
-
- operationRouter = new NetconfOperationRouterImpl(operationService, null, "session-1");
- doReturn(Collections.EMPTY_SET).when(operationService2).getNetconfOperations();
- emptyOperationRouter = new NetconfOperationRouterImpl(operationService2, null, "session-1");
- }
-
- @Test
- public void testOnNetconfMessage() throws Exception {
- final ArgumentCaptor<NetconfOperationChainedExecution> highPriorityChainEx =
- ArgumentCaptor.forClass(NetconfOperationChainedExecution.class);
- final ArgumentCaptor<NetconfOperationChainedExecution> defaultPriorityChainEx =
- ArgumentCaptor.forClass(NetconfOperationChainedExecution.class);
-
- final Document document = operationRouter.onNetconfMessage(TEST_RPC_DOC, null);
-
- //max priority message is first in chain
- verify(maxPrioMock).handle(any(Document.class), highPriorityChainEx.capture());
- final NetconfOperationChainedExecution chainedExecution = highPriorityChainEx.getValue();
- Assert.assertFalse(chainedExecution.isExecutionTermination());
-
- //execute next in chain
- final Document execute = chainedExecution.execute(XmlUtil.newDocument());
- Assert.assertEquals(DEFAULT_PRIORITY_REPLY, XmlUtil.toString(execute).trim());
-
- //default priority message is second and last
- verify(defaultPrioMock).handle(any(Document.class), defaultPriorityChainEx.capture());
- Assert.assertTrue(defaultPriorityChainEx.getValue().isExecutionTermination());
-
- Assert.assertEquals(MAX_PRIORITY_REPLY, XmlUtil.toString(document).trim());
- }
-
- @Test
- public void testOnNetconfMessageFail() throws Exception {
- try {
- emptyOperationRouter.onNetconfMessage(TEST_RPC_DOC, null);
- Assert.fail("Exception expected");
- } catch (final DocumentedException e) {
- Assert.assertEquals(e.getErrorTag(), DocumentedException.ErrorTag.OPERATION_NOT_SUPPORTED);
- }
- }
-
- @Test
- public void testClose() throws Exception {
- operationRouter.close();
- verify(operationService).close();
- }
-
-}