Unit tests for ofoverlay
[groupbasedpolicy.git] / renderers / ofoverlay / src / test / java / org / opendaylight / groupbasedpolicy / renderer / ofoverlay / endpoint / OfOverlayAugTest.java
1 /*\r
2  * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 \r
9 package org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint;\r
10 \r
11 import static org.junit.Assert.assertNotNull;\r
12 import static org.junit.Assert.assertNull;\r
13 import static org.mockito.Mockito.mock;\r
14 import static org.mockito.Mockito.when;\r
15 \r
16 import java.util.ArrayList;\r
17 import java.util.List;\r
18 import java.util.Map;\r
19 import java.util.concurrent.ExecutionException;\r
20 \r
21 import org.junit.Before;\r
22 import org.junit.Test;\r
23 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
24 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
25 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
26 import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry;\r
27 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.test.TransactionMockUtils;\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorBuilder;\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.Name;\r
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterEndpointInput;\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterEndpointInputBuilder;\r
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterL3PrefixEndpointInput;\r
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterL3PrefixEndpointInputBuilder;\r
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint;\r
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3;\r
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3Prefix;\r
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContextInput;\r
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContextInputBuilder;\r
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;\r
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodesBuilder;\r
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;\r
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorBuilder;\r
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;\r
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;\r
46 import org.opendaylight.yangtools.yang.binding.Augmentation;\r
47 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
48 \r
49 public class OfOverlayAugTest {\r
50 \r
51     private static final String PORT_NAME = "portName";\r
52     private DataBroker dataProvider;\r
53     private EpRendererAugmentationRegistry epRendererAugmentationRegistry;\r
54     private OfOverlayAug ofOverlayAug;\r
55 \r
56     @Before\r
57     public void init() {\r
58         dataProvider = mock(DataBroker.class);\r
59         epRendererAugmentationRegistry = mock(EpRendererAugmentationRegistry.class);\r
60         ofOverlayAug = new OfOverlayAug(dataProvider, epRendererAugmentationRegistry);\r
61     }\r
62 \r
63     @Test\r
64     public void testConstructor() throws Exception {\r
65         OfOverlayAug other = new OfOverlayAug(dataProvider, epRendererAugmentationRegistry);\r
66         other.close();\r
67     }\r
68 \r
69     @SuppressWarnings("unchecked")\r
70     @Test\r
71     public void testBuildEndpointAugmentation() throws ExecutionException, InterruptedException {\r
72         Nodes nodes = buildNodes();\r
73 \r
74         ReadOnlyTransaction roTx = mock(ReadOnlyTransaction.class);\r
75         TransactionMockUtils.setupRoTx(roTx, LogicalDatastoreType.OPERATIONAL,\r
76                 InstanceIdentifier.builder(Nodes.class).build(), true, nodes);\r
77         when(dataProvider.newReadOnlyTransaction()).thenReturn(roTx);\r
78 \r
79         OfOverlayContextInput contextInput =\r
80                 new OfOverlayContextInputBuilder().setPortName(new Name(PORT_NAME)).build();\r
81 \r
82         RegisterEndpointInput input =\r
83                 new RegisterEndpointInputBuilder().addAugmentation(OfOverlayContextInput.class, contextInput).build();\r
84 \r
85         Map.Entry<Class<? extends Augmentation<Endpoint>>, Augmentation<Endpoint>> entry =\r
86                 ofOverlayAug.buildEndpointAugmentation(input);\r
87 \r
88         assertNotNull(entry);\r
89         assertNotNull(entry.getValue());\r
90     }\r
91 \r
92     @Test\r
93     public void testBuildEndpointAugmentation_null() {\r
94         RegisterEndpointInput input = new RegisterEndpointInputBuilder().build();\r
95 \r
96         Map.Entry<Class<? extends Augmentation<Endpoint>>, Augmentation<Endpoint>> entry =\r
97                 ofOverlayAug.buildEndpointAugmentation(input);\r
98 \r
99         assertNull(entry);\r
100     }\r
101 \r
102     @SuppressWarnings("unchecked")\r
103     @Test\r
104     public void testBuildEndpointL3Augmentation() throws ExecutionException, InterruptedException {\r
105         Nodes nodes = buildNodes();\r
106 \r
107         ReadOnlyTransaction roTx = mock(ReadOnlyTransaction.class);\r
108         TransactionMockUtils.setupRoTx(roTx, LogicalDatastoreType.OPERATIONAL,\r
109                 InstanceIdentifier.builder(Nodes.class).build(), true, nodes);\r
110         when(dataProvider.newReadOnlyTransaction()).thenReturn(roTx);\r
111 \r
112         OfOverlayContextInput contextInput =\r
113                 new OfOverlayContextInputBuilder().setPortName(new Name(PORT_NAME)).build();\r
114 \r
115         RegisterEndpointInput input =\r
116                 new RegisterEndpointInputBuilder().addAugmentation(OfOverlayContextInput.class, contextInput).build();\r
117 \r
118         Map.Entry<Class<? extends Augmentation<EndpointL3>>, Augmentation<EndpointL3>> entry =\r
119                 ofOverlayAug.buildEndpointL3Augmentation(input);\r
120 \r
121         assertNotNull(entry);\r
122         assertNotNull(entry.getValue());\r
123     }\r
124 \r
125     @Test\r
126     public void testBuildEndpointL3Augmentation_null() {\r
127         RegisterEndpointInput input = new RegisterEndpointInputBuilder().build();\r
128 \r
129         Map.Entry<Class<? extends Augmentation<EndpointL3>>, Augmentation<EndpointL3>> entry =\r
130                 ofOverlayAug.buildEndpointL3Augmentation(input);\r
131 \r
132         assertNull(entry);\r
133     }\r
134 \r
135     @Test\r
136     public void testBuildL3PrefixEndpointAugmentation() {\r
137         RegisterL3PrefixEndpointInput input = new RegisterL3PrefixEndpointInputBuilder().build();\r
138         Map.Entry<Class<? extends Augmentation<EndpointL3Prefix>>, Augmentation<EndpointL3Prefix>> entry =\r
139                 ofOverlayAug.buildL3PrefixEndpointAugmentation(input);\r
140 \r
141         // always returns null\r
142         assertNull(entry);\r
143     }\r
144 \r
145     private Nodes buildNodes() {\r
146         FlowCapableNodeConnector fcnc = new FlowCapableNodeConnectorBuilder().setName(PORT_NAME).build();\r
147         NodeConnector nc = new NodeConnectorBuilder().addAugmentation(FlowCapableNodeConnector.class, fcnc).build();\r
148         List<NodeConnector> nodeConnectorList = new ArrayList<>();\r
149         nodeConnectorList.add(nc);\r
150         Node node = new NodeBuilder().setNodeConnector(nodeConnectorList).build();\r
151         List<Node> nodeList = new ArrayList<>();\r
152         nodeList.add(node);\r
153         return new NodesBuilder().setNode(nodeList).build();\r
154     }\r
155 \r
156 }\r