Unit tests for neutron mapper (parent commit)
[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
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.NeutronMapperDataBrokerTest;
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 NetworkServiceTest extends NeutronMapperDataBrokerTest {
23
24     // dhcp
25     private static final SubjectName DHCP_SUBJECT_NAME = new SubjectName("ALLOW_DHCP");
26     private static final String DHCP_IPV4_CLIENT_SERVER_NAME = "DHCP_IPv4_FROM_CLIENT_TO_SERVER";
27     private static final String DHCP_IPV4_SERVER_CLIENT_NAME = "DHCP_IPv4_FROM_SERVER_TO_CLIENT";
28     private static final String DHCP_IPV6_CLIENT_SERVER_NAME = "DHCP_IPv6_FROM_CLIENT_TO_SERVER";
29     private static final String DHCP_IPV6_SERVER_CLIENT_NAME = "DHCP_IPv6_FROM_SERVER_TO_CLIENT";
30
31     // dns
32     private static final SubjectName DNS_SUBJECT_NAME = new SubjectName("ALLOW_DNS");
33     private static final String DNS_UDP_IPV4_CLIENT_SERVER_NAME = "DNS_UDP_IPv4_FROM_CLIENT_TO_SERVER";
34     private static final String DNS_UDP_IPV4_SERVER_CLIENT_NAME = "DNS_UDP_IPv4_FROM_SERVER_TO_CLIENT";
35     private static final String DNS_UDP_IPV6_CLIENT_SERVER_NAME = "DNS_UDP_IPv6_FROM_CLIENT_TO_SERVER";
36     private static final String DNS_UDP_IPV6_SERVER_CLIENT_NAME = "DNS_UDP_IPv6_FROM_SERVER_TO_CLIENT";
37     private static final String DNS_TCP_IPV4_CLIENT_SERVER_NAME = "DNS_TCP_IPv4_FROM_CLIENT_TO_SERVER";
38     private static final String DNS_TCP_IPV4_SERVER_CLIENT_NAME = "DNS_TCP_IPv4_FROM_SERVER_TO_CLIENT";
39     private static final String DNS_TCP_IPV6_CLIENT_SERVER_NAME = "DNS_TCP_IPv6_FROM_CLIENT_TO_SERVER";
40     private static final String DNS_TCP_IPV6_SERVER_CLIENT_NAME = "DNS_TCP_IPv6_FROM_SERVER_TO_CLIENT";
41
42     // mgmt
43     private static final SubjectName MGMT_SUBJECT_NAME = new SubjectName("ALLOW_MGMT");
44     private static final String SSH_IPV4_SERVER_TO_CLIENT_NAME = "SSH_IPV4_FROM_SERVER_TO_CLIENT";
45     private static final String SSH_IPV6_SERVER_TO_CLIENT_NAME = "SSH_IPV6_FROM_SERVER_TO_CLIENT";
46     private static final String SSH_IPV4_CLIENT_TO_SERVER_NAME = "SSH_IPV4_FROM_CLIENT_TO_SERVER";
47     private static final String SSH_IPV6_CLIENT_TO_SERVER_NAME = "SSH_IPV6_FROM_CLIENT_TO_SERVER";
48     private static final String ICMP_IPV4_BETWEEN_SERVER_CLIENT_NAME = "ICMP_IPV4_BETWEEN_SERVER_CLIENT";
49     private static final String ICMP_IPV6_BETWEEN_SERVER_CLIENT_NAME = "ICMP_IPV6_BETWEEN_SERVER_CLIENT";
50
51     private final String tenantId = "00000000-0000-0000-0000-000000000001";
52     private final IpPrefix ipv4Prefix = new IpPrefix(new Ipv4Prefix("170.0.0.1/8"));
53     private final IpPrefix ipv6Prefix = new IpPrefix(new Ipv6Prefix("2001:0db8:85a3:0000:0000:8a2e:0370:7334/128"));
54
55     @Test
56     public void instantiate() {
57         NetworkService service = new NetworkService();
58         assertNotNull(service);
59     }
60
61     @Test
62     public void testWriteDhcpClauseWithConsProvEicIpv4() throws Exception {
63         DataBroker dataBroker = getDataBroker();
64         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
65         NetworkService.writeDhcpClauseWithConsProvEic(new TenantId(tenantId), ipv4Prefix, rwTx);
66         rwTx.submit().get();
67
68         // expected clause name
69         String clauseNameIpV4 = DHCP_SUBJECT_NAME.getValue() + MappingUtils.NAME_DOUBLE_DELIMETER
70                 + ipv4Prefix.getIpv4Prefix().getValue();
71         clauseNameIpV4 = clauseNameIpV4.replace('/', '_');
72
73         PolicyAssert.assertClauseExists(dataBroker, tenantId, NetworkService.DHCP_CONTRACT_ID.getValue(),
74                 clauseNameIpV4);
75     }
76
77     @Test
78     public void testWriteDhcpClauseWithConsProvEicIpv6() throws Exception {
79         DataBroker dataBroker = getDataBroker();
80         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
81         NetworkService.writeDhcpClauseWithConsProvEic(new TenantId(tenantId), ipv6Prefix, rwTx);
82         rwTx.submit().get();
83
84         // expected clause name
85         String clauseNameIpV6 = DHCP_SUBJECT_NAME.getValue() + MappingUtils.NAME_DOUBLE_DELIMETER
86                 + ipv6Prefix.getIpv6Prefix().getValue();
87         clauseNameIpV6 = clauseNameIpV6.replace('/', '_').replace(':', '.');
88
89         PolicyAssert.assertClauseExists(dataBroker, tenantId, NetworkService.DHCP_CONTRACT_ID.getValue(),
90                 clauseNameIpV6);
91     }
92
93     @Test
94     public void testWriteDnsClauseWithConsProvEicIpv4() throws Exception {
95         // ipv4
96         DataBroker dataBroker = getDataBroker();
97         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
98         NetworkService.writeDnsClauseWithConsProvEic(new TenantId(tenantId), ipv4Prefix, rwTx);
99         rwTx.submit().get();
100
101         // expected clause name
102         String clauseNameIpV4 = DNS_SUBJECT_NAME.getValue() + MappingUtils.NAME_DOUBLE_DELIMETER
103                 + ipv4Prefix.getIpv4Prefix().getValue();
104         clauseNameIpV4 = clauseNameIpV4.replace('/', '_');
105
106         PolicyAssert.assertClauseExists(dataBroker, tenantId, NetworkService.DNS_CONTRACT_ID.getValue(),
107                 clauseNameIpV4);
108     }
109
110     @Test
111     public void testWriteDnsClauseWithConsProvEicIpv6() throws Exception {
112         // ipv6
113         DataBroker dataBroker = getDataBroker();
114         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
115         NetworkService.writeDnsClauseWithConsProvEic(new TenantId(tenantId), ipv6Prefix, rwTx);
116         rwTx.submit().get();
117
118         // expected clause name
119         String clauseNameIpV6 = DNS_SUBJECT_NAME.getValue() + MappingUtils.NAME_DOUBLE_DELIMETER
120                 + ipv6Prefix.getIpv6Prefix().getValue();
121         clauseNameIpV6 = clauseNameIpV6.replace('/', '_').replace(':', '.');
122
123         PolicyAssert.assertClauseExists(dataBroker, tenantId, NetworkService.DNS_CONTRACT_ID.getValue(),
124                 clauseNameIpV6);
125     }
126
127     @Test
128     public void testWriteNetworkServiceEntitiesToTenant() throws Exception {
129         // write everything
130         DataBroker dataBroker = getDataBroker();
131         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
132         NetworkService.writeNetworkServiceEntitiesToTenant(new TenantId(tenantId), rwTx);
133         rwTx.submit().get();
134
135         // read classifier instances
136         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DHCP_IPV4_CLIENT_SERVER_NAME);
137         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DHCP_IPV4_SERVER_CLIENT_NAME);
138         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DHCP_IPV6_CLIENT_SERVER_NAME);
139         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DHCP_IPV6_SERVER_CLIENT_NAME);
140         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_UDP_IPV4_CLIENT_SERVER_NAME);
141         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_UDP_IPV4_SERVER_CLIENT_NAME);
142         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_UDP_IPV6_CLIENT_SERVER_NAME);
143         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_UDP_IPV6_SERVER_CLIENT_NAME);
144         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_TCP_IPV4_CLIENT_SERVER_NAME);
145         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_TCP_IPV4_SERVER_CLIENT_NAME);
146         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_TCP_IPV6_CLIENT_SERVER_NAME);
147         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_TCP_IPV6_SERVER_CLIENT_NAME);
148         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, SSH_IPV4_SERVER_TO_CLIENT_NAME);
149         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, SSH_IPV6_SERVER_TO_CLIENT_NAME);
150         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, SSH_IPV4_CLIENT_TO_SERVER_NAME);
151         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, SSH_IPV6_CLIENT_TO_SERVER_NAME);
152         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, ICMP_IPV4_BETWEEN_SERVER_CLIENT_NAME);
153         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, ICMP_IPV6_BETWEEN_SERVER_CLIENT_NAME);
154
155         // read contracts
156         PolicyAssert.assertContractExists(dataBroker, tenantId, NetworkService.DHCP_CONTRACT_ID.getValue());
157         PolicyAssert.assertContractExists(dataBroker, tenantId, NetworkService.DNS_CONTRACT_ID.getValue());
158         PolicyAssert.assertContractExists(dataBroker, tenantId, NetworkService.MGMT_CONTRACT_ID.getValue());
159
160         // read group id
161         PolicyAssert.assertEndpointGroupExists(dataBroker, tenantId, NetworkService.EPG_ID.getValue());
162     }
163
164     @Test
165     public void testGetAllClassifierInstances() {
166         Set<ClassifierInstance> classifierInstances = NetworkService.getAllClassifierInstances();
167         assertNotNull(classifierInstances);
168         assertFalse(classifierInstances.isEmpty());
169         assertEquals(classifierInstances.size(), 18);
170     }
171
172 }