\r
import org.junit.Before;\r
import org.junit.Test;\r
-import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.PolicyManager.FlowMap;\r
+import org.junit.runner.RunWith;\r
+import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.OfWriter;\r
+import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.PolicyManager;\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.Ipv4Address;\r
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4Match;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6Match;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.overlay.rev150105.TunnelTypeVxlan;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
+import org.powermock.api.mockito.PowerMockito;\r
+import org.powermock.core.classloader.annotations.PrepareForTest;\r
+import org.powermock.modules.junit4.PowerMockRunner;\r
\r
import com.google.common.collect.ImmutableList;\r
import com.google.common.collect.ImmutableSet;\r
\r
import static org.junit.Assert.*;\r
\r
+@RunWith(PowerMockRunner.class)\r
+@PrepareForTest({PolicyManager.class})\r
public class PortSecurityTest extends FlowTableTest {\r
- protected static final Logger LOG =\r
- LoggerFactory.getLogger(PortSecurityTest.class);\r
\r
+ private Endpoint ep = localEP()\r
+ .setL3Address(ImmutableList.of(new L3AddressBuilder()\r
+ .setIpAddress(new IpAddress(new Ipv4Address("10.10.10.10")))\r
+ .build(),\r
+ new L3AddressBuilder()\r
+ .setIpAddress(new IpAddress(new Ipv6Address("2001:db8:85a3::8a2e:370:7334")))\r
+ .build()))\r
+ .build();\r
@Override\r
@Before\r
public void setup() throws Exception {\r
+ PowerMockito.stub(PowerMockito.method(PolicyManager.class, "setSfcTableOffset")).toReturn(true);\r
+\r
initCtx();\r
- table = new PortSecurity(ctx);\r
+ table = new PortSecurity(ctx,ctx.getPolicyManager().getTABLEID_PORTSECURITY());\r
super.setup();\r
}\r
\r
@Test\r
public void testDefaultDeny() throws Exception {\r
- FlowMap fm = dosync(null);\r
+ OfWriter fm = dosync(null);\r
int count = 0;\r
Map<String, Flow> flowMap = new HashMap<>();\r
- for (Flow f : fm.getTableForNode(nodeId, (short) 0).getFlow()) {\r
+ for (Flow f : fm.getTableForNode(nodeId, ctx.getPolicyManager().getTABLEID_PORTSECURITY()).getFlow()) {\r
flowMap.put(f.getId().getValue(), f);\r
Long etherType = null;\r
- if (f.getMatch() != null) {\r
+ if (f.getMatch() != null && f.getMatch().getEthernetMatch() !=null) {\r
etherType = f.getMatch().getEthernetMatch().getEthernetType().getType().getValue();\r
}\r
if (f.getMatch() == null || FlowUtils.ARP.equals(etherType) || FlowUtils.IPv4.equals(etherType)\r
}\r
}\r
assertEquals(4, count);\r
- int numberOfFlows = fm.getTableForNode(nodeId, (short) 0).getFlow().size();\r
+ int numberOfFlows = fm.getTableForNode(nodeId, ctx.getPolicyManager().getTABLEID_PORTSECURITY()).getFlow().size();\r
fm = dosync(flowMap);\r
- assertEquals(numberOfFlows, fm.getTableForNode(nodeId, (short) 0).getFlow().size());\r
+ assertEquals(numberOfFlows, fm.getTableForNode(nodeId, ctx.getPolicyManager().getTABLEID_PORTSECURITY()).getFlow().size());\r
}\r
\r
@Test\r
.setTunnelType(TunnelTypeVxlan.class)\r
.setNodeConnectorId(new NodeConnectorId("openflow:1:1"))\r
.build())).build());\r
- FlowMap fm = dosync(null);\r
- assertNotEquals(0 ,fm.getTableForNode(nodeId, (short) 0).getFlow().size());\r
+ OfWriter fm = dosync(null);\r
+ assertNotEquals(0 ,fm.getTableForNode(nodeId, ctx.getPolicyManager().getTABLEID_PORTSECURITY()).getFlow().size());\r
\r
int count = 0;\r
HashMap<String, Flow> flowMap = new HashMap<>();\r
Set<String> ncs = ImmutableSet.of("openflow:1:1", "openflow:1:2");\r
- for (Flow f : fm.getTableForNode(nodeId, (short) 0).getFlow()) {\r
+ for (Flow f : fm.getTableForNode(nodeId, ctx.getPolicyManager().getTABLEID_PORTSECURITY()).getFlow()) {\r
flowMap.put(f.getId().getValue(), f);\r
if (f.getMatch() != null && f.getMatch().getInPort() != null &&\r
- ncs.contains(f.getMatch().getInPort().getValue())) {\r
- assertEquals(f.getInstructions(),\r
- FlowUtils.gotoTableInstructions((short)(table.getTableId()+1)));\r
+ (ncs.contains(f.getMatch().getInPort().getValue()))) {\r
+ assertTrue(f.getInstructions().equals(\r
+ FlowUtils.gotoTableInstructions(ctx.getPolicyManager().getTABLEID_INGRESS_NAT()))\r
+ || f.getInstructions().equals(\r
+ FlowUtils.gotoTableInstructions(ctx.getPolicyManager().getTABLEID_SOURCE_MAPPER())));\r
count += 1;\r
}\r
}\r
- assertEquals(2, count);\r
- int numberOfFlows = fm.getTableForNode(nodeId, (short) 0).getFlow().size();\r
+ assertEquals(1, count);\r
+ int numberOfFlows = fm.getTableForNode(nodeId, ctx.getPolicyManager().getTABLEID_PORTSECURITY()).getFlow().size();\r
fm = dosync(flowMap);\r
- assertEquals(numberOfFlows, fm.getTableForNode(nodeId, (short) 0).getFlow().size());\r
+ assertEquals(numberOfFlows, fm.getTableForNode(nodeId, ctx.getPolicyManager().getTABLEID_PORTSECURITY()).getFlow().size());\r
}\r
\r
@Test\r
\r
endpointManager.addEndpoint(ep);\r
\r
- FlowMap fm = dosync(null);\r
- assertNotEquals(0 ,fm.getTableForNode(nodeId, (short) 0).getFlow().size());\r
+ OfWriter fm = dosync(null);\r
+ assertNotEquals(0 ,fm.getTableForNode(nodeId, ctx.getPolicyManager().getTABLEID_PORTSECURITY()).getFlow().size());\r
\r
int count = 0;\r
HashMap<String, Flow> flowMap = new HashMap<>();\r
- for (Flow f : fm.getTableForNode(nodeId, (short) 0).getFlow()) {\r
+ for (Flow f : fm.getTableForNode(nodeId, ctx.getPolicyManager().getTABLEID_PORTSECURITY()).getFlow()) {\r
flowMap.put(f.getId().getValue(), f);\r
if (f.getMatch() != null &&\r
f.getMatch().getEthernetMatch() != null &&\r
Objects.equals(ep.getAugmentation(OfOverlayContext.class).getNodeConnectorId(),\r
f.getMatch().getInPort())) {\r
count += 1;\r
- assertEquals(FlowUtils.gotoTableInstructions((short)(table.getTableId()+1)),\r
+ assertEquals(FlowUtils.gotoTableInstructions(ctx.getPolicyManager().getTABLEID_SOURCE_MAPPER()),\r
f.getInstructions());\r
}\r
}\r
assertEquals(2, count);\r
- int numberOfFlows = fm.getTableForNode(nodeId, (short) 0).getFlow().size();\r
+ int numberOfFlows = fm.getTableForNode(nodeId, ctx.getPolicyManager().getTABLEID_PORTSECURITY()).getFlow().size();\r
fm = dosync(flowMap);\r
- assertEquals(numberOfFlows, fm.getTableForNode(nodeId, (short) 0).getFlow().size());\r
+ assertEquals(numberOfFlows, fm.getTableForNode(nodeId, ctx.getPolicyManager().getTABLEID_PORTSECURITY()).getFlow().size());\r
}\r
\r
@Test\r
public void testL3() throws Exception {\r
- Endpoint ep = localEP()\r
- .setL3Address(ImmutableList.of(new L3AddressBuilder()\r
- .setIpAddress(new IpAddress(new Ipv4Address("10.10.10.10")))\r
- .build(),\r
- new L3AddressBuilder()\r
- .setIpAddress(new IpAddress(new Ipv6Address("2001:db8:85a3::8a2e:370:7334")))\r
- .build()))\r
- .build();\r
-\r
endpointManager.addEndpoint(ep);\r
\r
- FlowMap fm = dosync(null);\r
- assertNotEquals(0 ,fm.getTableForNode(nodeId, (short) 0).getFlow().size());\r
+ OfWriter fm = dosync(null);\r
+ assertNotEquals(0 ,fm.getTableForNode(nodeId, ctx.getPolicyManager().getTABLEID_PORTSECURITY()).getFlow().size());\r
\r
int count = 0;\r
HashMap<String, Flow> flowMap = new HashMap<>();\r
- for (Flow f : fm.getTableForNode(nodeId, (short) 0).getFlow()) {\r
+ for (Flow f : fm.getTableForNode(nodeId, ctx.getPolicyManager().getTABLEID_PORTSECURITY()).getFlow()) {\r
flowMap.put(f.getId().getValue(), f);\r
if (f.getMatch() != null &&\r
Objects.equals(ep.getAugmentation(OfOverlayContext.class).getNodeConnectorId(),\r
Objects.equals(ep.getL3Address().get(1).getIpAddress().getIpv6Address().getValue(),\r
((Ipv6Match)f.getMatch().getLayer3Match()).getIpv6Source().getValue().split("/")[0])))) {\r
count += 1;\r
- assertEquals(FlowUtils.gotoTableInstructions((short)(table.getTableId()+1)),\r
+ assertEquals(FlowUtils.gotoTableInstructions(ctx.getPolicyManager().getTABLEID_SOURCE_MAPPER()),\r
f.getInstructions());\r
}\r
}\r
assertEquals(4, count);\r
- int numberOfFlows = fm.getTableForNode(nodeId, (short) 0).getFlow().size();\r
+ int numberOfFlows = fm.getTableForNode(nodeId, ctx.getPolicyManager().getTABLEID_PORTSECURITY()).getFlow().size();\r
fm = dosync(flowMap);\r
- assertEquals(numberOfFlows, fm.getTableForNode(nodeId, (short) 0).getFlow().size());\r
+ assertEquals(numberOfFlows, fm.getTableForNode(nodeId, ctx.getPolicyManager().getTABLEID_PORTSECURITY()).getFlow().size());\r
+ }\r
+\r
+ @Test\r
+ public void testExternal() throws Exception {\r
+ endpointManager.addEndpoint(ep);\r
+ switchManager.addSwitch(\r
+ new NodeId("openflow:12"),\r
+ new NodeConnectorId("openflow:12:1"),\r
+ ImmutableSet.of(new NodeConnectorId("openflow:12:2")),\r
+ new OfOverlayNodeConfigBuilder().setTunnel(\r
+ ImmutableList.of(new TunnelBuilder().setTunnelType(TunnelTypeVxlan.class)\r
+ .setNodeConnectorId(new NodeConnectorId("openflow:12:1"))\r
+ .build())).build());\r
+ ctx.addTenant(baseTenant().build());\r
}\r
}\r