/*
- * 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,
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;
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;
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();
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));
}
}
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));
@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);
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());
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());
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());
}
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)
return false;
return true;
}
+
@Override
public String toString() {
- return "ContractMatchKey [tenant=" + tenant + ", contract=" +
- contract + "]";
+ return "ContractMatchKey [tenant=" + tenant + ", contract=" + contract + "]";
}
}
--- /dev/null
+/*
+ * 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));
+ }
+}