2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
\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
9 package org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint;
\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
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
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
49 public class OfOverlayAugTest {
\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
57 public void init() {
\r
58 dataProvider = mock(DataBroker.class);
\r
59 epRendererAugmentationRegistry = mock(EpRendererAugmentationRegistry.class);
\r
60 ofOverlayAug = new OfOverlayAug(dataProvider, epRendererAugmentationRegistry);
\r
64 public void testConstructor() throws Exception {
\r
65 OfOverlayAug other = new OfOverlayAug(dataProvider, epRendererAugmentationRegistry);
\r
69 @SuppressWarnings("unchecked")
\r
71 public void testBuildEndpointAugmentation() throws ExecutionException, InterruptedException {
\r
72 Nodes nodes = buildNodes();
\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
79 OfOverlayContextInput contextInput =
\r
80 new OfOverlayContextInputBuilder().setPortName(new Name(PORT_NAME)).build();
\r
82 RegisterEndpointInput input =
\r
83 new RegisterEndpointInputBuilder().addAugmentation(OfOverlayContextInput.class, contextInput).build();
\r
85 Map.Entry<Class<? extends Augmentation<Endpoint>>, Augmentation<Endpoint>> entry =
\r
86 ofOverlayAug.buildEndpointAugmentation(input);
\r
88 assertNotNull(entry);
\r
89 assertNotNull(entry.getValue());
\r
93 public void testBuildEndpointAugmentation_null() {
\r
94 RegisterEndpointInput input = new RegisterEndpointInputBuilder().build();
\r
96 Map.Entry<Class<? extends Augmentation<Endpoint>>, Augmentation<Endpoint>> entry =
\r
97 ofOverlayAug.buildEndpointAugmentation(input);
\r
102 @SuppressWarnings("unchecked")
\r
104 public void testBuildEndpointL3Augmentation() throws ExecutionException, InterruptedException {
\r
105 Nodes nodes = buildNodes();
\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
112 OfOverlayContextInput contextInput =
\r
113 new OfOverlayContextInputBuilder().setPortName(new Name(PORT_NAME)).build();
\r
115 RegisterEndpointInput input =
\r
116 new RegisterEndpointInputBuilder().addAugmentation(OfOverlayContextInput.class, contextInput).build();
\r
118 Map.Entry<Class<? extends Augmentation<EndpointL3>>, Augmentation<EndpointL3>> entry =
\r
119 ofOverlayAug.buildEndpointL3Augmentation(input);
\r
121 assertNotNull(entry);
\r
122 assertNotNull(entry.getValue());
\r
126 public void testBuildEndpointL3Augmentation_null() {
\r
127 RegisterEndpointInput input = new RegisterEndpointInputBuilder().build();
\r
129 Map.Entry<Class<? extends Augmentation<EndpointL3>>, Augmentation<EndpointL3>> entry =
\r
130 ofOverlayAug.buildEndpointL3Augmentation(input);
\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
141 // always returns null
\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