0507325d12536354831f6cd1a5f0432245788352
[groupbasedpolicy.git] / domain-extensions / l2-l3 / src / test / java / org / opendaylight / groupbasedpolicy / domain_extension / l2_l3 / L2L3NetworkDomainAugmentorTest.java
1 package org.opendaylight.groupbasedpolicy.domain_extension.l2_l3;
2
3 import java.util.Arrays;
4 import java.util.Map.Entry;
5
6 import org.junit.Assert;
7 import org.junit.Before;
8 import org.junit.Rule;
9 import org.junit.Test;
10 import org.junit.rules.ExpectedException;
11 import org.junit.runner.RunWith;
12 import org.mockito.Mock;
13 import org.mockito.Mockito;
14 import org.mockito.runners.MockitoJUnitRunner;
15 import org.opendaylight.groupbasedpolicy.api.NetworkDomainAugmentorRegistry;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.NetworkDomainId;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.SubnetAugmentForwarding;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.SubnetAugmentForwardingBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.SubnetAugmentRenderer;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.has.subnet.SubnetBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.has.subnet.subnet.Gateways;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.has.subnet.subnet.GatewaysBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.has.subnet.subnet.gateways.PrefixesBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.NetworkDomain;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.NetworkDomainBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.forwarding.renderer.forwarding.by.tenant.RendererNetworkDomain;
31 import org.opendaylight.yangtools.yang.binding.Augmentation;
32
33 @RunWith(MockitoJUnitRunner.class)
34 public class L2L3NetworkDomainAugmentorTest {
35
36     private static final IpPrefix IP_PREFIX = new IpPrefix(new Ipv4Prefix("1.1.1.1/24"));
37     private static final IpPrefix IP_PREFIX_2 = new IpPrefix(new Ipv4Prefix("2.2.2.2/24"));
38     private static final IpAddress IP_ADDRESS = new IpAddress(new Ipv4Address("1.1.1.1"));
39     private static final IpAddress IP_ADDRESS_2 = new IpAddress(new Ipv4Address("2.2.2.2"));
40     private static final NetworkDomainId NET_DOMAIN = new NetworkDomainId("netDomain1");
41
42     @Rule
43     public ExpectedException exception = ExpectedException.none();
44     @Mock
45     private NetworkDomainAugmentorRegistry networkDomainAugmentorRegistry;
46
47     private L2L3NetworkDomainAugmentor l2l3Augmentor;
48
49     @Before
50     public void init() {
51         l2l3Augmentor = new L2L3NetworkDomainAugmentor(networkDomainAugmentorRegistry);
52     }
53
54     @Test
55     public void testConstructor() {
56         L2L3NetworkDomainAugmentor l2l3NetworkDomainAugmentor =
57                 new L2L3NetworkDomainAugmentor(networkDomainAugmentorRegistry);
58         Mockito.verify(networkDomainAugmentorRegistry).register(Mockito.eq(l2l3NetworkDomainAugmentor));
59     }
60
61     @Test
62     public void testConstructor_npe_exception() {
63         exception.expect(NullPointerException.class);
64         new L2L3NetworkDomainAugmentor(null);
65     }
66
67     @Test
68     public void testClose() throws Exception {
69         l2l3Augmentor.close();
70         Mockito.verify(networkDomainAugmentorRegistry).register(Mockito.eq(l2l3Augmentor));
71     }
72
73     @Test
74     public void testBuildRendererNetworkDomainAugmentation() {
75         Gateways gateways = new GatewaysBuilder().setGateway(IP_ADDRESS)
76             .setPrefixes(Arrays.asList(new PrefixesBuilder().setPrefix(IP_PREFIX_2).build()))
77             .build();
78         SubnetAugmentForwarding subnetAugmentForwarding =
79                 new SubnetAugmentForwardingBuilder().setSubnet(new SubnetBuilder().setIpPrefix(IP_PREFIX)
80                     .setGateways(Arrays.asList(gateways))
81                     .setVirtualRouterIp(IP_ADDRESS_2)
82                     .build()).build();
83         NetworkDomain networkDomain = new NetworkDomainBuilder()
84             .setNetworkDomainType(
85                     org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.NetworkDomain.class)
86             .setNetworkDomainId(NET_DOMAIN)
87             .addAugmentation(SubnetAugmentForwarding.class, subnetAugmentForwarding)
88             .build();
89
90         Entry<Class<? extends Augmentation<RendererNetworkDomain>>, Augmentation<RendererNetworkDomain>> rendererNetworkDomainAugmentation =
91                 l2l3Augmentor.buildRendererNetworkDomainAugmentation(networkDomain);
92
93         Assert.assertNotNull(rendererNetworkDomainAugmentation);
94         Assert.assertEquals(SubnetAugmentRenderer.class, rendererNetworkDomainAugmentation.getKey());
95         Augmentation<RendererNetworkDomain> rendererNetDomainAug = rendererNetworkDomainAugmentation.getValue();
96         Assert.assertTrue(rendererNetDomainAug instanceof SubnetAugmentRenderer);
97         SubnetAugmentRenderer subnetAugmentRenderer = (SubnetAugmentRenderer) rendererNetDomainAug;
98         Assert.assertEquals(subnetAugmentForwarding.getSubnet(), subnetAugmentRenderer.getSubnet());
99     }
100
101     @Test
102     public void testBuildRendererNetworkDomainAugmentation_nullAugmentation() {
103         NetworkDomain networkDomain = new NetworkDomainBuilder()
104             .setNetworkDomainType(
105                     org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.NetworkDomain.class)
106             .setNetworkDomainId(NET_DOMAIN)
107             .build();
108
109         Entry<Class<? extends Augmentation<RendererNetworkDomain>>, Augmentation<RendererNetworkDomain>> rendererNetworkDomainAugmentation =
110                 l2l3Augmentor.buildRendererNetworkDomainAugmentation(networkDomain);
111
112         Assert.assertNull(rendererNetworkDomainAugmentation);
113     }
114
115 }