blob: 79e34359cfa75a882a96c36aafbe57763f3df659 [file] [log] [blame]
/*
* Copyright 2017-present Open Networking Laboratory
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.drivers.microsemi.yang;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import java.io.UncheckedIOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.onlab.packet.Ip4Address;
import org.onosproject.drivers.microsemi.yang.impl.MseaUniEvcServiceManager;
import org.onosproject.drivers.microsemi.yang.utils.CeVlanMapUtils;
import org.onosproject.netconf.NetconfDeviceInfo;
import org.onosproject.netconf.NetconfException;
import org.onosproject.netconf.NetconfSession;
import org.onosproject.netconf.TargetConfig;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.types.rev20160229.mseatypes.Identifier45;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.types.rev20160229.mseatypes.ServiceListType;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.types.rev20160229.mseatypes.VlanIdType;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.MseaUniEvcService;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.MseaUniEvcServiceOpParam;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.DefaultMefServices;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.MefServices;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.evcperuniextensionattributes.EvcPerUniServiceTypeEnum;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.evcperuniextensionattributes.tagmanipulation.TagPush;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.evcperuniextensionattributes.tagmanipulation.tagpush.tagpush.PushTagTypeEnum;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.evcperuniextensionattributes.tagmanipulation.DefaultTagPush;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.Profiles;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.DefaultProfiles;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.DefaultUni;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.Uni;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.profiles.BwpGroup;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.profiles.Cos;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.profiles.DefaultBwpGroup;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.profiles.DefaultCos;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.profiles.bwpgroup.Bwp;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.profiles.bwpgroup.DefaultBwp;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.profiles.bwpgroup.bwp.ColorModeEnum;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.uni.CustomEvc;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.uni.DefaultEvc;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.uni.Evc;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.uni.UniSideInterfaceAssignmentEnum;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.uni.evc.DefaultEvcPerUni;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.uni.evc.EvcPerUni;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.uni.evc.evcperuni.CustomEvcPerUnic;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.uni.evc.evcperuni.CustomEvcPerUnin;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.uni.evc.evcperuni.DefaultEvcPerUnic;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.uni.evc.evcperuni.DefaultEvcPerUnin;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.uni.evc.evcperuni.EvcPerUnic;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc.service.rev20160317.mseaunievcservice.mefservices.uni.evc.evcperuni.EvcPerUnin;
import org.onosproject.yms.ymsm.YmsService;
public class MseaUniEvcServiceManagerTest {
MseaUniEvcServiceManager mseaUniEvcServiceSvc;
YmsService ymsService;
NetconfSession session;
@Before
public void setUp() throws Exception {
try {
mseaUniEvcServiceSvc = new MockMseaUniEvcServiceManager();
mseaUniEvcServiceSvc.activate();
} catch (UncheckedIOException e) {
fail(e.getMessage());
}
NetconfDeviceInfo deviceInfo = new NetconfDeviceInfo("netconf", "netconf", Ip4Address.valueOf("1.2.3.4"), 830);
session = new MockNetconfSessionEa1000(deviceInfo);
}
@After
public void tearDown() throws Exception {
}
@Test
public void testGetMseaUniEvcServiceMseaUniEvcServiceOpParamNetconfSession() {
Uni.UniBuilder uniBuilder = new DefaultUni.UniBuilder();
MefServices.MefServicesBuilder mefBuilder = new DefaultMefServices.MefServicesBuilder();
MefServices mefServices = mefBuilder.uni(uniBuilder.build()).build();
MseaUniEvcService.MseaUniEvcServiceBuilder evcUniBuilder =
new MseaUniEvcServiceOpParam.MseaUniEvcServiceBuilder();
MseaUniEvcServiceOpParam mseaUniEvcServiceFilter =
(MseaUniEvcServiceOpParam) evcUniBuilder.mefServices(mefServices).build();
MseaUniEvcService result = null;
try {
result =
mseaUniEvcServiceSvc.getConfigMseaUniEvcService(
mseaUniEvcServiceFilter, session, TargetConfig.RUNNING);
} catch (NetconfException e) {
// TODO Auto-generated catch block
e.printStackTrace();
fail("Error: " + e.getMessage());
}
assertNotNull(result);
}
@Test
public void testSetMseaUniEvcServiceMseaUniEvcServiceOpParamEvcs() {
TagPush.TagPushBuilder tpBuilder1 = new DefaultTagPush.TagPushBuilder();
org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.uni.evc
.service.rev20160317.mseaunievcservice.evcperuniextensionattributes.tagmanipulation
.tagpush.TagPush.TagPushBuilder tpInnerBuilder1 =
new org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea
.uni.evc.service.rev20160317.mseaunievcservice.evcperuniextensionattributes
.tagmanipulation.tagpush.DefaultTagPush.TagPushBuilder();
TagPush tp1 = tpBuilder1
.tagPush(tpInnerBuilder1
.outerTagVlan(new VlanIdType(3))
.pushTagType(PushTagTypeEnum.PUSHSTAG)
.build())
.build();
EvcPerUnin.EvcPerUninBuilder epunBuilder1 = new DefaultEvcPerUnin.EvcPerUninBuilder();
EvcPerUnin epun1 = epunBuilder1
.evcPerUniServiceType(EvcPerUniServiceTypeEnum.EVPL)
.ceVlanMap(ServiceListType.fromString("10"))
.ingressBwpGroupIndex("0")
.tagManipulation(tp1)
.build();
EvcPerUnic.EvcPerUnicBuilder epucBuilder1 = new DefaultEvcPerUnic.EvcPerUnicBuilder();
EvcPerUnic epuc1 = epucBuilder1
.ceVlanMap(new ServiceListType("11"))
.ingressBwpGroupIndex("0")
.build();
EvcPerUni.EvcPerUniBuilder epuBuilder = new DefaultEvcPerUni.EvcPerUniBuilder();
List<Evc> evcList = new ArrayList<Evc>();
Evc.EvcBuilder evcBuilder1 = new DefaultEvc.EvcBuilder();
evcList.add(evcBuilder1
.evcIndex(1)
.name(new Identifier45("evc-1"))
.evcPerUni(epuBuilder.evcPerUnin(epun1).evcPerUnic(epuc1).build())
.build());
EvcPerUnin.EvcPerUninBuilder epunBuilder2 = new DefaultEvcPerUnin.EvcPerUninBuilder();
EvcPerUnin epun2 = epunBuilder2
.ceVlanMap(ServiceListType.fromString("13"))
.ingressBwpGroupIndex("0")
.build();
EvcPerUnic.EvcPerUnicBuilder epucBuilder2 = new DefaultEvcPerUnic.EvcPerUnicBuilder();
EvcPerUnic epuc2 = epucBuilder2
.ceVlanMap(new ServiceListType("12"))
.ingressBwpGroupIndex("0")
.build();
Evc.EvcBuilder evcBuilder2 = new DefaultEvc.EvcBuilder();
evcList.add(evcBuilder2
.evcIndex(2)
.name(new Identifier45("evc-2"))
.evcPerUni(epuBuilder.evcPerUnin(epun2).evcPerUnic(epuc2).build())
.build());
Uni.UniBuilder uniBuilder = new DefaultUni.UniBuilder();
Uni uni = uniBuilder.name(new Identifier45("testUni")).evc(evcList).build();
MefServices.MefServicesBuilder mefBuilder = new DefaultMefServices.MefServicesBuilder();
MefServices mefServices = mefBuilder.uni(uni).build();
MseaUniEvcService.MseaUniEvcServiceBuilder evcUniBuilder =
new MseaUniEvcServiceOpParam.MseaUniEvcServiceBuilder();
MseaUniEvcServiceOpParam mseaUniEvcServiceFilter =
(MseaUniEvcServiceOpParam) evcUniBuilder.mefServices(mefServices).build();
try {
mseaUniEvcServiceSvc.setMseaUniEvcService(mseaUniEvcServiceFilter, session, TargetConfig.RUNNING);
} catch (NetconfException e) {
// TODO Auto-generated catch block
e.printStackTrace();
fail("Error: " + e.getMessage());
}
}
@Test
public void testSetMseaUniEvcServiceMseaUniEvcServiceOpParamProfiles() {
List<Cos> cosList = new ArrayList<Cos>();
Cos.CosBuilder cosBuilder0 = new DefaultCos.CosBuilder();
cosList.add(cosBuilder0.cosIndex(0).name("cos0").build());
Cos.CosBuilder cosBuilder1 = new DefaultCos.CosBuilder();
cosList.add(cosBuilder1.cosIndex(1).name("cos1").build());
List<BwpGroup> bwpGroupList = new ArrayList<BwpGroup>();
BwpGroup.BwpGroupBuilder bwpGrpBuilder = new DefaultBwpGroup.BwpGroupBuilder();
bwpGroupList.add(bwpGrpBuilder.groupIndex((short) 0).build());
List<Bwp> bwpList = new ArrayList<Bwp>();
Bwp.BwpBuilder bwpBuilder1 = new DefaultBwp.BwpBuilder();
bwpList.add(bwpBuilder1.cosIndex(0).colorMode(ColorModeEnum.COLORAWARE).build());
Bwp.BwpBuilder bwpBuilder2 = new DefaultBwp.BwpBuilder();
bwpList.add(bwpBuilder2.cosIndex(1).colorMode(ColorModeEnum.COLORBLIND).build());
BwpGroup.BwpGroupBuilder bwpGrpBuilder1 = new DefaultBwpGroup.BwpGroupBuilder();
bwpGroupList.add(bwpGrpBuilder1.groupIndex((short) 1).bwp(bwpList).build());
Profiles.ProfilesBuilder profilesBuilder = new DefaultProfiles.ProfilesBuilder();
Profiles profiles = profilesBuilder.bwpGroup(bwpGroupList).build();
MefServices.MefServicesBuilder mefBuilder = new DefaultMefServices.MefServicesBuilder();
MefServices mefServices = mefBuilder.profiles(profiles).build();
MseaUniEvcService.MseaUniEvcServiceBuilder evcUniBuilder =
new MseaUniEvcServiceOpParam.MseaUniEvcServiceBuilder();
MseaUniEvcServiceOpParam mseaUniEvcServiceFilter =
(MseaUniEvcServiceOpParam) evcUniBuilder.mefServices(mefServices).build();
try {
mseaUniEvcServiceSvc.setMseaUniEvcService(mseaUniEvcServiceFilter, session, TargetConfig.RUNNING);
} catch (NetconfException e) {
// TODO Auto-generated catch block
e.printStackTrace();
fail("Error: " + e.getMessage());
}
}
@Test
public void testGetMseaUniEvcCeVlanMaps() {
try {
MseaUniEvcService ceVlanMapsResult7 =
mseaUniEvcServiceSvc.getmseaUniEvcCeVlanMaps(session, TargetConfig.RUNNING);
assertNotNull(ceVlanMapsResult7.mefServices().uni().evc());
List<Evc> evcList = ceVlanMapsResult7.mefServices().uni().evc();
assertEquals(3, evcList.size());
for (Evc evc : evcList) {
assertNotNull(evc.evcPerUni().evcPerUnic().ceVlanMap());
assertNotNull(evc.evcPerUni().evcPerUnin().ceVlanMap());
if (evc.evcIndex() == 7) {
assertEquals("700,710,720", evc.evcPerUni().evcPerUnic().ceVlanMap().string());
assertEquals("701:703", evc.evcPerUni().evcPerUnin().ceVlanMap().string());
}
}
} catch (NetconfException e) {
// TODO Auto-generated catch block
e.printStackTrace();
fail("Error: " + e.getMessage());
}
}
@Test
public void testChangeEvcCeVlanMap() {
EvcPerUnin.EvcPerUninBuilder epunBuilder1 = new DefaultEvcPerUnin.EvcPerUninBuilder();
EvcPerUnin epun1 = epunBuilder1
.evcPerUniServiceType(EvcPerUniServiceTypeEnum.EVPL)
.ceVlanMap(ServiceListType.fromString("10"))
.ingressBwpGroupIndex("0")
.build();
EvcPerUnic.EvcPerUnicBuilder epucBuilder1 = new DefaultEvcPerUnic.EvcPerUnicBuilder();
EvcPerUnic epuc1 = epucBuilder1
.ceVlanMap(new ServiceListType("11"))
.ingressBwpGroupIndex("0")
.build();
EvcPerUni.EvcPerUniBuilder epuBuilder = DefaultEvcPerUni.builder().evcPerUnic(epuc1).evcPerUnin(epun1);
Evc evc = CustomEvc.builder().evcPerUni(epuBuilder.build()).build();
assertEquals("10", evc.evcPerUni().evcPerUnin().ceVlanMap().string());
assertEquals("11", evc.evcPerUni().evcPerUnic().ceVlanMap().string());
evc = CustomEvc.builder(evc).addToCeVlanMap(new ServiceListType("12,13"), UniSide.NETWORK).build();
assertEquals("10,12:13", evc.evcPerUni().evcPerUnin().ceVlanMap().string());
assertEquals("11", evc.evcPerUni().evcPerUnic().ceVlanMap().string());
}
@Test
public void testChangeEvcCeVlanMapNoValues() {
EvcPerUnin.EvcPerUninBuilder epunBuilder1 = CustomEvcPerUnin.builder();
EvcPerUnin epun1 = epunBuilder1
.evcPerUniServiceType(EvcPerUniServiceTypeEnum.EVPL)
.ingressBwpGroupIndex("0")
.build();
EvcPerUnic.EvcPerUnicBuilder epucBuilder1 = CustomEvcPerUnic.builder();
EvcPerUnic epuc1 = epucBuilder1
.ingressBwpGroupIndex("0")
.build();
EvcPerUni.EvcPerUniBuilder epuBuilder = DefaultEvcPerUni.builder().evcPerUnic(epuc1).evcPerUnin(epun1);
Evc evc = CustomEvc.builder().evcPerUni(epuBuilder.build()).build();
assertEquals("0", evc.evcPerUni().evcPerUnin().ceVlanMap().string());
assertEquals("0", evc.evcPerUni().evcPerUnic().ceVlanMap().string());
}
@Test
public void testRemoveEvcUniFlowEntries() {
Map<Integer, String> ceVlanUpdates = new TreeMap<>();
ceVlanUpdates.put((1 << 2), "");
ceVlanUpdates.put((1 << 2) + 1, "");
ceVlanUpdates.put((2 << 2), "");
ceVlanUpdates.put((2 << 2) + 1, "");
ceVlanUpdates.put((7 << 2), "700,710,720");
ceVlanUpdates.put((7 << 2) + 1, "701:703");
ceVlanUpdates.put((8 << 2), "800,810,820");
ceVlanUpdates.put((8 << 2) + 1, "801,802,803");
Map<Integer, List<Short>> flowVlanIdMap = new HashMap<>();
//These should get ignored because whole EVC is being deleted
flowVlanIdMap.put(1 << 2, new ArrayList<Short>());
flowVlanIdMap.get(1 << 2).add((short) 11);
flowVlanIdMap.put((1 << 2) + 1, new ArrayList<Short>());
flowVlanIdMap.get((1 << 2) + 1).add((short) 12L);
//These are the EVCs being removed
flowVlanIdMap.put(7 << 2, new ArrayList<Short>());
flowVlanIdMap.get(7 << 2).add((short) 730L);
flowVlanIdMap.get(7 << 2).add((short) 740L);
flowVlanIdMap.put((7 << 2) + 1, new ArrayList<Short>());
flowVlanIdMap.get((7 << 2) + 1).add((short) 705L);
flowVlanIdMap.get((7 << 2) + 1).add((short) 706L);
flowVlanIdMap.put(8 << 2, new ArrayList<Short>());
flowVlanIdMap.get(8 << 2).add((short) 830L);
flowVlanIdMap.get(8 << 2).add((short) 840L);
flowVlanIdMap.put((8 << 2) + 1, new ArrayList<Short>());
flowVlanIdMap.get((8 << 2) + 1).add((short) 805L);
flowVlanIdMap.get((8 << 2) + 1).add((short) 806L);
try {
mseaUniEvcServiceSvc.removeEvcUniFlowEntries(
ceVlanUpdates, flowVlanIdMap, session, TargetConfig.RUNNING,
UniSideInterfaceAssignmentEnum.UNI_C_ON_OPTICS);
} catch (NetconfException e) {
// TODO Auto-generated catch block
e.printStackTrace();
fail("Error: " + e.getMessage());
}
}
@Test
public void testGetVlanSet1() {
Short[] vlanIds = CeVlanMapUtils.getVlanSet("10");
assertEquals(1, vlanIds.length);
}
@Test
public void testGetVlanSet2() {
Short[] vlanIds = CeVlanMapUtils.getVlanSet("10:20");
assertEquals(11, vlanIds.length);
assertEquals(10, vlanIds[0].shortValue());
assertEquals(20, vlanIds[10].shortValue());
}
@Test
public void testGetVlanSet3() {
Short[] vlanIds = CeVlanMapUtils.getVlanSet("10:20,30:40");
assertEquals(22, vlanIds.length);
assertEquals(10, vlanIds[0].shortValue());
assertEquals(40, vlanIds[21].shortValue());
}
@Test
public void testGetVlanSet4() {
Short[] vlanIds = CeVlanMapUtils.getVlanSet("10,20,30");
assertEquals(3, vlanIds.length);
assertEquals(10, vlanIds[0].shortValue());
assertEquals(30, vlanIds[2].shortValue());
}
@Test
public void testVlanListAsString() {
assertEquals("20:22", CeVlanMapUtils.vlanListAsString(new Short[]{20, 21, 22}));
assertEquals("20:22,24:25",
CeVlanMapUtils.vlanListAsString(new Short[]{20, 21, 22, 24, 25}));
assertEquals("30,33,36:40",
CeVlanMapUtils.vlanListAsString(new Short[]{30, 33, 36, 37, 38, 39, 40}));
assertEquals("20", CeVlanMapUtils.vlanListAsString(new Short[]{20}));
assertEquals("20,22,24,26,28",
CeVlanMapUtils.vlanListAsString(new Short[]{20, 22, 24, 26, 28}));
}
@Test
public void testAddtoCeVlanMap() {
assertEquals("20,22:24,26,28",
CeVlanMapUtils.addtoCeVlanMap("20,22,24,26,28", (short) 23));
assertEquals("20:26,28",
CeVlanMapUtils.addtoCeVlanMap("20,21,22,24,25,26,28", (short) 23));
assertEquals("20,23",
CeVlanMapUtils.addtoCeVlanMap("20", (short) 23));
assertEquals("20,22:23",
CeVlanMapUtils.addtoCeVlanMap("20,22", (short) 23));
}
@Test
public void testCombineVlanSets() {
assertEquals("10:11,13:14", CeVlanMapUtils.combineVlanSets("10:11", "13:14"));
assertEquals("10:14", CeVlanMapUtils.combineVlanSets("10:11", "12:14"));
assertEquals("10:11,14", CeVlanMapUtils.combineVlanSets("10:11", "14"));
assertEquals("10:12", CeVlanMapUtils.combineVlanSets("10:11", "11:12"));
}
@Test
public void testRemoveZeroIfPossible() {
assertEquals("0", CeVlanMapUtils.removeZeroIfPossible(""));
assertEquals("0", CeVlanMapUtils.removeZeroIfPossible("0"));
assertEquals("1,3", CeVlanMapUtils.removeZeroIfPossible("0:1,3"));
assertEquals("1:2", CeVlanMapUtils.removeZeroIfPossible("0:2"));
assertEquals("10:12", CeVlanMapUtils.removeZeroIfPossible("0,10:12"));
}
}