Add INFO.yaml for GBP
[groupbasedpolicy.git] / renderers / vpp / src / test / java / org / opendaylight / groupbasedpolicy / renderer / vpp / commands / UnnumberedInterfaceCommandTest.java
1 /*
2  * Copyright (c) 2017 Cisco Systems. All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.groupbasedpolicy.renderer.vpp.commands;
10
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;
34
35 import com.google.common.base.Optional;
36
37 public class UnnumberedInterfaceCommandTest extends VppRendererDataBrokerTest {
38
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;
46
47     private static Interface BASIC_INTERFACE;
48     private static Interface BASIC_INTERFACE_UNNUMBERED;
49
50     private DataBroker dataBroker;
51
52     @Before public void init() {
53         dataBroker = getDataBroker();
54
55         VhostUser vhostUser = new VhostUserBuilder().setRole(VhostUserRole.Server).setSocket(SOCKET_NAME).build();
56
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)
62                     .build()).build())
63                 .build();
64
65         BASIC_INTERFACE = new InterfaceBuilder().setDescription(DESCRIPTION)
66             .setEnabled(true)
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)
72             .build();
73
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();
78     }
79
80     @Test public void AddUnnumberedInterfaceTest() {
81         ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
82
83         transaction.put(LogicalDatastoreType.CONFIGURATION, VppIidFactory.getInterfaceIID(BASIC_INTERFACE.getKey()),
84             BASIC_INTERFACE, true);
85         transaction.submit();
86
87         Optional<Interface> optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
88             VppIidFactory.getInterfaceIID(BASIC_INTERFACE.getKey()), dataBroker.newReadOnlyTransaction());
89
90         Assert.assertTrue(optional.isPresent());
91
92         UnnumberedInterfaceCommand unnumberedCommand = getUnnumberedInterfaceCommand(General.Operations.PUT).build();
93
94         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
95         unnumberedCommand.execute(rwTx);
96         rwTx.submit();
97
98         optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
99             VppIidFactory.getInterfaceIID(BASIC_INTERFACE.getKey()), dataBroker.newReadOnlyTransaction());
100
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());
106     }
107
108     @Test public void DeleteUnnumberedInterfaceTest() {
109         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
110
111         rwTx.put(LogicalDatastoreType.CONFIGURATION, VppIidFactory.getInterfaceIID(BASIC_INTERFACE_UNNUMBERED.getKey()),
112             BASIC_INTERFACE_UNNUMBERED, true);
113         rwTx.submit();
114
115         Optional<Interface> optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
116             VppIidFactory.getInterfaceIID(BASIC_INTERFACE_UNNUMBERED.getKey()), dataBroker.newReadOnlyTransaction());
117
118         Assert.assertTrue(optional.isPresent());
119         Assert.assertEquals(BASIC_INTERFACE_UNNUMBERED, optional.get());
120
121         UnnumberedInterfaceCommand unnumberedCommand = getUnnumberedInterfaceCommand(General.Operations.DELETE).build();
122
123         rwTx = dataBroker.newReadWriteTransaction();
124         unnumberedCommand.execute(rwTx);
125         rwTx.submit();
126
127         optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
128             VppIidFactory.getInterfaceIID(BASIC_INTERFACE_UNNUMBERED.getKey()), dataBroker.newReadOnlyTransaction());
129
130         Assert.assertTrue(optional.isPresent());
131         InterfaceUnnumberedAugmentation unnumberedAugmentation =
132             optional.get().getAugmentation(InterfaceUnnumberedAugmentation.class);
133         Assert.assertNull(unnumberedAugmentation.getUnnumbered());
134     }
135
136     @Test public void UpdateUnnumberedInterfaceTest() {
137         ReadWriteTransaction rwTx = dataBroker.newReadWriteTransaction();
138
139         rwTx.put(LogicalDatastoreType.CONFIGURATION, VppIidFactory.getInterfaceIID(BASIC_INTERFACE_UNNUMBERED.getKey()),
140             BASIC_INTERFACE_UNNUMBERED, true);
141         rwTx.submit();
142
143         Optional<Interface> optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
144             VppIidFactory.getInterfaceIID(BASIC_INTERFACE_UNNUMBERED.getKey()), dataBroker.newReadOnlyTransaction());
145
146         Assert.assertTrue(optional.isPresent());
147         Assert.assertEquals(BASIC_INTERFACE_UNNUMBERED, optional.get());
148
149         UnnumberedInterfaceCommand unnumberedCommand =
150             getUnnumberedInterfaceCommand(General.Operations.MERGE).setUseInterface(USE_INTERFACE_NAME_2).build();
151
152         rwTx = dataBroker.newReadWriteTransaction();
153         unnumberedCommand.execute(rwTx);
154         rwTx.submit();
155
156         optional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
157             VppIidFactory.getInterfaceIID(BASIC_INTERFACE_UNNUMBERED.getKey()), dataBroker.newReadOnlyTransaction());
158
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());
164     }
165
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);
172     }
173 }