import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.OfContext;
import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.OfWriter;
-import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.node.SwitchManager;
+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;
-public class ExternalMapperTest {
+import com.google.common.collect.ImmutableSet;
+
+public class ExternalMapperTest extends FlowTableTest {
private ExternalMapper mapper;
- private OfContext ctx;
private short tableId;
private NodeId nodeId;
private OfWriter ofWriter;
- private SwitchManager switchManager;
+
+ private NatAddress natAddr = new NatAddressBuilder()
+ .setNatAddress(new IpAddress(new Ipv4Address("192.168.111.52")))
+ .build();
+
+ private EndpointL3 natL3Ep = new EndpointL3Builder()
+ .setTenant(tid)
+ .setL3Context(l3c)
+ .setIpAddress(new IpAddress(new Ipv4Address("10.0.0.3")))
+ .addAugmentation(NatAddress.class, natAddr)
+ .build();
+
+ private Endpoint l2Ep = new EndpointBuilder()
+ .setTenant(tid)
+ .setMacAddress(new MacAddress("00:00:00:00:00:03"))
+ .setL2Context(bd)
+ .setNetworkContainment(sub)
+ .setEndpointGroup(eg)
+ .build();
@Before
public void initialisation() {
- ctx = mock(OfContext.class);
- tableId = 5;
+ initCtx();
+ tableId = 6;
nodeId = mock(NodeId.class);
ofWriter = mock(OfWriter.class);
- switchManager = mock(SwitchManager.class);
- when(ctx.getSwitchManager()).thenReturn(switchManager);
-
mapper = new ExternalMapper(ctx, tableId);
}
@Test
public void syncTest() throws Exception {
- NodeConnectorId nodeConnectorId = mock(NodeConnectorId.class);
- Set<NodeConnectorId> externalPorts = new HashSet<NodeConnectorId>(Arrays.asList(nodeConnectorId));
- when(switchManager.getExternalPorts(nodeId)).thenReturn(externalPorts);
-
+ ctx.addTenant(baseTenant().build());
+ endpointManager.addL3Endpoint(natL3Ep);
+ l2Ep = new EndpointBuilder(l2Ep)
+ .addAugmentation(OfOverlayContext.class,new OfOverlayContextBuilder()
+ .setNodeId(nodeId)
+ .build())
+ .build();
+ endpointManager.addEndpoint(l2Ep);
+ switchManager.addSwitch(nodeId,null,ImmutableSet.<NodeConnectorId>of(new NodeConnectorId("openflow:1:1")), null);
mapper.sync(nodeId, ofWriter);
- verify(ofWriter, times(2)).writeFlow(any(NodeId.class), any(Short.class), any(Flow.class));
+ verify(ofWriter, times(4)).writeFlow(any(NodeId.class), any(Short.class), any(Flow.class));
}
@Test
public void syncTestNoExternalPorts() throws Exception {
- when(switchManager.getExternalPorts(nodeId)).thenReturn(null);
-
mapper.sync(nodeId, ofWriter);
verify(ofWriter, never()).writeFlow(any(NodeId.class), any(Short.class), any(Flow.class));
}