Changes based on fix of Bug 5137 - Neutron routes
[groupbasedpolicy.git] / neutron-mapper / src / test / java / org / opendaylight / groupbasedpolicy / neutron / mapper / infrastructure / RouterTest.java
1 package org.opendaylight.groupbasedpolicy.neutron.mapper.infrastructure;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertFalse;
5 import static org.junit.Assert.assertNotNull;
6
7 import java.util.Set;
8
9 import org.junit.Test;
10 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
11 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
12 import org.opendaylight.groupbasedpolicy.neutron.mapper.test.GbpDataBrokerTest;
13 import org.opendaylight.groupbasedpolicy.neutron.mapper.test.PolicyAssert;
14 import org.opendaylight.groupbasedpolicy.neutron.mapper.util.MappingUtils;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance;
21
22 public class RouterTest extends GbpDataBrokerTest {
23
24     private static final String IPV4_NAME = "IPv4";
25     private static final String IPV6_NAME = "IPv6";
26     private static final SubjectName ROUTER_SUBJECT_NAME = new SubjectName("ALLOW_IPv4_IPv6");
27     private final String tenantId = "00000000-0000-0000-0000-000000000002";
28
29     @Test
30     public void instantiate() {
31         Router service = new Router();
32         assertNotNull(service);
33     }
34
35     @Test
36     public void testWriteRouterClauseWithConsProvEicIpv4() throws Exception {
37         DataBroker dataBroker = getDataBroker();
38         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
39         String ipv4Prefix = "170.0.0.1/8";
40         Router.writeRouterClauseWithConsProvEic(new TenantId(tenantId), new IpPrefix(new Ipv4Prefix(ipv4Prefix)), rwTx);
41         rwTx.submit().get();
42
43         //expected clause name
44         String clauseNameIpV4 = ROUTER_SUBJECT_NAME.getValue() + MappingUtils.NAME_DOUBLE_DELIMETER + ipv4Prefix;
45         clauseNameIpV4 = clauseNameIpV4.replace('/', '_');
46
47         PolicyAssert.assertClauseExists(dataBroker, tenantId, Router.CONTRACT_ID.getValue(), clauseNameIpV4);
48
49     }
50
51     @Test
52     public void testWriteRouterClauseWithConsProvEicIpv6() throws Exception {
53         DataBroker dataBroker = getDataBroker();
54         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
55         String ipv6Prefix = "2001:0db8:85a3:0000:0000:8a2e:0370:7334/128";
56         Router.writeRouterClauseWithConsProvEic(new TenantId(tenantId), new IpPrefix(new Ipv6Prefix(ipv6Prefix)), rwTx);
57         rwTx.submit().get();
58
59         //expected clause name
60         String clauseNameIpV6 = ROUTER_SUBJECT_NAME.getValue() + MappingUtils.NAME_DOUBLE_DELIMETER + ipv6Prefix;
61         clauseNameIpV6 = clauseNameIpV6.replace('/', '_').replace(':', '.');
62
63         PolicyAssert.assertClauseExists(dataBroker, tenantId, Router.CONTRACT_ID.getValue(), clauseNameIpV6);
64     }
65
66     @Test
67     public void testWriteRouterEntitiesToTenant() throws Exception {
68         //write everything
69         DataBroker dataBroker = getDataBroker();
70         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
71         Router.writeRouterEntitiesToTenant(new TenantId(tenantId), rwTx);
72         rwTx.submit().get();
73
74         //read classifier instances
75         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, IPV4_NAME);
76         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, IPV6_NAME);
77
78         //read contract
79         PolicyAssert.assertContractExists(dataBroker, tenantId, Router.CONTRACT_ID.getValue());
80
81         //read group id
82         PolicyAssert.assertEndpointGroupExists(dataBroker, tenantId, Router.EPG_ID.getValue());
83     }
84
85     @Test
86     public void testGetAllClassifierInstances() {
87         Set<ClassifierInstance> classifierInstances = Router.getAllClassifierInstances();
88         assertNotNull(classifierInstances);
89         assertFalse(classifierInstances.isEmpty());
90         assertEquals(classifierInstances.size(), 2);
91     }
92
93 }