import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutionException;
import java.util.concurrent.ScheduledExecutorService;
import com.google.common.annotations.VisibleForTesting;
return val;
}
- private List<SecurityRuleGroup> buildSecurityRuleGroup(Contract contract) {
+ @VisibleForTesting
+ List<SecurityRuleGroup> buildSecurityRuleGroup(Contract contract) {
LOG.trace("Start buildSecurityRuleGroup for contract {}", contract.getId().getValue());
List<SecurityRuleGroup> securityRuleGroups = new ArrayList<>();
if (contract.getClause() == null) {
return securityRuleGroups;
}
- private List<SecurityRule> getSecurityRules(Contract contract, SubjectName subjectRef, List<Rule> subRules) {
+ @VisibleForTesting
+ List<SecurityRule> getSecurityRules(Contract contract, SubjectName subjectRef, List<Rule> subRules) {
List<SecurityRule> securityRules = new ArrayList<>();
for (Rule rule : subRules) {
List<ClassifierRef> classifierRefs = rule.getClassifierRef();
return data.get();
}
} catch (Exception e) {
- LOG.error("Couldn't read Action instance from datastore. Exception: ", e);
+ LOG.error("Couldn't read Classifier instance from datastore. Exception: ", e);
}
return null;
}
}
}
- private Uuid getFaasSubnetId(Endpoint endpoint) {
+ @VisibleForTesting
+ Uuid getFaasSubnetId(Endpoint endpoint) {
if (endpoint.getEndpointGroup() == null) {
LOG.error("Failed Endpoint registration -- No Endpoint-Group Id in endpoint {}", endpoint);
return null;
return null;
}
- private boolean validate(Endpoint endpoint) {
+ @VisibleForTesting
+ boolean validate(Endpoint endpoint) {
if (endpoint.getL2Context() == null) {
LOG.error("Endpoint Failed Validation -- Missing L2 Context. Endpoint {}", endpoint);
return false;
private final ListenerRegistration<DataChangeListener> registerListener;
private final ScheduledExecutorService executor;
private final DataBroker dataProvider;
- protected final Map<Pair<EndpointGroupId, TenantId>, List<SubnetId>> epgSubnetsMap = new HashMap<>();
+ final Map<Pair<EndpointGroupId, TenantId>, List<SubnetId>> epgSubnetsMap = new HashMap<>();
private final ConcurrentHashMap<TenantId, Uuid> mappedTenants = new ConcurrentHashMap<>();
- protected final ConcurrentHashMap<TenantId, ArrayList<ListenerRegistration<DataChangeListener>>> registeredTenants =
+ final ConcurrentHashMap<TenantId, ArrayList<ListenerRegistration<DataChangeListener>>> registeredTenants =
new ConcurrentHashMap<>();
public FaasPolicyManager(DataBroker dataBroker, ScheduledExecutorService executor) {
public void close() throws Exception {
synchronized (registeredTenants) {
for (ArrayList<ListenerRegistration<DataChangeListener>> list : registeredTenants.values()) {
- for (ListenerRegistration<DataChangeListener> reg : list) {
- reg.close();
- }
+ list.forEach(ListenerRegistration::close);
}
registeredTenants.clear();
if (!resolvedPoliciesOptional.isPresent() || resolvedPoliciesOptional.get().getResolvedPolicy() == null) {
return;
}
+ //TODO forEach possible?
List<ResolvedPolicy> resolvedPolicies = resolvedPoliciesOptional.get().getResolvedPolicy();
for (ResolvedPolicy policy : resolvedPolicies) {
if (policy.getConsumerTenantId().equals(gbpTenantId)) {
LogicalRouterBuilder provLR = initLogicalRouterBuilder(provEpg, faasTenantId,
isProviderPublic(externalImplicitGroup));
- if (!UlnDatastoreApi.attachAndSubmitToDs(consLR, provLR, new Pair<Uuid, Uuid>(null, privateSecRulesId), null)) {
+ if (!UlnDatastoreApi.attachAndSubmitToDs(consLR, provLR, new Pair<>(null, privateSecRulesId), null)) {
LOG.error("Failed to join Logical Routers in a Logical Network");
return;
}
*/
package org.opendaylight.groupbasedpolicy.renderer.faas;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import com.google.common.base.Optional;
+import com.google.common.collect.ImmutableList;
import com.google.common.util.concurrent.CheckedFuture;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.Mockito;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.groupbasedpolicy.renderer.faas.test.DataChangeListenerTester;
import org.opendaylight.yang.gen.v1.urn.opendaylight.faas.logical.faas.common.rev151013.Uuid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.faas.logical.faas.security.rules.rev151013.security.rule.groups.attributes.security.rule.groups.container.SecurityRuleGroups;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.faas.logical.faas.security.rules.rev151013.security.rule.groups.attributes.security.rule.groups.container.security.rule.groups.SecurityRuleGroup;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.faas.logical.faas.security.rules.rev151013.security.rule.groups.attributes.security.rule.groups.container.security.rule.groups.security.rule.group.SecurityRule;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClauseName;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContractId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.RuleName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.faas.rev151009.mapped.tenants.entities.mapped.entity.MappedContract;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.classifier.refs.ClassifierRef;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.classifier.refs.ClassifierRefBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.ContractBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Clause;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.ClauseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.SubjectBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.RuleBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstanceBuilder;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.powermock.api.mockito.PowerMockito;
@PrepareForTest(UlnDatastoreApi.class)
public class FaasContractManagerListenerCovrgTest {
+ private static final ClauseName CLAUSE_NAME = new ClauseName("clause-1");
+ public static final SubjectName SUBJECT_NAME = new SubjectName("subject-name");
private InstanceIdentifier<Contract> contractIid;
private ContractId contractId = new ContractId("contractId");
private FaasContractManagerListener listener;
tester.setRemovedPath(contractIid);
}
+ @SuppressWarnings("unchecked")
@Test
- public void testT() throws ReadFailedException {
+ public void testExecuteEvent() throws ReadFailedException {
PowerMockito.mockStatic(UlnDatastoreApi.class);
PowerMockito.doNothing().when(UlnDatastoreApi.class);
UlnDatastoreApi.submitSecurityGroupsToDs(any(SecurityRuleGroups.class));
listener.executeEvent(tester.getChangeMock());
}
- private DataObject makeTestContract() {
- ContractBuilder builder = new ContractBuilder();
- builder.setId(new ContractId("b4511aac-ae43-11e5-bf7f-feff819cdc9f"));
- return builder.build();
+ @Test
+ public void testBuildSecurityRuleGroup(){
+ List<SecurityRuleGroup> securityRuleGroups;
+
+ Clause clause = new ClauseBuilder()
+ .setName(CLAUSE_NAME)
+ .setSubjectRefs(ImmutableList.of(SUBJECT_NAME))
+ .build();
+
+ Contract contractNoClause = new ContractBuilder()
+ .setId(contractId)
+ .build();
+
+ securityRuleGroups = listener.buildSecurityRuleGroup(contractNoClause);
+ assertNull(securityRuleGroups);
+
+ Clause clauseNoSubjectRefs = new ClauseBuilder()
+ .setName(CLAUSE_NAME)
+ .build();
+ Contract contractClauseNoSubjectRefs = new ContractBuilder()
+ .setId(contractId)
+ .setClause(ImmutableList.of(clauseNoSubjectRefs))
+ .build();
+
+ securityRuleGroups = listener.buildSecurityRuleGroup(contractClauseNoSubjectRefs);
+ assertNotNull(securityRuleGroups);
+ assertTrue(securityRuleGroups.isEmpty());
+
+ Contract contractNoSubject = new ContractBuilder()
+ .setId(contractId)
+ .setClause(ImmutableList.of(clause))
+ .build();
+
+ securityRuleGroups = listener.buildSecurityRuleGroup(contractNoSubject);
+ assertNotNull(securityRuleGroups);
+ assertTrue(securityRuleGroups.isEmpty());
+
+ Contract contract = new ContractBuilder()
+ .setId(contractId)
+ .setClause(ImmutableList.of(clause))
+ .setSubject(ImmutableList.of(new SubjectBuilder().setName(SUBJECT_NAME).build()))
+ .build();
+
+ securityRuleGroups = listener.buildSecurityRuleGroup(contract);
+ assertNotNull(securityRuleGroups);
+ assertFalse(securityRuleGroups.isEmpty());
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testGetSecurityRules() throws ReadFailedException, ExecutionException, InterruptedException {
+ List<Rule> rules;
+ List<SecurityRule> securityRules;
+
+ Clause clause = new ClauseBuilder()
+ .setName(CLAUSE_NAME)
+ .setSubjectRefs(ImmutableList.of(SUBJECT_NAME))
+ .build();
+
+ Contract contract = new ContractBuilder()
+ .setId(contractId)
+ .setClause(ImmutableList.of(clause))
+ .setSubject(ImmutableList.of(new SubjectBuilder().setName(SUBJECT_NAME).build()))
+ .build();
+
+ Rule ruleNoRefs = new RuleBuilder()
+ .setName(new RuleName("rule-no-refs"))
+ .setOrder(1)
+ .build();
+
+ Rule ruleEmptyRefs = new RuleBuilder()
+ .setClassifierRef(ImmutableList.of())
+ .setActionRef(ImmutableList.of())
+ .setName(new RuleName("rule-empty-refs"))
+ .setOrder(2)
+ .build();
+
+ rules = ImmutableList.of(ruleNoRefs, ruleEmptyRefs);
+
+ securityRules = listener.getSecurityRules(contract, SUBJECT_NAME, rules);
+
+ assertEquals(rules.size(), securityRules.size());
+
+ ClassifierName CLASSIFIER_NAME = new ClassifierName("classifier-1");
+ ClassifierRef classifierRef = new ClassifierRefBuilder()
+ .setName(CLASSIFIER_NAME)
+ .build();
+ Rule rule = new RuleBuilder()
+ .setClassifierRef(ImmutableList.of(classifierRef))
+ .setActionRef(ImmutableList.of())
+ .setName(new RuleName("rule-1"))
+ .setOrder(2)
+ .build();
+
+ ReadOnlyTransaction roTx1 = mock(ReadOnlyTransaction.class);
+
+ CheckedFuture<Optional<ClassifierInstance>, ReadFailedException> futureClassifierInstance = mock(CheckedFuture.class);
+ Optional<ClassifierInstance> optClassifierInstance = mock(Optional.class);
+ when(optClassifierInstance.isPresent()).thenReturn(false);
+ when(futureClassifierInstance.checkedGet()).thenReturn(optClassifierInstance);
+ when(roTx1.read(eq(LogicalDatastoreType.CONFIGURATION),
+ Mockito.<InstanceIdentifier>any())).thenReturn(futureClassifierInstance);
+
+ rules = ImmutableList.of(rule);
+ securityRules = listener.getSecurityRules(contract, SUBJECT_NAME, rules);
+
+ assertEquals(rules.size(), securityRules.size());
+
}
+
}
*/
package org.opendaylight.groupbasedpolicy.renderer.faas;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
import java.util.concurrent.ScheduledExecutorService;
import com.google.common.base.Optional;
+import com.google.common.collect.ImmutableList;
import com.google.common.util.concurrent.CheckedFuture;
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
import org.opendaylight.groupbasedpolicy.renderer.faas.test.DataChangeListenerTester;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.faas.faas.endpoint.rev151009.FaasEndpointContext;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.faas.faas.endpoint.rev151009.FaasEndpointContextBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.faas.logical.faas.common.rev151013.Uuid;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.EndpointGroupId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2BridgeDomainId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.NetworkDomainId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubnetId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoint.fields.L3AddressBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3PrefixBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.faas.rev151009.mapped.tenants.entities.mapped.entity.MappedEndpoint;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.faas.rev151009.mapped.tenants.entities.mapped.entity.MappedEndpointKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.faas.rev151009.mapped.tenants.entities.mapped.entity.MappedSubnet;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.ResolvedPolicies;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
private InstanceIdentifier<Endpoint> epIid;
private FaasEndpointManagerListener listener;
private TenantId gbpTenantId = new TenantId("gbpTenantId");
- private SubnetId subnetId = new SubnetId("subnetId");
private Uuid faasTenantId = new Uuid("b4511aac-ae43-11e5-bf7f-feff819cdc9f");
- private Uuid faasSubnetId = new Uuid("c4511aac-ae43-11e5-bf7f-feff819cdc9f");
private final ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
private DataChangeListenerTester tester;
private DataBroker dataProvider;
listener.executeEvent(tester.getChangeMock());
}
+ @Test
+ public void testValidate() {
+ EndpointGroupId endpointGroupId = new EndpointGroupId("epg-1");
+ FaasEndpointContext faasEndpointContext1 = new FaasEndpointContextBuilder().build();
+ FaasEndpointContext faasEndpointContext2 = new FaasEndpointContextBuilder()
+ .setFaasPortRefId(new Uuid("c4511aac-ae43-11e5-bf7f-feff819cdc9f")).build();
+
+ Endpoint ep = new EndpointBuilder()
+ .build();
+ assertFalse(listener.validate(ep));
+
+ ep = new EndpointBuilder()
+ .setL2Context(L_2_BRIDGE_DOMAIN_ID)
+ .build();
+ assertFalse(listener.validate(ep));
+
+ ep = new EndpointBuilder()
+ .setL2Context(L_2_BRIDGE_DOMAIN_ID)
+ .setL3Address(ImmutableList.of(new L3AddressBuilder().build()))
+ .build();
+ assertFalse(listener.validate(ep));
+
+ ep = new EndpointBuilder()
+ .setL2Context(L_2_BRIDGE_DOMAIN_ID)
+ .setL3Address(ImmutableList.of(new L3AddressBuilder().build()))
+ .setMacAddress(MAC_ADDRESS)
+ .build();
+ assertFalse(listener.validate(ep));
+
+ ep = new EndpointBuilder()
+ .setL2Context(L_2_BRIDGE_DOMAIN_ID)
+ .setL3Address(ImmutableList.of(new L3AddressBuilder().build()))
+ .setMacAddress(MAC_ADDRESS)
+ .setTenant(gbpTenantId)
+ .build();
+ assertFalse(listener.validate(ep));
+
+ ep = new EndpointBuilder()
+ .setL2Context(L_2_BRIDGE_DOMAIN_ID)
+ .setL3Address(ImmutableList.of(new L3AddressBuilder().build()))
+ .setMacAddress(MAC_ADDRESS)
+ .setTenant(gbpTenantId)
+ .setEndpointGroup(endpointGroupId)
+ .build();
+ assertFalse(listener.validate(ep));
+
+ ep = new EndpointBuilder()
+ .setL2Context(L_2_BRIDGE_DOMAIN_ID)
+ .setL3Address(ImmutableList.of(new L3AddressBuilder().build()))
+ .setMacAddress(MAC_ADDRESS)
+ .setTenant(gbpTenantId)
+ .setEndpointGroup(endpointGroupId)
+ .addAugmentation(FaasEndpointContext.class, faasEndpointContext1)
+ .build();
+ assertFalse(listener.validate(ep));
+
+ ep = new EndpointBuilder()
+ .setL2Context(L_2_BRIDGE_DOMAIN_ID)
+ .setL3Address(ImmutableList.of(new L3AddressBuilder().build()))
+ .setMacAddress(MAC_ADDRESS)
+ .setTenant(gbpTenantId)
+ .setEndpointGroup(endpointGroupId)
+ .addAugmentation(FaasEndpointContext.class, faasEndpointContext2)
+ .build();
+ assertTrue(listener.validate(ep));
+ }
+
+ @Test
+ public void testProcessEndpoint(){
+ EndpointGroupId endpointGroupId = new EndpointGroupId("epg-1");
+ FaasEndpointContext faasEndpointContext2 = new FaasEndpointContextBuilder()
+ .setFaasPortRefId(new Uuid("c4511aac-ae43-11e5-bf7f-feff819cdc9f")).build();
+
+ Endpoint ep = new EndpointBuilder()
+ .setL2Context(L_2_BRIDGE_DOMAIN_ID)
+ .setL3Address(ImmutableList.of(new L3AddressBuilder().build()))
+ .setMacAddress(MAC_ADDRESS)
+ .setTenant(gbpTenantId)
+ .setEndpointGroup(endpointGroupId)
+ .addAugmentation(FaasEndpointContext.class, faasEndpointContext2)
+ .build();
+
+ listener.processEndpoint(ep);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testGetFaasSubnetId() throws ReadFailedException{
+ EndpointGroupId endpointGroupId = new EndpointGroupId("epg-1");
+ NetworkDomainId networkDomainId = new NetworkDomainId("network-domain-1");
+ FaasEndpointContext faasEndpointContext2 = new FaasEndpointContextBuilder()
+ .setFaasPortRefId(new Uuid("c4511aac-ae43-11e5-bf7f-feff819cdc9f")).build();
+ SubnetId subnetId = new SubnetId(networkDomainId);
+ ReadOnlyTransaction roTx1 = mock(ReadOnlyTransaction.class);
+ ReadWriteTransaction rwTx2 = mock(ReadWriteTransaction.class);
+
+ CheckedFuture<Optional<ResolvedPolicies>, ReadFailedException> futureResolvedPolicies = mock(CheckedFuture.class);
+ Optional<ResolvedPolicies> optResolvedPolicies = mock(Optional.class);
+ when(optResolvedPolicies.isPresent()).thenReturn(false);
+ when(futureResolvedPolicies.checkedGet()).thenReturn(optResolvedPolicies);
+ when(roTx1.read(LogicalDatastoreType.OPERATIONAL,
+ InstanceIdentifier.builder(ResolvedPolicies.class).build())).thenReturn(futureResolvedPolicies);
+
+ CheckedFuture<Optional<MappedSubnet>, ReadFailedException> futureMappedSubnet = mock(CheckedFuture.class);
+ Optional<MappedSubnet> optMappedSubnet = mock(Optional.class);
+ when(optMappedSubnet.isPresent()).thenReturn(false);
+ when(futureMappedSubnet.checkedGet()).thenReturn(optMappedSubnet);
+ when(rwTx2.read(LogicalDatastoreType.OPERATIONAL,
+ FaasIidFactory.mappedSubnetIid(gbpTenantId, subnetId))).thenReturn(futureMappedSubnet);
+
+ when(dataProvider.newReadOnlyTransaction()).thenReturn(roTx1);
+ when(dataProvider.newReadWriteTransaction()).thenReturn(rwTx2);
+
+ Endpoint ep = new EndpointBuilder()
+ .setL2Context(L_2_BRIDGE_DOMAIN_ID)
+ .setL3Address(ImmutableList.of(new L3AddressBuilder().build()))
+ .setMacAddress(MAC_ADDRESS)
+ .setTenant(gbpTenantId)
+ .addAugmentation(FaasEndpointContext.class, faasEndpointContext2)
+ .build();
+
+ assertNull(listener.getFaasSubnetId(ep));
+
+ ep = new EndpointBuilder()
+ .setL2Context(L_2_BRIDGE_DOMAIN_ID)
+ .setL3Address(ImmutableList.of(new L3AddressBuilder().build()))
+ .setMacAddress(MAC_ADDRESS)
+ .setTenant(gbpTenantId)
+ .setEndpointGroup(endpointGroupId)
+ .setNetworkContainment(networkDomainId)
+ .addAugmentation(FaasEndpointContext.class, faasEndpointContext2)
+ .build();
+
+ assertNull(listener.getFaasSubnetId(ep));
+ }
+
@Test
public void testOnDataChanged_EndpointL3() {
EndpointL3 ep = new EndpointL3Builder().setTenant(gbpTenantId)
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.faas.rev151009.logical.networks.logical.network.ProviderNetworkBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.faas.rev151009.mapped.tenants.entities.MappedEntity;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.faas.rev151009.mapped.tenants.entities.MappedTenant;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.faas.rev151009.mapped.tenants.entities.mapped.entity.MappedSubnet;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.faas.rev151009.mapped.tenants.entities.mapped.entity.MappedSubnetBuilder;
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.forwarding.context.L2BridgeDomain;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomainBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomain;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomainBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3Context;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3ContextBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.Subnet;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.SubnetBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroupBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.ResolvedPolicies;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
-@PrepareForTest({UlnDatastoreApi.class})
+@PrepareForTest(UlnDatastoreApi.class)
public class FaasPolicyManagerCovrgTest {
private InstanceIdentifier<DataObject> policyId;
private AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> change;
DataBroker dataProvider;
private final ScheduledExecutorService executor = Executors.newScheduledThreadPool(Runtime.getRuntime()
- .availableProcessors());
- EndpointGroupId consumerEpgId = new EndpointGroupId("consumerEpgId");
- SubnetId consumerSubnet = new SubnetId("consumerSubnet");
- SubnetId providerSubnet = new SubnetId("providerSubnet");
- EndpointGroupId providerEpgId = new EndpointGroupId("providerEpgId");
- ContractId contractId = new ContractId("contractId");
- TenantId tenantId = new TenantId("tenantId");
- Uuid faasTenantId = new Uuid("0eb98cf5-086c-4a81-8a4e-0c3b4566108b");
- Uuid faasSecRulesId = new Uuid("1eb98cf5-086c-4a81-8a4e-0c3b4566108b");
- L3ContextId l3Context = new L3ContextId("l3ContextId");
- EndpointGroupId epgId = new EndpointGroupId("epgId");
- SubnetId subnetId = new SubnetId("subnetId");
- Uuid dummyUuid1 = new Uuid("2eb98cf5-086c-4a81-8a4e-0c3b4566108b");
- Uuid dummyUuid2 = new Uuid("3eb98cf5-086c-4a81-8a4e-0c3b4566108b");
+ .availableProcessors());
+ private EndpointGroupId consumerEpgId = new EndpointGroupId("consumerEpgId");
+ private SubnetId consumerSubnet = new SubnetId("consumerSubnet");
+ private SubnetId providerSubnet = new SubnetId("providerSubnet");
+ private EndpointGroupId providerEpgId = new EndpointGroupId("providerEpgId");
+ private ContractId contractId = new ContractId("contractId");
+ private TenantId tenantId = new TenantId("tenantId");
+ private Uuid faasTenantId = new Uuid("0eb98cf5-086c-4a81-8a4e-0c3b4566108b");
+ private Uuid faasSecRulesId = new Uuid("1eb98cf5-086c-4a81-8a4e-0c3b4566108b");
+ private L3ContextId l3Context = new L3ContextId("l3ContextId");
+ private EndpointGroupId epgId = new EndpointGroupId("epgId");
+ private SubnetId subnetId = new SubnetId("subnetId");
+ private Uuid dummyUuid1 = new Uuid("2eb98cf5-086c-4a81-8a4e-0c3b4566108b");
+ private Uuid dummyUuid2 = new Uuid("3eb98cf5-086c-4a81-8a4e-0c3b4566108b");
@SuppressWarnings("unchecked")
@Before
when(roTx.read(LogicalDatastoreType.OPERATIONAL,
FaasIidFactory.logicalNetworksIid())).thenReturn(futureLogicalNetworks);
LogicalNetworks logicalNetworks = new LogicalNetworksBuilder()
- .setLogicalNetwork( new ArrayList<LogicalNetwork>())
+ .setLogicalNetwork(new ArrayList<LogicalNetwork>())
.build();
Optional<LogicalNetworks> optLogicalNetworks = mock(Optional.class);
when(optLogicalNetworks.isPresent()).thenReturn(true);
}
@Test
- public void testRegisterTenant_null(){
+ public void testRegisterTenant_null() {
FaasPolicyManager policyManager = spy(new FaasPolicyManager(dataProvider, executor));
doNothing().when(policyManager).registerTenant(tenantId, null);
}
@Test
- public void testIsUuid(){
+ public void testIsUuid() {
assertFalse(FaasPolicyManager.isUUid(null));
assertFalse(FaasPolicyManager.isUUid("non-matching string"));
assertTrue(FaasPolicyManager.isUUid("12345678-1234-5123-b123-0123456789ab"));
}
@Test
- public void testHandledPolicy_notEquals(){
+ public void testHandledPolicy_notEquals() {
FaasPolicyManager policyManager = new FaasPolicyManager(dataProvider, executor);
ResolvedPolicy policy = new ResolvedPolicyBuilder()
.setConsumerTenantId(new TenantId("t1"))
}
@Test
- public void testRegisterFollowedEndpointgroup(){
+ public void testRegisterFollowedEndpointgroup() {
EndpointGroupId epgId = new EndpointGroupId("epgId");
FaasPolicyManager policyManager = new FaasPolicyManager(dataProvider, executor);
}
@Test
- public void testRemoveLogicalNetwork_null(){
+ public void testRemoveLogicalNetwork_null() {
FaasPolicyManager policyManager = new FaasPolicyManager(dataProvider, executor);
policyManager.removeLogicalNetwork(null);
}
- /*@SuppressWarnings("unchecked")
+ @SuppressWarnings("unchecked")
@Test
public void testCreateLayer3LogicalNetwork() throws ReadFailedException {
- ReadOnlyTransaction roTx = mock(ReadOnlyTransaction.class);
+ ReadOnlyTransaction roTx1 = mock(ReadOnlyTransaction.class);
+ ReadOnlyTransaction roTx2 = mock(ReadOnlyTransaction.class);
CheckedFuture<Optional<ResolvedPolicies>, ReadFailedException> futureResolvedPolicies =
mock(CheckedFuture.class);
Optional<ResolvedPolicies> optResolvedPolicies = mock(Optional.class);
when(futureResolvedPolicies.checkedGet()).thenReturn(optResolvedPolicies);
- when(roTx.read(LogicalDatastoreType.OPERATIONAL,
+ when(roTx1.read(LogicalDatastoreType.OPERATIONAL,
InstanceIdentifier.builder(ResolvedPolicies.class).build())).thenReturn(
futureResolvedPolicies);
CheckedFuture<Optional<MappedSubnet>, ReadFailedException> futureMappedSubnet =
mock(CheckedFuture.class);
Optional<MappedSubnet> optMappedSubnet = mock(Optional.class);
- when(optMappedSubnet.isPresent()).thenReturn(true);
+ when(optMappedSubnet.isPresent()).thenReturn(false);
when(optMappedSubnet.get()).thenReturn(mappedSubnet);
when(futureMappedSubnet.checkedGet()).thenReturn(optMappedSubnet);
- when(roTx.read(LogicalDatastoreType.OPERATIONAL,
+ when(roTx2.read(LogicalDatastoreType.OPERATIONAL,
FaasIidFactory.mappedSubnetIid(tenantId, subnetId))).thenReturn(
futureMappedSubnet);
- when(dataProvider.newReadOnlyTransaction()).thenReturn(roTx);
+ when(dataProvider.newReadOnlyTransaction()).thenReturn(roTx1);
+ when(dataProvider.newReadOnlyTransaction()).thenReturn(roTx2);
EndpointGroup consumerEpg = new EndpointGroupBuilder().setId(consumerEpgId).build();
EndpointGroup providerEpg = new EndpointGroupBuilder().setId(providerEpgId).build();
FaasPolicyManager policyManager = new FaasPolicyManager(dataProvider, executor);
- policyManager.registerSubnetWithEpg(consumerEpgId, tenantId, consumerSubnet);
- policyManager.registerSubnetWithEpg(providerEpgId, tenantId, providerSubnet);
policyManager.createLayer3LogicalNetwork(consumerEpg, contractId, providerEpg, tenantId,
ServiceCommunicationLayer.Layer3, ExternalImplicitGroup.ProviderEpg);
- }*/
-
-
-
-
-
- private L3Context makeTestL3Context() {
- L3ContextBuilder builder = new L3ContextBuilder();
- builder.setId(l3Context);
- return builder.build();
- }
-
- private L2FloodDomain makeTestL2FloodDomain(String id, L2BridgeDomainId brdgId) {
- L2FloodDomainBuilder builder = new L2FloodDomainBuilder();
- builder.setId(new L2FloodDomainId(id));
- builder.setParent(brdgId);
- return builder.build();
- }
-
- private L2BridgeDomain makeTestBridgeDomain(String id) {
- L2BridgeDomainBuilder builder = new L2BridgeDomainBuilder();
- builder.setId(new L2BridgeDomainId(id));
- builder.setParent(l3Context);
- return builder.build();
}
- private EndpointGroup makeTestEndpointGroup(EndpointGroupId epgId) {
- EndpointGroupBuilder builder = new EndpointGroupBuilder();
- builder.setId(epgId);
- return builder.build();
- }
-
- private Subnet makeTestSubnet(SubnetId subnetId, L2FloodDomainId l2FloodDomainId) {
- SubnetBuilder builder = new SubnetBuilder();
- builder.setId(subnetId);
- builder.setParent(l2FloodDomainId);
- return builder.build();
-
- }
-
- private DataObject makeTestResolvedPolicy() {
- ResolvedPolicyBuilder builder = new ResolvedPolicyBuilder();
- builder.setConsumerEpgId(consumerEpgId);
- builder.setConsumerTenantId(tenantId);
- builder.setProviderEpgId(providerEpgId);
- builder.setProviderTenantId(tenantId);
- List<PolicyRuleGroupWithEndpointConstraints> pRulesGrpsWEp = new ArrayList<>();
- PolicyRuleGroupWithEndpointConstraintsBuilder pRulesGrpWEp = new PolicyRuleGroupWithEndpointConstraintsBuilder();
- List<PolicyRuleGroup> pRulesGrps = new ArrayList<>();
- PolicyRuleGroupBuilder pRulesGrp = new PolicyRuleGroupBuilder();
- pRulesGrp.setContractId(contractId);
- pRulesGrps.add(pRulesGrp.build());
- pRulesGrpWEp.setPolicyRuleGroup(pRulesGrps);
- pRulesGrpsWEp.add(pRulesGrpWEp.build());
- builder.setPolicyRuleGroupWithEndpointConstraints(pRulesGrpsWEp);
- return builder.build();
- }
-
- private DataObject makeTestResolvedPolicyWithImpExternalEpg() {
- ResolvedPolicyBuilder builder = new ResolvedPolicyBuilder((ResolvedPolicy) makeTestResolvedPolicy());
- builder.setExternalImplicitGroup(ExternalImplicitGroup.ConsumerEpg);
- return builder.build();
- }
}