Bug 8228 - metadata service fix made cleaner
[groupbasedpolicy.git] / neutron-mapper / src / test / java / org / opendaylight / groupbasedpolicy / neutron / mapper / infrastructure / NetworkServiceTest.java
1 /*
2  * Copyright (c) 2015 Pantheon Technologies s.r.o. 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.neutron.mapper.infrastructure;
9
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertNotNull;
13
14 import java.util.Set;
15
16 import org.junit.Test;
17 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
18 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
19 import org.opendaylight.groupbasedpolicy.neutron.mapper.test.NeutronMapperDataBrokerTest;
20 import org.opendaylight.groupbasedpolicy.neutron.mapper.test.PolicyAssert;
21 import org.opendaylight.groupbasedpolicy.neutron.mapper.util.MappingUtils;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance;
28
29 public class NetworkServiceTest extends NeutronMapperDataBrokerTest {
30
31     // dhcp
32     private static final SubjectName DHCP_SUBJECT_NAME = new SubjectName("ALLOW_DHCP");
33     private static final String DHCP_IPV4_CLIENT_SERVER_NAME = "DHCP_IPv4_FROM_CLIENT_TO_SERVER";
34     private static final String DHCP_IPV4_SERVER_CLIENT_NAME = "DHCP_IPv4_FROM_SERVER_TO_CLIENT";
35     private static final String DHCP_IPV6_CLIENT_SERVER_NAME = "DHCP_IPv6_FROM_CLIENT_TO_SERVER";
36     private static final String DHCP_IPV6_SERVER_CLIENT_NAME = "DHCP_IPv6_FROM_SERVER_TO_CLIENT";
37
38     // dns
39     private static final SubjectName DNS_SUBJECT_NAME = new SubjectName("ALLOW_DNS");
40     private static final String DNS_UDP_IPV4_CLIENT_SERVER_NAME = "DNS_UDP_IPv4_FROM_CLIENT_TO_SERVER";
41     private static final String DNS_UDP_IPV4_SERVER_CLIENT_NAME = "DNS_UDP_IPv4_FROM_SERVER_TO_CLIENT";
42     private static final String DNS_UDP_IPV6_CLIENT_SERVER_NAME = "DNS_UDP_IPv6_FROM_CLIENT_TO_SERVER";
43     private static final String DNS_UDP_IPV6_SERVER_CLIENT_NAME = "DNS_UDP_IPv6_FROM_SERVER_TO_CLIENT";
44     private static final String DNS_TCP_IPV4_CLIENT_SERVER_NAME = "DNS_TCP_IPv4_FROM_CLIENT_TO_SERVER";
45     private static final String DNS_TCP_IPV4_SERVER_CLIENT_NAME = "DNS_TCP_IPv4_FROM_SERVER_TO_CLIENT";
46     private static final String DNS_TCP_IPV6_CLIENT_SERVER_NAME = "DNS_TCP_IPv6_FROM_CLIENT_TO_SERVER";
47     private static final String DNS_TCP_IPV6_SERVER_CLIENT_NAME = "DNS_TCP_IPv6_FROM_SERVER_TO_CLIENT";
48
49     // mgmt
50     private static final SubjectName MGMT_SUBJECT_NAME = new SubjectName("ALLOW_MGMT");
51     private static final String SSH_IPV4_SERVER_TO_CLIENT_NAME = "SSH_IPV4_FROM_SERVER_TO_CLIENT";
52     private static final String SSH_IPV6_SERVER_TO_CLIENT_NAME = "SSH_IPV6_FROM_SERVER_TO_CLIENT";
53     private static final String SSH_IPV4_CLIENT_TO_SERVER_NAME = "SSH_IPV4_FROM_CLIENT_TO_SERVER";
54     private static final String SSH_IPV6_CLIENT_TO_SERVER_NAME = "SSH_IPV6_FROM_CLIENT_TO_SERVER";
55     private static final String ICMP_IPV4_BETWEEN_SERVER_CLIENT_NAME = "ICMP_IPV4_BETWEEN_SERVER_CLIENT";
56     private static final String ICMP_IPV6_BETWEEN_SERVER_CLIENT_NAME = "ICMP_IPV6_BETWEEN_SERVER_CLIENT";
57
58     // metadata
59     private static final SubjectName METADATA_SUBJECT_NAME = new SubjectName("ALLOW_METADATA");
60     private static final String METADATA_SERVER_TO_CLIENT_NAME = "METADATA_FROM_SERVER_TO_CLIENT";
61     private static final String METADATA_CLIENT_TO_SERVER_NAME = "METADATA_FROM_CLIENT_TO_SERVER";
62     private static final long METADATA_IPV4_SERVER_PORT = 80;
63     private final IpPrefix metadataIpv4Prefix = new IpPrefix(new Ipv4Prefix("169.254.169.254/32"));
64
65     private final String tenantId = "00000000-0000-0000-0000-000000000001";
66     private final IpPrefix ipv4Prefix = new IpPrefix(new Ipv4Prefix("170.0.0.1/8"));
67     private final IpPrefix ipv6Prefix = new IpPrefix(new Ipv6Prefix("2001:0db8:85a3:0000:0000:8a2e:0370:7334/128"));
68
69     @Test
70     public void instantiate() {
71         NetworkService service = new NetworkService();
72         assertNotNull(service);
73     }
74
75     @Test
76     public void testWriteDhcpClauseWithConsProvEicIpv4() throws Exception {
77         DataBroker dataBroker = getDataBroker();
78         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
79         NetworkService.writeDhcpClauseWithConsProvEic(new TenantId(tenantId), ipv4Prefix, rwTx);
80         rwTx.submit().get();
81
82         // expected clause name
83         String clauseNameIpV4 = DHCP_SUBJECT_NAME.getValue() + MappingUtils.NAME_DOUBLE_DELIMETER
84                 + ipv4Prefix.getIpv4Prefix().getValue();
85         clauseNameIpV4 = clauseNameIpV4.replace('/', '_');
86
87         PolicyAssert.assertClauseExists(dataBroker, tenantId, NetworkService.DHCP_CONTRACT_ID.getValue(),
88                 clauseNameIpV4);
89     }
90
91     @Test
92     public void testWriteDhcpClauseWithConsProvEicIpv6() throws Exception {
93         DataBroker dataBroker = getDataBroker();
94         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
95         NetworkService.writeDhcpClauseWithConsProvEic(new TenantId(tenantId), ipv6Prefix, rwTx);
96         rwTx.submit().get();
97
98         // expected clause name
99         String clauseNameIpV6 = DHCP_SUBJECT_NAME.getValue() + MappingUtils.NAME_DOUBLE_DELIMETER
100                 + ipv6Prefix.getIpv6Prefix().getValue();
101         clauseNameIpV6 = clauseNameIpV6.replace('/', '_').replace(':', '.');
102
103         PolicyAssert.assertClauseExists(dataBroker, tenantId, NetworkService.DHCP_CONTRACT_ID.getValue(),
104                 clauseNameIpV6);
105     }
106
107     @Test
108     public void testWriteDnsClauseWithConsProvEicIpv4() throws Exception {
109         // ipv4
110         DataBroker dataBroker = getDataBroker();
111         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
112         NetworkService.writeDnsClauseWithConsProvEic(new TenantId(tenantId), ipv4Prefix, rwTx);
113         rwTx.submit().get();
114
115         // expected clause name
116         String clauseNameIpV4 = DNS_SUBJECT_NAME.getValue() + MappingUtils.NAME_DOUBLE_DELIMETER
117                 + ipv4Prefix.getIpv4Prefix().getValue();
118         clauseNameIpV4 = clauseNameIpV4.replace('/', '_');
119
120         PolicyAssert.assertClauseExists(dataBroker, tenantId, NetworkService.DNS_CONTRACT_ID.getValue(),
121                 clauseNameIpV4);
122     }
123
124     @Test
125     public void testWriteDnsClauseWithConsProvEicIpv6() throws Exception {
126         // ipv6
127         DataBroker dataBroker = getDataBroker();
128         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
129         NetworkService.writeDnsClauseWithConsProvEic(new TenantId(tenantId), ipv6Prefix, rwTx);
130         rwTx.submit().get();
131
132         // expected clause name
133         String clauseNameIpV6 = DNS_SUBJECT_NAME.getValue() + MappingUtils.NAME_DOUBLE_DELIMETER
134                 + ipv6Prefix.getIpv6Prefix().getValue();
135         clauseNameIpV6 = clauseNameIpV6.replace('/', '_').replace(':', '.');
136
137         PolicyAssert.assertClauseExists(dataBroker, tenantId, NetworkService.DNS_CONTRACT_ID.getValue(),
138                 clauseNameIpV6);
139     }
140
141
142     @Test
143     public void testWriteMgmtClauseWithConsProvEicIpv4() throws Exception {
144         // ipv4
145         DataBroker dataBroker = getDataBroker();
146         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
147         NetworkService.writeMgmtClauseWithConsProvEic(new TenantId(tenantId), ipv4Prefix, rwTx);
148         rwTx.submit().get();
149
150         // expected clause name
151         String clauseNameIpV4 = MGMT_SUBJECT_NAME.getValue() + MappingUtils.NAME_DOUBLE_DELIMETER
152             + ipv4Prefix.getIpv4Prefix().getValue();
153         clauseNameIpV4 = clauseNameIpV4.replace('/', '_');
154
155         PolicyAssert.assertClauseExists(dataBroker, tenantId, NetworkService.MGMT_CONTRACT_ID.getValue(),
156             clauseNameIpV4);
157     }
158
159     @Test
160     public void testWriteMgmtClauseWithConsProvEicIpv6() throws Exception {
161         // ipv6
162         DataBroker dataBroker = getDataBroker();
163         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
164         NetworkService.writeMgmtClauseWithConsProvEic(new TenantId(tenantId), ipv6Prefix, rwTx);
165         rwTx.submit().get();
166
167         // expected clause name
168         String clauseNameIpV6 = MGMT_SUBJECT_NAME.getValue() + MappingUtils.NAME_DOUBLE_DELIMETER
169             + ipv6Prefix.getIpv6Prefix().getValue();
170         clauseNameIpV6 = clauseNameIpV6.replace('/', '_').replace(':', '.');
171
172         PolicyAssert.assertClauseExists(dataBroker, tenantId, NetworkService.MGMT_CONTRACT_ID.getValue(),
173             clauseNameIpV6);
174     }
175
176     @Test
177     public void testWriteMetadataClauseWithConsProvEicIpv4() throws Exception {
178         // ipv4
179         DataBroker dataBroker = getDataBroker();
180         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
181         MetadataService.writeMetadataClauseWithConsProvEic(new TenantId(tenantId), metadataIpv4Prefix, rwTx);
182         rwTx.submit().get();
183
184         // expected clause name
185         String clauseNameIpV4 = METADATA_SUBJECT_NAME.getValue() + MappingUtils.NAME_DOUBLE_DELIMETER
186             + metadataIpv4Prefix.getIpv4Prefix().getValue();
187         clauseNameIpV4 = clauseNameIpV4.replace('/', '_');
188
189         PolicyAssert.assertClauseExists(dataBroker, tenantId, MetadataService.METADATA_CONTRACT_ID.getValue(),
190             clauseNameIpV4);
191     }
192
193     @Test
194     public void testWriteNetworkServiceEntitiesToTenant() throws Exception {
195         // write everything
196         DataBroker dataBroker = getDataBroker();
197         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
198         NetworkService.writeNetworkServiceEntitiesToTenant(new TenantId(tenantId), rwTx);
199         rwTx.submit().get();
200
201         // read classifier instances
202         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DHCP_IPV4_CLIENT_SERVER_NAME);
203         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DHCP_IPV4_SERVER_CLIENT_NAME);
204         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DHCP_IPV6_CLIENT_SERVER_NAME);
205         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DHCP_IPV6_SERVER_CLIENT_NAME);
206         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_UDP_IPV4_CLIENT_SERVER_NAME);
207         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_UDP_IPV4_SERVER_CLIENT_NAME);
208         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_UDP_IPV6_CLIENT_SERVER_NAME);
209         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_UDP_IPV6_SERVER_CLIENT_NAME);
210         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_TCP_IPV4_CLIENT_SERVER_NAME);
211         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_TCP_IPV4_SERVER_CLIENT_NAME);
212         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_TCP_IPV6_CLIENT_SERVER_NAME);
213         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, DNS_TCP_IPV6_SERVER_CLIENT_NAME);
214         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, SSH_IPV4_SERVER_TO_CLIENT_NAME);
215         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, SSH_IPV6_SERVER_TO_CLIENT_NAME);
216         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, SSH_IPV4_CLIENT_TO_SERVER_NAME);
217         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, SSH_IPV6_CLIENT_TO_SERVER_NAME);
218         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, ICMP_IPV4_BETWEEN_SERVER_CLIENT_NAME);
219         PolicyAssert.assertClassifierInstanceExists(dataBroker, tenantId, ICMP_IPV6_BETWEEN_SERVER_CLIENT_NAME);
220
221         // read contracts
222         PolicyAssert.assertContractExists(dataBroker, tenantId, NetworkService.DHCP_CONTRACT_ID.getValue());
223         PolicyAssert.assertContractExists(dataBroker, tenantId, NetworkService.DNS_CONTRACT_ID.getValue());
224         PolicyAssert.assertContractExists(dataBroker, tenantId, NetworkService.MGMT_CONTRACT_ID.getValue());
225
226         // read group id
227         PolicyAssert.assertEndpointGroupExists(dataBroker, tenantId, NetworkService.EPG_ID.getValue());
228     }
229
230     @Test
231     public void testGetAllClassifierInstances() {
232         Set<ClassifierInstance> classifierInstances =
233             NetworkService.getAllClassifierInstances();
234         assertNotNull(classifierInstances);
235         assertFalse(classifierInstances.isEmpty());
236         assertEquals(18, classifierInstances.size());
237     }
238
239 }