142b20802c8e470406df079d7a9ee37dbfba6428
[vtn.git] /
1 /**
2  * Copyright (c) 2015 NEC Corporation
3  * All rights reserved.
4  *
5  * This program and the accompanying materials are made available under the
6  * terms of the Eclipse Public License v1.0 which accompanies this
7  * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
8  */
9
10 package org.opendaylight.vtn.manager.internal.inventory;
11
12 import org.junit.Test;
13 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory;
15 import org.opendaylight.vtn.manager.internal.TestBase;
16 import org.mockito.Mockito;
17 import org.opendaylight.vtn.manager.internal.VTNManagerProvider;
18 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
19 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
20 import org.opendaylight.vtn.manager.internal.util.IdentifiedData;
21 import org.opendaylight.vtn.manager.internal.TxQueue;
22 import org.opendaylight.vtn.manager.internal.util.tx.TxQueueImpl;
23 import org.opendaylight.vtn.manager.internal.util.inventory.SalPort;
24 import org.opendaylight.vtn.manager.internal.util.ChangedData;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
28 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
29
30 /**
31  * JUnit test for {@link NodeListener}
32  *
33  * NodeListener test class is to test Listener class listens
34  * the change of MD-SAL nodes or not.
35  */
36
37 public class NodeListenerTest extends TestBase{
38
39     /**
40      * Logger instance.
41      */
42     private static final Logger  LOG = LoggerFactory.getLogger(NodeListenerTest.class);
43     /**
44      * create a mock object for DataBroker class
45      */
46     DataBroker broker = Mockito.mock(DataBroker.class);
47     /**
48      * create a mock object for VTNManagerProvider class
49      */
50     VTNManagerProvider provider = Mockito.mock(VTNManagerProvider.class);
51     /**
52      * create a mock object for FlowCapableNode class
53      */
54     FlowCapableNode fCapableNode = Mockito.mock(FlowCapableNode.class);
55     /**
56      * create a mock object for AsyncDataChangeEvent class
57      */
58     AsyncDataChangeEvent asyncDataChangeEvent = Mockito.mock(AsyncDataChangeEvent.class);
59      /**
60      * create a  object for TxQueue
61      */
62     TxQueue txQueue = new TxQueueImpl("QUEUE1", provider);
63     /**
64      * create a  object for NodeListener
65      */
66     NodeListener nodeListener = new NodeListener(txQueue, broker);
67     /**
68      * create a  object for NodeUpdateTask
69      */
70     NodeUpdateTask nodeUpdateTask = new NodeUpdateTask(LOG);
71     /**
72      * create a  object for InstanceIdentifier
73      */
74     InstanceIdentifier<FlowCapableNode> instanceIdentifier = InstanceIdentifier.builder(Nodes.class).child(Node.class).augmentation(FlowCapableNode.class).build();
75
76     Long nodeId = 100L;
77     Long portId = 200L;
78     /**
79      * create a  object for SalPort
80      */
81     SalPort salPort = new SalPort(nodeId, portId, "port address");
82
83     /**
84      * Test method for
85      * {@link NodeListener#getLogger}.
86      */
87     @Test
88     public void testGetLogger() {
89
90         assertTrue(nodeListener.getLogger() instanceof Logger);
91     }
92
93     /**
94      * Test method for
95      * {@link NodeListener#onRemoved}.
96      */
97     @Test
98     public void testOnRemoved() {
99         try {
100             nodeUpdateTask.addUpdated(instanceIdentifier, salPort);
101             IdentifiedData identifiedData = new IdentifiedData(instanceIdentifier, fCapableNode);
102             nodeListener.onRemoved(nodeUpdateTask, identifiedData);
103         } catch (Exception e) {
104             assertTrue(e instanceof ClassCastException);
105         }
106     }
107
108      /**
109      * Test method for
110      * {@link NodeListener#onUpdated}.
111      */
112     @Test
113     public void testOnUpdated() {
114         try {
115             nodeUpdateTask.addUpdated(instanceIdentifier, salPort);
116             ChangedData changedData = new ChangedData(instanceIdentifier, fCapableNode, fCapableNode);
117             nodeListener.onUpdated(nodeUpdateTask, changedData);
118         } catch (Exception e) {
119             assertTrue(e instanceof Exception);
120         }
121     }
122
123     /**
124      * Test method for
125      * {@link NodeListener#onCreated}.
126      */
127     @Test
128     public void testOnCreated() {
129         try {
130             nodeUpdateTask.addUpdated(instanceIdentifier, salPort);
131             IdentifiedData identifiedData = new IdentifiedData(instanceIdentifier, fCapableNode);
132             nodeListener.onCreated(nodeUpdateTask, identifiedData);
133         } catch (Exception e) {
134             assertTrue(e instanceof ClassCastException);
135         }
136     }
137
138     /**
139      * Test method for
140      * {@link NodeListener#enterEvent}.
141      */
142     @Test
143     public void testEnterEvent() {
144         try {
145             assertTrue(nodeListener.enterEvent(asyncDataChangeEvent) instanceof NodeUpdateTask);
146         } catch (Exception e) {
147             assertTrue(e instanceof Exception);
148         }
149     }
150
151      /**
152      * Test method for
153      * {@link NodeListener#exitEvent}.
154      */
155     @Test
156     public void testExitEvent() {
157
158         try {
159             nodeListener.exitEvent(nodeUpdateTask);
160         } catch (Exception e) {
161             assertTrue(e instanceof Exception);
162         }
163
164         try {
165             nodeUpdateTask.addUpdated(instanceIdentifier, salPort);
166             nodeListener.exitEvent(nodeUpdateTask);
167         } catch (Exception e) {
168             assertTrue(e instanceof Exception);
169         }
170
171     }
172
173     /**
174      * Test method for
175      * {@link NodeListener#getRequiredEvents}.
176      */
177     @Test
178     public void testGetRequiredEvents() {
179
180         nodeListener.getRequiredEvents();
181
182     }
183 }