2 * Copyright (c) 2016 Cisco Systems. All rights reserved.
\r
4 * This program and the accompanying materials are made available under the
\r
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
9 package org.opendaylight.groupbasedpolicy.renderer.vpp.commands;
\r
11 import org.junit.Assert;
\r
12 import org.junit.Before;
\r
13 import org.junit.Test;
\r
14 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
\r
15 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
\r
16 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
\r
17 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
\r
18 import org.opendaylight.groupbasedpolicy.renderer.vpp.VppRendererDataBrokerTest;
\r
19 import org.opendaylight.groupbasedpolicy.renderer.vpp.util.General;
\r
20 import org.opendaylight.groupbasedpolicy.renderer.vpp.util.VppIidFactory;
\r
21 import org.opendaylight.groupbasedpolicy.util.DataStoreHelper;
\r
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
\r
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceBuilder;
\r
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
\r
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VhostUserRole;
\r
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VppInterfaceAugmentation;
\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VppInterfaceAugmentationBuilder;
\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.L2Builder;
\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VhostUser;
\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VhostUserBuilder;
\r
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.l2.base.attributes.interconnection.BridgeBased;
\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.l2.base.attributes.interconnection.BridgeBasedBuilder;
\r
34 import com.google.common.base.Optional;
\r
36 public class VhostUserCommandTest extends VppRendererDataBrokerTest {
\r
38 private final static String BRIDGE_DOMAIN = "testBD";
\r
39 private final static String DESCRIPTION = "used for testing";
\r
40 private final static String INTERFACE_NAME = "testInterface";
\r
41 private final static String SOCKET_NAME = "soc1";
\r
43 private final static String UPD_BRIDGE_DOMAIN = "testBD2";
\r
44 private final static String UPD_DESCRIPTION = "updated description";
\r
45 private final static String UPD_SOCKET_NAME = "soc2";
\r
46 private final static short SPLIT_HORIZON_GROUP_DEFAULT = 0;
\r
47 private final static boolean IS_BRIDGED_DEFAULT = false;
\r
49 private static Interface BASIC_INTERFACE;
\r
51 private DataBroker dataBroker;
\r
54 public void init() {
\r
55 dataBroker = getDataBroker();
\r
57 VhostUser vhostUser = new VhostUserBuilder().setRole(VhostUserRole.Server).setSocket(SOCKET_NAME).build();
\r
59 VppInterfaceAugmentation vppAugmentation = new VppInterfaceAugmentationBuilder().setVhostUser(vhostUser)
\r
60 .setL2(new L2Builder().setInterconnection(new BridgeBasedBuilder().setBridgeDomain(BRIDGE_DOMAIN)
\r
61 .setSplitHorizonGroup(SPLIT_HORIZON_GROUP_DEFAULT)
\r
62 .setBridgedVirtualInterface(IS_BRIDGED_DEFAULT)
\r
67 new InterfaceBuilder().setDescription(DESCRIPTION)
\r
69 .setKey(new InterfaceKey(INTERFACE_NAME))
\r
70 .setName(INTERFACE_NAME)
\r
72 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VhostUser.class)
\r
73 .setLinkUpDownTrapEnable(Interface.LinkUpDownTrapEnable.Enabled)
\r
74 .addAugmentation(VppInterfaceAugmentation.class, vppAugmentation)
\r
79 public void AddVhostTest() {
\r
80 ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
\r
81 VhostUserCommand addCommand = VhostUserCommand.builder()
\r
82 .setOperation(General.Operations.PUT)
\r
83 .setName(INTERFACE_NAME)
\r
84 .setDescription(DESCRIPTION)
\r
85 .setRole(VhostUserRole.Server)
\r
86 .setSocket(SOCKET_NAME)
\r
87 .setBridgeDomain(BRIDGE_DOMAIN)
\r
91 addCommand.execute(transaction);
\r
93 transaction.submit();
\r
95 ReadOnlyTransaction readOnlyTransaction = dataBroker.newReadOnlyTransaction();
\r
97 Optional<Interface> optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
\r
98 VppIidFactory.getInterfaceIID(new InterfaceKey(INTERFACE_NAME)), readOnlyTransaction);
\r
100 Assert.assertTrue("Interface was not written to DS", optional.isPresent());
\r
102 Interface anInterface = optional.get();
\r
104 Assert.assertEquals(BASIC_INTERFACE, anInterface);
\r
109 public void DeleteVhostTest() {
\r
110 ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
\r
112 transaction.put(LogicalDatastoreType.CONFIGURATION, VppIidFactory.getInterfaceIID(BASIC_INTERFACE.getKey()),
\r
113 BASIC_INTERFACE, true);
\r
114 transaction.submit();
\r
116 Optional<Interface> optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
\r
117 VppIidFactory.getInterfaceIID(BASIC_INTERFACE.getKey()), dataBroker.newReadOnlyTransaction());
\r
119 Assert.assertTrue("Interface was not written to DS", optional.isPresent());
\r
121 VhostUserCommand deleteCommand = VhostUserCommand.builder()
\r
122 .setOperation(General.Operations.DELETE)
\r
123 .setName(INTERFACE_NAME)
\r
124 .setSocket(SOCKET_NAME)
\r
127 ReadWriteTransaction deleteTransaction = dataBroker.newReadWriteTransaction();
\r
128 deleteCommand.execute(deleteTransaction);
\r
129 deleteTransaction.submit();
\r
131 Optional<Interface> optionalDeleted = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
\r
132 VppIidFactory.getInterfaceIID(new InterfaceKey(deleteCommand.getName())),
\r
133 dataBroker.newReadOnlyTransaction());
\r
135 Assert.assertFalse("Interface was not deleted from DS", optionalDeleted.isPresent());
\r
139 public void UpdateVhostTest() {
\r
140 ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
\r
142 transaction.put(LogicalDatastoreType.CONFIGURATION, VppIidFactory.getInterfaceIID(BASIC_INTERFACE.getKey()),
\r
143 BASIC_INTERFACE, true);
\r
144 transaction.submit();
\r
146 Optional<Interface> optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
\r
147 VppIidFactory.getInterfaceIID(BASIC_INTERFACE.getKey()), dataBroker.newReadOnlyTransaction());
\r
149 Assert.assertTrue("Interface was not written to DS", optional.isPresent());
\r
151 VhostUserCommand updateCommand = VhostUserCommand.builder()
\r
152 .setOperation(General.Operations.MERGE)
\r
153 .setName(INTERFACE_NAME)
\r
154 .setDescription(UPD_DESCRIPTION)
\r
156 .setRole(VhostUserRole.Client)
\r
157 .setSocket(UPD_SOCKET_NAME)
\r
158 .setBridgeDomain(UPD_BRIDGE_DOMAIN)
\r
161 ReadWriteTransaction deleteTransaction = dataBroker.newReadWriteTransaction();
\r
162 updateCommand.execute(deleteTransaction);
\r
163 deleteTransaction.submit();
\r
165 Optional<Interface> optionalUpdated = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
\r
166 VppIidFactory.getInterfaceIID(new InterfaceKey(updateCommand.getName())),
\r
167 dataBroker.newReadOnlyTransaction());
\r
169 Assert.assertTrue("Interface was not found in DS", optionalUpdated.isPresent());
\r
170 Interface updatedInterface = optionalUpdated.get();
\r
172 Assert.assertEquals(UPD_DESCRIPTION, updatedInterface.getDescription());
\r
173 Assert.assertFalse(updatedInterface.isEnabled());
\r
174 VppInterfaceAugmentation vppInterfaceAugmentation =
\r
175 updatedInterface.getAugmentation(VppInterfaceAugmentation.class);
\r
176 Assert.assertEquals(VhostUserRole.Client, vppInterfaceAugmentation.getVhostUser().getRole());
\r
177 Assert.assertEquals(UPD_SOCKET_NAME, vppInterfaceAugmentation.getVhostUser().getSocket());
\r
179 Assert.assertTrue(vppInterfaceAugmentation.getL2().getInterconnection() instanceof BridgeBased);
\r
181 Assert.assertEquals(UPD_BRIDGE_DOMAIN,
\r
182 ((BridgeBased) vppInterfaceAugmentation.getL2().getInterconnection()).getBridgeDomain());
\r