2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.groupbasedpolicy.domain_extension.l2_l3;
10 import java.util.Arrays;
11 import java.util.Map.Entry;
13 import org.junit.Assert;
14 import org.junit.Before;
15 import org.junit.Rule;
16 import org.junit.Test;
17 import org.junit.rules.ExpectedException;
18 import org.junit.runner.RunWith;
19 import org.mockito.Mock;
20 import org.mockito.Mockito;
21 import org.mockito.runners.MockitoJUnitRunner;
22 import org.opendaylight.groupbasedpolicy.api.NetworkDomainAugmentorRegistry;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.NetworkDomainId;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev170511.SubnetAugmentForwarding;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev170511.SubnetAugmentForwardingBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev170511.SubnetAugmentRenderer;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev170511.has.subnet.SubnetBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev170511.has.subnet.subnet.Gateways;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev170511.has.subnet.subnet.GatewaysBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev170511.has.subnet.subnet.gateways.PrefixesBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.NetworkDomain;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.NetworkDomainBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.forwarding.renderer.forwarding.by.tenant.RendererNetworkDomain;
38 import org.opendaylight.yangtools.yang.binding.Augmentation;
40 @RunWith(MockitoJUnitRunner.class)
41 public class L2L3NetworkDomainAugmentorTest {
43 private static final IpPrefix IP_PREFIX = new IpPrefix(new Ipv4Prefix("1.1.1.1/24"));
44 private static final IpPrefix IP_PREFIX_2 = new IpPrefix(new Ipv4Prefix("2.2.2.2/24"));
45 private static final IpAddress IP_ADDRESS = new IpAddress(new Ipv4Address("1.1.1.1"));
46 private static final IpAddress IP_ADDRESS_2 = new IpAddress(new Ipv4Address("2.2.2.2"));
47 private static final NetworkDomainId NET_DOMAIN = new NetworkDomainId("netDomain1");
50 public ExpectedException exception = ExpectedException.none();
52 private NetworkDomainAugmentorRegistry networkDomainAugmentorRegistry;
54 private L2L3NetworkDomainAugmentor l2l3Augmentor;
58 l2l3Augmentor = new L2L3NetworkDomainAugmentor(networkDomainAugmentorRegistry);
62 public void testConstructor() {
63 L2L3NetworkDomainAugmentor l2l3NetworkDomainAugmentor =
64 new L2L3NetworkDomainAugmentor(networkDomainAugmentorRegistry);
65 Mockito.verify(networkDomainAugmentorRegistry).register(Mockito.eq(l2l3NetworkDomainAugmentor));
69 public void testConstructor_npe_exception() {
70 exception.expect(NullPointerException.class);
71 new L2L3NetworkDomainAugmentor(null);
75 public void testClose() throws Exception {
76 l2l3Augmentor.close();
77 Mockito.verify(networkDomainAugmentorRegistry).register(Mockito.eq(l2l3Augmentor));
81 public void testBuildRendererNetworkDomainAugmentation() {
82 Gateways gateways = new GatewaysBuilder().setGateway(IP_ADDRESS)
83 .setPrefixes(Arrays.asList(new PrefixesBuilder().setPrefix(IP_PREFIX_2).build()))
85 SubnetAugmentForwarding subnetAugmentForwarding =
86 new SubnetAugmentForwardingBuilder().setSubnet(new SubnetBuilder().setIpPrefix(IP_PREFIX)
87 .setGateways(Arrays.asList(gateways))
88 .setVirtualRouterIp(IP_ADDRESS_2)
90 NetworkDomain networkDomain = new NetworkDomainBuilder()
91 .setNetworkDomainType(
92 org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.NetworkDomain.class)
93 .setNetworkDomainId(NET_DOMAIN)
94 .addAugmentation(SubnetAugmentForwarding.class, subnetAugmentForwarding)
97 Entry<Class<? extends Augmentation<RendererNetworkDomain>>, Augmentation<RendererNetworkDomain>> rendererNetworkDomainAugmentation =
98 l2l3Augmentor.buildRendererNetworkDomainAugmentation(networkDomain);
100 Assert.assertNotNull(rendererNetworkDomainAugmentation);
101 Assert.assertEquals(SubnetAugmentRenderer.class, rendererNetworkDomainAugmentation.getKey());
102 Augmentation<RendererNetworkDomain> rendererNetDomainAug = rendererNetworkDomainAugmentation.getValue();
103 Assert.assertTrue(rendererNetDomainAug instanceof SubnetAugmentRenderer);
104 SubnetAugmentRenderer subnetAugmentRenderer = (SubnetAugmentRenderer) rendererNetDomainAug;
105 Assert.assertEquals(subnetAugmentForwarding.getSubnet(), subnetAugmentRenderer.getSubnet());
109 public void testBuildRendererNetworkDomainAugmentation_nullAugmentation() {
110 NetworkDomain networkDomain = new NetworkDomainBuilder()
111 .setNetworkDomainType(
112 org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.NetworkDomain.class)
113 .setNetworkDomainId(NET_DOMAIN)
116 Entry<Class<? extends Augmentation<RendererNetworkDomain>>, Augmentation<RendererNetworkDomain>> rendererNetworkDomainAugmentation =
117 l2l3Augmentor.buildRendererNetworkDomainAugmentation(networkDomain);
119 Assert.assertNull(rendererNetworkDomainAugmentation);