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.rev170315.VhostUserRole;
\r
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170315.VppInterfaceAugmentation;
\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170315.VppInterfaceAugmentationBuilder;
\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170315.interfaces._interface.L2Builder;
\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170315.interfaces._interface.VhostUser;
\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170315.interfaces._interface.VhostUserBuilder;
\r
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170315.l2.base.attributes.interconnection.BridgeBased;
\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170315.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 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 .setBridgedVirtualInterface(IS_BRIDGED_DEFAULT).setSplitHorizonGroup((short)0)
\r
65 new InterfaceBuilder().setDescription(DESCRIPTION)
\r
67 .setKey(new InterfaceKey(INTERFACE_NAME))
\r
68 .setName(INTERFACE_NAME)
\r
70 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170315.VhostUser.class)
\r
71 .setLinkUpDownTrapEnable(Interface.LinkUpDownTrapEnable.Enabled)
\r
72 .addAugmentation(VppInterfaceAugmentation.class, vppAugmentation)
\r
77 public void AddVhostTest() {
\r
78 ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
\r
79 VhostUserCommand addCommand = VhostUserCommand.builder()
\r
80 .setOperation(General.Operations.PUT)
\r
81 .setName(INTERFACE_NAME)
\r
82 .setDescription(DESCRIPTION)
\r
83 .setRole(VhostUserRole.Server)
\r
84 .setSocket(SOCKET_NAME)
\r
85 .setBridgeDomain(BRIDGE_DOMAIN)
\r
89 addCommand.execute(transaction);
\r
91 transaction.submit();
\r
93 ReadOnlyTransaction readOnlyTransaction = dataBroker.newReadOnlyTransaction();
\r
95 Optional<Interface> optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
\r
96 VppIidFactory.getInterfaceIID(new InterfaceKey(INTERFACE_NAME)), readOnlyTransaction);
\r
98 Assert.assertTrue("Interface was not written to DS", optional.isPresent());
\r
100 Interface anInterface = optional.get();
\r
102 Assert.assertEquals(BASIC_INTERFACE, anInterface);
\r
107 public void DeleteVhostTest() {
\r
108 ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
\r
110 transaction.put(LogicalDatastoreType.CONFIGURATION, VppIidFactory.getInterfaceIID(BASIC_INTERFACE.getKey()),
\r
111 BASIC_INTERFACE, true);
\r
112 transaction.submit();
\r
114 Optional<Interface> optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
\r
115 VppIidFactory.getInterfaceIID(BASIC_INTERFACE.getKey()), dataBroker.newReadOnlyTransaction());
\r
117 Assert.assertTrue("Interface was not written to DS", optional.isPresent());
\r
119 VhostUserCommand deleteCommand = VhostUserCommand.builder()
\r
120 .setOperation(General.Operations.DELETE)
\r
121 .setName(INTERFACE_NAME)
\r
122 .setSocket(SOCKET_NAME)
\r
125 ReadWriteTransaction deleteTransaction = dataBroker.newReadWriteTransaction();
\r
126 deleteCommand.execute(deleteTransaction);
\r
127 deleteTransaction.submit();
\r
129 Optional<Interface> optionalDeleted = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
\r
130 VppIidFactory.getInterfaceIID(new InterfaceKey(deleteCommand.getName())),
\r
131 dataBroker.newReadOnlyTransaction());
\r
133 Assert.assertFalse("Interface was not deleted from DS", optionalDeleted.isPresent());
\r
137 public void UpdateVhostTest() {
\r
138 ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
\r
140 transaction.put(LogicalDatastoreType.CONFIGURATION, VppIidFactory.getInterfaceIID(BASIC_INTERFACE.getKey()),
\r
141 BASIC_INTERFACE, true);
\r
142 transaction.submit();
\r
144 Optional<Interface> optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
\r
145 VppIidFactory.getInterfaceIID(BASIC_INTERFACE.getKey()), dataBroker.newReadOnlyTransaction());
\r
147 Assert.assertTrue("Interface was not written to DS", optional.isPresent());
\r
149 VhostUserCommand updateCommand = VhostUserCommand.builder()
\r
150 .setOperation(General.Operations.MERGE)
\r
151 .setName(INTERFACE_NAME)
\r
152 .setDescription(UPD_DESCRIPTION)
\r
154 .setRole(VhostUserRole.Client)
\r
155 .setSocket(UPD_SOCKET_NAME)
\r
156 .setBridgeDomain(UPD_BRIDGE_DOMAIN)
\r
159 ReadWriteTransaction deleteTransaction = dataBroker.newReadWriteTransaction();
\r
160 updateCommand.execute(deleteTransaction);
\r
161 deleteTransaction.submit();
\r
163 Optional<Interface> optionalUpdated = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
\r
164 VppIidFactory.getInterfaceIID(new InterfaceKey(updateCommand.getName())),
\r
165 dataBroker.newReadOnlyTransaction());
\r
167 Assert.assertTrue("Interface was not found in DS", optionalUpdated.isPresent());
\r
168 Interface updatedInterface = optionalUpdated.get();
\r
170 Assert.assertEquals(UPD_DESCRIPTION, updatedInterface.getDescription());
\r
171 Assert.assertFalse(updatedInterface.isEnabled());
\r
172 VppInterfaceAugmentation vppInterfaceAugmentation =
\r
173 updatedInterface.getAugmentation(VppInterfaceAugmentation.class);
\r
174 Assert.assertEquals(VhostUserRole.Client, vppInterfaceAugmentation.getVhostUser().getRole());
\r
175 Assert.assertEquals(UPD_SOCKET_NAME, vppInterfaceAugmentation.getVhostUser().getSocket());
\r
177 Assert.assertTrue(vppInterfaceAugmentation.getL2().getInterconnection() instanceof BridgeBased);
\r
179 Assert.assertEquals(UPD_BRIDGE_DOMAIN,
\r
180 ((BridgeBased) vppInterfaceAugmentation.getL2().getInterconnection()).getBridgeDomain());
\r