64f083958037018ae01d50089355c576a87ca59b
[groupbasedpolicy.git] / neutron-mapper / src / test / java / org / opendaylight / groupbasedpolicy / neutron / mapper / mapping / NeutronSecurityGroupAwareDataStoreTest.java
1 package org.opendaylight.groupbasedpolicy.neutron.mapper.mapping;
2
3 import static org.junit.Assert.fail;
4
5 import org.junit.Test;
6 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
7 import org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.NeutronSecurityGroupAware;
8 import org.opendaylight.groupbasedpolicy.neutron.mapper.test.GbpDataBrokerTest;
9 import org.opendaylight.groupbasedpolicy.neutron.mapper.test.NeutronEntityFactory;
10 import org.opendaylight.groupbasedpolicy.neutron.mapper.test.PolicyAssert;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup.IntraGroupPolicy;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.secgroups.rev150712.security.groups.attributes.security.groups.SecurityGroup;
13
14 public class NeutronSecurityGroupAwareDataStoreTest extends GbpDataBrokerTest {
15
16     @Test
17     public void testAddAndDeleteNeutronSecurityGroup_noSecurityRules() throws Exception {
18         DataBroker dataBroker = getDataBroker();
19         NeutronSecurityGroupAware groupAware = new NeutronSecurityGroupAware(dataBroker);
20
21         final String tenantId = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa";
22         final String secGroupId1 = "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb";
23         final String secGroupId2 = "cccccccc-cccc-cccc-cccc-cccccccccccc";
24
25         SecurityGroup secGroup1 = NeutronEntityFactory.securityGroup(secGroupId1, tenantId);
26         SecurityGroup secGroup2 = NeutronEntityFactory.securityGroup(secGroupId2, tenantId);
27
28         groupAware.onCreated(secGroup1, null);
29
30         PolicyAssert.assertTenantExists(dataBroker, tenantId);
31         PolicyAssert.assertContractCount(dataBroker, tenantId, 0);
32         PolicyAssert.assertEndpointGroupCount(dataBroker, tenantId, 1);
33         PolicyAssert.assertEndpointGroupExists(dataBroker, tenantId, secGroupId1);
34         PolicyAssert.assertNoProviderNamedSelectors(dataBroker, tenantId, secGroupId1);
35         PolicyAssert.assertNoConsumerNamedSelectors(dataBroker, tenantId, secGroupId1);
36         PolicyAssert.assertIntraGroupPolicy(dataBroker, tenantId, secGroupId1, IntraGroupPolicy.RequireContract);
37
38         groupAware.onDeleted(secGroup1, null, null);
39
40         PolicyAssert.assertTenantExists(dataBroker, tenantId);
41         PolicyAssert.assertContractCount(dataBroker, tenantId, 0);
42         PolicyAssert.assertEndpointGroupCount(dataBroker, tenantId, 0);
43
44         groupAware.onCreated(secGroup1, null);
45         groupAware.onCreated(secGroup2, null);
46
47         PolicyAssert.assertTenantExists(dataBroker, tenantId);
48         PolicyAssert.assertContractCount(dataBroker, tenantId, 0);
49         PolicyAssert.assertEndpointGroupCount(dataBroker, tenantId, 2);
50         PolicyAssert.assertEndpointGroupExists(dataBroker, tenantId, secGroupId1);
51         PolicyAssert.assertNoProviderNamedSelectors(dataBroker, tenantId, secGroupId1);
52         PolicyAssert.assertNoConsumerNamedSelectors(dataBroker, tenantId, secGroupId1);
53         PolicyAssert.assertIntraGroupPolicy(dataBroker, tenantId, secGroupId1, IntraGroupPolicy.RequireContract);
54         PolicyAssert.assertEndpointGroupExists(dataBroker, tenantId, secGroupId2);
55         PolicyAssert.assertNoProviderNamedSelectors(dataBroker, tenantId, secGroupId2);
56         PolicyAssert.assertNoConsumerNamedSelectors(dataBroker, tenantId, secGroupId2);
57         PolicyAssert.assertIntraGroupPolicy(dataBroker, tenantId, secGroupId2, IntraGroupPolicy.RequireContract);
58
59         groupAware.onDeleted(secGroup2, null, null);
60
61         PolicyAssert.assertTenantExists(dataBroker, tenantId);
62         PolicyAssert.assertContractCount(dataBroker, tenantId, 0);
63         PolicyAssert.assertEndpointGroupCount(dataBroker, tenantId, 1);
64         PolicyAssert.assertEndpointGroupExists(dataBroker, tenantId, secGroupId1);
65         PolicyAssert.assertNoProviderNamedSelectors(dataBroker, tenantId, secGroupId1);
66         PolicyAssert.assertNoConsumerNamedSelectors(dataBroker, tenantId, secGroupId1);
67
68         groupAware.onDeleted(secGroup1, null, null);
69
70         PolicyAssert.assertTenantExists(dataBroker, tenantId);
71         PolicyAssert.assertContractCount(dataBroker, tenantId, 0);
72         PolicyAssert.assertEndpointGroupCount(dataBroker, tenantId, 0);
73     }
74
75     @Test
76     public void testConstructor_invalidArgument() throws Exception {
77         try {
78             new NeutronSecurityGroupAware(null);
79             fail(NullPointerException.class.getName() + " expected");
80         } catch (NullPointerException e) {
81             // do nothing
82         }
83     }
84
85 }