From a000a28fd43b15e7b61c889457910701b3339e0b Mon Sep 17 00:00:00 2001 From: Tomas Cechvala Date: Wed, 25 Jan 2017 12:42:09 +0100 Subject: [PATCH] Fixing compareTo for RendererResolvedPolicy It's important not to lose any resolved rule when caching policy. Parameters included: EndpointPolicyParticipation ResolvedRuleGroup Change-Id: Idf5f4dbde902d7f21ca0a83d68a71dbeeefc7a52 Signed-off-by: Tomas Cechvala --- .../renderer/vpp/policy/PolicyContext.java | 16 +++-- .../vpp/policy/RendererResolvedPolicy.java | 9 ++- .../vpp/RendererResolvedPolicyTest.java | 67 +++++++++++++++++++ 3 files changed, 83 insertions(+), 9 deletions(-) create mode 100644 renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/RendererResolvedPolicyTest.java diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/PolicyContext.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/PolicyContext.java index 3eb2c4063..b8bf8acca 100644 --- a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/PolicyContext.java +++ b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/PolicyContext.java @@ -8,12 +8,6 @@ package org.opendaylight.groupbasedpolicy.renderer.vpp.policy; -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSortedSet; -import com.google.common.collect.ImmutableTable; -import com.google.common.collect.ImmutableTable.Builder; -import com.google.common.collect.Maps; import java.util.Collections; import java.util.List; import java.util.Map; @@ -22,11 +16,12 @@ import java.util.Optional; import java.util.TreeSet; import java.util.function.Supplier; import java.util.stream.Collectors; + import javax.annotation.Nonnull; + import org.opendaylight.groupbasedpolicy.renderer.vpp.util.KeyFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.address.endpoints.AddressEndpointKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Policy; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.RendererPolicy; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.Configuration; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocation; @@ -40,6 +35,13 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.r import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.rule.groups.RuleGroup; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.rule.groups.RuleGroupKey; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.ImmutableTable; +import com.google.common.collect.ImmutableTable.Builder; +import com.google.common.collect.Maps; + public class PolicyContext { private final RendererPolicy policy; diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/RendererResolvedPolicy.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/RendererResolvedPolicy.java index b5f18d604..ff7a79adf 100644 --- a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/RendererResolvedPolicy.java +++ b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/RendererResolvedPolicy.java @@ -36,8 +36,13 @@ public class RendererResolvedPolicy implements Comparable testSet; + + @Before + public void init() { + resolvedRuleGroup1 = Mockito.mock(ResolvedRuleGroup.class); + resolvedRuleGroup2 = Mockito.mock(ResolvedRuleGroup.class); + } + + @Test + public void testCompareTo_sameParticipation() { + rendResPolicy1 = new RendererResolvedPolicy(EndpointPolicyParticipation.PROVIDER, resolvedRuleGroup1); + rendResPolicy2 = new RendererResolvedPolicy(EndpointPolicyParticipation.PROVIDER, resolvedRuleGroup1); + testSet = createSet(rendResPolicy1, rendResPolicy2); + Assert.assertEquals(testSet.size(), 1); + rendResPolicy2 = new RendererResolvedPolicy(EndpointPolicyParticipation.PROVIDER, resolvedRuleGroup2); + testSet = createSet(rendResPolicy1, rendResPolicy2); + Assert.assertEquals(testSet.size(), 2); + } + + @Test + public void testCompareTo_differentParticipation() { + rendResPolicy1 = new RendererResolvedPolicy(EndpointPolicyParticipation.PROVIDER, resolvedRuleGroup1); + rendResPolicy2 = new RendererResolvedPolicy(EndpointPolicyParticipation.CONSUMER, resolvedRuleGroup1); + testSet = createSet(rendResPolicy1, rendResPolicy2); + Assert.assertEquals(testSet.size(), 2); + rendResPolicy2 = new RendererResolvedPolicy(EndpointPolicyParticipation.PROVIDER, resolvedRuleGroup2); + testSet = createSet(rendResPolicy1, rendResPolicy2); + Assert.assertEquals(testSet.size(), 2); + } + + private Set createSet(RendererResolvedPolicy... rendResolvedPolicies) { + Set policies = new TreeSet<>(); + Collections.addAll(policies, rendResolvedPolicies); + return policies; + } +} -- 2.36.6