apply checkstyle check during build for domain-extensions
[groupbasedpolicy.git] / domain-extensions / l2-l3 / src / test / java / org / opendaylight / groupbasedpolicy / domain_extension / l2_l3 / L2L3NetworkDomainAugmentorTest.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.groupbasedpolicy.domain_extension.l2_l3;
9
10 import java.util.Collections;
11 import java.util.Map.Entry;
12
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;
39
40 @RunWith(MockitoJUnitRunner.class)
41 public class L2L3NetworkDomainAugmentorTest {
42
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");
48
49     @Rule
50     public ExpectedException exception = ExpectedException.none();
51     @Mock
52     private NetworkDomainAugmentorRegistry networkDomainAugmentorRegistry;
53
54     private L2L3NetworkDomainAugmentor l2l3Augmentor;
55
56     @Before
57     public void init() {
58         l2l3Augmentor = new L2L3NetworkDomainAugmentor(networkDomainAugmentorRegistry);
59     }
60
61     @Test
62     public void testConstructor() {
63         L2L3NetworkDomainAugmentor l2l3NetworkDomainAugmentor =
64                 new L2L3NetworkDomainAugmentor(networkDomainAugmentorRegistry);
65         Mockito.verify(networkDomainAugmentorRegistry).register(Mockito.eq(l2l3NetworkDomainAugmentor));
66     }
67
68     @Test
69     public void testConstructor_npe_exception() {
70         exception.expect(NullPointerException.class);
71         new L2L3NetworkDomainAugmentor(null);
72     }
73
74     @Test
75     public void testClose() throws Exception {
76         l2l3Augmentor.close();
77         Mockito.verify(networkDomainAugmentorRegistry).register(Mockito.eq(l2l3Augmentor));
78     }
79
80     @Test
81     public void testBuildRendererNetworkDomainAugmentation() {
82         Gateways gateways = new GatewaysBuilder().setGateway(IP_ADDRESS)
83             .setPrefixes(Collections.singletonList(new PrefixesBuilder().setPrefix(IP_PREFIX_2).build()))
84             .build();
85         SubnetAugmentForwarding subnetAugmentForwarding =
86                 new SubnetAugmentForwardingBuilder().setSubnet(new SubnetBuilder().setIpPrefix(IP_PREFIX)
87                     .setGateways(Collections.singletonList(gateways))
88                     .setVirtualRouterIp(IP_ADDRESS_2)
89                     .build()).build();
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)
95             .build();
96
97         Entry<Class<? extends Augmentation<RendererNetworkDomain>>, Augmentation<RendererNetworkDomain>>
98             rendererNetworkDomainAugmentation =
99                 l2l3Augmentor.buildRendererNetworkDomainAugmentation(networkDomain);
100
101         Assert.assertNotNull(rendererNetworkDomainAugmentation);
102         Assert.assertEquals(SubnetAugmentRenderer.class, rendererNetworkDomainAugmentation.getKey());
103         Augmentation<RendererNetworkDomain> rendererNetDomainAug = rendererNetworkDomainAugmentation.getValue();
104         Assert.assertTrue(rendererNetDomainAug instanceof SubnetAugmentRenderer);
105         SubnetAugmentRenderer subnetAugmentRenderer = (SubnetAugmentRenderer) rendererNetDomainAug;
106         Assert.assertEquals(subnetAugmentForwarding.getSubnet(), subnetAugmentRenderer.getSubnet());
107     }
108
109     @Test
110     public void testBuildRendererNetworkDomainAugmentation_nullAugmentation() {
111         NetworkDomain networkDomain = new NetworkDomainBuilder()
112             .setNetworkDomainType(
113                 org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.NetworkDomain.class)
114             .setNetworkDomainId(NET_DOMAIN)
115             .build();
116
117         Entry<Class<? extends Augmentation<RendererNetworkDomain>>, Augmentation<RendererNetworkDomain>>
118             rendererNetworkDomainAugmentation =
119                 l2l3Augmentor.buildRendererNetworkDomainAugmentation(networkDomain);
120
121         Assert.assertNull(rendererNetworkDomainAugmentation);
122     }
123
124 }