a7bb536f8d214c0f5082d3c08a200767032e9fae
[groupbasedpolicy.git] / neutron-mapper / src / test / java / org / opendaylight / groupbasedpolicy / neutron / mapper / infrastructure / NetworkServiceTest.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 import java.util.concurrent.ExecutionException;
9
10 import org.junit.Test;
11 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
12 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
13 import org.opendaylight.groupbasedpolicy.neutron.mapper.test.GbpDataBrokerTest;
14 import org.opendaylight.groupbasedpolicy.neutron.mapper.test.PolicyAssert;
15 import org.opendaylight.groupbasedpolicy.neutron.mapper.util.MappingUtils;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance;
22
23 public class NetworkServiceTest extends GbpDataBrokerTest {
24
25     //dhcp
26     private static final SubjectName DHCP_SUBJECT_NAME = new SubjectName("ALLOW_DHCP");
27     private static final String DHCP_IPV4_CLIENT_SERVER_NAME = "DHCP_IPv4_FROM_CLIENT_TO_SERVER";
28     private static final String DHCP_IPV4_SERVER_CLIENT_NAME = "DHCP_IPv4_FROM_SERVER_TO_CLIENT";
29     private static final String DHCP_IPV6_CLIENT_SERVER_NAME = "DHCP_IPv6_FROM_CLIENT_TO_SERVER";
30     private static final String DHCP_IPV6_SERVER_CLIENT_NAME = "DHCP_IPv6_FROM_SERVER_TO_CLIENT";
31
32     //dns
33     private static final SubjectName DNS_SUBJECT_NAME = new SubjectName("ALLOW_DNS");
34     private static final String DNS_UDP_IPV4_CLIENT_SERVER_NAME = "DNS_UDP_IPv4_FROM_CLIENT_TO_SERVER";
35     private static final String DNS_UDP_IPV4_SERVER_CLIENT_NAME = "DNS_UDP_IPv4_FROM_SERVER_TO_CLIENT";
36     private static final String DNS_UDP_IPV6_CLIENT_SERVER_NAME = "DNS_UDP_IPv6_FROM_CLIENT_TO_SERVER";
37     private static final String DNS_UDP_IPV6_SERVER_CLIENT_NAME = "DNS_UDP_IPv6_FROM_SERVER_TO_CLIENT";
38     private static final String DNS_TCP_IPV4_CLIENT_SERVER_NAME = "DNS_TCP_IPv4_FROM_CLIENT_TO_SERVER";
39     private static final String DNS_TCP_IPV4_SERVER_CLIENT_NAME = "DNS_TCP_IPv4_FROM_SERVER_TO_CLIENT";
40     private static final String DNS_TCP_IPV6_CLIENT_SERVER_NAME = "DNS_TCP_IPv6_FROM_CLIENT_TO_SERVER";
41     private static final String DNS_TCP_IPV6_SERVER_CLIENT_NAME = "DNS_TCP_IPv6_FROM_SERVER_TO_CLIENT";
42
43     private final String tenantId = "00000000-0000-0000-0000-000000000001";
44     private final IpPrefix ipv4Prefix = new IpPrefix(new Ipv4Prefix("170.0.0.1/8"));
45     private final IpPrefix ipv6Prefix = new IpPrefix(new Ipv6Prefix("2001:0db8:85a3:0000:0000:8a2e:0370:7334/128"));
46
47     @Test
48     public void instantiate() {
49         NetworkService service = new NetworkService();
50         assertNotNull(service);
51     }
52
53     @Test
54     public void testWriteDhcpClauseWithConsProvEicIpv4() throws Exception {
55         DataBroker dataBroker = getDataBroker();
56         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
57         NetworkService.writeDhcpClauseWithConsProvEic(new TenantId(tenantId), ipv4Prefix, rwTx);
58         rwTx.submit().get();
59
60         //expected clause name
61         String clauseNameIpV4 = DHCP_SUBJECT_NAME.getValue() + MappingUtils.NAME_DOUBLE_DELIMETER
62                 + ipv4Prefix.getIpv4Prefix().getValue();
63         clauseNameIpV4 = clauseNameIpV4.replace('/', '_');
64
65         PolicyAssert.assertClauseExists(dataBroker, tenantId, NetworkService.DHCP_CONTRACT_ID.getValue(),
66                 clauseNameIpV4);
67     }
68
69     @Test
70     public void testWriteDhcpClauseWithConsProvEicIpv6() throws Exception {
71         DataBroker dataBroker = getDataBroker();
72         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
73         NetworkService.writeDhcpClauseWithConsProvEic(new TenantId(tenantId), ipv6Prefix, rwTx);
74         rwTx.submit().get();
75
76         //expected clause name
77         String clauseNameIpV6 = DHCP_SUBJECT_NAME.getValue() + MappingUtils.NAME_DOUBLE_DELIMETER
78                 + ipv6Prefix.getIpv6Prefix().getValue();
79         clauseNameIpV6 = clauseNameIpV6.replace('/', '_').replace(':', '.');
80
81         PolicyAssert.assertClauseExists(dataBroker, tenantId, NetworkService.DHCP_CONTRACT_ID.getValue(),
82                 clauseNameIpV6);
83     }
84
85     @Test
86     public void testWriteDnsClauseWithConsProvEicIpv4() throws Exception {
87         //ipv4
88         DataBroker dataBroker = getDataBroker();
89         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
90         NetworkService.writeDnsClauseWithConsProvEic(new TenantId(tenantId), ipv4Prefix, rwTx);
91         rwTx.submit().get();
92
93         //expected clause name
94         String clauseNameIpV4 = DNS_SUBJECT_NAME.getValue() + MappingUtils.NAME_DOUBLE_DELIMETER + ipv4Prefix.getIpv4Prefix().getValue();
95         clauseNameIpV4 = clauseNameIpV4.replace('/', '_');
96
97         PolicyAssert.assertClauseExists(dataBroker, tenantId, NetworkService.DNS_CONTRACT_ID.getValue(),
98                 clauseNameIpV4);
99     }
100
101     @Test
102     public void testWriteDnsClauseWithConsProvEicIpv6() throws Exception {
103         //ipv6
104         DataBroker dataBroker = getDataBroker();
105         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
106         NetworkService.writeDnsClauseWithConsProvEic(new TenantId(tenantId), ipv6Prefix, rwTx);
107         rwTx.submit().get();
108
109         //expected clause name
110         String clauseNameIpV6 = DNS_SUBJECT_NAME.getValue() + MappingUtils.NAME_DOUBLE_DELIMETER + ipv6Prefix.getIpv6Prefix().getValue();
111         clauseNameIpV6 = clauseNameIpV6.replace('/', '_').replace(':', '.');
112
113         PolicyAssert.assertClauseExists(dataBroker, tenantId, NetworkService.DNS_CONTRACT_ID.getValue(),
114                 clauseNameIpV6);
115     }
116
117     @Test
118     public void testWriteNetworkServiceEntitiesToTenant() throws Exception {
119         //write everything
120         DataBroker dataBroker = getDataBroker();
121         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
122         NetworkService.writeNetworkServiceEntitiesToTenant(new TenantId(tenantId), rwTx);
123         rwTx.submit().get();
124
125         //read classifier instances
126         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DHCP_IPV4_CLIENT_SERVER_NAME);
127         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DHCP_IPV4_SERVER_CLIENT_NAME);
128         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DHCP_IPV6_CLIENT_SERVER_NAME);
129         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DHCP_IPV6_SERVER_CLIENT_NAME);
130         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_UDP_IPV4_CLIENT_SERVER_NAME);
131         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_UDP_IPV4_SERVER_CLIENT_NAME);
132         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_UDP_IPV6_CLIENT_SERVER_NAME);
133         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_UDP_IPV6_SERVER_CLIENT_NAME);
134         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_TCP_IPV4_CLIENT_SERVER_NAME);
135         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_TCP_IPV4_SERVER_CLIENT_NAME);
136         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_TCP_IPV6_CLIENT_SERVER_NAME);
137         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_TCP_IPV6_SERVER_CLIENT_NAME);
138
139         //read contracts
140         PolicyAssert.assertContractExists(dataBroker, tenantId, NetworkService.DHCP_CONTRACT_ID.getValue());
141         PolicyAssert.assertContractExists(dataBroker, tenantId, NetworkService.DNS_CONTRACT_ID.getValue());
142
143         //read group id
144         PolicyAssert.assertEndpointGroupExists(dataBroker, tenantId, NetworkService.EPG_ID.getValue());
145     }
146
147     @Test
148     public void testGetAllClassifierInstances() {
149         Set<ClassifierInstance> classifierInstances = NetworkService.getAllClassifierInstances();
150         assertNotNull(classifierInstances);
151         assertFalse(classifierInstances.isEmpty());
152         assertEquals(classifierInstances.size(), 12);
153     }
154
155 }