-/*
- * 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,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.groupbasedpolicy.renderer.ofoverlay.flow;
-
-import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.MockEndpointManager;
-import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.MockPolicyManager;
-import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.MockSwitchManager;
-import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.OfContext;
-import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sf.AllowAction;
-import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sf.L4Classifier;
-import org.opendaylight.groupbasedpolicy.resolver.MockPolicyResolver;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionName;
-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.EndpointGroupId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2BridgeDomainId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2FloodDomainId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L3ContextId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ParameterName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SelectorName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;
-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.endpoints.EndpointBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContext;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContextBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.HasDirection.Direction;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.action.refs.ActionRefBuilder;
-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.subject.feature.instance.ParameterValueBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.TenantBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ContractBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroupBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomainBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2FloodDomainBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3ContextBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.SubjectFeatureInstancesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.SubnetBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.ClauseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.SubjectBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.RuleBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelectorBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelectorBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstanceBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstanceBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
-
-import com.google.common.collect.ImmutableList;
-
-public class OfTableTest {
- OfContext ctx;
-
- MockEndpointManager endpointManager;
- MockPolicyResolver policyResolver;
- MockPolicyManager policyManager;
- MockSwitchManager switchManager;
-
- NodeId nodeId = new NodeId("openflow:1");
- NodeId remoteNodeId = new NodeId("openflow:2");
- NodeConnectorId nodeConnectorId =
- new NodeConnectorId(nodeId.getValue() + ":4");
-
- NodeConnectorId tunnelId =
- new NodeConnectorId(nodeId.getValue() + ":42");
-
- L3ContextId l3c = new L3ContextId("2cf51ee4-e996-467e-a277-2d380334a91d");
- L2BridgeDomainId bd = new L2BridgeDomainId("c95182ba-7807-43f8-98f7-6c7c720b7639");
- L2FloodDomainId fd = new L2FloodDomainId("98e1439e-52d2-46f8-bd69-5136e6088771");
- SubnetId sub = new SubnetId("4fcf8dfc-53b5-4aef-84d3-6b5586992fcb");
- SubnetId sub2 = new SubnetId("c285a59f-fcb8-42e6-bf29-87ea522fd626");
- SubnetId sub3 = new SubnetId("a0380d52-2a25-48ef-882c-a4d4cd9e00ec");
- TenantId tid = new TenantId("1118c691-8520-47ad-80b8-4cf5e3fe3302");
- EndpointGroupId eg = new EndpointGroupId("36dec84a-08c7-497b-80b6-a0035af72a12");
- EndpointGroupId eg2 = new EndpointGroupId("632e5e11-7988-4eb5-8fe6-6c182d890276");
- ContractId cid = new ContractId("a5874893-bcd5-46de-96af-3c8d99bedf9f");
-
- protected void initCtx() {
- endpointManager = new MockEndpointManager();
- policyResolver = new MockPolicyResolver();
- policyManager = new MockPolicyManager(policyResolver, endpointManager);
- switchManager = new MockSwitchManager();
-
- ctx = new OfContext(null,
- null,
- policyManager,
- policyResolver,
- switchManager,
- endpointManager,
- null);
- }
-
- protected TenantBuilder baseTenant() {
- return baseTenant(null);
- }
-
- protected TenantBuilder baseTenant(Direction direction) {
- return new TenantBuilder()
- .setId(tid)
- .setEndpointGroup(ImmutableList.of(new EndpointGroupBuilder()
- .setId(eg)
- .setNetworkDomain(sub)
- .setConsumerNamedSelector(ImmutableList.of(new ConsumerNamedSelectorBuilder()
- .setName(new SelectorName("cns1"))
- .setContract(ImmutableList.of(cid))
- .build()))
- .build(),
- new EndpointGroupBuilder()
- .setId(eg2)
- .setNetworkDomain(sub2)
- .setProviderNamedSelector(ImmutableList.of(new ProviderNamedSelectorBuilder()
- .setName(new SelectorName("pns1"))
- .setContract(ImmutableList.of(cid))
- .build()))
- .build()))
- .setL3Context(ImmutableList.of(new L3ContextBuilder()
- .setId(l3c)
- .build()))
- .setL2BridgeDomain(ImmutableList.of(new L2BridgeDomainBuilder()
- .setId(bd)
- .setParent(l3c)
- .build()))
- .setL2FloodDomain(ImmutableList.of(new L2FloodDomainBuilder()
- .setId(fd)
- .setParent(bd)
- .build()))
- .setSubnet(ImmutableList.of(new SubnetBuilder()
- .setId(sub2)
- .setParent(fd)
- .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.1.1/24")))
- .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.1.1")))
- .build(),
- new SubnetBuilder()
- .setId(sub)
- .setParent(fd)
- .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.0.1/24")))
- .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.0.1")))
- .build(),
- new SubnetBuilder()
- .setId(sub3)
- .setParent(bd)
- .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.2.1/24")))
- .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.2.1")))
- .build()))
- .setSubjectFeatureInstances(new SubjectFeatureInstancesBuilder()
- .setClassifierInstance(ImmutableList.of(new ClassifierInstanceBuilder()
- .setName(new ClassifierName("tcp_80"))
- .setClassifierDefinitionId(L4Classifier.DEFINITION.getId())
- .setParameterValue(ImmutableList.of(new ParameterValueBuilder()
- .setName(new ParameterName("destport"))
- .setIntValue(Long.valueOf(80))
- .build(),
- new ParameterValueBuilder()
- .setName(new ParameterName("proto"))
- .setIntValue(Long.valueOf(6))
- .build()))
- .build()))
- .setActionInstance(ImmutableList.of(new ActionInstanceBuilder()
- .setName(new ActionName("allow"))
- .setActionDefinitionId(new AllowAction().getId())
- .build()))
- .build())
- .setContract(ImmutableList.of(new ContractBuilder()
- .setId(cid)
- .setSubject(ImmutableList.of(baseSubject(direction).build()))
- .setClause(ImmutableList.of(new ClauseBuilder()
- .setName(new ClauseName("test"))
- .setSubjectRefs(ImmutableList.of(new SubjectName("s1")))
- .build()))
- .build()));
- }
-
- protected SubjectBuilder baseSubject(Direction direction) {
- return new SubjectBuilder()
- .setName(new SubjectName("s1"))
- .setRule(ImmutableList.of(new RuleBuilder()
- .setActionRef(ImmutableList.of(new ActionRefBuilder()
- .setName(new ActionName("allow"))
- .build()))
- .setClassifierRef(ImmutableList.of(new ClassifierRefBuilder()
- .setName(new ClassifierName("tcp_80"))
- .setDirection(direction)
- .build()))
- .build()));
- }
-
- protected EndpointBuilder baseEP() {
- return new EndpointBuilder()
- .setL2Context(bd)
- .setTenant(tid)
- .setEndpointGroup(eg)
- .setMacAddress(new MacAddress("00:00:00:00:00:01"));
- }
-
- protected EndpointBuilder localEP() {
- OfOverlayContext ofc = new OfOverlayContextBuilder()
- .setNodeId(nodeId)
- .setNodeConnectorId(nodeConnectorId)
- .build();
- return baseEP()
- .addAugmentation(OfOverlayContext.class, ofc);
- }
-
- protected EndpointBuilder remoteEP(NodeId id) {
- OfOverlayContext ofc = new OfOverlayContextBuilder()
- .setNodeId(id)
- .setNodeConnectorId(new NodeConnectorId(id.getValue() + ":5"))
- .build();
- return baseEP()
- .setMacAddress(new MacAddress("00:00:00:00:00:02"))
- .addAugmentation(OfOverlayContext.class, ofc);
- }
-
-}
+/*\r
+ * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+\r
+package org.opendaylight.groupbasedpolicy.renderer.ofoverlay.flow;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
+import org.opendaylight.groupbasedpolicy.api.sf.L4ClassifierDefinition;\r
+import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.MockOfContext;\r
+import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.MockPolicyManager;\r
+import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint.MockEndpointManager;\r
+import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.node.MockSwitchManager;\r
+import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sf.AllowAction;\r
+import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sf.Classifier;\r
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;\r
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;\r
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;\r
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;\r
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionName;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierName;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClauseName;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContextId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContractId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.EndpointGroupId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2BridgeDomainId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2FloodDomainId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L3ContextId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ParameterName;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SelectorName;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubnetId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContext;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContextBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.Segmentation;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.SegmentationBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.HasDirection.Direction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.action.refs.ActionRefBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.classifier.refs.ClassifierRef;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.classifier.refs.ClassifierRefBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValueBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.TenantBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ForwardingContextBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.PolicyBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomainBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomain;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomainBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3ContextBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.Subnet;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.SubnetBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.ContractBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroupBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.SubjectFeatureInstancesBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.ClauseBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Subject;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.SubjectBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.RuleBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelectorBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelectorBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstanceBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstanceBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;\r
+\r
+import com.google.common.collect.ImmutableList;\r
+\r
+public class OfTableTest {\r
+ MockOfContext ctx;\r
+\r
+ MockEndpointManager endpointManager;\r
+ MockPolicyManager policyManager;\r
+ MockSwitchManager switchManager;\r
+ NodeId nodeId = new NodeId("openflow:1");\r
+ NodeId remoteNodeId = new NodeId("openflow:2");\r
+ NodeConnectorId nodeConnectorId =\r
+ new NodeConnectorId(nodeId.getValue() + ":4");\r
+\r
+ NodeConnectorId tunnelId =\r
+ new NodeConnectorId(nodeId.getValue() + ":42");\r
+\r
+ L3ContextId l3c = new L3ContextId("2cf51ee4-e996-467e-a277-2d380334a91d");\r
+ L2BridgeDomainId bd = new L2BridgeDomainId("c95182ba-7807-43f8-98f7-6c7c720b7639");\r
+ L2FloodDomainId fd = new L2FloodDomainId("98e1439e-52d2-46f8-bd69-5136e6088771");\r
+ L2FloodDomainId ext_fd = new L2FloodDomainId("d8024f7a-b83e-11e5-9912-ba0be0483c18");\r
+ SubnetId sub = new SubnetId("4fcf8dfc-53b5-4aef-84d3-6b5586992fcb");\r
+ SubnetId sub2 = new SubnetId("c285a59f-fcb8-42e6-bf29-87ea522fd626");\r
+ SubnetId sub3 = new SubnetId("a0380d52-2a25-48ef-882c-a4d4cd9e00ec");\r
+ SubnetId ext_sub = new SubnetId("8da17ad9-3261-4dc9-bcff-928a2f73cce7");\r
+ TenantId tid = new TenantId("1118c691-8520-47ad-80b8-4cf5e3fe3302");\r
+ EndpointGroupId eg = new EndpointGroupId("36dec84a-08c7-497b-80b6-a0035af72a12");\r
+ EndpointGroupId eg2 = new EndpointGroupId("632e5e11-7988-4eb5-8fe6-6c182d890276");\r
+ ContractId cid = new ContractId("a5874893-bcd5-46de-96af-3c8d99bedf9f");\r
+\r
+ protected void initCtx() {\r
+ endpointManager = new MockEndpointManager();\r
+ policyManager = new MockPolicyManager(endpointManager);\r
+ switchManager = new MockSwitchManager();\r
+ ctx = new MockOfContext(null,\r
+ policyManager,\r
+ switchManager,\r
+ endpointManager,\r
+ null);\r
+ }\r
+\r
+ protected TenantBuilder baseTenant() {\r
+ return new TenantBuilder().setId(tid)\r
+ .setPolicy(new PolicyBuilder()\r
+ .setEndpointGroup(ImmutableList.of(\r
+ new EndpointGroupBuilder().setId(eg)\r
+ .setNetworkDomain(sub)\r
+ .setConsumerNamedSelector(ImmutableList.of(new ConsumerNamedSelectorBuilder()\r
+ .setName(new SelectorName("cns1")).setContract(ImmutableList.of(cid)).build()))\r
+ .build(),\r
+ new EndpointGroupBuilder().setId(eg2)\r
+ .setNetworkDomain(sub2)\r
+ .setProviderNamedSelector(ImmutableList.of(new ProviderNamedSelectorBuilder()\r
+ .setName(new SelectorName("pns1")).setContract(ImmutableList.of(cid)).build()))\r
+ .build()))\r
+ .setSubjectFeatureInstances(\r
+ new SubjectFeatureInstancesBuilder()\r
+ .setClassifierInstance(\r
+ ImmutableList\r
+ .of(new ClassifierInstanceBuilder().setName(new ClassifierName("tcp_dst_80"))\r
+ .setClassifierDefinitionId(L4ClassifierDefinition.DEFINITION.getId())\r
+ .setParameterValue(ImmutableList.of(\r
+ new ParameterValueBuilder().setName(new ParameterName("destport"))\r
+ .setIntValue(Long.valueOf(80))\r
+ .build(),\r
+ new ParameterValueBuilder().setName(new ParameterName("proto"))\r
+ .setIntValue(Long.valueOf(6))\r
+ .build()))\r
+ .build(), new ClassifierInstanceBuilder()\r
+ .setName(new ClassifierName("tcp_src_80"))\r
+ .setClassifierDefinitionId(Classifier.L4_CL.getId())\r
+ .setParameterValue(ImmutableList.of(\r
+ new ParameterValueBuilder()\r
+ .setName(new ParameterName("sourceport"))\r
+ .setIntValue(Long.valueOf(80))\r
+ .build(),\r
+ new ParameterValueBuilder().setName(new ParameterName("proto"))\r
+ .setIntValue(Long.valueOf(6))\r
+ .build()))\r
+ .build(),\r
+ new ClassifierInstanceBuilder()\r
+ .setName(new ClassifierName("ether_type"))\r
+ .setClassifierDefinitionId(Classifier.ETHER_TYPE_CL.getId())\r
+ .setParameterValue(ImmutableList.of(new ParameterValueBuilder()\r
+ .setName(new ParameterName("ethertype"))\r
+ .setIntValue(Long.valueOf(FlowUtils.IPv4))\r
+ .build()))\r
+ .build()))\r
+ .setActionInstance(\r
+ ImmutableList.of(new ActionInstanceBuilder().setName(new ActionName("allow"))\r
+ .setActionDefinitionId(new AllowAction().getId())\r
+ .build()))\r
+ .build())\r
+ .build())\r
+ .setForwardingContext(\r
+ new ForwardingContextBuilder()\r
+ .setL3Context(ImmutableList.of(new L3ContextBuilder().setId(l3c).build()))\r
+ .setL2BridgeDomain(\r
+ ImmutableList.of(new L2BridgeDomainBuilder().setId(bd).setParent(l3c).build()))\r
+ .setL2FloodDomain(ImmutableList.of(\r
+ new L2FloodDomainBuilder()\r
+ .setId(fd)\r
+ .setParent(bd)\r
+ .addAugmentation(Segmentation.class,\r
+ new SegmentationBuilder()\r
+ .setSegmentationId(Integer.valueOf(216))\r
+ .build())\r
+ .build(),\r
+ new L2FloodDomainBuilder()\r
+ .setId(ext_fd)\r
+ .addAugmentation(Segmentation.class,\r
+ new SegmentationBuilder()\r
+ .setSegmentationId(Integer.valueOf(2016))\r
+ .build())\r
+ .build()))\r
+ .setSubnet(ImmutableList.of(\r
+ new SubnetBuilder().setId(sub2)\r
+ .setParent(fd)\r
+ .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.1.0/24")))\r
+ .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.1.1")))\r
+ .build(),\r
+ new SubnetBuilder().setId(sub)\r
+ .setParent(fd)\r
+ .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.0.0/24")))\r
+ .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.0.1")))\r
+ .build(),\r
+ new SubnetBuilder().setId(sub3)\r
+ .setParent(bd)\r
+ .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.2.0/24")))\r
+ .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.2.1")))\r
+ .build(),\r
+ new SubnetBuilder()\r
+ .setId(ext_sub)\r
+ .setIpPrefix(new IpPrefix(new Ipv4Prefix("192.168.111.0/24")))\r
+ .setParent(ext_fd)\r
+ .build()))\r
+ .build());\r
+ }\r
+\r
+ protected ContractBuilder baseContract(List<Subject> subjects) {\r
+ ContractBuilder contractBuilder = new ContractBuilder().setId(cid).setSubject(subjects);\r
+ // TODO refactor\r
+ if (subjects == null) {\r
+ return contractBuilder.setClause(ImmutableList.of(new ClauseBuilder().setName(new ClauseName("test"))\r
+ .setSubjectRefs(ImmutableList.<SubjectName>of(new SubjectName("s1")))\r
+ .build()));\r
+ }\r
+ List<SubjectName> subjectNames = new ArrayList<>();\r
+ for (Subject subject : subjects) {\r
+ subjectNames.add(subject.getName());\r
+ }\r
+ return contractBuilder.setClause(ImmutableList.of(new ClauseBuilder().setName(new ClauseName("test"))\r
+ .setSubjectRefs(subjectNames)\r
+ .build()));\r
+ }\r
+\r
+ protected SubjectBuilder baseSubject(Direction direction) {\r
+ return new SubjectBuilder()\r
+ .setName(new SubjectName("s1"))\r
+ .setRule(ImmutableList.of(new RuleBuilder()\r
+ .setActionRef(ImmutableList.of(new ActionRefBuilder()\r
+ .setName(new ActionName("allow"))\r
+ .build()))\r
+ .setClassifierRef(ImmutableList.of(new ClassifierRefBuilder()\r
+ .setName(new ClassifierName("tcp_dst_80"))\r
+ .setDirection(direction)\r
+ .setInstanceName(new ClassifierName("tcp_dst_80"))\r
+ .build()))\r
+ .build()));\r
+ }\r
+\r
+\r
+ protected Subject createSubject(String name, List<Rule> rules){\r
+ return new SubjectBuilder().setName(new SubjectName(name)).setRule(rules).build();\r
+ }\r
+\r
+ protected List<ClassifierRef> createClassifierRefs(Map<String, Direction> refNamesAndDirections) {\r
+ List<ClassifierRef> refs = new ArrayList<>();\r
+ for (String refName : refNamesAndDirections.keySet()) {\r
+ refs.add(new ClassifierRefBuilder().setName(new ClassifierName(refName))\r
+ .setDirection(refNamesAndDirections.get(refName))\r
+ .setInstanceName(new ClassifierName(refName))\r
+ .build());\r
+ }\r
+ return refs;\r
+ }\r
+\r
+ protected EndpointBuilder baseEP() {\r
+ return new EndpointBuilder()\r
+ .setL2Context(bd)\r
+ .setTenant(tid)\r
+ .setEndpointGroup(eg)\r
+ .setMacAddress(new MacAddress("00:00:00:00:00:01"));\r
+ }\r
+\r
+ protected EndpointBuilder localEP() {\r
+ OfOverlayContext ofc = new OfOverlayContextBuilder()\r
+ .setNodeId(nodeId)\r
+ .setNodeConnectorId(nodeConnectorId)\r
+ .build();\r
+ return baseEP()\r
+ .addAugmentation(OfOverlayContext.class, ofc);\r
+ }\r
+\r
+ protected EndpointBuilder remoteEP(NodeId id) {\r
+ OfOverlayContext ofc = new OfOverlayContextBuilder()\r
+ .setNodeId(id)\r
+ .setNodeConnectorId(new NodeConnectorId(id.getValue() + ":5"))\r
+ .build();\r
+ return baseEP()\r
+ .setMacAddress(new MacAddress("00:00:00:00:00:02"))\r
+ .addAugmentation(OfOverlayContext.class, ofc);\r
+ }\r
+\r
+}\r