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 com.google.common.base.Optional;
\r
12 import org.junit.Assert;
\r
13 import org.junit.Before;
\r
14 import org.junit.Test;
\r
15 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
\r
16 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
\r
17 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
\r
18 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
\r
19 import org.opendaylight.groupbasedpolicy.renderer.vpp.VppRendererDataBrokerTest;
\r
20 import org.opendaylight.groupbasedpolicy.renderer.vpp.util.General;
\r
21 import org.opendaylight.groupbasedpolicy.renderer.vpp.util.VppIidFactory;
\r
22 import org.opendaylight.groupbasedpolicy.util.DataStoreHelper;
\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.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VppInterfaceAugmentation;
\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VppInterfaceAugmentationBuilder;
\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.L2Builder;
\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VhostUser;
\r
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.VhostUserBuilder;
\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.l2.interconnection.BridgeBased;
\r
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.interfaces._interface.l2.interconnection.BridgeBasedBuilder;
\r
35 public class VhostUserCommandTest extends VppRendererDataBrokerTest {
\r
37 private final static String BRIDGE_DOMAIN = "testBD";
\r
38 private final static String DESCRIPTION = "used for testing";
\r
39 private final static String INTERFACE_NAME = "testInterface";
\r
40 private final static String SOCKET_NAME = "soc1";
\r
42 private final static String UPD_BRIDGE_DOMAIN = "testBD2";
\r
43 private final static String UPD_DESCRIPTION = "updated description";
\r
44 private final static String UPD_SOCKET_NAME = "soc2";
\r
45 private final static short SPLIT_HORIZON_GROUP_DEFAULT = 0;
\r
46 private final static boolean IS_BRIDGED_DEFAULT = false;
\r
48 private static Interface BASIC_INTERFACE;
\r
50 private DataBroker dataBroker;
\r
53 public void init() {
\r
54 dataBroker = getDataBroker();
\r
56 VhostUser vhostUser = new VhostUserBuilder().setRole(VhostUserRole.Server).setSocket(SOCKET_NAME).build();
\r
58 VppInterfaceAugmentation vppAugmentation = new VppInterfaceAugmentationBuilder().setVhostUser(vhostUser)
\r
59 .setL2(new L2Builder().setInterconnection(new BridgeBasedBuilder().setBridgeDomain(BRIDGE_DOMAIN)
\r
60 .setSplitHorizonGroup(SPLIT_HORIZON_GROUP_DEFAULT)
\r
61 .setBridgedVirtualInterface(IS_BRIDGED_DEFAULT)
\r
66 new InterfaceBuilder().setDescription(DESCRIPTION)
\r
68 .setKey(new InterfaceKey(INTERFACE_NAME))
\r
69 .setName(INTERFACE_NAME)
\r
71 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VhostUser.class)
\r
72 .setLinkUpDownTrapEnable(Interface.LinkUpDownTrapEnable.Enabled)
\r
73 .addAugmentation(VppInterfaceAugmentation.class, vppAugmentation)
\r
78 public void AddVhostTest() {
\r
79 ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
\r
80 VhostUserCommand addCommand = VhostUserCommand.builder()
\r
81 .setOperation(General.Operations.PUT)
\r
82 .setName(INTERFACE_NAME)
\r
83 .setDescription(DESCRIPTION)
\r
84 .setRole(VhostUserRole.Server)
\r
85 .setSocket(SOCKET_NAME)
\r
86 .setBridgeDomain(BRIDGE_DOMAIN)
\r
90 addCommand.execute(transaction);
\r
92 transaction.submit();
\r
94 ReadOnlyTransaction readOnlyTransaction = dataBroker.newReadOnlyTransaction();
\r
96 Optional<Interface> optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
\r
97 VppIidFactory.getInterfaceIID(new InterfaceKey(INTERFACE_NAME)), readOnlyTransaction);
\r
99 Assert.assertTrue("Interface was not written to DS", optional.isPresent());
\r
101 Interface anInterface = optional.get();
\r
103 Assert.assertEquals(BASIC_INTERFACE, anInterface);
\r
108 public void DeleteVhostTest() {
\r
109 ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
\r
111 transaction.put(LogicalDatastoreType.CONFIGURATION, VppIidFactory.getInterfaceIID(BASIC_INTERFACE.getKey()),
\r
112 BASIC_INTERFACE, true);
\r
113 transaction.submit();
\r
115 Optional<Interface> optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
\r
116 VppIidFactory.getInterfaceIID(BASIC_INTERFACE.getKey()), dataBroker.newReadOnlyTransaction());
\r
118 Assert.assertTrue("Interface was not written to DS", optional.isPresent());
\r
120 VhostUserCommand deleteCommand = VhostUserCommand.builder()
\r
121 .setOperation(General.Operations.DELETE)
\r
122 .setName(INTERFACE_NAME)
\r
123 .setSocket(SOCKET_NAME)
\r
126 ReadWriteTransaction deleteTransaction = dataBroker.newReadWriteTransaction();
\r
127 deleteCommand.execute(deleteTransaction);
\r
128 deleteTransaction.submit();
\r
130 Optional<Interface> optionalDeleted = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
\r
131 VppIidFactory.getInterfaceIID(new InterfaceKey(deleteCommand.getName())),
\r
132 dataBroker.newReadOnlyTransaction());
\r
134 Assert.assertFalse("Interface was not deleted from DS", optionalDeleted.isPresent());
\r
138 public void UpdateVhostTest() {
\r
139 ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
\r
141 transaction.put(LogicalDatastoreType.CONFIGURATION, VppIidFactory.getInterfaceIID(BASIC_INTERFACE.getKey()),
\r
142 BASIC_INTERFACE, true);
\r
143 transaction.submit();
\r
145 Optional<Interface> optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
\r
146 VppIidFactory.getInterfaceIID(BASIC_INTERFACE.getKey()), dataBroker.newReadOnlyTransaction());
\r
148 Assert.assertTrue("Interface was not written to DS", optional.isPresent());
\r
150 VhostUserCommand updateCommand = VhostUserCommand.builder()
\r
151 .setOperation(General.Operations.MERGE)
\r
152 .setName(INTERFACE_NAME)
\r
153 .setDescription(UPD_DESCRIPTION)
\r
155 .setRole(VhostUserRole.Client)
\r
156 .setSocket(UPD_SOCKET_NAME)
\r
157 .setBridgeDomain(UPD_BRIDGE_DOMAIN)
\r
160 ReadWriteTransaction deleteTransaction = dataBroker.newReadWriteTransaction();
\r
161 updateCommand.execute(deleteTransaction);
\r
162 deleteTransaction.submit();
\r
164 Optional<Interface> optionalUpdated = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
\r
165 VppIidFactory.getInterfaceIID(new InterfaceKey(updateCommand.getName())),
\r
166 dataBroker.newReadOnlyTransaction());
\r
168 Assert.assertTrue("Interface was not found in DS", optionalUpdated.isPresent());
\r
169 Interface updatedInterface = optionalUpdated.get();
\r
171 Assert.assertEquals(UPD_DESCRIPTION, updatedInterface.getDescription());
\r
172 Assert.assertFalse(updatedInterface.isEnabled());
\r
173 VppInterfaceAugmentation vppInterfaceAugmentation =
\r
174 updatedInterface.getAugmentation(VppInterfaceAugmentation.class);
\r
175 Assert.assertEquals(VhostUserRole.Client, vppInterfaceAugmentation.getVhostUser().getRole());
\r
176 Assert.assertEquals(UPD_SOCKET_NAME, vppInterfaceAugmentation.getVhostUser().getSocket());
\r
178 Assert.assertTrue(vppInterfaceAugmentation.getL2().getInterconnection() instanceof BridgeBased);
\r
180 Assert.assertEquals(UPD_BRIDGE_DOMAIN,
\r
181 ((BridgeBased) vppInterfaceAugmentation.getL2().getInterconnection()).getBridgeDomain());
\r