Adding unit tests for vpp-renderer 53/40553/9
authorMartin Sunal <msunal@cisco.com>
Mon, 20 Jun 2016 14:44:49 +0000 (16:44 +0200)
committerMartin Sunal <msunal@cisco.com>
Wed, 20 Jul 2016 10:43:51 +0000 (10:43 +0000)
Change-Id: Id037f2bd5e59111ddfe2d7d3ecacf86ba34038f6
Signed-off-by: Martin Sunal <msunal@cisco.com>
renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/DtoFactory.java [new file with mode: 0644]
renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImplTest.java
renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/ForwardingManagerTest.java [new file with mode: 0644]
renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/ResolvedRuleGroupTest.java [new file with mode: 0644]
renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/VppRendererPolicyManagerTest.java

diff --git a/renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/DtoFactory.java b/renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/DtoFactory.java
new file mode 100644 (file)
index 0000000..295ee25
--- /dev/null
@@ -0,0 +1,147 @@
+package org.opendaylight.groupbasedpolicy.renderer.vpp;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.opendaylight.groupbasedpolicy.renderer.vpp.iface.VppPathMapper;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.util.KeyFactory;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.common.endpoint.fields.NetworkContainment;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.common.endpoint.fields.NetworkContainmentBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.common.endpoint.fields.network.containment.containment.ForwardingContextContainmentBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.AbsoluteLocation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.AbsoluteLocationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.absolute.location.location.type.ExternalLocationCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContextId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContractId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.RuleName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L2FloodDomain;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.AddressType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.ContextType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.EndpointPolicyParticipation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.rule.group.with.renderer.endpoint.participation.RuleGroupWithRendererEndpointParticipation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.rule.group.with.renderer.endpoint.participation.RuleGroupWithRendererEndpointParticipationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.Configuration;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.ConfigurationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.Endpoints;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.EndpointsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.RendererEndpointsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.RuleGroupsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocationKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.RendererEndpoint;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.RendererEndpointBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.renderer.endpoint.PeerEndpoint;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.renderer.endpoint.PeerEndpointBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.rule.groups.RuleGroup;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.rule.groups.RuleGroupBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.resolved.rules.ResolvedRuleBuilder;
+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;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+import com.google.common.base.Strings;
+
+public class DtoFactory {
+
+    public static final ContextId CTX_ID = new ContextId("ctx");
+    public static final ContextId L2FD_CTX = new ContextId("l2fd");
+    public static final ContractId CONTRACT_ID = new ContractId("contract");
+    public static final TenantId TENANT_ID = new TenantId("tenant");
+    public static final SubjectName SUBJECT_NAME = new SubjectName("subject");
+    public static final RuleName RULE_NAME = new RuleName("rule");
+    public static final RuleGroupWithRendererEndpointParticipation RULE_GROUP_WITH_CONSUMER =
+            new RuleGroupWithRendererEndpointParticipationBuilder().setContractId(CONTRACT_ID)
+                .setTenantId(TENANT_ID)
+                .setSubjectName(SUBJECT_NAME)
+                .setRendererEndpointParticipation(EndpointPolicyParticipation.CONSUMER)
+                .build();
+    public static final RuleGroupWithRendererEndpointParticipation RULE_GROUP_WITH_PROVIDER =
+            new RuleGroupWithRendererEndpointParticipationBuilder().setContractId(CONTRACT_ID)
+                .setTenantId(TENANT_ID)
+                .setSubjectName(SUBJECT_NAME)
+                .setRendererEndpointParticipation(EndpointPolicyParticipation.PROVIDER)
+                .build();
+    public static final RuleGroup RULE_GROUP = new RuleGroupBuilder().setContractId(CONTRACT_ID)
+        .setTenantId(TENANT_ID)
+        .setSubjectName(SUBJECT_NAME)
+        .setResolvedRule(Arrays.asList(new ResolvedRuleBuilder().setName(RULE_NAME).build()))
+        .build();
+    public final static TopologyKey TOPO_KEY = new TopologyKey(new TopologyId("topology-netconf"));
+    public final static InstanceIdentifier<Node> VPP_NODE_1_IID = InstanceIdentifier.builder(NetworkTopology.class)
+        .child(Topology.class, TOPO_KEY)
+        .child(Node.class, new NodeKey(new NodeId("node1")))
+        .build();
+    public final static InstanceIdentifier<Node> VPP_NODE_2_IID = InstanceIdentifier.builder(NetworkTopology.class)
+        .child(Topology.class, TOPO_KEY)
+        .child(Node.class, new NodeKey(new NodeId("node2")))
+        .build();
+
+    public static Configuration createConfiguration(List<AddressEndpointWithLocation> consumers,
+            List<AddressEndpointWithLocation> providers) {
+        List<AddressEndpointWithLocation> eps =
+                Stream.concat(consumers.stream(), providers.stream()).collect(Collectors.toList());
+        Endpoints endpoints = new EndpointsBuilder().setAddressEndpointWithLocation(eps).build();
+        List<RendererEndpoint> consumersAsRendererEps = consumers.stream().map(cons -> {
+            List<PeerEndpoint> peers = providers.stream()
+                .map(web -> new PeerEndpointBuilder().setKey(KeyFactory.peerEndpointKey(web.getKey()))
+                    .setRuleGroupWithRendererEndpointParticipation(Arrays.asList(RULE_GROUP_WITH_CONSUMER))
+                    .build())
+                .collect(Collectors.toList());
+            return new RendererEndpointBuilder().setKey(KeyFactory.rendererEndpointKey(cons.getKey()))
+                .setPeerEndpoint(peers)
+                .build();
+        }).collect(Collectors.toList());
+        List<RendererEndpoint> providersAsRendererEps = providers.stream().map(prov -> {
+            List<PeerEndpoint> peers = consumers.stream()
+                .map(client -> new PeerEndpointBuilder().setKey(KeyFactory.peerEndpointKey(client.getKey()))
+                    .setRuleGroupWithRendererEndpointParticipation(Arrays.asList(RULE_GROUP_WITH_PROVIDER))
+                    .build())
+                .collect(Collectors.toList());
+            return new RendererEndpointBuilder().setKey(KeyFactory.rendererEndpointKey(prov.getKey()))
+                .setPeerEndpoint(peers)
+                .build();
+        }).collect(Collectors.toList());
+        List<RendererEndpoint> rendererEps = Stream
+            .concat(consumersAsRendererEps.stream(), providersAsRendererEps.stream()).collect(Collectors.toList());
+        return new ConfigurationBuilder().setEndpoints(endpoints)
+            .setRendererEndpoints(new RendererEndpointsBuilder().setRendererEndpoint(rendererEps).build())
+            .setRuleGroups(new RuleGroupsBuilder().setRuleGroup(Arrays.asList(RULE_GROUP)).build())
+            .build();
+    }
+
+    public static AddressEndpointWithLocation createEndpoint(String ip, String l2FdIdAsNetCont,
+            AbsoluteLocation absoluteLocation) {
+        AddressEndpointWithLocationKey key =
+                new AddressEndpointWithLocationKey(ip, AddressType.class, CTX_ID, ContextType.class);
+        NetworkContainment networkContainment =
+                new NetworkContainmentBuilder().setContainment(new ForwardingContextContainmentBuilder()
+                    .setContextType(L2FloodDomain.class).setContextId(new ContextId(l2FdIdAsNetCont)).build()).build();
+        return new AddressEndpointWithLocationBuilder().setKey(key)
+            .setNetworkContainment(networkContainment)
+            .setAbsoluteLocation(absoluteLocation)
+            .build();
+    }
+
+    public static AbsoluteLocation absoluteLocation(InstanceIdentifier<?> mountPoint, String nodeName,
+            String nodeConnectorName) {
+        ExternalLocationCaseBuilder extLocBuilder =
+                new ExternalLocationCaseBuilder().setExternalNodeMountPoint(mountPoint);
+        if (!Strings.isNullOrEmpty(nodeName)) {
+            extLocBuilder.setExternalNode(VppPathMapper.bridgeDomainToRestPath(nodeName));
+        }
+        if (!Strings.isNullOrEmpty(nodeConnectorName)) {
+            extLocBuilder.setExternalNodeConnector(VppPathMapper.interfaceToRestPath(nodeConnectorName));
+        }
+        return new AbsoluteLocationBuilder().setLocationType(extLocBuilder.build()).build();
+    }
+}
index b1344ecaf4cd446eab34c69c0d4c0986bc0e27f7..c89e4249505daa063ee2655565a49a1615dedef2 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.groupbasedpolicy.renderer.vpp.policy;
 
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.concurrent.ExecutionException;
 
 import org.junit.Assert;
 import org.junit.Before;
@@ -21,10 +22,13 @@ 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.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;
@@ -94,6 +98,24 @@ public class BridgeDomainManagerImplTest extends CustomDataBrokerTest {
     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());
diff --git a/renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/ForwardingManagerTest.java b/renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/ForwardingManagerTest.java
new file mode 100644 (file)
index 0000000..04a8de7
--- /dev/null
@@ -0,0 +1,179 @@
+package org.opendaylight.groupbasedpolicy.renderer.vpp.policy;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Matchers;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.runners.MockitoJUnitRunner;
+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.DtoFactory;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.api.BridgeDomainManager;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.iface.InterfaceManager;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.util.KeyFactory;
+import org.opendaylight.groupbasedpolicy.test.CustomDataBrokerTest;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.AbsoluteLocation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.RendererPolicy;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.RendererPolicyBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.Configuration;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.RendererEndpoint;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.RendererEndpointKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.Config;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.NetworkTypeBase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.VlanNetwork;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.config.BridgeDomain;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.config.BridgeDomainBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VxlanVni;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+import com.google.common.base.Optional;
+import com.google.common.collect.ImmutableSetMultimap;
+import com.google.common.collect.SetMultimap;
+import com.google.common.util.concurrent.Futures;
+
+@RunWith(MockitoJUnitRunner.class)
+public class ForwardingManagerTest extends CustomDataBrokerTest {
+
+    private static final String BD_1 = "bd1";
+    private static final NodeId NODE_1 = new NodeId("node1");
+    private static final VlanId VLAN_1 = new VlanId(1);
+    @Mock
+    private InterfaceManager ifaceManager;
+    @Mock
+    private BridgeDomainManager bdManager;
+
+    private ForwardingManager fwdManager;
+
+    @Before
+    public void init() {
+        fwdManager = new ForwardingManager(ifaceManager, bdManager, getDataBroker());
+    }
+
+    @Override
+    public Collection<Class<?>> getClassesFromModules() {
+        return Arrays.asList(BridgeDomain.class);
+    }
+
+    @Test
+    public void testReadBridgeDomainConfig() throws Exception {
+        BridgeDomain bd = new BridgeDomainBuilder().setId(BD_1).setType(NetworkTypeBase.class).build();
+        InstanceIdentifier<BridgeDomain> bdIid =
+                InstanceIdentifier.builder(Config.class).child(BridgeDomain.class, bd.getKey()).build();
+        Optional<BridgeDomain> bdOptional = fwdManager.readBridgeDomainConfig(bd.getId());
+        Assert.assertFalse(bdOptional.isPresent());
+
+        WriteTransaction wTx = getDataBroker().newWriteOnlyTransaction();
+        wTx.put(LogicalDatastoreType.CONFIGURATION, bdIid, bd);
+        wTx.submit().get();
+
+        bdOptional = fwdManager.readBridgeDomainConfig(bd.getId());
+        Assert.assertTrue(bdOptional.isPresent());
+        Assert.assertEquals(bd, bdOptional.get());
+    }
+
+    @Test
+    public void testCreateBridgeDomainOnNodes_vxlan() throws Exception {
+        Mockito.when(bdManager.createVxlanBridgeDomainOnVppNode(Mockito.eq(BD_1), Mockito.any(VxlanVni.class),
+                Mockito.eq(NODE_1)))
+            .thenReturn(Futures.immediateFuture(null));
+        SetMultimap<String, NodeId> vppNodesByBd = ImmutableSetMultimap.of(BD_1, NODE_1);
+
+        fwdManager.createBridgeDomainOnNodes(vppNodesByBd);
+        Mockito.verify(bdManager).createVxlanBridgeDomainOnVppNode(Matchers.eq(BD_1), Matchers.any(VxlanVni.class),
+                Matchers.eq(NODE_1));
+    }
+
+    @Test
+    public void testCreateBridgeDomainOnNodes_vlan() throws Exception {
+        Mockito.when(bdManager.createVlanBridgeDomainOnVppNode(Mockito.eq(BD_1), Mockito.any(VlanId.class),
+                Mockito.eq(NODE_1)))
+            .thenReturn(Futures.immediateFuture(null));
+        BridgeDomain bd = new BridgeDomainBuilder().setId(BD_1).setType(VlanNetwork.class).setVlan(VLAN_1).build();
+        InstanceIdentifier<BridgeDomain> bdIid =
+                InstanceIdentifier.builder(Config.class).child(BridgeDomain.class, bd.getKey()).build();
+        WriteTransaction wTx = getDataBroker().newWriteOnlyTransaction();
+        wTx.put(LogicalDatastoreType.CONFIGURATION, bdIid, bd);
+        wTx.submit().get();
+        SetMultimap<String, NodeId> vppNodesByBd = ImmutableSetMultimap.of(BD_1, NODE_1);
+
+        fwdManager.createBridgeDomainOnNodes(vppNodesByBd);
+        Mockito.verify(bdManager).createVlanBridgeDomainOnVppNode(Matchers.eq(BD_1), Matchers.eq(VLAN_1),
+                Matchers.eq(NODE_1));
+    }
+
+    @Test
+    public void testRemoveBridgeDomainOnNodes() throws Exception {
+        Mockito.when(bdManager.removeBridgeDomainFromVppNode(Mockito.eq(BD_1), Mockito.eq(NODE_1)))
+            .thenReturn(Futures.immediateFuture(null));
+        SetMultimap<String, NodeId> vppNodesByBd = ImmutableSetMultimap.of(BD_1, NODE_1);
+
+        bdManager.removeBridgeDomainFromVppNode(BD_1, NODE_1);
+        Mockito.verify(bdManager).removeBridgeDomainFromVppNode(Matchers.eq(BD_1), Matchers.eq(NODE_1));
+    }
+
+    @Test
+    public void testCreateForwardingForEndpoint() throws Exception {
+        String clientIp = "1.1.1.1";
+        String clientIfaceName = "client1";
+        AbsoluteLocation clientLocation = DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_1_IID, null, clientIfaceName);
+        AddressEndpointWithLocation clientEp =
+                DtoFactory.createEndpoint(clientIp, DtoFactory.L2FD_CTX.getValue(), clientLocation);
+        String webIp = "2.2.2.2";
+        String webIfaceName = "web1";
+        AbsoluteLocation webLocation = DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_1_IID, null, webIfaceName);
+        AddressEndpointWithLocation webEp =
+                DtoFactory.createEndpoint(webIp, DtoFactory.L2FD_CTX.getValue(), webLocation);
+        Configuration configuration = DtoFactory.createConfiguration(Arrays.asList(clientEp), Arrays.asList(webEp));
+        RendererPolicy rendererPolicy =
+                new RendererPolicyBuilder().setVersion(1L).setConfiguration(configuration).build();
+        PolicyContext policyCtx = new PolicyContext(rendererPolicy);
+        RendererEndpoint firstRendererEp = configuration.getRendererEndpoints().getRendererEndpoint().get(0);
+        AddressEndpointWithLocation firstAddrEpWithLoc =
+                policyCtx.getAddrEpByKey().get(KeyFactory.addressEndpointKey(firstRendererEp.getKey()));
+        Mockito.when(ifaceManager.addBridgeDomainToInterface(Mockito.eq(DtoFactory.L2FD_CTX.getValue()),
+                Mockito.eq(firstAddrEpWithLoc)))
+            .thenReturn(Futures.immediateFuture(null));
+
+        fwdManager.createForwardingForEndpoint(firstRendererEp.getKey(), policyCtx);
+        Mockito.verify(ifaceManager).addBridgeDomainToInterface(Matchers.eq(DtoFactory.L2FD_CTX.getValue()),
+                Matchers.eq(firstAddrEpWithLoc));
+    }
+
+    @Test
+    public void testRemoveForwardingForEndpoint() throws Exception {
+        String clientIp = "1.1.1.1";
+        String clientIfaceName = "client1";
+        String bdNameOnVpp = "bdRed";
+        AbsoluteLocation clientLocation = DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_1_IID, bdNameOnVpp, clientIfaceName);
+        AddressEndpointWithLocation clientEp =
+                DtoFactory.createEndpoint(clientIp, DtoFactory.L2FD_CTX.getValue(), clientLocation);
+        String webIp = "2.2.2.2";
+        String webIfaceName = "web1";
+        AbsoluteLocation webLocation = DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_1_IID, bdNameOnVpp, webIfaceName);
+        AddressEndpointWithLocation webEp =
+                DtoFactory.createEndpoint(webIp, DtoFactory.L2FD_CTX.getValue(), webLocation);
+        Configuration configuration = DtoFactory.createConfiguration(Arrays.asList(clientEp), Arrays.asList(webEp));
+        RendererPolicy rendererPolicy =
+                new RendererPolicyBuilder().setVersion(1L).setConfiguration(configuration).build();
+        PolicyContext policyCtx = new PolicyContext(rendererPolicy);
+        RendererEndpoint firstRendererEp = configuration.getRendererEndpoints().getRendererEndpoint().get(0);
+        AddressEndpointWithLocation firstAddrEpWithLoc =
+                policyCtx.getAddrEpByKey().get(KeyFactory.addressEndpointKey(firstRendererEp.getKey()));
+        Mockito.when(ifaceManager.deleteBridgeDomainFromInterface(
+                Mockito.eq(firstAddrEpWithLoc)))
+            .thenReturn(Futures.immediateFuture(null));
+
+        fwdManager.removeForwardingForEndpoint(firstRendererEp.getKey(), policyCtx);
+        Mockito.verify(ifaceManager).deleteBridgeDomainFromInterface(Matchers.eq(firstAddrEpWithLoc));
+    }
+
+}
diff --git a/renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/ResolvedRuleGroupTest.java b/renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/ResolvedRuleGroupTest.java
new file mode 100644 (file)
index 0000000..ce83451
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2016 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.vpp.policy;
+
+import java.util.Arrays;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContractId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.RuleName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.rule.groups.RuleGroup;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.rule.groups.RuleGroupBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.resolved.rules.ResolvedRule;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.resolved.rules.ResolvedRuleBuilder;
+
+import com.google.common.collect.ImmutableSortedSet;
+
+public class ResolvedRuleGroupTest {
+
+    private static final ContractId CONTRACT1_ID = new ContractId("contract1");
+    private static final TenantId TENANT1_ID = new TenantId("tenant1");
+    private static final SubjectName SUBJECT1_NAME = new SubjectName("subject1");
+    private static final RuleName RULE1_NAME = new RuleName("rule1");
+    private static final RuleGroup RULE_GROUP1 = new RuleGroupBuilder().setContractId(CONTRACT1_ID)
+        .setTenantId(TENANT1_ID)
+        .setSubjectName(SUBJECT1_NAME)
+        .setResolvedRule(Arrays.asList(new ResolvedRuleBuilder().setName(RULE1_NAME).build()))
+        .build();
+    private static final ContractId CONTRACT2_ID = new ContractId("contract2");
+    private static final TenantId TENANT2_ID = new TenantId("tenant2");
+    private static final SubjectName SUBJECT2_NAME = new SubjectName("subject2");
+    private static final RuleName RULE2_NAME = new RuleName("rule2");
+    private static final RuleName RULE3_NAME = new RuleName("rule3");
+    private static final RuleGroup RULE_GROUP2 = new RuleGroupBuilder().setContractId(CONTRACT2_ID)
+        .setTenantId(TENANT2_ID)
+        .setSubjectName(SUBJECT2_NAME)
+        .setResolvedRule(Arrays.asList(new ResolvedRuleBuilder().setName(RULE3_NAME).build(), new ResolvedRuleBuilder().setName(RULE2_NAME).build()))
+        .build();
+
+    @Test
+    public void testConstructor_ruleGroup() throws Exception {
+        ResolvedRuleGroup resolvedRuleGroup = new ResolvedRuleGroup(RULE_GROUP1);
+        Assert.assertEquals(resolvedRuleGroup.getContractTenantId(), RULE_GROUP1.getTenantId());
+        Assert.assertEquals(resolvedRuleGroup.getContractId(), RULE_GROUP1.getContractId());
+        Assert.assertEquals(resolvedRuleGroup.getRelatedSubject(), RULE_GROUP1.getSubjectName());
+        Assert.assertEquals(resolvedRuleGroup.getOrder(), RULE_GROUP1.getOrder());
+        Assert.assertArrayEquals(resolvedRuleGroup.getRules().toArray(), RULE_GROUP1.getResolvedRule().toArray());
+    }
+
+    @Test
+    public void testConstructor_params() throws Exception {
+        ResolvedRuleGroup resolvedRuleGroup = new ResolvedRuleGroup(RULE_GROUP1.getResolvedRule(), RULE_GROUP1.getOrder(),
+                RULE_GROUP1.getTenantId(), RULE_GROUP1.getContractId(), RULE_GROUP1.getSubjectName());
+        Assert.assertEquals(resolvedRuleGroup.getContractTenantId(), RULE_GROUP1.getTenantId());
+        Assert.assertEquals(resolvedRuleGroup.getContractId(), RULE_GROUP1.getContractId());
+        Assert.assertEquals(resolvedRuleGroup.getRelatedSubject(), RULE_GROUP1.getSubjectName());
+        Assert.assertEquals(resolvedRuleGroup.getOrder(), RULE_GROUP1.getOrder());
+        Assert.assertArrayEquals(resolvedRuleGroup.getRules().toArray(), RULE_GROUP1.getResolvedRule().toArray());
+    }
+
+    @Test
+    public void testCompareTo_noOrder() {
+        ResolvedRuleGroup resolvedRuleGroup1 = new ResolvedRuleGroup(RULE_GROUP1);
+        ResolvedRuleGroup resolvedRuleGroup2 = new ResolvedRuleGroup(RULE_GROUP2);
+        Assert.assertEquals(-1, resolvedRuleGroup1.compareTo(resolvedRuleGroup2));
+    }
+
+    @Test
+    public void testCompareTo_withOrder() {
+        ResolvedRuleGroup resolvedRuleGroup1 = new ResolvedRuleGroup(new RuleGroupBuilder(RULE_GROUP1).setOrder(2).build());
+        ResolvedRuleGroup resolvedRuleGroup2 = new ResolvedRuleGroup(new RuleGroupBuilder(RULE_GROUP2).setOrder(1).build());
+        Assert.assertEquals(1, resolvedRuleGroup1.compareTo(resolvedRuleGroup2));
+        ImmutableSortedSet<ResolvedRule> rules = resolvedRuleGroup2.getRules();
+        Assert.assertEquals(2, rules.size());
+        Assert.assertEquals(RULE_GROUP2.getResolvedRule().get(1), rules.first());
+        Assert.assertEquals(RULE_GROUP2.getResolvedRule().get(0), rules.last());
+    }
+
+}
index e4665e9f19aa920e62d561dddbd90562ab6f8a3c..d9a37aa4bbcd1f186c5446f0883bf782805bec75 100644 (file)
@@ -8,14 +8,11 @@
 
 package org.opendaylight.groupbasedpolicy.renderer.vpp.policy;
 
-import com.google.common.base.Optional;
-import com.google.common.base.Strings;
-import com.google.common.util.concurrent.MoreExecutors;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
+
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -26,12 +23,12 @@ import org.opendaylight.controller.config.yang.config.vpp_provider.impl.VppRende
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.DtoFactory;
 import org.opendaylight.groupbasedpolicy.renderer.vpp.api.BridgeDomainManager;
 import org.opendaylight.groupbasedpolicy.renderer.vpp.event.RendererPolicyConfEvent;
 import org.opendaylight.groupbasedpolicy.renderer.vpp.event.VppEndpointConfEvent;
 import org.opendaylight.groupbasedpolicy.renderer.vpp.iface.InterfaceManager;
 import org.opendaylight.groupbasedpolicy.renderer.vpp.iface.VppEndpointLocationProvider;
-import org.opendaylight.groupbasedpolicy.renderer.vpp.iface.VppPathMapper;
 import org.opendaylight.groupbasedpolicy.renderer.vpp.util.KeyFactory;
 import org.opendaylight.groupbasedpolicy.renderer.vpp.util.MountedDataBrokerProvider;
 import org.opendaylight.groupbasedpolicy.test.CustomDataBrokerTest;
@@ -39,44 +36,17 @@ import org.opendaylight.groupbasedpolicy.util.IidFactory;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.common.endpoint.fields.NetworkContainment;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.common.endpoint.fields.NetworkContainmentBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.common.endpoint.fields.network.containment.containment.ForwardingContextContainmentBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.AbsoluteLocation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.AbsoluteLocationBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.absolute.location.location.type.ExternalLocationCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContextId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContractId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.RuleName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_location_provider.rev160419.LocationProviders;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_location_provider.rev160419.location.providers.LocationProvider;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_location_provider.rev160419.location.providers.location.provider.ProviderAddressEndpointLocation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L2FloodDomain;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.AddressType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.ContextType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.EndpointPolicyParticipation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.rule.group.with.renderer.endpoint.participation.RuleGroupWithRendererEndpointParticipation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.rule.group.with.renderer.endpoint.participation.RuleGroupWithRendererEndpointParticipationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.RendererPolicy;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.RendererPolicyBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.Configuration;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.ConfigurationBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.Endpoints;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.EndpointsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.RendererEndpointsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.RuleGroupsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocationKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.RendererEndpoint;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.RendererEndpointBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.renderer.endpoint.PeerEndpoint;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.renderer.endpoint.PeerEndpointBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.rule.groups.RuleGroup;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.rule.groups.RuleGroupBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.resolved.rules.ResolvedRuleBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.Config;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.config.VppEndpoint;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.config.VppEndpointBuilder;
@@ -91,52 +61,18 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.vpp.BridgeDomains;
 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.tunnel.vxlan.rev160429.TunnelTypeVxlan;
-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;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
+import com.google.common.base.Optional;
+import com.google.common.base.Strings;
+import com.google.common.util.concurrent.MoreExecutors;
+
 @RunWith(MockitoJUnitRunner.class)
 public class VppRendererPolicyManagerTest extends CustomDataBrokerTest {
 
     private static final InstanceIdentifier<RendererPolicy> RENDERER_POLICY_IID =
             IidFactory.rendererIid(VppRenderer.NAME).child(RendererPolicy.class);
-    private static final ContextId CTX_ID = new ContextId("ctx");
-    private static final ContextId L2FD_CTX = new ContextId("l2fd");
-    private final static TopologyKey TOPO_KEY = new TopologyKey(new TopologyId("topology-netconf"));
-    private final static InstanceIdentifier<Node> VPP_NODE_1_IID = InstanceIdentifier.builder(NetworkTopology.class)
-        .child(Topology.class, TOPO_KEY)
-        .child(Node.class, new NodeKey(new NodeId("node1")))
-        .build();
-    private final static InstanceIdentifier<Node> VPP_NODE_2_IID = InstanceIdentifier.builder(NetworkTopology.class)
-        .child(Topology.class, TOPO_KEY)
-        .child(Node.class, new NodeKey(new NodeId("node2")))
-        .build();
-    private static final ContractId CONTRACT_ID = new ContractId("contract");
-    private static final TenantId TENANT_ID = new TenantId("tenant");
-    private static final SubjectName SUBJECT_NAME = new SubjectName("subject");
-    private static final RuleName RULE_NAME = new RuleName("rule");
-    private static final RuleGroupWithRendererEndpointParticipation RULE_GROUP_WITH_CONSUMER =
-            new RuleGroupWithRendererEndpointParticipationBuilder().setContractId(CONTRACT_ID)
-                .setTenantId(TENANT_ID)
-                .setSubjectName(SUBJECT_NAME)
-                .setRendererEndpointParticipation(EndpointPolicyParticipation.CONSUMER)
-                .build();
-    private static final RuleGroupWithRendererEndpointParticipation RULE_GROUP_WITH_PROVIDER =
-            new RuleGroupWithRendererEndpointParticipationBuilder().setContractId(CONTRACT_ID)
-                .setTenantId(TENANT_ID)
-                .setSubjectName(SUBJECT_NAME)
-                .setRendererEndpointParticipation(EndpointPolicyParticipation.PROVIDER)
-                .build();
-    private static final RuleGroup RULE_GROUP = new RuleGroupBuilder().setContractId(CONTRACT_ID)
-        .setTenantId(TENANT_ID)
-        .setSubjectName(SUBJECT_NAME)
-        .setResolvedRule(Arrays.asList(new ResolvedRuleBuilder().setName(RULE_NAME).build()))
-        .build();
     private final static String SOCKET = "socket";
 
     private MountedDataBrokerProvider mountedDataProviderMock;
@@ -175,17 +111,19 @@ public class VppRendererPolicyManagerTest extends CustomDataBrokerTest {
     public void testRendererPolicyChanged_created_oneEpPerEpg() throws Exception {
         String clientIp = "1.1.1.1";
         String clientIfaceName = "client1";
-        AbsoluteLocation clientLocation = absoluteLocation(VPP_NODE_1_IID, null, clientIfaceName);
-        AddressEndpointWithLocation clientEp = createEndpoint(clientIp, L2FD_CTX.getValue(), clientLocation);
+        AbsoluteLocation clientLocation = DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_1_IID, null, clientIfaceName);
+        AddressEndpointWithLocation clientEp =
+                DtoFactory.createEndpoint(clientIp, DtoFactory.L2FD_CTX.getValue(), clientLocation);
         String webIp = "2.2.2.2";
         String webIfaceName = "web1";
-        AbsoluteLocation webLocation = absoluteLocation(VPP_NODE_1_IID, null, webIfaceName);
-        AddressEndpointWithLocation webEp = createEndpoint(webIp, L2FD_CTX.getValue(), webLocation);
+        AbsoluteLocation webLocation = DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_1_IID, null, webIfaceName);
+        AddressEndpointWithLocation webEp =
+                DtoFactory.createEndpoint(webIp, DtoFactory.L2FD_CTX.getValue(), webLocation);
 
         storeVppEndpoint(clientEp.getKey(), clientIfaceName, createVppEndpointIid(clientEp.getKey()));
         storeVppEndpoint(webEp.getKey(), webIfaceName, createVppEndpointIid(webEp.getKey()));
 
-        Configuration configuration = createConfiguration(Arrays.asList(clientEp), Arrays.asList(webEp));
+        Configuration configuration = DtoFactory.createConfiguration(Arrays.asList(clientEp), Arrays.asList(webEp));
         RendererPolicy rendererPolicy =
                 new RendererPolicyBuilder().setVersion(1L).setConfiguration(configuration).build();
         RendererPolicyConfEvent event = new RendererPolicyConfEvent(RENDERER_POLICY_IID, null, rendererPolicy);
@@ -194,9 +132,9 @@ public class VppRendererPolicyManagerTest extends CustomDataBrokerTest {
 
         // assert state on data store behind mount point
         Interface clientIface = readAndAssertInterface(clientIfaceName);
-        assertBridgeDomainOnInterface(L2FD_CTX.getValue(), clientIface);
+        assertBridgeDomainOnInterface(DtoFactory.L2FD_CTX.getValue(), clientIface);
         Interface webIface = readAndAssertInterface(webIfaceName);
-        assertBridgeDomainOnInterface(L2FD_CTX.getValue(), webIface);
+        assertBridgeDomainOnInterface(DtoFactory.L2FD_CTX.getValue(), webIface);
         // assert state on ODL data store
         ReadOnlyTransaction rTx = dataBroker.newReadOnlyTransaction();
         Optional<LocationProvider> optLocationProvider = rTx.read(LogicalDatastoreType.CONFIGURATION,
@@ -207,27 +145,35 @@ public class VppRendererPolicyManagerTest extends CustomDataBrokerTest {
         Assert.assertNotNull(epLocs);
         Assert.assertEquals(2, epLocs.size());
         assertProviderAddressEndpointLocation(clientEp.getKey(),
-                absoluteLocation(VPP_NODE_1_IID, L2FD_CTX.getValue(), clientIfaceName), epLocs);
+                DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_1_IID, DtoFactory.L2FD_CTX.getValue(), clientIfaceName),
+                epLocs);
         assertProviderAddressEndpointLocation(webEp.getKey(),
-                absoluteLocation(VPP_NODE_1_IID, L2FD_CTX.getValue(), webIfaceName), epLocs);
+                DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_1_IID, DtoFactory.L2FD_CTX.getValue(), webIfaceName),
+                epLocs);
     }
 
     @Test
     public void testRendererPolicyChanged_update() throws Exception {
         String client1IfaceName = "client1";
-        AbsoluteLocation client1LocationNodeNull = absoluteLocation(VPP_NODE_1_IID, null, client1IfaceName);
+        AbsoluteLocation client1LocationNodeNull =
+                DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_1_IID, null, client1IfaceName);
         AddressEndpointWithLocation client1Ep =
-                createEndpoint("10.0.0.1", L2FD_CTX.getValue(), client1LocationNodeNull);
+                DtoFactory.createEndpoint("10.0.0.1", DtoFactory.L2FD_CTX.getValue(), client1LocationNodeNull);
         String web1IfaceName = "web1";
-        AbsoluteLocation web1LocationNodeNull = absoluteLocation(VPP_NODE_2_IID, null, web1IfaceName);
-        AddressEndpointWithLocation web1Ep = createEndpoint("20.0.0.1", L2FD_CTX.getValue(), web1LocationNodeNull);
+        AbsoluteLocation web1LocationNodeNull =
+                DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_2_IID, null, web1IfaceName);
+        AddressEndpointWithLocation web1Ep =
+                DtoFactory.createEndpoint("20.0.0.1", DtoFactory.L2FD_CTX.getValue(), web1LocationNodeNull);
         String client2IfaceName = "client2";
-        AbsoluteLocation client2LocationNodeNull = absoluteLocation(VPP_NODE_1_IID, null, client2IfaceName);
+        AbsoluteLocation client2LocationNodeNull =
+                DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_1_IID, null, client2IfaceName);
         AddressEndpointWithLocation client2Ep =
-                createEndpoint("10.0.0.2", L2FD_CTX.getValue(), client2LocationNodeNull);
+                DtoFactory.createEndpoint("10.0.0.2", DtoFactory.L2FD_CTX.getValue(), client2LocationNodeNull);
         String web2IfaceName = "web2";
-        AbsoluteLocation web2LocationNodeNull = absoluteLocation(VPP_NODE_2_IID, null, web2IfaceName);
-        AddressEndpointWithLocation web2Ep = createEndpoint("20.0.0.2", L2FD_CTX.getValue(), web2LocationNodeNull);
+        AbsoluteLocation web2LocationNodeNull =
+                DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_2_IID, null, web2IfaceName);
+        AddressEndpointWithLocation web2Ep =
+                DtoFactory.createEndpoint("20.0.0.2", DtoFactory.L2FD_CTX.getValue(), web2LocationNodeNull);
 
         storeVppEndpoint(client1Ep.getKey(), client1IfaceName, createVppEndpointIid(client1Ep.getKey()));
         storeVppEndpoint(web1Ep.getKey(), web1IfaceName, createVppEndpointIid(web1Ep.getKey()));
@@ -235,7 +181,7 @@ public class VppRendererPolicyManagerTest extends CustomDataBrokerTest {
         storeVppEndpoint(web2Ep.getKey(), web2IfaceName, createVppEndpointIid(web2Ep.getKey()));
 
         Configuration configuration =
-                createConfiguration(Arrays.asList(client1Ep, client2Ep), Arrays.asList(web1Ep, web2Ep));
+                DtoFactory.createConfiguration(Arrays.asList(client1Ep, client2Ep), Arrays.asList(web1Ep, web2Ep));
         RendererPolicy rendererPolicy =
                 new RendererPolicyBuilder().setVersion(1L).setConfiguration(configuration).build();
         RendererPolicyConfEvent event = new RendererPolicyConfEvent(RENDERER_POLICY_IID, null, rendererPolicy);
@@ -244,13 +190,13 @@ public class VppRendererPolicyManagerTest extends CustomDataBrokerTest {
 
         // assert state on data store behind mount point ######################################
         Interface client1Iface = readAndAssertInterface(client1IfaceName);
-        assertBridgeDomainOnInterface(L2FD_CTX.getValue(), client1Iface);
+        assertBridgeDomainOnInterface(DtoFactory.L2FD_CTX.getValue(), client1Iface);
         Interface web1Iface = readAndAssertInterface(web1IfaceName);
-        assertBridgeDomainOnInterface(L2FD_CTX.getValue(), web1Iface);
+        assertBridgeDomainOnInterface(DtoFactory.L2FD_CTX.getValue(), web1Iface);
         Interface client2Iface = readAndAssertInterface(client2IfaceName);
-        assertBridgeDomainOnInterface(L2FD_CTX.getValue(), client2Iface);
+        assertBridgeDomainOnInterface(DtoFactory.L2FD_CTX.getValue(), client2Iface);
         Interface web2Iface = readAndAssertInterface(web2IfaceName);
-        assertBridgeDomainOnInterface(L2FD_CTX.getValue(), web2Iface);
+        assertBridgeDomainOnInterface(DtoFactory.L2FD_CTX.getValue(), web2Iface);
         // assert state on ODL data store
         ReadOnlyTransaction rTx = dataBroker.newReadOnlyTransaction();
         Optional<LocationProvider> optLocationProvider = rTx.read(LogicalDatastoreType.CONFIGURATION,
@@ -260,25 +206,27 @@ public class VppRendererPolicyManagerTest extends CustomDataBrokerTest {
         List<ProviderAddressEndpointLocation> epLocs = optLocationProvider.get().getProviderAddressEndpointLocation();
         Assert.assertNotNull(epLocs);
         Assert.assertEquals(4, epLocs.size());
-        assertProviderAddressEndpointLocation(client1Ep.getKey(),
-                absoluteLocation(VPP_NODE_1_IID, L2FD_CTX.getValue(), client1IfaceName), epLocs);
+        assertProviderAddressEndpointLocation(client1Ep.getKey(), DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_1_IID,
+                DtoFactory.L2FD_CTX.getValue(), client1IfaceName), epLocs);
         assertProviderAddressEndpointLocation(web1Ep.getKey(),
-                absoluteLocation(VPP_NODE_2_IID, L2FD_CTX.getValue(), web1IfaceName), epLocs);
-        assertProviderAddressEndpointLocation(client2Ep.getKey(),
-                absoluteLocation(VPP_NODE_1_IID, L2FD_CTX.getValue(), client2IfaceName), epLocs);
+                DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_2_IID, DtoFactory.L2FD_CTX.getValue(), web1IfaceName),
+                epLocs);
+        assertProviderAddressEndpointLocation(client2Ep.getKey(), DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_1_IID,
+                DtoFactory.L2FD_CTX.getValue(), client2IfaceName), epLocs);
         assertProviderAddressEndpointLocation(web2Ep.getKey(),
-                absoluteLocation(VPP_NODE_2_IID, L2FD_CTX.getValue(), web2IfaceName), epLocs);
+                DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_2_IID, DtoFactory.L2FD_CTX.getValue(), web2IfaceName),
+                epLocs);
         // #####################################################################################
 
-        AbsoluteLocation client1Location =
-                absoluteLocation(VPP_NODE_1_IID, L2FD_CTX.getValue(), client1IfaceName);
+        AbsoluteLocation client1Location = DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_1_IID,
+                DtoFactory.L2FD_CTX.getValue(), client1IfaceName);
         AbsoluteLocation web1Location =
-                absoluteLocation(VPP_NODE_2_IID, L2FD_CTX.getValue(), web1IfaceName);
+                DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_2_IID, DtoFactory.L2FD_CTX.getValue(), web1IfaceName);
         AbsoluteLocation web2Location =
-                absoluteLocation(VPP_NODE_2_IID, L2FD_CTX.getValue(), web2IfaceName);
-        configuration = createConfiguration(
-                Arrays.asList(
-                        new AddressEndpointWithLocationBuilder(client1Ep).setAbsoluteLocation(client1Location).build(),
+                DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_2_IID, DtoFactory.L2FD_CTX.getValue(), web2IfaceName);
+        configuration = DtoFactory.createConfiguration(
+                Arrays.asList(new AddressEndpointWithLocationBuilder(client1Ep).setAbsoluteLocation(client1Location)
+                    .build(),
                         new AddressEndpointWithLocationBuilder(client2Ep).setAbsoluteLocation(client2LocationNodeNull)
                             .build()),
                 Arrays.asList(new AddressEndpointWithLocationBuilder(web1Ep).setAbsoluteLocation(web1Location).build(),
@@ -292,13 +240,13 @@ public class VppRendererPolicyManagerTest extends CustomDataBrokerTest {
 
         // assert state on data store behind mount point ######################################
         client1Iface = readAndAssertInterface(client1IfaceName);
-        assertBridgeDomainOnInterface(L2FD_CTX.getValue(), client1Iface);
+        assertBridgeDomainOnInterface(DtoFactory.L2FD_CTX.getValue(), client1Iface);
         web1Iface = readAndAssertInterface(web1IfaceName);
-        assertBridgeDomainOnInterface(L2FD_CTX.getValue(), web1Iface);
+        assertBridgeDomainOnInterface(DtoFactory.L2FD_CTX.getValue(), web1Iface);
         client2Iface = readAndAssertInterface(client2IfaceName);
-        assertBridgeDomainOnInterface(L2FD_CTX.getValue(), client2Iface);
+        assertBridgeDomainOnInterface(DtoFactory.L2FD_CTX.getValue(), client2Iface);
         web2Iface = readAndAssertInterface(web2IfaceName);
-        assertBridgeDomainOnInterface(L2FD_CTX.getValue(), web2Iface);
+        assertBridgeDomainOnInterface(DtoFactory.L2FD_CTX.getValue(), web2Iface);
         // assert state on ODL data store
         rTx = dataBroker.newReadOnlyTransaction();
         optLocationProvider = rTx.read(LogicalDatastoreType.CONFIGURATION,
@@ -308,19 +256,21 @@ public class VppRendererPolicyManagerTest extends CustomDataBrokerTest {
         epLocs = optLocationProvider.get().getProviderAddressEndpointLocation();
         Assert.assertNotNull(epLocs);
         Assert.assertEquals(4, epLocs.size());
-        assertProviderAddressEndpointLocation(client1Ep.getKey(),
-                absoluteLocation(VPP_NODE_1_IID, L2FD_CTX.getValue(), client1IfaceName), epLocs);
+        assertProviderAddressEndpointLocation(client1Ep.getKey(), DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_1_IID,
+                DtoFactory.L2FD_CTX.getValue(), client1IfaceName), epLocs);
         assertProviderAddressEndpointLocation(web1Ep.getKey(),
-                absoluteLocation(VPP_NODE_2_IID, L2FD_CTX.getValue(), web1IfaceName), epLocs);
-        assertProviderAddressEndpointLocation(client2Ep.getKey(),
-                absoluteLocation(VPP_NODE_1_IID, L2FD_CTX.getValue(), client2IfaceName), epLocs);
+                DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_2_IID, DtoFactory.L2FD_CTX.getValue(), web1IfaceName),
+                epLocs);
+        assertProviderAddressEndpointLocation(client2Ep.getKey(), DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_1_IID,
+                DtoFactory.L2FD_CTX.getValue(), client2IfaceName), epLocs);
         assertProviderAddressEndpointLocation(web2Ep.getKey(),
-                absoluteLocation(VPP_NODE_2_IID, L2FD_CTX.getValue(), web2IfaceName), epLocs);
+                DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_2_IID, DtoFactory.L2FD_CTX.getValue(), web2IfaceName),
+                epLocs);
         // #####################################################################################
 
-        AbsoluteLocation client2Location =
-                absoluteLocation(VPP_NODE_1_IID, L2FD_CTX.getValue(), client2IfaceName);
-        configuration = createConfiguration(
+        AbsoluteLocation client2Location = DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_1_IID,
+                DtoFactory.L2FD_CTX.getValue(), client2IfaceName);
+        configuration = DtoFactory.createConfiguration(
                 Arrays.asList(new AddressEndpointWithLocationBuilder(client1Ep).setAbsoluteLocation(client1Location)
                     .build(),
                         new AddressEndpointWithLocationBuilder(client2Ep).setAbsoluteLocation(client2Location).build()),
@@ -335,13 +285,13 @@ public class VppRendererPolicyManagerTest extends CustomDataBrokerTest {
 
         // assert state on data store behind mount point ######################################
         client1Iface = readAndAssertInterface(client1IfaceName);
-        assertBridgeDomainOnInterface(L2FD_CTX.getValue(), client1Iface);
+        assertBridgeDomainOnInterface(DtoFactory.L2FD_CTX.getValue(), client1Iface);
         web1Iface = readAndAssertInterface(web1IfaceName);
-        assertBridgeDomainOnInterface(L2FD_CTX.getValue(), web1Iface);
+        assertBridgeDomainOnInterface(DtoFactory.L2FD_CTX.getValue(), web1Iface);
         client2Iface = readAndAssertInterface(client2IfaceName);
-        assertBridgeDomainOnInterface(L2FD_CTX.getValue(), client2Iface);
+        assertBridgeDomainOnInterface(DtoFactory.L2FD_CTX.getValue(), client2Iface);
         web2Iface = readAndAssertInterface(web2IfaceName);
-        assertBridgeDomainOnInterface(L2FD_CTX.getValue(), web2Iface);
+        assertBridgeDomainOnInterface(DtoFactory.L2FD_CTX.getValue(), web2Iface);
         // assert state on ODL data store
         rTx = dataBroker.newReadOnlyTransaction();
         optLocationProvider = rTx.read(LogicalDatastoreType.CONFIGURATION,
@@ -351,43 +301,19 @@ public class VppRendererPolicyManagerTest extends CustomDataBrokerTest {
         epLocs = optLocationProvider.get().getProviderAddressEndpointLocation();
         Assert.assertNotNull(epLocs);
         Assert.assertEquals(4, epLocs.size());
-        assertProviderAddressEndpointLocation(client1Ep.getKey(),
-                absoluteLocation(VPP_NODE_1_IID, L2FD_CTX.getValue(), client1IfaceName), epLocs);
+        assertProviderAddressEndpointLocation(client1Ep.getKey(), DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_1_IID,
+                DtoFactory.L2FD_CTX.getValue(), client1IfaceName), epLocs);
         assertProviderAddressEndpointLocation(web1Ep.getKey(),
-                absoluteLocation(VPP_NODE_2_IID, L2FD_CTX.getValue(), web1IfaceName), epLocs);
-        assertProviderAddressEndpointLocation(client2Ep.getKey(),
-                absoluteLocation(VPP_NODE_1_IID, L2FD_CTX.getValue(), client2IfaceName), epLocs);
+                DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_2_IID, DtoFactory.L2FD_CTX.getValue(), web1IfaceName),
+                epLocs);
+        assertProviderAddressEndpointLocation(client2Ep.getKey(), DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_1_IID,
+                DtoFactory.L2FD_CTX.getValue(), client2IfaceName), epLocs);
         assertProviderAddressEndpointLocation(web2Ep.getKey(),
-                absoluteLocation(VPP_NODE_2_IID, L2FD_CTX.getValue(), web2IfaceName), epLocs);
+                DtoFactory.absoluteLocation(DtoFactory.VPP_NODE_2_IID, DtoFactory.L2FD_CTX.getValue(), web2IfaceName),
+                epLocs);
         // #####################################################################################
     }
 
-    private static AbsoluteLocation absoluteLocation(InstanceIdentifier<?> mountPoint, String nodeName,
-            String nodeConnectorName) {
-        ExternalLocationCaseBuilder extLocBuilder =
-                new ExternalLocationCaseBuilder().setExternalNodeMountPoint(mountPoint);
-        if (!Strings.isNullOrEmpty(nodeName)) {
-            extLocBuilder.setExternalNode(VppPathMapper.bridgeDomainToRestPath(nodeName));
-        }
-        if (!Strings.isNullOrEmpty(nodeConnectorName)) {
-            extLocBuilder.setExternalNodeConnector(VppPathMapper.interfaceToRestPath(nodeConnectorName));
-        }
-        return new AbsoluteLocationBuilder().setLocationType(extLocBuilder.build()).build();
-    }
-
-    private AddressEndpointWithLocation createEndpoint(String ip, String l2FdIdAsNetCont,
-            AbsoluteLocation absoluteLocation) {
-        AddressEndpointWithLocationKey key =
-                new AddressEndpointWithLocationKey(ip, AddressType.class, CTX_ID, ContextType.class);
-        NetworkContainment networkContainment =
-                new NetworkContainmentBuilder().setContainment(new ForwardingContextContainmentBuilder()
-                    .setContextType(L2FloodDomain.class).setContextId(new ContextId(l2FdIdAsNetCont)).build()).build();
-        return new AddressEndpointWithLocationBuilder().setKey(key)
-            .setNetworkContainment(networkContainment)
-            .setAbsoluteLocation(absoluteLocation)
-            .build();
-    }
-
     private InstanceIdentifier<VppEndpoint> createVppEndpointIid(AddressEndpointWithLocationKey key) {
         return InstanceIdentifier.builder(Config.class)
             .child(VppEndpoint.class, new VppEndpointKey(key.getAddress(), key.getAddressType(), key.getContextId(),
@@ -395,41 +321,6 @@ public class VppRendererPolicyManagerTest extends CustomDataBrokerTest {
             .build();
     }
 
-    private Configuration createConfiguration(List<AddressEndpointWithLocation> consumers,
-            List<AddressEndpointWithLocation> providers) {
-        List<AddressEndpointWithLocation> eps =
-                Stream.concat(consumers.stream(), providers.stream()).collect(Collectors.toList());
-        Endpoints endpoints = new EndpointsBuilder().setAddressEndpointWithLocation(eps).build();
-        List<RendererEndpoint> consumersAsRendererEps = consumers.stream().map(cons -> {
-            List<PeerEndpoint> peers = providers.stream()
-                .map(web -> new PeerEndpointBuilder()
-                    .setKey(KeyFactory.peerEndpointKey(web.getKey()))
-                    .setRuleGroupWithRendererEndpointParticipation(Arrays.asList(RULE_GROUP_WITH_CONSUMER))
-                    .build())
-                .collect(Collectors.toList());
-            return new RendererEndpointBuilder().setKey(KeyFactory.rendererEndpointKey(cons.getKey()))
-                .setPeerEndpoint(peers)
-                .build();
-        }).collect(Collectors.toList());
-        List<RendererEndpoint> providersAsRendererEps = providers.stream().map(prov -> {
-            List<PeerEndpoint> peers = consumers.stream()
-                .map(client -> new PeerEndpointBuilder()
-                    .setKey(KeyFactory.peerEndpointKey(client.getKey()))
-                    .setRuleGroupWithRendererEndpointParticipation(Arrays.asList(RULE_GROUP_WITH_PROVIDER))
-                    .build())
-                .collect(Collectors.toList());
-            return new RendererEndpointBuilder().setKey(KeyFactory.rendererEndpointKey(prov.getKey()))
-                .setPeerEndpoint(peers)
-                .build();
-        }).collect(Collectors.toList());
-        List<RendererEndpoint> rendererEps = Stream
-            .concat(consumersAsRendererEps.stream(), providersAsRendererEps.stream()).collect(Collectors.toList());
-        return new ConfigurationBuilder().setEndpoints(endpoints)
-            .setRendererEndpoints(new RendererEndpointsBuilder().setRendererEndpoint(rendererEps).build())
-            .setRuleGroups(new RuleGroupsBuilder().setRuleGroup(Arrays.asList(RULE_GROUP)).build())
-            .build();
-    }
-
     private void assertProviderAddressEndpointLocation(AddressEndpointWithLocationKey expectedEpKey,
             AbsoluteLocation expectedEpLoc, List<ProviderAddressEndpointLocation> providerEpLocs) {
         List<ProviderAddressEndpointLocation> expectedProvEpLoc =
@@ -475,7 +366,7 @@ public class VppRendererPolicyManagerTest extends CustomDataBrokerTest {
             .setContextId(epKey.getContextId())
             .setContextType(epKey.getContextType())
             .setVppInterfaceName(ifaceName)
-            .setVppNodePath(VPP_NODE_1_IID)
+            .setVppNodePath(DtoFactory.VPP_NODE_1_IID)
             .setInterfaceTypeChoice(new VhostUserCaseBuilder().setSocket(SOCKET).build())
             .build();
         VppEndpointConfEvent vppEpEvent = new VppEndpointConfEvent(vppEpIid, null, vhostEp);