1 package org.opendaylight.groupbasedpolicy.resolver;
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;
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;
31 @RunWith(PowerMockRunner.class)
32 @PrepareForTest(DataStoreHelper.class)
33 public class PolicyResolverTest extends GbpDataBrokerTest {
35 private DataBroker dataProvider;
36 private PolicyResolver policyResolver;
37 private final TenantId tenantId = new TenantId("tenant-1");
41 dataProvider = getDataBroker();
42 policyResolver = new PolicyResolver(dataProvider);
46 public void teardown() throws Exception {
47 policyResolver.close();
51 public void testConstructor() throws Exception {
52 PolicyResolver other = new PolicyResolver(dataProvider);
57 public void testSubscribeTenant_Unknown() {
58 int oldSize = policyResolver.subscribersPerTenant.count(tenantId);
59 Assume.assumeTrue(oldSize == 0);
61 policyResolver.subscribeTenant(tenantId);
63 assertEquals(policyResolver.subscribersPerTenant.count(tenantId), oldSize + 1);
67 public void testSubscribeTenant_Known() {
68 Tenant unresolvedTenant = new TenantBuilder().setId(tenantId).build();
70 Optional<Tenant> potentialTenant = mock(Optional.class);
71 when(potentialTenant.isPresent()).thenReturn(true);
72 when(potentialTenant.get()).thenReturn(unresolvedTenant);
74 PowerMockito.mockStatic(DataStoreHelper.class);
75 when(DataStoreHelper.readFromDs(eq(LogicalDatastoreType.CONFIGURATION),
76 Mockito.<InstanceIdentifier<Tenant>>any(), any(ReadOnlyTransaction.class))).thenReturn(potentialTenant);
78 PolicyResolver spy = spy(policyResolver);
80 int oldSize = spy.subscribersPerTenant.count(tenantId);
82 spy.subscribeTenant(tenantId);
84 assertEquals(spy.subscribersPerTenant.count(tenantId), oldSize + 1);
85 verify(spy).updateTenant(eq(tenantId), any(Tenant.class));
89 public void testUnsubscribeTenant() {
90 int oldSize = policyResolver.subscribersPerTenant.count(tenantId);
91 Assume.assumeTrue(oldSize == 0);
93 policyResolver.subscribeTenant(tenantId);
94 assertEquals(policyResolver.subscribersPerTenant.count(tenantId), oldSize + 1);
96 policyResolver.unsubscribeTenant(tenantId);
97 assertEquals(policyResolver.subscribersPerTenant.count(tenantId), oldSize);