2 * Copyright (c) 2017 Cisco Systems. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.groupbasedpolicy.renderer.vpp.commands;
11 import org.junit.Assert;
12 import org.junit.Before;
13 import org.junit.Test;
14 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
15 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
16 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
17 import org.opendaylight.groupbasedpolicy.renderer.vpp.VppRendererDataBrokerTest;
18 import org.opendaylight.groupbasedpolicy.renderer.vpp.util.General;
19 import org.opendaylight.groupbasedpolicy.renderer.vpp.util.VppIidFactory;
20 import org.opendaylight.groupbasedpolicy.util.DataStoreHelper;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceBuilder;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unnumbered.interfaces.rev170510.InterfaceUnnumberedAugmentation;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unnumbered.interfaces.rev170510.InterfaceUnnumberedAugmentationBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.unnumbered.interfaces.rev170510.unnumbered.config.attributes.UnnumberedBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.VhostUserRole;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.VppInterfaceAugmentation;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.VppInterfaceAugmentationBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.interfaces._interface.L2Builder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.interfaces._interface.VhostUser;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.interfaces._interface.VhostUserBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.l2.config.attributes.interconnection.BridgeBasedBuilder;
35 import com.google.common.base.Optional;
37 public class UnnumberedInterfaceCommandTest extends VppRendererDataBrokerTest {
39 private final static String BRIDGE_DOMAIN = "testBD";
40 private final static String DESCRIPTION = "used for testing";
41 private final static String INTERFACE_NAME = "testInterface";
42 private final static String USE_INTERFACE_NAME = "masterInterface";
43 private final static String USE_INTERFACE_NAME_2 = "masterInterface2";
44 private final static String SOCKET_NAME = "soc1";
45 private final static boolean IS_BRIDGED_DEFAULT = false;
47 private static Interface BASIC_INTERFACE;
48 private static Interface BASIC_INTERFACE_UNNUMBERED;
50 private DataBroker dataBroker;
52 @Before public void init() {
53 dataBroker = getDataBroker();
55 VhostUser vhostUser = new VhostUserBuilder().setRole(VhostUserRole.Server).setSocket(SOCKET_NAME).build();
57 VppInterfaceAugmentation vppAugmentation =
58 new VppInterfaceAugmentationBuilder().setVhostUser(vhostUser)
59 .setL2(new L2Builder().setInterconnection(new BridgeBasedBuilder().setBridgeDomain(BRIDGE_DOMAIN)
60 .setBridgedVirtualInterface(IS_BRIDGED_DEFAULT)
61 .setSplitHorizonGroup((short) 0)
65 BASIC_INTERFACE = new InterfaceBuilder().setDescription(DESCRIPTION)
67 .setKey(new InterfaceKey(INTERFACE_NAME))
68 .setName(INTERFACE_NAME)
69 .setType(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.VhostUser.class)
70 .setLinkUpDownTrapEnable(Interface.LinkUpDownTrapEnable.Enabled)
71 .addAugmentation(VppInterfaceAugmentation.class, vppAugmentation)
74 BASIC_INTERFACE_UNNUMBERED =
75 new InterfaceBuilder(BASIC_INTERFACE).addAugmentation(InterfaceUnnumberedAugmentation.class,
76 new InterfaceUnnumberedAugmentationBuilder().setUnnumbered(
77 new UnnumberedBuilder().setUse(USE_INTERFACE_NAME).build()).build()).build();
80 @Test public void AddUnnumberedInterfaceTest() {
81 ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
83 transaction.put(LogicalDatastoreType.CONFIGURATION, VppIidFactory.getInterfaceIID(BASIC_INTERFACE.getKey()),
84 BASIC_INTERFACE, true);
87 Optional<Interface> optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
88 VppIidFactory.getInterfaceIID(BASIC_INTERFACE.getKey()), dataBroker.newReadOnlyTransaction());
90 Assert.assertTrue(optional.isPresent());
92 UnnumberedInterfaceCommand unnumberedCommand = getUnnumberedInterfaceCommand(General.Operations.PUT).build();
94 ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
95 unnumberedCommand.execute(rwTx);
98 optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
99 VppIidFactory.getInterfaceIID(BASIC_INTERFACE.getKey()), dataBroker.newReadOnlyTransaction());
101 Assert.assertTrue(optional.isPresent());
102 InterfaceUnnumberedAugmentation unnumberedAugmentation =
103 optional.get().getAugmentation(InterfaceUnnumberedAugmentation.class);
104 Assert.assertNotNull(unnumberedAugmentation);
105 Assert.assertEquals(BASIC_INTERFACE_UNNUMBERED, optional.get());
108 @Test public void DeleteUnnumberedInterfaceTest() {
109 ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
111 rwTx.put(LogicalDatastoreType.CONFIGURATION, VppIidFactory.getInterfaceIID(BASIC_INTERFACE_UNNUMBERED.getKey()),
112 BASIC_INTERFACE_UNNUMBERED, true);
115 Optional<Interface> optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
116 VppIidFactory.getInterfaceIID(BASIC_INTERFACE_UNNUMBERED.getKey()), dataBroker.newReadOnlyTransaction());
118 Assert.assertTrue(optional.isPresent());
119 Assert.assertEquals(BASIC_INTERFACE_UNNUMBERED, optional.get());
121 UnnumberedInterfaceCommand unnumberedCommand = getUnnumberedInterfaceCommand(General.Operations.DELETE).build();
123 rwTx = dataBroker.newReadWriteTransaction();
124 unnumberedCommand.execute(rwTx);
127 optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
128 VppIidFactory.getInterfaceIID(BASIC_INTERFACE_UNNUMBERED.getKey()), dataBroker.newReadOnlyTransaction());
130 Assert.assertTrue(optional.isPresent());
131 InterfaceUnnumberedAugmentation unnumberedAugmentation =
132 optional.get().getAugmentation(InterfaceUnnumberedAugmentation.class);
133 Assert.assertNull(unnumberedAugmentation.getUnnumbered());
136 @Test public void UpdateUnnumberedInterfaceTest() {
137 ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
139 rwTx.put(LogicalDatastoreType.CONFIGURATION, VppIidFactory.getInterfaceIID(BASIC_INTERFACE_UNNUMBERED.getKey()),
140 BASIC_INTERFACE_UNNUMBERED, true);
143 Optional<Interface> optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
144 VppIidFactory.getInterfaceIID(BASIC_INTERFACE_UNNUMBERED.getKey()), dataBroker.newReadOnlyTransaction());
146 Assert.assertTrue(optional.isPresent());
147 Assert.assertEquals(BASIC_INTERFACE_UNNUMBERED, optional.get());
149 UnnumberedInterfaceCommand unnumberedCommand =
150 getUnnumberedInterfaceCommand(General.Operations.MERGE).setUseInterface(USE_INTERFACE_NAME_2).build();
152 rwTx = dataBroker.newReadWriteTransaction();
153 unnumberedCommand.execute(rwTx);
156 optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
157 VppIidFactory.getInterfaceIID(BASIC_INTERFACE_UNNUMBERED.getKey()), dataBroker.newReadOnlyTransaction());
159 Assert.assertTrue(optional.isPresent());
160 InterfaceUnnumberedAugmentation unnumberedAugmentation =
161 optional.get().getAugmentation(InterfaceUnnumberedAugmentation.class);
162 Assert.assertNotNull(unnumberedAugmentation.getUnnumbered());
163 Assert.assertEquals(USE_INTERFACE_NAME_2, unnumberedAugmentation.getUnnumbered().getUse());
166 private UnnumberedInterfaceCommand.UnnumberedInterfaceCommandBuilder getUnnumberedInterfaceCommand(
167 General.Operations operation) {
168 return UnnumberedInterfaceCommand.builder()
169 .setOperation(operation)
170 .setUseInterface(USE_INTERFACE_NAME)
171 .setInterfaceName(INTERFACE_NAME);