/* * 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.groupbasedpolicy.renderer.ofoverlay.endpoint; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; import org.junit.Before; import org.junit.Test; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry; import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.test.TransactionMockUtils; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.Name; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterEndpointInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterEndpointInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterL3PrefixEndpointInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterL3PrefixEndpointInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3Prefix; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContextInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContextInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodesBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder; import org.opendaylight.yangtools.yang.binding.Augmentation; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; public class OfOverlayAugTest { private static final String PORT_NAME = "portName"; private DataBroker dataProvider; private EpRendererAugmentationRegistry epRendererAugmentationRegistry; private OfOverlayAug ofOverlayAug; @Before public void init() { dataProvider = mock(DataBroker.class); epRendererAugmentationRegistry = mock(EpRendererAugmentationRegistry.class); ofOverlayAug = new OfOverlayAug(dataProvider, epRendererAugmentationRegistry); } @Test public void testConstructor() throws Exception { OfOverlayAug other = new OfOverlayAug(dataProvider, epRendererAugmentationRegistry); other.close(); } @SuppressWarnings("unchecked") @Test public void testBuildEndpointAugmentation() throws ExecutionException, InterruptedException { Nodes nodes = buildNodes(); ReadOnlyTransaction roTx = mock(ReadOnlyTransaction.class); TransactionMockUtils.setupRoTx(roTx, LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.builder(Nodes.class).build(), true, nodes); when(dataProvider.newReadOnlyTransaction()).thenReturn(roTx); OfOverlayContextInput contextInput = new OfOverlayContextInputBuilder().setPortName(new Name(PORT_NAME)).build(); RegisterEndpointInput input = new RegisterEndpointInputBuilder().addAugmentation(OfOverlayContextInput.class, contextInput).build(); Map.Entry<Class<? extends Augmentation<Endpoint>>, Augmentation<Endpoint>> entry = ofOverlayAug.buildEndpointAugmentation(input); assertNotNull(entry); assertNotNull(entry.getValue()); } @Test public void testBuildEndpointAugmentation_null() { RegisterEndpointInput input = new RegisterEndpointInputBuilder().build(); Map.Entry<Class<? extends Augmentation<Endpoint>>, Augmentation<Endpoint>> entry = ofOverlayAug.buildEndpointAugmentation(input); assertNull(entry); } @SuppressWarnings("unchecked") @Test public void testBuildEndpointL3Augmentation() throws ExecutionException, InterruptedException { Nodes nodes = buildNodes(); ReadOnlyTransaction roTx = mock(ReadOnlyTransaction.class); TransactionMockUtils.setupRoTx(roTx, LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.builder(Nodes.class).build(), true, nodes); when(dataProvider.newReadOnlyTransaction()).thenReturn(roTx); OfOverlayContextInput contextInput = new OfOverlayContextInputBuilder().setPortName(new Name(PORT_NAME)).build(); RegisterEndpointInput input = new RegisterEndpointInputBuilder().addAugmentation(OfOverlayContextInput.class, contextInput).build(); Map.Entry<Class<? extends Augmentation<EndpointL3>>, Augmentation<EndpointL3>> entry = ofOverlayAug.buildEndpointL3Augmentation(input); assertNotNull(entry); assertNotNull(entry.getValue()); } @Test public void testBuildEndpointL3Augmentation_null() { RegisterEndpointInput input = new RegisterEndpointInputBuilder().build(); Map.Entry<Class<? extends Augmentation<EndpointL3>>, Augmentation<EndpointL3>> entry = ofOverlayAug.buildEndpointL3Augmentation(input); assertNull(entry); } @Test public void testBuildL3PrefixEndpointAugmentation() { RegisterL3PrefixEndpointInput input = new RegisterL3PrefixEndpointInputBuilder().build(); Map.Entry<Class<? extends Augmentation<EndpointL3Prefix>>, Augmentation<EndpointL3Prefix>> entry = ofOverlayAug.buildL3PrefixEndpointAugmentation(input); // always returns null assertNull(entry); } private Nodes buildNodes() { FlowCapableNodeConnector fcnc = new FlowCapableNodeConnectorBuilder().setName(PORT_NAME).build(); NodeConnector nc = new NodeConnectorBuilder().addAugmentation(FlowCapableNodeConnector.class, fcnc).build(); List<NodeConnector> nodeConnectorList = new ArrayList<>(); nodeConnectorList.add(nc); Node node = new NodeBuilder().setNodeConnector(nodeConnectorList).build(); List<Node> nodeList = new ArrayList<>(); nodeList.add(node); return new NodesBuilder().setNode(nodeList).build(); } }