X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=renderers%2Fofoverlay%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fgroupbasedpolicy%2Frenderer%2Fofoverlay%2Fmapper%2Fexternal%2FExternalMapperTest.java;fp=renderers%2Fofoverlay%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fgroupbasedpolicy%2Frenderer%2Fofoverlay%2Fmapper%2Fexternal%2FExternalMapperTest.java;h=fbfaa84829b9d4295f7f684c3c9ab324967cff5c;hb=20cde25f90d5c6ab5f7976771f40348ca4ac9675;hp=0000000000000000000000000000000000000000;hpb=b902dc6d47c62410cd619c378bee9af60c3f0248;p=groupbasedpolicy.git diff --git a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/mapper/external/ExternalMapperTest.java b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/mapper/external/ExternalMapperTest.java new file mode 100755 index 000000000..fbfaa8482 --- /dev/null +++ b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/mapper/external/ExternalMapperTest.java @@ -0,0 +1,129 @@ +/* + * 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.renderer.ofoverlay.mapper.external; + +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.MockOfContext; +import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.MockPolicyManager; +import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.OfWriter; +import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.PolicyManager; +import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint.MockEndpointManager; +import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.mapper.MapperUtilsTest; +import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.node.MockSwitchManager; +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.Ipv4Address; +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.flow.inventory.rev130819.tables.table.Flow; +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.EndpointL3Builder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.l3endpoint.rev151217.NatAddress; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.l3endpoint.rev151217.NatAddressBuilder; +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.inventory.rev130819.NodeConnectorId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; + +import com.google.common.collect.ImmutableSet; + +@RunWith(PowerMockRunner.class) +@PrepareForTest({PolicyManager.class}) +public class ExternalMapperTest extends MapperUtilsTest { + + private ExternalMapper mapper; + + private short tableId; + private NodeId nodeId; + private OfWriter ofWriter; + private MockEndpointManager endpointManagerMock; + private MockPolicyManager policyManagerMock; + private MockSwitchManager switchManagerMock; + private MockOfContext ctxMock; + + private NodeConnectorId nodeConnectorId = new NodeConnectorId("openflow:1:1"); + private MacAddress mac = new MacAddress("00:00:00:00:00:03"); + private NatAddress natAddr = new NatAddressBuilder() + .setNatAddress(new IpAddress(new Ipv4Address("192.168.111.52"))) + .build(); + + private EndpointL3 natL3Ep = new EndpointL3Builder() + .setTenant(tid) + .setL3Context(l3c) + .setMacAddress(mac) + .setL2Context(bd) + .setIpAddress(new IpAddress(new Ipv4Address("10.0.0.3"))) + .addAugmentation(NatAddress.class, natAddr) + .build(); + + private Endpoint l2Ep = new EndpointBuilder() + .setTenant(tid) + .setMacAddress(mac) + .setL2Context(bd) + .setNetworkContainment(sub) + .setEndpointGroup(eg) + .build(); + + @Before + public void initialisation() { + PowerMockito.stub(PowerMockito.method(PolicyManager.class, "setSfcTableOffset")).toReturn(true); + + endpointManagerMock = new MockEndpointManager(); + policyManagerMock = new MockPolicyManager(endpointManagerMock); + switchManagerMock = new MockSwitchManager(); + ctxMock = new MockOfContext(null, + policyManagerMock, + switchManagerMock, + endpointManagerMock, + null); + tableId = 6; + nodeId = mock(NodeId.class); + ofWriter = mock(OfWriter.class); + mapper = new ExternalMapper(ctxMock, tableId); + } + + @Test + public void consturctorTest() { + Assert.assertEquals(tableId, mapper.getTableId()); + } + + @Test + public void testSync() throws Exception { + ctxMock.addTenant(baseTenant().build()); + endpointManagerMock.addL3Endpoint(natL3Ep); + l2Ep = new EndpointBuilder(l2Ep) + .addAugmentation(OfOverlayContext.class,new OfOverlayContextBuilder() + .setNodeId(nodeId) + .build()) + .build(); + endpointManagerMock.addEndpoint(l2Ep); + switchManagerMock.addSwitch(nodeId,null,ImmutableSet.of(nodeConnectorId), null); + mapper.sync(l2Ep, ofWriter); + verify(ofWriter, times(4)).writeFlow(any(NodeId.class), any(Short.class), any(Flow.class)); + } + + @Test + public void testSync_NoExternalPorts() throws Exception { + // we still need ExternalMapper flows (default output and default drop) to be generated + ctxMock.addTenant(baseTenant().build()); + mapper.sync(l2Ep, ofWriter); + verify(ofWriter, times(2)).writeFlow(any(NodeId.class), any(Short.class), any(Flow.class)); + } +}