From: Kinsey Nietzsche Date: Fri, 7 Aug 2015 09:42:57 +0000 (+0200) Subject: Bug 3702 - UT GBP - 13 - groupbasedpolicy-base X-Git-Tag: release/beryllium~126^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F22%2F24922%2F2;hp=fd9515fed707256a48d1b1094cbf480b61a1f11f;p=groupbasedpolicy.git Bug 3702 - UT GBP - 13 - groupbasedpolicy-base 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 --- diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/resolver/validator/PolicyValidator.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/resolver/validator/PolicyValidator.java index 7679afb50..1787a2f4b 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/resolver/validator/PolicyValidator.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/resolver/validator/PolicyValidator.java @@ -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 Validator 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 index 000000000..dbc75b7a1 --- /dev/null +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/EndpointConstraintTest.java @@ -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 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 prefixConstraints = new HashSet(); + prefixConstraints.add(prefixConstraint); + + Set 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 index 000000000..e6a629956 --- /dev/null +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolutionExceptionTest.java @@ -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()); + } + +} diff --git a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolverTest.java b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolverTest.java index 11eec40be..9a23c477d 100644 --- a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolverTest.java +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolverTest.java @@ -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, ReadFailedException> unresolved; - Capability cap1 = new CapabilityBuilder() - .setName(new CapabilityName("cap1")) - .build(); - Capability cap3 = new CapabilityBuilder() - .setName(new CapabilityName("cap3")) - .build(); + private Table policyMap; + private Map> egConditions; + private List 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>(); + policyListenerScopes = new ArrayList(); + 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 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 contrids, - List contrtids, - List matches) { + public void verifyMatches(List contrids, List contrtids, List matches) { HashSet 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> contractMatches = - ContractResolverUtils.selectContracts(ImmutableSet.of(tc.tenant.get())); + Table> contractMatches = ContractResolverUtils.selectContracts(ImmutableSet.of(tc.tenant.get())); assertEquals(1, contractMatches.size()); - List 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 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> contractMatches = - ContractResolverUtils.selectContracts(ImmutableSet.of(tc.tenant.get())); + Table> contractMatches = ContractResolverUtils.selectContracts(ImmutableSet.of(tc.tenant.get())); Map> egConditions = new HashMap<>(); - Table policy = - SubjectResolverUtils.selectSubjects(contractMatches, egConditions); + Table 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 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 index 000000000..dd71fa0f3 --- /dev/null +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolverUtilsTest.java @@ -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 tenants = new HashSet(); + 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 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 index 000000000..818281e6c --- /dev/null +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/validator/PolicyValidatorTest.java @@ -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 index 000000000..1374bdfa7 --- /dev/null +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/validator/SimpleResultTest.java @@ -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 index 000000000..2d09b8694 --- /dev/null +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/validator/ValidatorResultTest.java @@ -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)); + } +}