bb8b88f8d52aecdda01924688d188e7161e010c0
[groupbasedpolicy.git] / groupbasedpolicy / src / test / java / org / opendaylight / groupbasedpolicy / resolver / PolicyResolverTest.java
1 package org.opendaylight.groupbasedpolicy.resolver;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.mockito.Matchers.any;
5 import static org.mockito.Matchers.eq;
6 import static org.mockito.Mockito.mock;
7 import static org.mockito.Mockito.spy;
8 import static org.mockito.Mockito.verify;
9 import static org.mockito.Mockito.when;
10
11 import com.google.common.base.Optional;
12 import org.junit.After;
13 import org.junit.Assume;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.junit.runner.RunWith;
17 import org.mockito.Mockito;
18 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
19 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
20 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
21 import org.opendaylight.groupbasedpolicy.test.GbpDataBrokerTest;
22 import org.opendaylight.groupbasedpolicy.util.DataStoreHelper;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.TenantBuilder;
26 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
27 import org.powermock.api.mockito.PowerMockito;
28 import org.powermock.core.classloader.annotations.PrepareForTest;
29 import org.powermock.modules.junit4.PowerMockRunner;
30
31 @RunWith(PowerMockRunner.class)
32 @PrepareForTest(DataStoreHelper.class)
33 public class PolicyResolverTest extends GbpDataBrokerTest {
34
35     private DataBroker dataProvider;
36     private PolicyResolver policyResolver;
37     private final TenantId tenantId = new TenantId("tenant-1");
38
39     @Before
40     public void init() {
41         dataProvider = getDataBroker();
42         policyResolver = new PolicyResolver(dataProvider);
43     }
44
45     @After
46     public void teardown() throws Exception {
47         policyResolver.close();
48     }
49
50     @Test
51     public void testConstructor() throws Exception {
52         PolicyResolver other = new PolicyResolver(dataProvider);
53         other.close();
54     }
55
56     @Test
57     public void testSubscribeTenant_Unknown() {
58         int oldSize = policyResolver.subscribersPerTenant.count(tenantId);
59         Assume.assumeTrue(oldSize == 0);
60
61         policyResolver.subscribeTenant(tenantId);
62
63         assertEquals(policyResolver.subscribersPerTenant.count(tenantId), oldSize + 1);
64     }
65
66     @Test
67     public void testSubscribeTenant_Known() {
68         Tenant unresolvedTenant = new TenantBuilder().setId(tenantId).build();
69
70         Optional<Tenant> potentialTenant = mock(Optional.class);
71         when(potentialTenant.isPresent()).thenReturn(true);
72         when(potentialTenant.get()).thenReturn(unresolvedTenant);
73
74         PowerMockito.mockStatic(DataStoreHelper.class);
75         when(DataStoreHelper.readFromDs(eq(LogicalDatastoreType.CONFIGURATION),
76                 Mockito.<InstanceIdentifier<Tenant>>any(), any(ReadOnlyTransaction.class))).thenReturn(potentialTenant);
77
78         PolicyResolver spy = spy(policyResolver);
79
80         int oldSize = spy.subscribersPerTenant.count(tenantId);
81
82         spy.subscribeTenant(tenantId);
83
84         assertEquals(spy.subscribersPerTenant.count(tenantId), oldSize + 1);
85         verify(spy).updateTenant(eq(tenantId), any(Tenant.class));
86     }
87
88     @Test
89     public void testUnsubscribeTenant() {
90         int oldSize = policyResolver.subscribersPerTenant.count(tenantId);
91         Assume.assumeTrue(oldSize == 0);
92
93         policyResolver.subscribeTenant(tenantId);
94         assertEquals(policyResolver.subscribersPerTenant.count(tenantId), oldSize + 1);
95
96         policyResolver.unsubscribeTenant(tenantId);
97         assertEquals(policyResolver.subscribersPerTenant.count(tenantId), oldSize);
98     }
99
100 }