1 package org.opendaylight.groupbasedpolicy.renderer.ofoverlay.mapper.portsecurity;
3 import org.junit.Before;
5 import org.mockito.InOrder;
6 import org.mockito.Mockito;
7 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.OfContext;
8 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.OfWriter;
9 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.PolicyManager;
10 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint.EndpointManager;
11 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.mapper.MapperUtilsTest;
12 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.node.SwitchManager;
13 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.overlay.rev150105.TunnelTypeVxlan;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.overlay.rev150105.TunnelTypeVxlanGpe;
22 import java.util.HashSet;
25 import static org.mockito.Mockito.*;
27 public class PortSecurityTest extends MapperUtilsTest {
31 ctx = mock(OfContext.class);
33 policyManager = mock(PolicyManager.class);
34 switchManager = mock(SwitchManager.class);
35 endpointManager = mock(EndpointManager.class);
36 ofWriter = mock(OfWriter.class);
40 public void testSyncFlows() throws Exception {
43 Set<NodeConnectorId> connectors = new HashSet<>();
44 connectors.add(new NodeConnectorId(CONNECTOR_0));
47 EndpointBuilder endpointBuilder = new EndpointBuilder(buildEndpoint(IPV4_0, MAC_0, CONNECTOR_0)
49 endpointBuilder.setTenant(getTestIndexedTenant().getTenant().getId());
50 Endpoint endpoint = endpointBuilder.build();
52 when(ctx.getEndpointManager()).thenReturn(endpointManager);
53 when(ctx.getSwitchManager()).thenReturn(switchManager);
54 when(ctx.getPolicyManager()).thenReturn(policyManager);
55 when(ctx.getTenant(Mockito.any(TenantId.class))).thenReturn(getTestIndexedTenant());
56 when(endpointManager.getEndpointNodeConnectorId(Mockito.any(Endpoint.class)))
57 .thenReturn(new NodeConnectorId(CONNECTOR_0));
58 when(switchManager.getTunnelPort(NODE_ID, TunnelTypeVxlan.class)).thenReturn(new NodeConnectorId(CONNECTOR_0));
59 when(switchManager.getTunnelPort(NODE_ID, TunnelTypeVxlanGpe.class)).thenReturn(new NodeConnectorId(CONNECTOR_1));
60 when(switchManager.getExternalPorts(Mockito.any(NodeId.class))).thenReturn(connectors);
62 PortSecurityFlows flows = mock(PortSecurityFlows.class);
63 PortSecurity portSecurity = new PortSecurity(ctx, tableId);
64 portSecurity.syncFlows(flows, NODE_ID, endpoint, ofWriter);
67 verify(flows, times(4)).dropFlow(Mockito.anyInt(), Mockito.anyLong(), eq(ofWriter));
68 verify(flows, times(2)).allowFromTunnelFlow(Mockito.anyShort(), Mockito.anyInt(),
69 Mockito.any(NodeConnectorId.class), eq(ofWriter));
70 verify(flows, times(2)).allowFromTunnelFlow(Mockito.anyShort(), Mockito.anyInt(),
71 Mockito.any(NodeConnectorId.class), eq(ofWriter));
72 verify(flows, times(2)).l3Flow(Mockito.anyShort(), Mockito.any(Endpoint.class), Mockito.any(NodeConnectorId.class),
73 Mockito.any(MacAddress.class), Mockito.anyInt(), Mockito.anyBoolean(), eq(ofWriter));
74 verify(flows, times(1)).l3DhcpDoraFlow(Mockito.anyShort(), Mockito.any(NodeConnectorId.class),
75 Mockito.any(MacAddress.class), Mockito.anyInt(), eq(ofWriter));
76 verify(flows, times(1)).l2flow(Mockito.anyShort(), Mockito.any(NodeConnectorId.class),
77 Mockito.any(MacAddress.class), Mockito.anyInt(), eq(ofWriter));
78 verify(flows, times(1)).popVlanTagsOnExternalPortFlows(Mockito.anyShort(), Mockito.any(NodeConnectorId.class),
79 eq(getL2FloodDomainList(false)), Mockito.anyInt(), eq(ofWriter));
80 verify(flows, times(1)).allowFromExternalPortFlow(Mockito.anyShort(), Mockito.any(NodeConnectorId.class),
81 Mockito.anyInt(), eq(ofWriter));
84 InOrder order = inOrder(ctx, flows);
85 order.verify(flows, times(4)).dropFlow(Mockito.anyInt(), Mockito.anyLong(), eq(ofWriter));
86 order.verify(ctx, times(1)).getPolicyManager();
87 order.verify(ctx, times(1)).getSwitchManager();
88 order.verify(flows, times(1)).allowFromTunnelFlow(Mockito.anyShort(), Mockito.anyInt(),
89 Mockito.any(NodeConnectorId.class), eq(ofWriter));
90 order.verify(ctx, times(1)).getSwitchManager();
91 order.verify(flows, times(1)).allowFromTunnelFlow(Mockito.anyShort(), Mockito.anyInt(),
92 Mockito.any(NodeConnectorId.class), eq(ofWriter));
93 order.verify(ctx, times(1)).getEndpointManager();
94 order.verify(flows, times(1)).l3Flow(Mockito.anyShort(), Mockito.any(Endpoint.class), Mockito.any(NodeConnectorId.class),
95 Mockito.any(MacAddress.class), Mockito.anyInt(), eq(false), eq(ofWriter));
96 order.verify(flows, times(1)).l3Flow(Mockito.anyShort(), Mockito.any(Endpoint.class), Mockito.any(NodeConnectorId.class),
97 Mockito.any(MacAddress.class), Mockito.anyInt(), eq(true), eq(ofWriter));
98 order.verify(flows, times(1)).l3DhcpDoraFlow(Mockito.anyShort(), Mockito.any(NodeConnectorId.class),
99 Mockito.any(MacAddress.class), Mockito.anyInt(), eq(ofWriter));
100 order.verify(flows, times(1)).l2flow(Mockito.anyShort(), Mockito.any(NodeConnectorId.class),
101 Mockito.any(MacAddress.class), Mockito.anyInt(), eq(ofWriter));
102 order.verify(ctx, times(1)).getPolicyManager();
103 order.verify(ctx, times(1)).getSwitchManager();
104 order.verify(ctx, times(2)).getTenant(Mockito.any(TenantId.class));
105 order.verify(flows, times(1)).popVlanTagsOnExternalPortFlows(Mockito.anyShort(), Mockito.any(NodeConnectorId.class),
106 eq(getL2FloodDomainList(false)), Mockito.anyInt(), eq(ofWriter));
107 order.verify(flows, times(1)).allowFromExternalPortFlow(Mockito.anyShort(), Mockito.any(NodeConnectorId.class),
108 Mockito.anyInt(), eq(ofWriter));