/* * 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.domain_extension.l2_l3; import java.util.Arrays; import java.util.Map.Entry; import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.groupbasedpolicy.api.NetworkDomainAugmentorRegistry; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.NetworkDomainId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.SubnetAugmentForwarding; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.SubnetAugmentForwardingBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.SubnetAugmentRenderer; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.has.subnet.SubnetBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.has.subnet.subnet.Gateways; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.has.subnet.subnet.GatewaysBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.has.subnet.subnet.gateways.PrefixesBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.NetworkDomain; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.NetworkDomainBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.forwarding.renderer.forwarding.by.tenant.RendererNetworkDomain; import org.opendaylight.yangtools.yang.binding.Augmentation; @RunWith(MockitoJUnitRunner.class) public class L2L3NetworkDomainAugmentorTest { private static final IpPrefix IP_PREFIX = new IpPrefix(new Ipv4Prefix("1.1.1.1/24")); private static final IpPrefix IP_PREFIX_2 = new IpPrefix(new Ipv4Prefix("2.2.2.2/24")); private static final IpAddress IP_ADDRESS = new IpAddress(new Ipv4Address("1.1.1.1")); private static final IpAddress IP_ADDRESS_2 = new IpAddress(new Ipv4Address("2.2.2.2")); private static final NetworkDomainId NET_DOMAIN = new NetworkDomainId("netDomain1"); @Rule public ExpectedException exception = ExpectedException.none(); @Mock private NetworkDomainAugmentorRegistry networkDomainAugmentorRegistry; private L2L3NetworkDomainAugmentor l2l3Augmentor; @Before public void init() { l2l3Augmentor = new L2L3NetworkDomainAugmentor(networkDomainAugmentorRegistry); } @Test public void testConstructor() { L2L3NetworkDomainAugmentor l2l3NetworkDomainAugmentor = new L2L3NetworkDomainAugmentor(networkDomainAugmentorRegistry); Mockito.verify(networkDomainAugmentorRegistry).register(Mockito.eq(l2l3NetworkDomainAugmentor)); } @Test public void testConstructor_npe_exception() { exception.expect(NullPointerException.class); new L2L3NetworkDomainAugmentor(null); } @Test public void testClose() throws Exception { l2l3Augmentor.close(); Mockito.verify(networkDomainAugmentorRegistry).register(Mockito.eq(l2l3Augmentor)); } @Test public void testBuildRendererNetworkDomainAugmentation() { Gateways gateways = new GatewaysBuilder().setGateway(IP_ADDRESS) .setPrefixes(Arrays.asList(new PrefixesBuilder().setPrefix(IP_PREFIX_2).build())) .build(); SubnetAugmentForwarding subnetAugmentForwarding = new SubnetAugmentForwardingBuilder().setSubnet(new SubnetBuilder().setIpPrefix(IP_PREFIX) .setGateways(Arrays.asList(gateways)) .setVirtualRouterIp(IP_ADDRESS_2) .build()).build(); NetworkDomain networkDomain = new NetworkDomainBuilder() .setNetworkDomainType( org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.NetworkDomain.class) .setNetworkDomainId(NET_DOMAIN) .addAugmentation(SubnetAugmentForwarding.class, subnetAugmentForwarding) .build(); Entry<Class<? extends Augmentation<RendererNetworkDomain>>, Augmentation<RendererNetworkDomain>> rendererNetworkDomainAugmentation = l2l3Augmentor.buildRendererNetworkDomainAugmentation(networkDomain); Assert.assertNotNull(rendererNetworkDomainAugmentation); Assert.assertEquals(SubnetAugmentRenderer.class, rendererNetworkDomainAugmentation.getKey()); Augmentation<RendererNetworkDomain> rendererNetDomainAug = rendererNetworkDomainAugmentation.getValue(); Assert.assertTrue(rendererNetDomainAug instanceof SubnetAugmentRenderer); SubnetAugmentRenderer subnetAugmentRenderer = (SubnetAugmentRenderer) rendererNetDomainAug; Assert.assertEquals(subnetAugmentForwarding.getSubnet(), subnetAugmentRenderer.getSubnet()); } @Test public void testBuildRendererNetworkDomainAugmentation_nullAugmentation() { NetworkDomain networkDomain = new NetworkDomainBuilder() .setNetworkDomainType( org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.NetworkDomain.class) .setNetworkDomainId(NET_DOMAIN) .build(); Entry<Class<? extends Augmentation<RendererNetworkDomain>>, Augmentation<RendererNetworkDomain>> rendererNetworkDomainAugmentation = l2l3Augmentor.buildRendererNetworkDomainAugmentation(networkDomain); Assert.assertNull(rendererNetworkDomainAugmentation); } }