From b240ceb74771640f580c9f7d81a7ca9464369283 Mon Sep 17 00:00:00 2001 From: Konstantin Blagov Date: Mon, 16 May 2016 15:39:46 +0200 Subject: [PATCH] Tests for Iovisor root package Change-Id: Ied5c4af08189bfff2e089c760d9a6a90ba003c1a Signed-off-by: Konstantin Blagov --- .../renderer/iovisor/IovisorRenderer.java | 4 +- .../renderer/iovisor/IovisorRendererTest.java | 22 +++++- .../IovisorResolvedEndpointListenerTest.java | 79 ++++++++++++++++++- .../iovisor/ResolvedPolicyListenerTest.java | 61 +++++++++++++- 4 files changed, 156 insertions(+), 10 deletions(-) mode change 100644 => 100755 renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorRenderer.java mode change 100644 => 100755 renderers/iovisor/src/test/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorRendererTest.java mode change 100644 => 100755 renderers/iovisor/src/test/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorResolvedEndpointListenerTest.java mode change 100644 => 100755 renderers/iovisor/src/test/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/ResolvedPolicyListenerTest.java diff --git a/renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorRenderer.java b/renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorRenderer.java old mode 100644 new mode 100755 index 1113e042d..6bfc3a7c6 --- a/renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorRenderer.java +++ b/renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorRenderer.java @@ -61,8 +61,8 @@ public class IovisorRenderer implements AutoCloseable { } endpointManager = new EndpointManager(dataBroker, epRendererAugmentationRegistry); endpointListener = new EndpointListener(dataBroker, endpointManager); - this.resolvedPolicyListener = new ResolvedPolicyListener(dataBroker, endpointManager.getIovisorModuleManager()); - this.resolvedEndpointListener = new IovisorResolvedEndpointListener(dataBroker); + resolvedPolicyListener = new ResolvedPolicyListener(dataBroker, endpointManager.getIovisorModuleManager()); + resolvedEndpointListener = new IovisorResolvedEndpointListener(dataBroker); classifierDefinitionListener = new ClassifierDefinitionListener(dataBroker); actionDefinitionListener = new ActionDefinitionListener(dataBroker); diff --git a/renderers/iovisor/src/test/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorRendererTest.java b/renderers/iovisor/src/test/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorRendererTest.java old mode 100644 new mode 100755 index 289c1b55f..02a526587 --- a/renderers/iovisor/src/test/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorRendererTest.java +++ b/renderers/iovisor/src/test/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorRendererTest.java @@ -8,9 +8,12 @@ package org.opendaylight.groupbasedpolicy.renderer.iovisor; +import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; import org.junit.Before; +import org.junit.Test; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry; import org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry; @@ -28,7 +31,24 @@ public class IovisorRendererTest extends GbpIovisorDataBrokerTest { dataBroker = getDataBroker(); epRendererAugReg = mock(EpRendererAugmentationRegistry.class); policyValidatorRegistry = mock(PolicyValidatorRegistry.class); - iovisorRenderer = new IovisorRenderer(dataBroker, epRendererAugReg, policyValidatorRegistry); + iovisorRenderer = spy(new IovisorRenderer(dataBroker, epRendererAugReg, policyValidatorRegistry)); } + + @Test + public void testConstructor() throws Exception{ + IovisorRenderer other = new IovisorRenderer(dataBroker, epRendererAugReg, policyValidatorRegistry); + other.close(); + } + + @Test + public void testGetResolvedEndpointListener(){ + assertNotNull(iovisorRenderer.getResolvedEndpointListener()); + } + + @Test + public void testGetEndPointManager(){ + assertNotNull(iovisorRenderer.getEndPointManager()); + } + } diff --git a/renderers/iovisor/src/test/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorResolvedEndpointListenerTest.java b/renderers/iovisor/src/test/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorResolvedEndpointListenerTest.java old mode 100644 new mode 100755 index 718122fb5..403f1ca9b --- a/renderers/iovisor/src/test/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorResolvedEndpointListenerTest.java +++ b/renderers/iovisor/src/test/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorResolvedEndpointListenerTest.java @@ -8,34 +8,107 @@ package org.opendaylight.groupbasedpolicy.renderer.iovisor; +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.util.List; +import java.util.Set; + +import com.google.common.base.Optional; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; +import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; +import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; +import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.groupbasedpolicy.renderer.iovisor.test.GbpIovisorDataBrokerTest; +import org.opendaylight.groupbasedpolicy.renderer.iovisor.utils.IovisorIidFactory; import org.opendaylight.groupbasedpolicy.util.DataStoreHelper; import org.opendaylight.groupbasedpolicy.util.IidFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.EndpointGroupId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.iovisor.rev151030.IovisorResolvedEndpointsByTenantByEndpointgroupId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.iovisor.rev151030.IovisorResolvedEndpointsByTenantByEndpointgroupIdBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.iovisor.rev151030.iovisor.resolved.endpoints.by.tenant.by.endpointgroup.id.IovisorResolvedEndpointByTenantByEndpointgroupId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.iovisor.rev151030.iovisor.resolved.endpoints.by.tenant.by.endpointgroup.id.IovisorResolvedEndpointByTenantByEndpointgroupIdBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.interests.followed.tenants.followed.tenant.FollowedEndpointGroup; - -import com.google.common.base.Optional; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; public class IovisorResolvedEndpointListenerTest extends GbpIovisorDataBrokerTest { private DataBroker dataBroker; private IovisorResolvedEndpointListener iovisorResolvedEndpointListener; + private DataObjectModification rootNode; + private Set> changes; + private InstanceIdentifier rootIdentifier; + private final TenantId tenant1 = new TenantId("tenant1"); private final EndpointGroupId epg1 = new EndpointGroupId("client"); @Before public void iovisorInit() { dataBroker = getDataBroker(); - iovisorResolvedEndpointListener = new IovisorResolvedEndpointListener(dataBroker); + iovisorResolvedEndpointListener = spy(new IovisorResolvedEndpointListener(dataBroker)); + + rootNode = mock(DataObjectModification.class); + rootIdentifier = IovisorIidFactory.iovisorResolvedEndpointsByTenantIdByEndpointGroupIdWildCardIid(); + DataTreeIdentifier rootPath = + new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, + IovisorIidFactory.iovisorResolvedEndpointsByTenantIdByEndpointGroupIdWildCardIid()); + DataTreeModification change = mock(DataTreeModification.class); + when(change.getRootNode()).thenReturn(rootNode); + when(change.getRootPath()).thenReturn(rootPath); + + changes = ImmutableSet.of(change); + + IovisorResolvedEndpointByTenantByEndpointgroupId testElement = new IovisorResolvedEndpointByTenantByEndpointgroupIdBuilder() + .setTenantId(tenant1) + .setEndpointgroupId(epg1) + .build(); + List list = ImmutableList.of(testElement); + + IovisorResolvedEndpointsByTenantByEndpointgroupId testData = new IovisorResolvedEndpointsByTenantByEndpointgroupIdBuilder() + .setIovisorResolvedEndpointByTenantByEndpointgroupId(list) + .build(); + + when(rootNode.getDataAfter()).thenReturn(testData); } + @Test + public void testOnWrite() { + when(rootNode.getModificationType()).thenReturn(DataObjectModification.ModificationType.WRITE); + + iovisorResolvedEndpointListener.onDataTreeChanged(changes); + + verify(iovisorResolvedEndpointListener).onSubtreeModified(rootNode, rootIdentifier); + } + + @Test(expected = UnsupportedOperationException.class) + public void testOnDelete() { + when(rootNode.getModificationType()).thenReturn(DataObjectModification.ModificationType.DELETE); + + iovisorResolvedEndpointListener.onDataTreeChanged(changes); + } + + @Test + public void testOnSubtreeModified() { + when(rootNode.getModificationType()).thenReturn(DataObjectModification.ModificationType.SUBTREE_MODIFIED); + + iovisorResolvedEndpointListener.onDataTreeChanged(changes); + + verify(iovisorResolvedEndpointListener).endpointPolicyUpdated(any(TenantId.class), any(EndpointGroupId.class), any(WriteTransaction.class)); + } + + @Test public void endpointPolicyUpdatedTest() { iovisorResolvedEndpointListener.endpointPolicyUpdated(tenant1, epg1, dataBroker.newWriteOnlyTransaction()); diff --git a/renderers/iovisor/src/test/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/ResolvedPolicyListenerTest.java b/renderers/iovisor/src/test/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/ResolvedPolicyListenerTest.java old mode 100644 new mode 100755 index f1943aa0a..26e77d99d --- a/renderers/iovisor/src/test/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/ResolvedPolicyListenerTest.java +++ b/renderers/iovisor/src/test/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/ResolvedPolicyListenerTest.java @@ -9,16 +9,27 @@ package org.opendaylight.groupbasedpolicy.renderer.iovisor; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.List; +import java.util.Set; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.sun.jersey.api.client.ClientHandlerException; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; +import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; +import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry; import org.opendaylight.groupbasedpolicy.renderer.iovisor.endpoint.EndpointManager; import org.opendaylight.groupbasedpolicy.renderer.iovisor.module.IovisorModuleManager; @@ -36,6 +47,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.iovisor.re import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.iovisor.rev151030.iovisor.module.instances.IovisorModuleInstanceBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.iovisor.rev151030.iovisor.modules.by.tenant.by.endpointgroup.id.iovisor.module.by.tenant.by.endpointgroup.id.IovisorModuleInstanceId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.iovisor.rev151030.iovisor.modules.by.tenant.by.endpointgroup.id.iovisor.module.by.tenant.by.endpointgroup.id.IovisorModuleInstanceIdBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.ResolvedPolicies; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.actions.Action; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.actions.ActionBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.classifiers.Classifier; @@ -44,18 +56,19 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.p import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.resolved.rules.ResolvedRuleBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.ResolvedPolicy; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.ResolvedPolicyBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.ResolvedPolicyKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.resolved.policy.PolicyRuleGroupWithEndpointConstraints; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.resolved.policy.PolicyRuleGroupWithEndpointConstraintsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.resolved.policy.policy.rule.group.with.endpoint.constraints.PolicyRuleGroup; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.resolved.policy.policy.rule.group.with.endpoint.constraints.PolicyRuleGroupBuilder; - -import com.google.common.collect.ImmutableList; -import com.sun.jersey.api.client.ClientHandlerException; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; public class ResolvedPolicyListenerTest extends GbpIovisorDataBrokerTest { private DataBroker dataBroker; private ResolvedPolicyListener resolvedPolicyListener; + private DataObjectModification rootNode; + private Set> changes; private TenantId tenantId = new TenantId("tenant1"); private EndpointGroupId consEpg = new EndpointGroupId("client"); @@ -116,7 +129,24 @@ public class ResolvedPolicyListenerTest extends GbpIovisorDataBrokerTest { endpointManager = new EndpointManager(dataBroker, mock(EpRendererAugmentationRegistry.class)); iovisorModuleManager = mock(IovisorModuleManager.class); // iovisorModuleManager = endpointManager.getIovisorModuleManager(); - resolvedPolicyListener = new ResolvedPolicyListener(dataBroker, iovisorModuleManager); + resolvedPolicyListener = spy(new ResolvedPolicyListener(dataBroker, iovisorModuleManager)); + + ResolvedPolicyKey key = mock(ResolvedPolicyKey.class); + rootNode = mock(DataObjectModification.class); + InstanceIdentifier rootIdentifier = + InstanceIdentifier.builder(ResolvedPolicies.class) + .child(ResolvedPolicy.class, key) + .build(); + DataTreeIdentifier rootPath = + new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, rootIdentifier); + DataTreeModification change = mock(DataTreeModification.class); + + when(change.getRootNode()).thenReturn(rootNode); + when(change.getRootPath()).thenReturn(rootPath); + + changes = ImmutableSet.of(change); + + when(rootNode.getDataAfter()).thenReturn(resolvedPolicy); } @Test(expected = NullPointerException.class) @@ -124,6 +154,29 @@ public class ResolvedPolicyListenerTest extends GbpIovisorDataBrokerTest { resolvedPolicyListener.processResolvedPolicyNotification(null); } + @Test + public void testOnWrite() { + when(rootNode.getModificationType()).thenReturn(DataObjectModification.ModificationType.WRITE); + + resolvedPolicyListener.onDataTreeChanged(changes); + + verify(resolvedPolicyListener).processResolvedPolicyNotification(eq(resolvedPolicy)); + } + + @Test(expected = UnsupportedOperationException.class) + public void testOnDelete() { + when(rootNode.getModificationType()).thenReturn(DataObjectModification.ModificationType.DELETE); + + resolvedPolicyListener.onDataTreeChanged(changes); + } + + @Test(expected = UnsupportedOperationException.class) + public void testOnSubtreeModified() { + when(rootNode.getModificationType()).thenReturn(DataObjectModification.ModificationType.SUBTREE_MODIFIED); + + resolvedPolicyListener.onDataTreeChanged(changes); + } + @Test public void policyUriBuilderTest() { String target = "/restconf/operational/resolved-policy:resolved-policies/resolved-policy/" + tenantId.getValue() -- 2.36.6