import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
+import java.util.concurrent.ExecutionException;
+
+import javax.annotation.Nonnull;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.Mockito;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.dhcp.DhcpRelayHandler;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.iface.InterfaceManager;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.lisp.LispStateManager;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.lisp.loopback.LoopbackManager;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.lisp.flat.overlay.FlatOverlayManager;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.nat.NatManager;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.policy.acl.AclManager;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.routing.RoutingManager;
import org.opendaylight.groupbasedpolicy.renderer.vpp.util.VppIidFactory;
import org.opendaylight.groupbasedpolicy.test.CustomDataBrokerTest;
import org.opendaylight.groupbasedpolicy.util.DataStoreHelper;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VxlanVni;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.VxlanVni;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbridge.topology.rev160129.NodeVbridgeAugment;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbridge.topology.rev160129.NodeVbridgeAugmentBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbridge.topology.rev160129.TopologyTypesVbridgeAugment;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbridge.topology.rev160129.TopologyTypesVbridgeAugmentBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbridge.topology.rev160129.TopologyVbridgeAugment;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbridge.topology.rev160129.TopologyVbridgeAugmentBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbridge.topology.rev160129.network.topology.topology.node.BridgeMemberBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbridge.topology.rev160129.network.topology.topology.topology.types.VbridgeTopologyBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbridge.tunnel.vxlan.rev160429.TunnelTypeVxlan;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbridge.tunnel.vxlan.rev160429.network.topology.topology.tunnel.parameters.VxlanTunnelParametersBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbridge.tunnel.vxlan.rev170327.TunnelTypeVxlan;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbridge.tunnel.vxlan.rev170327.network.topology.topology.tunnel.parameters.VxlanTunnelParametersBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
private final static boolean BRIDGE_DOMAIN_ARP = false;
private final static NodeId VPP_NODE_ID = new NodeId("vppNode");
private final static Topology BASE_TOPOLOGY = new TopologyBuilder().setTopologyId(BASE_TOPOLOGY_ID)
- .setNode(Arrays.asList(new NodeBuilder().setNodeId(VPP_NODE_ID)
- .setSupportingNode(Arrays.asList(new SupportingNodeBuilder().setTopologyRef(SUPPORTING_TOPOLOGY_NETCONF)
- .setNodeRef(VPP_NODE_ID)
+ .setNode(Collections.singletonList(new NodeBuilder().setNodeId(VPP_NODE_ID)
+ .setSupportingNode(Collections.singletonList(new SupportingNodeBuilder()
+ .setTopologyRef(SUPPORTING_TOPOLOGY_NETCONF)
+ .setNodeRef(VPP_NODE_ID)
+ .build()))
.build()))
- .build()))
.setTopologyTypes(new TopologyTypesBuilder()
.addAugmentation(TopologyTypesVbridgeAugment.class, new TopologyTypesVbridgeAugmentBuilder()
.setVbridgeTopology(new VbridgeTopologyBuilder().build()).build())
private BridgeDomainManagerImpl bridgeDomainManager;
@Override
+ @Nonnull
public Collection<Class<?>> getClassesFromModules() {
return Arrays.asList(NetworkTopology.class, Topology.class, TopologyVbridgeAugment.class,
TunnelTypeVxlan.class);
public void init() {
dataBroker = getDataBroker();
bridgeDomainManager = new BridgeDomainManagerImpl(dataBroker);
+ final InterfaceManager interfaceManager = Mockito.mock(InterfaceManager.class);
+ final AclManager aclManager = Mockito.mock(AclManager.class);
+ final NatManager natManager = Mockito.mock(NatManager.class);
+ final RoutingManager routingManager = Mockito.mock(RoutingManager.class);
+ final LispStateManager lispStateManager = Mockito.mock(LispStateManager.class);
+ final FlatOverlayManager flatOverlayManager = Mockito.mock(FlatOverlayManager.class);
+ final LoopbackManager loopbackManager = Mockito.mock(LoopbackManager.class);
+ final DhcpRelayHandler dhcpRelayHandler = Mockito.mock(DhcpRelayHandler.class);
+ final ForwardingManager fwManager =
+ new ForwardingManager(interfaceManager, aclManager, natManager, routingManager, bridgeDomainManager,
+ lispStateManager, loopbackManager, flatOverlayManager, dhcpRelayHandler, dataBroker);
+ fwManager.setTimer((byte) 1);
}
@Test
public void testCreateVxlanBridgeDomainOnVppNode() throws Exception {
bridgeDomainManager.createVxlanBridgeDomainOnVppNode(BRIDGE_DOMAIN_ID, BRIDGE_DOMAIN_VNI, VPP_NODE_ID);
+ // simulates VBD - when BD is created a node is stored to OPER DS
+ Thread vbdThread = new Thread(() -> {
+ WriteTransaction wTx = dataBroker.newWriteOnlyTransaction();
+ wTx.put(LogicalDatastoreType.OPERATIONAL, VppIidFactory
+ .getNodeIid(BASE_TOPOLOGY.getKey(), new NodeKey(VPP_NODE_ID)),
+ new NodeBuilder().setNodeId(VPP_NODE_ID)
+ .addAugmentation(NodeVbridgeAugment.class, new NodeVbridgeAugmentBuilder()
+ .setBridgeMember(new BridgeMemberBuilder().build()).build())
+ .build(),
+ true);
+ try {
+ wTx.submit().get();
+ } catch (InterruptedException | ExecutionException e) {
+ Assert.fail();
+ }
+ });
+ vbdThread.join();
Optional<Topology> topologyOptional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
VppIidFactory.getTopologyIid(BASE_TOPOLOGY.getKey()), dataBroker.newReadOnlyTransaction());
Assert.assertTrue(topologyOptional.isPresent());
Topology topology = topologyOptional.get();
- Assert.assertEquals(BASE_TOPOLOGY, topology);
+ Assert.assertEquals(BASE_TOPOLOGY.getAugmentation(TopologyVbridgeAugment.class),
+ topology.getAugmentation(TopologyVbridgeAugment.class));
}
@Test