Bug 3702 - UT GBP - 13 - groupbasedpolicy-base 22/24922/2
authorKinsey Nietzsche <knietzsc@cisco.com>
Fri, 7 Aug 2015 09:42:57 +0000 (11:42 +0200)
committerMartin Sunal <msunal@cisco.com>
Wed, 19 Aug 2015 11:11:58 +0000 (11:11 +0000)
PolicyResolverUtils.java (73.1%)
PolicyResolutionException.java (100%)
PolicyResolver.java (58.1%)
EndpointConstraint.java (88%)
PolicyValidator.java (95.1%)
SimpleResult.java (100%)
ValidationResult (85.1%)

Change-Id: I63eb56c4b5e94366896c7f0b40a1c028dc181556
Signed-off-by: Kinsey Nietzsche <knietzsc@cisco.com>
groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/resolver/validator/PolicyValidator.java
groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/EndpointConstraintTest.java [new file with mode: 0644]
groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolutionExceptionTest.java [new file with mode: 0644]
groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolverTest.java
groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolverUtilsTest.java [new file with mode: 0644]
groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/validator/PolicyValidatorTest.java [new file with mode: 0644]
groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/validator/SimpleResultTest.java [new file with mode: 0644]
groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/validator/ValidatorResultTest.java [new file with mode: 0644]

index 7679afb50fd3d17604144ad5f18d7f168915cf80..1787a2f4b9c63113b47283c9cdddc4ddd9d38456 100644 (file)
@@ -47,7 +47,7 @@ public class PolicyValidator {
      * additional data required for individual validation process
      * @return Concrete {@link Validator} for given object
      */
-    @SuppressWarnings("unchecked")
+    @SuppressWarnings({"unchecked", "rawtypes"})
     static <T extends DataContainer> Validator<T> createValidator(T object, PolicyResolver policyResolver) {
         AbstractValidator validator = VALIDATORS.get(object.getImplementedInterface());
         if (validator == null) {
diff --git a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/EndpointConstraintTest.java b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/EndpointConstraintTest.java
new file mode 100644 (file)
index 0000000..dbc75b7
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.resolver;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ConditionName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.endpoint.identification.constraints.EndpointIdentificationConstraints;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.endpoint.identification.constraints.endpoint.identification.constraints.L3EndpointIdentificationConstraints;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.endpoint.identification.constraints.endpoint.identification.constraints.l3.endpoint.identification.constraints.PrefixConstraint;
+
+public class EndpointConstraintTest {
+
+    private EndpointConstraint constraint;
+
+    private ConditionSet conditionSet;
+    private EndpointIdentificationConstraints consEpIdentificationConstraint;
+    private L3EndpointIdentificationConstraints l3Constraints;
+    private PrefixConstraint prefixConstraint;
+
+    @Before
+    public void initialise() {
+        conditionSet = mock(ConditionSet.class);
+        consEpIdentificationConstraint = mock(EndpointIdentificationConstraints.class);
+        l3Constraints = mock(L3EndpointIdentificationConstraints.class);
+        when(consEpIdentificationConstraint.getL3EndpointIdentificationConstraints()).thenReturn(l3Constraints);
+        prefixConstraint = mock(PrefixConstraint.class);
+        when(l3Constraints.getPrefixConstraint()).thenReturn(Arrays.asList(prefixConstraint));
+
+        constraint = new EndpointConstraint(conditionSet, consEpIdentificationConstraint);
+    }
+
+    @Test
+    public void conditionsMatchTest() {
+        ConditionName conditionName = mock(ConditionName.class);
+        List<ConditionName> epConditions = Arrays.asList(conditionName);
+        when(conditionSet.matches(epConditions)).thenReturn(true);
+        Assert.assertTrue(constraint.conditionsMatch(epConditions));
+    }
+
+    @Test
+    public void constructorTest() {
+        Assert.assertEquals(conditionSet, constraint.getConditionSet());
+        Assert.assertTrue(constraint.getL3EpPrefixes().contains(prefixConstraint));
+        Assert.assertNotNull(constraint.hashCode());
+
+        constraint = new EndpointConstraint(null, consEpIdentificationConstraint);
+        Assert.assertEquals(ConditionSet.EMPTY, constraint.getConditionSet());
+    }
+
+    @Test
+    public void getIpPrefixesFromTest() {
+        PrefixConstraint prefixConstraint = mock(PrefixConstraint.class);
+        IpPrefix ipPrefix = mock(IpPrefix.class);
+        when(prefixConstraint.getIpPrefix()).thenReturn(ipPrefix);
+        Set<PrefixConstraint> prefixConstraints = new HashSet<PrefixConstraint>();
+        prefixConstraints.add(prefixConstraint);
+
+        Set<IpPrefix> ipPrefixes = EndpointConstraint.getIpPrefixesFrom(prefixConstraints);
+        Assert.assertEquals(1, ipPrefixes.size());
+        Assert.assertTrue(ipPrefixes.contains(ipPrefix));
+    }
+
+    @Test
+    public void equalsTest() {
+        Assert.assertTrue(constraint.equals(constraint));
+        Assert.assertFalse(constraint.equals(null));
+        Assert.assertFalse(constraint.equals(new Object()));
+
+        EndpointConstraint other;
+        ConditionSet conditionSetOther = mock(ConditionSet.class);
+        EndpointIdentificationConstraints consEpIdentificationConstraintOther = mock(EndpointIdentificationConstraints.class);
+
+        other = new EndpointConstraint(conditionSet, consEpIdentificationConstraintOther);
+        Assert.assertFalse(constraint.equals(other));
+
+        other = new EndpointConstraint(conditionSetOther, consEpIdentificationConstraint);
+        Assert.assertFalse(constraint.equals(other));
+
+        other = new EndpointConstraint(conditionSet, consEpIdentificationConstraint);
+        Assert.assertTrue(constraint.equals(other));
+    }
+}
diff --git a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolutionExceptionTest.java b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolutionExceptionTest.java
new file mode 100644 (file)
index 0000000..e6a6299
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.resolver;
+
+import static org.mockito.Mockito.mock;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class PolicyResolutionExceptionTest {
+
+    private PolicyResolutionException exception;
+
+    @Test
+    public void constructorTest() {
+        exception = new PolicyResolutionException();
+        Assert.assertNotNull(exception);
+
+        String message = "message";
+        Throwable cause = mock(Throwable.class);
+
+        exception = new PolicyResolutionException(message, cause, true, true);
+        Assert.assertEquals(message, exception.getMessage());
+        Assert.assertEquals(cause, exception.getCause());
+
+        exception = new PolicyResolutionException(message, cause);
+        Assert.assertEquals(message, exception.getMessage());
+        Assert.assertEquals(cause, exception.getCause());
+
+        exception = new PolicyResolutionException(message);
+        Assert.assertEquals(message, exception.getMessage());
+
+        exception = new PolicyResolutionException(cause);
+        Assert.assertEquals(cause, exception.getCause());
+    }
+
+}
index 11eec40be4e1aae4c5ee3817bac82cf406b90ae8..9a23c477d7ce0c60cd364cd67135ef774e68d247 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
+ * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
@@ -13,8 +13,11 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 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.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -30,6 +33,7 @@ import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
 import org.opendaylight.groupbasedpolicy.resolver.ContractResolverUtils.ContractMatch;
 import org.opendaylight.groupbasedpolicy.resolver.PolicyResolver.TenantContext;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.CapabilityMatcherName;
@@ -97,228 +101,232 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
+import com.google.common.base.Optional;
+import com.google.common.collect.HashBasedTable;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Table;
 import com.google.common.util.concurrent.CheckedFuture;
 
 public class PolicyResolverTest {
-    Quality q1 = new QualityBuilder()
-        .setName(new QualityName("q1"))
-        .build();
-    Quality q2 = new QualityBuilder()
-        .setName(new QualityName("q2"))
-        .build();
-    Quality q3 = new QualityBuilder()
-        .setName(new QualityName("q3"))
-        .build();
 
-    Requirement r1 = new RequirementBuilder()
-        .setName(new RequirementName("r1"))
-        .build();
-    Requirement r3 = new RequirementBuilder()
-        .setName(new RequirementName("r3"))
-        .build();
+    private PolicyResolver policyResolver;
+    private DataBroker dataProvider;
+    private ScheduledExecutorService executor;
+    private PolicyListener policyListener;
+    private ReadOnlyTransaction readTransaction;
+    private CheckedFuture<Optional<Tenant>, ReadFailedException> unresolved;
 
-    Capability cap1 = new CapabilityBuilder()
-        .setName(new CapabilityName("cap1"))
-        .build();
-    Capability cap3 = new CapabilityBuilder()
-        .setName(new CapabilityName("cap3"))
-        .build();
+    private Table<EgKey, EgKey, Policy> policyMap;
+    private Map<EgKey, Set<ConditionSet>> egConditions;
+    private List<PolicyScope> policyListenerScopes;
 
-    Condition cond1 = new ConditionBuilder()
-        .setName(new ConditionName("cond1"))
-        .build();
-    Condition cond2 = new ConditionBuilder()
-        .setName(new ConditionName("cond2"))
-        .build();
-    Condition cond3 = new ConditionBuilder()
-        .setName(new ConditionName("cond3"))
-        .build();
+    @SuppressWarnings("unchecked")
+    @Before
+    public void initialisePolicyResolver() {
+        dataProvider = mock(DataBroker.class);
+        executor = mock(ScheduledExecutorService.class);
+        readTransaction = mock(ReadOnlyTransaction.class);
+        when(dataProvider.newReadOnlyTransaction()).thenReturn(readTransaction);
+        unresolved = mock(CheckedFuture.class);
+        when(readTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(
+                unresolved);
+
+        policyResolver = spy(new PolicyResolver(dataProvider, executor));
+
+        policyMap = HashBasedTable.create();
+        egConditions = new HashMap<EgKey, Set<ConditionSet>>();
+        policyListenerScopes = new ArrayList<PolicyScope>();
+        policyListener = mock(PolicyListener.class);
+        policyResolver.registerListener(policyListener);
+    }
 
-    Target t1 = new TargetBuilder()
-        .setName(new TargetName("t1"))
-        .setQuality(ImmutableList.of(q1,q2))
-        .build();
-    Target t2 = new TargetBuilder()
-        .setName(new TargetName("t1"))
-        .setQuality(ImmutableList.of(q3))
-        .build();
-    Target t0 = new TargetBuilder()
-        .setName(new TargetName("t1"))
-        .build();
+    @Test
+    public void updatePolicyTest() {
+        EgKey oldRowKey = mock(EgKey.class);
+        EgKey oldColumnKey = mock(EgKey.class);
+        Policy oldPolicy = mock(Policy.class);
+        policyMap.put(oldRowKey, oldColumnKey, oldPolicy);
+
+        Set<EgKey> notifySet;
+        notifySet = policyResolver.updatePolicy(policyMap, egConditions, policyListenerScopes);
+        Assert.assertTrue(notifySet.contains(oldRowKey));
+        Assert.assertTrue(notifySet.contains(oldColumnKey));
+
+        EgKey newRowKey = mock(EgKey.class);
+        EgKey newColumnKey = mock(EgKey.class);
+        Policy newPolicy = mock(Policy.class);
+
+        policyMap = HashBasedTable.create();
+        policyMap.put(newRowKey, newColumnKey, newPolicy);
+
+        notifySet = policyResolver.updatePolicy(policyMap, egConditions, policyListenerScopes);
+        Assert.assertTrue(notifySet.contains(oldRowKey));
+        Assert.assertTrue(notifySet.contains(oldColumnKey));
+        Assert.assertTrue(notifySet.contains(newRowKey));
+        Assert.assertTrue(notifySet.contains(newColumnKey));
+    }
 
-    Rule rule1 = new RuleBuilder()
-        .setName(new RuleName("r1"))
-        .setOrder(Integer.valueOf(5))
-        .build();
-    Rule rule2 = new RuleBuilder()
-        .setName(new RuleName("r2"))
-        .build();
-    Rule rule3 = new RuleBuilder()
-        .setName(new RuleName("r3"))
-        .build();
-    Subject s1 = new SubjectBuilder()
-        .setName(new SubjectName("s1"))
-        .setRule(ImmutableList.of(rule1))
-        .build();
-    Subject s2 = new SubjectBuilder()
-        .setName(new SubjectName("s1"))
+    @SuppressWarnings("unchecked")
+    @Test
+    public void updatePolicy2Test() {
+        policyResolver.updatePolicy();
+        verify(policyResolver).updatePolicy(any(Table.class), any(Map.class), any(List.class));
+
+    }
+
+    @Test
+    public void subscibeTenantTest() {
+        TenantId tenantId = mock(TenantId.class);
+
+        policyResolver.subscribeTenant(tenantId);
+    }
+
+    Quality q1 = new QualityBuilder().setName(new QualityName("q1")).build();
+    Quality q2 = new QualityBuilder().setName(new QualityName("q2")).build();
+    Quality q3 = new QualityBuilder().setName(new QualityName("q3")).build();
+
+    Requirement r1 = new RequirementBuilder().setName(new RequirementName("r1")).build();
+    Requirement r3 = new RequirementBuilder().setName(new RequirementName("r3")).build();
+
+    Capability cap1 = new CapabilityBuilder().setName(new CapabilityName("cap1")).build();
+    Capability cap3 = new CapabilityBuilder().setName(new CapabilityName("cap3")).build();
+
+    Condition cond1 = new ConditionBuilder().setName(new ConditionName("cond1")).build();
+    Condition cond2 = new ConditionBuilder().setName(new ConditionName("cond2")).build();
+    Condition cond3 = new ConditionBuilder().setName(new ConditionName("cond3")).build();
+
+    Target t1 = new TargetBuilder().setName(new TargetName("t1")).setQuality(ImmutableList.of(q1, q2)).build();
+    Target t2 = new TargetBuilder().setName(new TargetName("t1")).setQuality(ImmutableList.of(q3)).build();
+    Target t0 = new TargetBuilder().setName(new TargetName("t1")).build();
+
+    Rule rule1 = new RuleBuilder().setName(new RuleName("r1")).setOrder(Integer.valueOf(5)).build();
+    Rule rule2 = new RuleBuilder().setName(new RuleName("r2")).build();
+    Rule rule3 = new RuleBuilder().setName(new RuleName("r3")).build();
+    Subject s1 = new SubjectBuilder().setName(new SubjectName("s1")).setRule(ImmutableList.of(rule1)).build();
+    Subject s2 = new SubjectBuilder().setName(new SubjectName("s1"))
         .setRule(ImmutableList.of(rule2))
         .setOrder(Integer.valueOf(3))
         .build();
-    Subject s3 = new SubjectBuilder()
-        .setName(new SubjectName("s3"))
+    Subject s3 = new SubjectBuilder().setName(new SubjectName("s3"))
         .setRule(ImmutableList.of(rule3))
         .setOrder(Integer.valueOf(3))
         .build();
 
-    RequirementMatcher rm1 = new RequirementMatcherBuilder()
-        .setName(new RequirementMatcherName("rm1"))
+    RequirementMatcher rm1 = new RequirementMatcherBuilder().setName(new RequirementMatcherName("rm1"))
         .setMatcherRequirement(ImmutableList.of(new MatcherRequirementBuilder(r1).build()))
         .build();
-    CapabilityMatcher capm1 = new CapabilityMatcherBuilder()
-        .setName(new CapabilityMatcherName("cap1"))
+    CapabilityMatcher capm1 = new CapabilityMatcherBuilder().setName(new CapabilityMatcherName("cap1"))
         .setMatcherCapability(ImmutableList.of(new MatcherCapabilityBuilder(cap1).build()))
         .build();
-    ConditionMatcher condm1 = new ConditionMatcherBuilder()
-        .setName(new ConditionMatcherName("condm1"))
+    ConditionMatcher condm1 = new ConditionMatcherBuilder().setName(new ConditionMatcherName("condm1"))
         .setCondition(ImmutableList.of(cond1))
         .setMatchType(MatchType.All)
         .build();
-    ConditionMatcher condm2 = new ConditionMatcherBuilder()
-        .setName(new ConditionMatcherName("condm2"))
+    ConditionMatcher condm2 = new ConditionMatcherBuilder().setName(new ConditionMatcherName("condm2"))
         .setCondition(ImmutableList.of(cond1, cond2))
         .setMatchType(MatchType.Any)
         .build();
-    ConditionMatcher condm3 = new ConditionMatcherBuilder()
-        .setName(new ConditionMatcherName("condm3"))
+    ConditionMatcher condm3 = new ConditionMatcherBuilder().setName(new ConditionMatcherName("condm3"))
         .setCondition(ImmutableList.of(cond3))
         .setMatchType(MatchType.None)
         .build();
 
-    Clause clause1 = new ClauseBuilder()
-        .setName(new ClauseName("clause1"))
-        .setConsumerMatchers(new ConsumerMatchersBuilder()
-            .setGroupIdentificationConstraints(new GroupRequirementConstraintCaseBuilder()
-            .setRequirementMatcher(ImmutableList.of(rm1)).build())
-            .setConditionMatcher(ImmutableList.of(condm1, condm2, condm3))
-            .build())
-        .setProviderMatchers(new ProviderMatchersBuilder()
-            .setGroupIdentificationConstraints(new GroupCapabilityConstraintCaseBuilder()
-            .setCapabilityMatcher(ImmutableList.of(capm1)).build())
-            .build())
+    Clause clause1 = new ClauseBuilder().setName(new ClauseName("clause1"))
+        .setConsumerMatchers(
+                new ConsumerMatchersBuilder().setGroupIdentificationConstraints(
+                        new GroupRequirementConstraintCaseBuilder().setRequirementMatcher(ImmutableList.of(rm1))
+                            .build())
+                    .setConditionMatcher(ImmutableList.of(condm1, condm2, condm3))
+                    .build())
+        .setProviderMatchers(
+                new ProviderMatchersBuilder().setGroupIdentificationConstraints(
+                        new GroupCapabilityConstraintCaseBuilder().setCapabilityMatcher(ImmutableList.of(capm1))
+                            .build()).build())
         .setSubjectRefs(ImmutableList.of(s1.getName()))
         .build();
-    Clause clause3 = new ClauseBuilder()
-        .setName(new ClauseName("clause3"))
+    Clause clause3 = new ClauseBuilder().setName(new ClauseName("clause3"))
         .setSubjectRefs(ImmutableList.of(s3.getName(), s2.getName()))
         .build();
-    Clause clause0 = new ClauseBuilder()
-        .setName(new ClauseName("clause0"))
-        .build();
-    Clause clause00 = new ClauseBuilder()
-        .setName(new ClauseName("clause00"))
+    Clause clause0 = new ClauseBuilder().setName(new ClauseName("clause0")).build();
+    Clause clause00 = new ClauseBuilder().setName(new ClauseName("clause00"))
         .setConsumerMatchers(new ConsumerMatchersBuilder().build())
         .setProviderMatchers(new ProviderMatchersBuilder().build())
         .build();
 
-    Contract contract1 = new ContractBuilder()
-        .setId(new ContractId("c9eea992-ba51-4e11-b797-986853832ad9"))
+    Contract contract1 = new ContractBuilder().setId(new ContractId("c9eea992-ba51-4e11-b797-986853832ad9"))
         .setTarget(ImmutableList.of(t1))
         .setClause(ImmutableList.of(clause1, clause0, clause00))
         .setSubject(ImmutableList.of(s1))
         .build();
-    Contract contract2 = new ContractBuilder()
-        .setId(new ContractId("3a3b67ff-1795-4dc0-a7b2-2c3453872e4e"))
+    Contract contract2 = new ContractBuilder().setId(new ContractId("3a3b67ff-1795-4dc0-a7b2-2c3453872e4e"))
         .setTarget(ImmutableList.of(t1, t2))
         .setClause(ImmutableList.of(clause3))
         .setSubject(ImmutableList.of(s2))
         .build();
-    Contract contract0 = new ContractBuilder()
-        .setId(new ContractId("ce467a3c-2c7b-4e9e-a575-7da1fbdf1833"))
-        .build();
-    Contract contract00 = new ContractBuilder()
-        .setId(new ContractId("79de88e8-b37f-4764-a1a3-7f3b37b15433"))
+    Contract contract0 = new ContractBuilder().setId(new ContractId("ce467a3c-2c7b-4e9e-a575-7da1fbdf1833")).build();
+    Contract contract00 = new ContractBuilder().setId(new ContractId("79de88e8-b37f-4764-a1a3-7f3b37b15433"))
         .setTarget(ImmutableList.of(t0))
         .build();
 
-    ConsumerNamedSelector cns1 = new ConsumerNamedSelectorBuilder()
-        .setName(new SelectorName("cns1"))
+    ConsumerNamedSelector cns1 = new ConsumerNamedSelectorBuilder().setName(new SelectorName("cns1"))
         .setContract(ImmutableList.of(contract1.getId()))
         .setRequirement(ImmutableList.of(r1, r3))
         .build();
-    ConsumerNamedSelector cns2 = new ConsumerNamedSelectorBuilder()
-        .setName(new SelectorName("cns2"))
+    ConsumerNamedSelector cns2 = new ConsumerNamedSelectorBuilder().setName(new SelectorName("cns2"))
         .setContract(ImmutableList.of(contract2.getId()))
         .setRequirement(ImmutableList.of(r1, r3))
         .build();
-    ProviderNamedSelector pns1 = new ProviderNamedSelectorBuilder()
-        .setName(new SelectorName("pns1"))
+    ProviderNamedSelector pns1 = new ProviderNamedSelectorBuilder().setName(new SelectorName("pns1"))
         .setContract(ImmutableList.of(contract1.getId(), contract2.getId()))
         .setCapability(ImmutableList.of(cap1, cap3))
         .build();
 
-    QualityMatcher qm1 = new QualityMatcherBuilder()
-        .setName(new QualityMatcherName("qm1"))
+    QualityMatcher qm1 = new QualityMatcherBuilder().setName(new QualityMatcherName("qm1"))
         .setMatcherQuality(ImmutableList.of(new MatcherQualityBuilder(q1).build()))
         .build();
-    QualityMatcher qm3 = new QualityMatcherBuilder()
-         .setName(new QualityMatcherName("qm3"))
-         .setMatcherQuality(ImmutableList.of(new MatcherQualityBuilder(q3).build()))
-         .build();
-    ConsumerTargetSelector cts1 = new ConsumerTargetSelectorBuilder()
-        .setName(new SelectorName("cts1"))
+    QualityMatcher qm3 = new QualityMatcherBuilder().setName(new QualityMatcherName("qm3"))
+        .setMatcherQuality(ImmutableList.of(new MatcherQualityBuilder(q3).build()))
+        .build();
+    ConsumerTargetSelector cts1 = new ConsumerTargetSelectorBuilder().setName(new SelectorName("cts1"))
         .setQualityMatcher(ImmutableList.of(qm1))
         .build();
-    ProviderTargetSelector pts1 = new ProviderTargetSelectorBuilder()
-        .setName(new SelectorName("pts1"))
+    ProviderTargetSelector pts1 = new ProviderTargetSelectorBuilder().setName(new SelectorName("pts1"))
         .setQualityMatcher(ImmutableList.of(qm3))
         .build();
 
-    EndpointGroup eg1 = new EndpointGroupBuilder()
-        .setId(new EndpointGroupId("12802e21-8602-40ec-91d3-a75a296881ab"))
+    EndpointGroup eg1 = new EndpointGroupBuilder().setId(new EndpointGroupId("12802e21-8602-40ec-91d3-a75a296881ab"))
         .setConsumerNamedSelector(ImmutableList.of(cns1))
         .build();
-    EndpointGroup eg2 = new EndpointGroupBuilder()
-        .setId(new EndpointGroupId("66bb92ff-6e4c-41f1-8c7d-baa322016ab5"))
+    EndpointGroup eg2 = new EndpointGroupBuilder().setId(new EndpointGroupId("66bb92ff-6e4c-41f1-8c7d-baa322016ab5"))
         .setProviderNamedSelector(ImmutableList.of(pns1))
         .build();
-    EndpointGroup eg3 = new EndpointGroupBuilder()
-        .setId(new EndpointGroupId("0ed93cb5-28ee-46bd-a5a1-41d6aa88dae5"))
+    EndpointGroup eg3 = new EndpointGroupBuilder().setId(new EndpointGroupId("0ed93cb5-28ee-46bd-a5a1-41d6aa88dae5"))
         .setConsumerNamedSelector(ImmutableList.of(cns1, cns2))
         .build();
-    EndpointGroup eg4 = new EndpointGroupBuilder()
-        .setId(new EndpointGroupId("51eaf011-94a9-4cb1-b12d-149b77c5c016"))
+    EndpointGroup eg4 = new EndpointGroupBuilder().setId(new EndpointGroupId("51eaf011-94a9-4cb1-b12d-149b77c5c016"))
         .setConsumerTargetSelector(ImmutableList.of(cts1))
         .build();
-    EndpointGroup eg5 = new EndpointGroupBuilder()
-        .setId(new EndpointGroupId("92344738-ba37-4d69-b9e5-904eebdad585"))
+    EndpointGroup eg5 = new EndpointGroupBuilder().setId(new EndpointGroupId("92344738-ba37-4d69-b9e5-904eebdad585"))
         .setProviderTargetSelector(ImmutableList.of(pts1))
         .build();
-    EndpointGroup eg0 = new EndpointGroupBuilder()
-        .setId(new EndpointGroupId("64e03313-d6d8-43cb-ae4d-5a9b0a410c91"))
+    EndpointGroup eg0 = new EndpointGroupBuilder().setId(new EndpointGroupId("64e03313-d6d8-43cb-ae4d-5a9b0a410c91"))
         .build();
 
-    Tenant tenant1 = new TenantBuilder()
-        .setId(new TenantId("144b9aec-ef06-44f1-a50c-2fe5be456feb"))
+    Tenant tenant1 = new TenantBuilder().setId(new TenantId("144b9aec-ef06-44f1-a50c-2fe5be456feb"))
         .setContract(ImmutableList.of(contract1, contract2))
         .setEndpointGroup(ImmutableList.of(eg1, eg2))
         .build();
-    Tenant tenant2 = new TenantBuilder()
-        .setId(new TenantId("138a2bc3-d3cb-4588-ad7a-63c9f19ce3e5"))
+    Tenant tenant2 = new TenantBuilder().setId(new TenantId("138a2bc3-d3cb-4588-ad7a-63c9f19ce3e5"))
         .setContract(ImmutableList.of(contract1, contract2))
         .setEndpointGroup(ImmutableList.of(eg1, eg2, eg3))
         .build();
-    Tenant tenant3 = new TenantBuilder()
-        .setId(new TenantId("d1feede4-c31f-4232-ace2-93fcd065af1d"))
+    Tenant tenant3 = new TenantBuilder().setId(new TenantId("d1feede4-c31f-4232-ace2-93fcd065af1d"))
         .setContract(ImmutableList.of(contract1, contract2))
         .setEndpointGroup(ImmutableList.of(eg4, eg5))
         .build();
     Tenant tenant0 = new TenantBuilder().build();
-    Tenant tenant00 = new TenantBuilder()
-        .setContract(ImmutableList.of(contract0, contract00))
+    Tenant tenant00 = new TenantBuilder().setContract(ImmutableList.of(contract0, contract00))
         .setEndpointGroup(ImmutableList.of(eg0))
         .build();
 
@@ -370,18 +378,14 @@ public class PolicyResolverTest {
         Assert.assertTrue(resolver.resolvedTenants.isEmpty());
     }
 
-    public void verifyMatches(List<ContractId> contrids,
-                              List<TenantId> contrtids,
-                              List<ContractMatch> matches) {
+    public void verifyMatches(List<ContractId> contrids, List<TenantId> contrtids, List<ContractMatch> matches) {
         HashSet<ContractMatchKey> v = new HashSet<>();
         for (int i = 0; i < contrids.size(); i++) {
             v.add(new ContractMatchKey(contrtids.get(i), contrids.get(i)));
         }
         assertEquals(contrids.size(), matches.size());
         for (ContractMatch m : matches) {
-            ContractMatchKey k =
-                    new ContractMatchKey(m.contractTenant.getId(),
-                                         m.contract.getId());
+            ContractMatchKey k = new ContractMatchKey(m.contractTenant.getId(), m.contract.getId());
             assertTrue(v.contains(k));
         }
     }
@@ -392,41 +396,28 @@ public class PolicyResolverTest {
         TenantContext tc = new TenantContext(null);
 
         tc.tenant.set(new IndexedTenant(tenant1));
-        Table<EgKey, EgKey, List<ContractMatch>> contractMatches =
-                ContractResolverUtils.selectContracts(ImmutableSet.of(tc.tenant.get()));
+        Table<EgKey, EgKey, List<ContractMatch>> contractMatches = ContractResolverUtils.selectContracts(ImmutableSet.of(tc.tenant.get()));
         assertEquals(1, contractMatches.size());
-        List<ContractMatch> matches =
-                contractMatches.get(new EgKey(tenant1.getId(), eg1.getId()),
-                                    new EgKey(tenant1.getId(), eg2.getId()));
-        verifyMatches(ImmutableList.of(contract1.getId()),
-                      ImmutableList.of(tenant1.getId()),
-                      matches);
-
+        List<ContractMatch> matches = contractMatches.get(new EgKey(tenant1.getId(), eg1.getId()),
+                new EgKey(tenant1.getId(), eg2.getId()));
+        verifyMatches(ImmutableList.of(contract1.getId()), ImmutableList.of(tenant1.getId()), matches);
 
         tc.tenant.set(new IndexedTenant(tenant2));
         contractMatches = ContractResolverUtils.selectContracts(ImmutableSet.of(tc.tenant.get()));
         assertEquals(2, contractMatches.size());
-        matches = contractMatches.get(new EgKey(tenant2.getId(), eg1.getId()),
-                                      new EgKey(tenant2.getId(), eg2.getId()));
-        verifyMatches(ImmutableList.of(contract1.getId()),
-                      ImmutableList.of(tenant2.getId()),
-                      matches);
-
-        matches = contractMatches.get(new EgKey(tenant2.getId(), eg3.getId()),
-                                      new EgKey(tenant2.getId(), eg2.getId()));
+        matches = contractMatches.get(new EgKey(tenant2.getId(), eg1.getId()), new EgKey(tenant2.getId(), eg2.getId()));
+        verifyMatches(ImmutableList.of(contract1.getId()), ImmutableList.of(tenant2.getId()), matches);
+
+        matches = contractMatches.get(new EgKey(tenant2.getId(), eg3.getId()), new EgKey(tenant2.getId(), eg2.getId()));
         verifyMatches(ImmutableList.of(contract2.getId(), contract1.getId()),
-                      ImmutableList.of(tenant2.getId(), tenant2.getId()),
-                      matches);
+                ImmutableList.of(tenant2.getId(), tenant2.getId()), matches);
 
         // target selectors
         tc.tenant.set(new IndexedTenant(tenant3));
         contractMatches = ContractResolverUtils.selectContracts(ImmutableSet.of(tc.tenant.get()));
         assertEquals(1, contractMatches.size());
-        matches = contractMatches.get(new EgKey(tenant3.getId(), eg4.getId()),
-                                      new EgKey(tenant3.getId(), eg5.getId()));
-        verifyMatches(ImmutableList.of(contract2.getId()),
-                      ImmutableList.of(tenant3.getId()),
-                      matches);
+        matches = contractMatches.get(new EgKey(tenant3.getId(), eg4.getId()), new EgKey(tenant3.getId(), eg5.getId()));
+        verifyMatches(ImmutableList.of(contract2.getId()), ImmutableList.of(tenant3.getId()), matches);
 
         // empty matches
         tc.tenant.set(new IndexedTenant(tenant0));
@@ -440,23 +431,16 @@ public class PolicyResolverTest {
 
     @Test
     public void testSubjectSelection() throws Exception {
-        ConditionSet cs =
-                new ConditionSet(ImmutableSet.of(cond1.getName()),
-                                 ImmutableSet.of(cond3.getName()),
-                                 ImmutableSet.of(ImmutableSet.of(cond1.getName(),
-                                                                 cond2.getName())));
-        EndpointConstraint ec1 =
-                new EndpointConstraint(cs, null);
-        EndpointConstraint ec2 =
-                new EndpointConstraint(ConditionSet.EMPTY, null);
+        ConditionSet cs = new ConditionSet(ImmutableSet.of(cond1.getName()), ImmutableSet.of(cond3.getName()),
+                ImmutableSet.of(ImmutableSet.of(cond1.getName(), cond2.getName())));
+        EndpointConstraint ec1 = new EndpointConstraint(cs, null);
+        EndpointConstraint ec2 = new EndpointConstraint(ConditionSet.EMPTY, null);
         TenantContext tc = new TenantContext(null);
 
         tc.tenant.set(new IndexedTenant(tenant1));
-        Table<EgKey, EgKey, List<ContractMatch>> contractMatches =
-                ContractResolverUtils.selectContracts(ImmutableSet.of(tc.tenant.get()));
+        Table<EgKey, EgKey, List<ContractMatch>> contractMatches = ContractResolverUtils.selectContracts(ImmutableSet.of(tc.tenant.get()));
         Map<EgKey, Set<ConditionSet>> egConditions = new HashMap<>();
-        Table<EgKey, EgKey, Policy> policy =
-                SubjectResolverUtils.selectSubjects(contractMatches, egConditions);
+        Table<EgKey, EgKey, Policy> policy = SubjectResolverUtils.selectSubjects(contractMatches, egConditions);
         assertEquals(1, policy.size());
         Policy p = policy.get(new EgKey(tenant1.getId(), eg1.getId()), new EgKey(tenant1.getId(), eg2.getId()));
         List<RuleGroup> rules = p.getRuleMap().get(ec1, ec2);
@@ -475,8 +459,7 @@ public class PolicyResolverTest {
         policy = SubjectResolverUtils.selectSubjects(contractMatches, egConditions);
 
         assertEquals(2, policy.size());
-        p = policy.get(new EgKey(tenant2.getId(), eg3.getId()),
-                       new EgKey(tenant2.getId(), eg2.getId()));
+        p = policy.get(new EgKey(tenant2.getId(), eg3.getId()), new EgKey(tenant2.getId(), eg2.getId()));
         rules = p.getRuleMap().get(ec1, ec2);
         assertNotNull(rules);
         assertEquals(1, rules.size());
@@ -497,8 +480,7 @@ public class PolicyResolverTest {
         assertEquals(1, rg.rules.size());
         assertEquals(rule2.getName(), rg.rules.get(0).getName());
 
-        p = policy.get(new EgKey(tenant2.getId(), eg1.getId()),
-                       new EgKey(tenant2.getId(), eg2.getId()));
+        p = policy.get(new EgKey(tenant2.getId(), eg1.getId()), new EgKey(tenant2.getId(), eg2.getId()));
         rules = p.getRuleMap().get(ec1, ec2);
         assertNotNull(rules);
         assertEquals(1, rules.size());
@@ -515,8 +497,7 @@ public class PolicyResolverTest {
         policy = SubjectResolverUtils.selectSubjects(contractMatches, egConditions);
 
         assertEquals(1, policy.size());
-        p = policy.get(new EgKey(tenant3.getId(), eg4.getId()),
-                       new EgKey(tenant3.getId(), eg5.getId()));
+        p = policy.get(new EgKey(tenant3.getId(), eg4.getId()), new EgKey(tenant3.getId(), eg5.getId()));
         rules = p.getRuleMap().get(ec2, ec2);
         assertNotNull(rules);
         assertEquals(1, rules.size());
@@ -529,23 +510,25 @@ public class PolicyResolverTest {
     }
 
     private static class ContractMatchKey {
+
         TenantId tenant;
         ContractId contract;
+
         public ContractMatchKey(TenantId tenant, ContractId contract) {
             super();
             this.tenant = tenant;
             this.contract = contract;
         }
+
         @Override
         public int hashCode() {
             final int prime = 31;
             int result = 1;
-            result = prime * result +
-                     ((contract == null) ? 0 : contract.hashCode());
-            result = prime * result +
-                     ((tenant == null) ? 0 : tenant.hashCode());
+            result = prime * result + ((contract == null) ? 0 : contract.hashCode());
+            result = prime * result + ((tenant == null) ? 0 : tenant.hashCode());
             return result;
         }
+
         @Override
         public boolean equals(Object obj) {
             if (this == obj)
@@ -567,10 +550,10 @@ public class PolicyResolverTest {
                 return false;
             return true;
         }
+
         @Override
         public String toString() {
-            return "ContractMatchKey [tenant=" + tenant + ", contract=" +
-                   contract + "]";
+            return "ContractMatchKey [tenant=" + tenant + ", contract=" + contract + "]";
         }
     }
 
diff --git a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolverUtilsTest.java b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolverUtilsTest.java
new file mode 100644 (file)
index 0000000..dd71fa0
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.resolver;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Arrays;
+import java.util.HashSet;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContractId;
+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;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Target;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelector;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerTargetSelector;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelector;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderTargetSelector;
+
+import com.google.common.collect.Table;
+
+public class PolicyResolverUtilsTest {
+
+    @Test
+    public void resolvePolicyTest() {
+        IndexedTenant indexedTenant = mock(IndexedTenant.class);
+        HashSet<IndexedTenant> tenants = new HashSet<IndexedTenant>();
+        tenants.add(indexedTenant);
+        Tenant tenant = mock(Tenant.class);
+        when(indexedTenant.getTenant()).thenReturn(tenant);
+
+        EndpointGroup endpointGroup = mock(EndpointGroup.class);
+        when(tenant.getEndpointGroup()).thenReturn(Arrays.asList(endpointGroup));
+        ConsumerNamedSelector cns = mock(ConsumerNamedSelector.class);
+        when(endpointGroup.getConsumerNamedSelector()).thenReturn(Arrays.asList(cns));
+        ContractId contractId = mock(ContractId.class);
+        when(cns.getContract()).thenReturn(Arrays.asList(contractId));
+        Contract contract = mock(Contract.class);
+        when(tenant.getContract()).thenReturn(Arrays.asList(contract));
+        when(contract.getId()).thenReturn(contractId);
+        TenantId tenantId = mock(TenantId.class);
+        when(tenant.getId()).thenReturn(tenantId);
+
+        ProviderNamedSelector pns = mock(ProviderNamedSelector.class);
+        when(endpointGroup.getProviderNamedSelector()).thenReturn(Arrays.asList(pns));
+        ProviderTargetSelector pts = mock(ProviderTargetSelector.class);
+        when(endpointGroup.getProviderTargetSelector()).thenReturn(Arrays.asList(pts));
+        Target t = mock(Target.class);
+        when(contract.getTarget()).thenReturn(Arrays.asList(t));
+        ConsumerTargetSelector cts = mock(ConsumerTargetSelector.class);
+        when(endpointGroup.getConsumerTargetSelector()).thenReturn(Arrays.asList(cts));
+
+        Table<EgKey, EgKey, Policy> policyTable = PolicyResolverUtils.resolvePolicy(tenants);
+        Assert.assertEquals(1, policyTable.size());
+    }
+
+}
diff --git a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/validator/PolicyValidatorTest.java b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/validator/PolicyValidatorTest.java
new file mode 100644 (file)
index 0000000..818281e
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.resolver.validator;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.groupbasedpolicy.resolver.PolicyResolver;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.SubjectFeatureInstances;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
+
+public class PolicyValidatorTest {
+
+    DataContainer dataContainer;
+    PolicyResolver policyResolver;
+
+    @Before
+    public void initialise() {
+        dataContainer = mock(DataContainer.class);
+        policyResolver = mock(PolicyResolver.class);
+
+    }
+
+    @SuppressWarnings({"rawtypes", "unchecked"})
+    @Test
+    public void createValidatorTest() {
+        Validator validator;
+        validator = PolicyValidator.createValidator(dataContainer, policyResolver);
+        Assert.assertNull(validator);
+
+        when(dataContainer.getImplementedInterface()).thenReturn((Class) Tenant.class);
+        validator = PolicyValidator.createValidator(dataContainer, policyResolver);
+        Assert.assertNotNull(validator);
+        Assert.assertEquals(policyResolver, ((AbstractValidator) validator).getPolicyResolver());
+
+        when(dataContainer.getImplementedInterface()).thenReturn((Class) SubjectFeatureInstances.class);
+        validator = PolicyValidator.createValidator(dataContainer, policyResolver);
+        Assert.assertNotNull(validator);
+        Assert.assertEquals(policyResolver, ((AbstractValidator) validator).getPolicyResolver());
+
+        when(dataContainer.getImplementedInterface()).thenReturn((Class) ActionInstance.class);
+        validator = PolicyValidator.createValidator(dataContainer, policyResolver);
+        Assert.assertNotNull(validator);
+        Assert.assertEquals(policyResolver, ((AbstractValidator) validator).getPolicyResolver());
+    }
+
+    @SuppressWarnings({"unchecked", "rawtypes"})
+    @Test
+    public void validateTest() {
+        Tenant tenant = mock(Tenant.class);
+        when(tenant.getImplementedInterface()).thenReturn((Class) Tenant.class);
+        SubjectFeatureInstances subjectFeatureInstances = mock(SubjectFeatureInstances.class);
+        when(tenant.getSubjectFeatureInstances()).thenReturn(subjectFeatureInstances);
+        PolicyValidator.validate(tenant, policyResolver);
+
+        when(subjectFeatureInstances.getImplementedInterface()).thenReturn((Class) SubjectFeatureInstances.class);
+        PolicyValidator.validate(subjectFeatureInstances, policyResolver);
+
+        ActionInstance actionInstance = mock(ActionInstance.class);
+        when(actionInstance.getImplementedInterface()).thenReturn((Class) ActionInstance.class);
+        PolicyValidator.validate(actionInstance, policyResolver);
+    }
+
+}
diff --git a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/validator/SimpleResultTest.java b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/validator/SimpleResultTest.java
new file mode 100644 (file)
index 0000000..1374bdf
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.resolver.validator;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class SimpleResultTest {
+
+    private SimpleResult simpleResult;
+
+    @Test
+    public void constructorTest() {
+        simpleResult = new SimpleResult(true);
+        Assert.assertEquals(0, simpleResult.getCode());
+        Assert.assertTrue(simpleResult.getDescription().isEmpty());
+        Assert.assertTrue(simpleResult.isSuccess());
+        Assert.assertFalse(simpleResult.isFailure());
+
+        simpleResult = new SimpleResult(false);
+        Assert.assertEquals(1, simpleResult.getCode());
+        Assert.assertTrue(simpleResult.getDescription().isEmpty());
+        Assert.assertFalse(simpleResult.isSuccess());
+        Assert.assertTrue(simpleResult.isFailure());
+
+        simpleResult = new SimpleResult(2);
+        Assert.assertEquals(2, simpleResult.getCode());
+        Assert.assertTrue(simpleResult.getDescription().isEmpty());
+        Assert.assertFalse(simpleResult.isSuccess());
+        Assert.assertTrue(simpleResult.isFailure());
+
+        simpleResult = new SimpleResult(2, "description");
+        Assert.assertEquals(2, simpleResult.getCode());
+        Assert.assertEquals("description", simpleResult.getDescription());
+        Assert.assertFalse(simpleResult.isSuccess());
+        Assert.assertTrue(simpleResult.isFailure());
+    }
+
+}
diff --git a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/validator/ValidatorResultTest.java b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/validator/ValidatorResultTest.java
new file mode 100644 (file)
index 0000000..2d09b86
--- /dev/null
@@ -0,0 +1,198 @@
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.resolver.validator;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.groupbasedpolicy.resolver.validator.ValidationResult.Result;
+
+public class ValidatorResultTest {
+
+    private ValidationResult validationResult;
+    private ValidationResult childResult;
+
+    @Before
+    public void initialise() {
+        validationResult = new ValidationResult(Validator.class);
+        childResult = new ValidationResult(Validator.class);
+    }
+
+    @Test
+    public void constructorTest() {
+        Assert.assertEquals(Validator.class, validationResult.getValidatorClass());
+    }
+
+    @Test
+    public void descriptionTest() {
+        String description = "description";
+        validationResult.setDescription(description);
+        Assert.assertEquals(description, validationResult.getDescription());
+    }
+
+    @Test
+    public void resultTest() {
+        validationResult.setResult(Result.SUCCESS);
+        Assert.assertEquals(Result.SUCCESS, validationResult.getResult());
+        Assert.assertTrue(validationResult.getResult().getValue());
+        validationResult.setResult(Result.FAIL_BASE);
+        Assert.assertEquals(Result.FAIL_BASE, validationResult.getResult());
+        Assert.assertFalse(validationResult.getResult().getValue());
+        validationResult.setResult(Result.FAIL_CHILD);
+        Assert.assertEquals(Result.FAIL_CHILD, validationResult.getResult());
+        Assert.assertFalse(validationResult.getResult().getValue());
+        validationResult.setResult(Result.FAIL_BASE_AND_CHILD);
+        Assert.assertEquals(Result.FAIL_BASE_AND_CHILD, validationResult.getResult());
+        Assert.assertFalse(validationResult.getResult().getValue());
+    }
+
+    @Test
+    public void childResultTestSuccessSuccess() {
+        validationResult.setResult(Result.SUCCESS);
+        childResult.setResult(Result.SUCCESS);
+        validationResult.addChildResult(childResult);
+        Assert.assertEquals(Result.SUCCESS, validationResult.getResult());
+        Assert.assertTrue(validationResult.getChildResults().contains(childResult));
+    }
+
+    @Test
+    public void childResultTestSuccessFailBase() {
+        validationResult.setResult(Result.SUCCESS);
+        childResult.setResult(Result.FAIL_BASE);
+        validationResult.addChildResult(childResult);
+        validationResult.setResult(Result.FAIL_CHILD);
+        Assert.assertTrue(validationResult.getChildResults().contains(childResult));
+    }
+
+    @Test
+    public void childResultTestSuccessFailChild() {
+        validationResult.setResult(Result.SUCCESS);
+        childResult.setResult(Result.FAIL_CHILD);
+        validationResult.addChildResult(childResult);
+        validationResult.setResult(Result.FAIL_CHILD);
+        Assert.assertTrue(validationResult.getChildResults().contains(childResult));
+    }
+
+    @Test
+    public void childResultTestSuccessFailBaseAndChild() {
+        validationResult.setResult(Result.SUCCESS);
+        childResult.setResult(Result.FAIL_BASE_AND_CHILD);
+        validationResult.addChildResult(childResult);
+        validationResult.setResult(Result.FAIL_CHILD);
+        Assert.assertTrue(validationResult.getChildResults().contains(childResult));
+    }
+
+    @Test
+    public void childResultTestFailBaseSuccess() {
+        validationResult.setResult(Result.FAIL_BASE);
+        childResult.setResult(Result.SUCCESS);
+        validationResult.addChildResult(childResult);
+        Assert.assertEquals(Result.FAIL_BASE, validationResult.getResult());
+        Assert.assertTrue(validationResult.getChildResults().contains(childResult));
+    }
+
+    @Test
+    public void childResultTestFailBaseFailBase() {
+        validationResult.setResult(Result.FAIL_BASE);
+        childResult.setResult(Result.FAIL_BASE);
+        validationResult.addChildResult(childResult);
+        validationResult.setResult(Result.FAIL_CHILD);
+        Assert.assertTrue(validationResult.getChildResults().contains(childResult));
+    }
+
+    @Test
+    public void childResultTestFailBaseFailChild() {
+        validationResult.setResult(Result.FAIL_BASE);
+        childResult.setResult(Result.FAIL_CHILD);
+        validationResult.addChildResult(childResult);
+        validationResult.setResult(Result.FAIL_CHILD);
+        Assert.assertTrue(validationResult.getChildResults().contains(childResult));
+    }
+
+    @Test
+    public void childResultTestFailBaseFailBaseAndChild() {
+        validationResult.setResult(Result.FAIL_BASE);
+        childResult.setResult(Result.FAIL_BASE_AND_CHILD);
+        validationResult.addChildResult(childResult);
+        validationResult.setResult(Result.FAIL_CHILD);
+        Assert.assertTrue(validationResult.getChildResults().contains(childResult));
+    }
+
+    @Test
+    public void childResultTestFailChildSuccess() {
+        validationResult.setResult(Result.FAIL_CHILD);
+        childResult.setResult(Result.SUCCESS);
+        validationResult.addChildResult(childResult);
+        Assert.assertEquals(Result.FAIL_CHILD, validationResult.getResult());
+        Assert.assertTrue(validationResult.getChildResults().contains(childResult));
+    }
+
+    @Test
+    public void childResultTestFailChildFailBase() {
+        validationResult.setResult(Result.FAIL_CHILD);
+        childResult.setResult(Result.FAIL_BASE);
+        validationResult.addChildResult(childResult);
+        validationResult.setResult(Result.FAIL_CHILD);
+        Assert.assertTrue(validationResult.getChildResults().contains(childResult));
+    }
+
+    @Test
+    public void childResultTestFailChildFailChild() {
+        validationResult.setResult(Result.FAIL_CHILD);
+        childResult.setResult(Result.FAIL_CHILD);
+        validationResult.addChildResult(childResult);
+        validationResult.setResult(Result.FAIL_CHILD);
+        Assert.assertTrue(validationResult.getChildResults().contains(childResult));
+    }
+
+    @Test
+    public void childResultTestFailChildFailBaseAndChild() {
+        validationResult.setResult(Result.FAIL_CHILD);
+        childResult.setResult(Result.FAIL_BASE_AND_CHILD);
+        validationResult.addChildResult(childResult);
+        validationResult.setResult(Result.FAIL_CHILD);
+        Assert.assertTrue(validationResult.getChildResults().contains(childResult));
+    }
+
+    @Test
+    public void childResultTestFailBaseAndChildSuccess() {
+        validationResult.setResult(Result.FAIL_BASE);
+        childResult.setResult(Result.SUCCESS);
+        validationResult.addChildResult(childResult);
+        Assert.assertEquals(Result.FAIL_BASE, validationResult.getResult());
+        Assert.assertTrue(validationResult.getChildResults().contains(childResult));
+    }
+
+    @Test
+    public void childResultTestFailBaseAndChildFailBase() {
+        validationResult.setResult(Result.FAIL_BASE_AND_CHILD);
+        childResult.setResult(Result.FAIL_BASE);
+        validationResult.addChildResult(childResult);
+        validationResult.setResult(Result.FAIL_CHILD);
+        Assert.assertTrue(validationResult.getChildResults().contains(childResult));
+    }
+
+    @Test
+    public void childResultTestFailBaseAndChildFailChild() {
+        validationResult.setResult(Result.FAIL_BASE_AND_CHILD);
+        childResult.setResult(Result.FAIL_CHILD);
+        validationResult.addChildResult(childResult);
+        validationResult.setResult(Result.FAIL_CHILD);
+        Assert.assertTrue(validationResult.getChildResults().contains(childResult));
+    }
+
+    @Test
+    public void childResultTestFailBaseAndChildFailBaseAndChild() {
+        validationResult.setResult(Result.FAIL_BASE_AND_CHILD);
+        childResult.setResult(Result.FAIL_BASE_AND_CHILD);
+        validationResult.addChildResult(childResult);
+        validationResult.setResult(Result.FAIL_CHILD);
+        Assert.assertTrue(validationResult.getChildResults().contains(childResult));
+    }
+}