blob: 161621b25d3586e6d4e1c6f630df56da0c94e81e [file] [log] [blame]
Sean Condonfae8e662016-12-15 10:25:13 +00001/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2017-present Open Networking Foundation
Sean Condonfae8e662016-12-15 10:25:13 +00003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.drivers.microsemi.yang;
17
18import static org.junit.Assert.assertEquals;
19import static org.junit.Assert.assertNotNull;
20import static org.junit.Assert.assertTrue;
21import static org.junit.Assert.fail;
22
23import java.io.UncheckedIOException;
24
25import org.junit.After;
26import org.junit.Before;
27import org.junit.Test;
28import org.onlab.packet.Ip4Address;
Sean Condon0e89bda2017-03-21 14:23:19 +000029import org.onosproject.drivers.microsemi.yang.MseaCfmNetconfService.DmEntryParts;
Sean Condonfae8e662016-12-15 10:25:13 +000030import org.onosproject.drivers.microsemi.yang.impl.MseaCfmManager;
Sean Condon0e89bda2017-03-21 14:23:19 +000031import org.onosproject.drivers.microsemi.yang.utils.MepIdUtil;
32import org.onosproject.drivers.microsemi.yang.utils.MepIdUtil2;
33import org.onosproject.drivers.microsemi.yang.utils.MepIdUtil3;
34import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MaIdCharStr;
35import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MdIdCharStr;
36import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MepId;
37import org.onosproject.incubator.net.l2monitoring.cfm.service.CfmConfigException;
38import org.onosproject.incubator.net.l2monitoring.soam.SoamId;
Sean Condon96b896d2017-12-11 12:44:29 -080039import org.onosproject.netconf.DatastoreId;
Sean Condonfae8e662016-12-15 10:25:13 +000040import org.onosproject.netconf.NetconfDeviceInfo;
41import org.onosproject.netconf.NetconfException;
42import org.onosproject.netconf.NetconfSession;
Sean Condon0e89bda2017-03-21 14:23:19 +000043import org.onosproject.yang.gen.v1.ietfyangtypes.rev20130715.ietfyangtypes.MacAddress;
Sean Condon06613e92017-06-09 15:14:01 +010044import org.onosproject.yang.gen.v1.mseacfm.rev20160229.MseaCfm;
Sean Condon96b896d2017-12-11 12:44:29 -080045import org.onosproject.yang.gen.v1.mseacfm.rev20160229.MseaCfmOpParam;
Sean Condon06613e92017-06-09 15:14:01 +010046import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.DefaultMefCfm;
47import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.MefCfm;
Sean Condon0e89bda2017-03-21 14:23:19 +000048import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.abortloopback.AbortLoopbackInput;
49import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.abortloopback.DefaultAbortLoopbackInput;
Sean Condon06613e92017-06-09 15:14:01 +010050import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.mefcfm.DefaultMaintenanceDomain;
51import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.mefcfm.MaintenanceDomain;
Sean Condon96b896d2017-12-11 12:44:29 -080052import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.mefcfm.maintenancedomain.DefaultMaintenanceAssociation;
53import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.mefcfm.maintenancedomain.MaintenanceAssociation;
54import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.mefcfm.maintenancedomain.maintenanceassociation.DefaultMaintenanceAssociationEndPoint;
Sean Condon0e89bda2017-03-21 14:23:19 +000055import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.mefcfm.maintenancedomain.maintenanceassociation.MaintenanceAssociationEndPoint;
Sean Condon96b896d2017-12-11 12:44:29 -080056import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.mefcfm.maintenancedomain.maintenanceassociation.manameandtypecombo.DefaultNamePrimaryVid;
57import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.mefcfm.maintenancedomain.maintenanceassociation.manameandtypecombo.NamePrimaryVid;
58import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.mefcfm.maintenancedomain.maintenanceassociation.manameandtypecombo.nameprimaryvid.NamePrimaryVidUnion;
Sean Condon06613e92017-06-09 15:14:01 +010059import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.mefcfm.maintenancedomain.mdnameandtypecombo.DefaultNameCharacterString;
Sean Condon96b896d2017-12-11 12:44:29 -080060import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.mefcfm.maintenancedomain.mdnameandtypecombo.DefaultNameDomainName;
Sean Condon06613e92017-06-09 15:14:01 +010061import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.mefcfm.maintenancedomain.mdnameandtypecombo.NameCharacterString;
Sean Condon96b896d2017-12-11 12:44:29 -080062import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.mefcfm.maintenancedomain.mdnameandtypecombo.NameDomainName;
63import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.mefcfm.maintenancedomain.mdnameandtypecombo.namedomainname.NameDomainNameUnion;
Sean Condon0e89bda2017-03-21 14:23:19 +000064import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.targetaddressgroup.addresstype.DefaultMacAddress;
65import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.targetaddressgroup.addresstype.DefaultMepId;
66import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.transmitloopback.DefaultTransmitLoopbackInput;
67import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.transmitloopback.TransmitLoopbackInput;
68import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.transmitloopback.transmitloopbackinput.DefaultTargetAddress;
69import org.onosproject.yang.gen.v1.mseasoampm.rev20160229.mseasoampm.mefcfm.maintenancedomain.maintenanceassociation.maintenanceassociationendpoint.augmentedmseacfmmaintenanceassociationendpoint.delaymeasurements.DelayMeasurement;
70import org.onosproject.yang.gen.v1.mseasoampm.rev20160229.mseasoampm.mefcfm.maintenancedomain.maintenanceassociation.maintenanceassociationendpoint.augmentedmseacfmmaintenanceassociationendpoint.lossmeasurements.lossmeasurement.MessagePeriodEnum;
71import org.onosproject.yang.gen.v1.mseasoampm.rev20160229.mseasoampm.sessionstatustype.SessionStatusTypeEnum;
Sean Condon06613e92017-06-09 15:14:01 +010072import org.onosproject.yang.gen.v1.mseatypes.rev20160229.mseatypes.Identifier45;
Sean Condon0e89bda2017-03-21 14:23:19 +000073import org.onosproject.yang.gen.v1.mseatypes.rev20160229.mseatypes.MepIdType;
74import org.onosproject.yang.gen.v1.mseatypes.rev20160229.mseatypes.PriorityType;
Sean Condonfae8e662016-12-15 10:25:13 +000075
76public class MseaCfmManagerTest {
77
78 MseaCfmManager mseaCfmService;
Sean Condonfae8e662016-12-15 10:25:13 +000079 NetconfSession session;
80
81 @Before
82 public void setUp() throws Exception {
83 try {
84 mseaCfmService = new MockMseaCfmManager();
85 mseaCfmService.activate();
86 } catch (UncheckedIOException e) {
87 fail(e.getMessage());
88 }
Sean Condon0e89bda2017-03-21 14:23:19 +000089 NetconfDeviceInfo deviceInfo = new NetconfDeviceInfo("netconf", "netconf",
90 Ip4Address.valueOf("1.2.3.4"), 830);
Sean Condonfae8e662016-12-15 10:25:13 +000091 session = new MockNetconfSessionEa1000(deviceInfo);
92 }
93
94 @After
95 public void tearDown() throws Exception {
96 }
97
98 @Test
Sean Condon0e89bda2017-03-21 14:23:19 +000099 public void testGetConfigMseaCfmEssentials()
100 throws NetconfException, CfmConfigException {
101 MseaCfm mseaCfm = mseaCfmService.getMepEssentials(
102 MdIdCharStr.asMdId("md-1"),
103 MaIdCharStr.asMaId("ma-1-1"),
104 MepId.valueOf((short) 1), session);
Sean Condonfae8e662016-12-15 10:25:13 +0000105 assertNotNull(mseaCfm);
106
Sean Condon0e89bda2017-03-21 14:23:19 +0000107 //See SAMPLE_MSEACFM_MD_MA_MEP_ESSENTIALS_REPLY in MockNetconfSessionEa1000
Sean Condonfae8e662016-12-15 10:25:13 +0000108 assertEquals(1, mseaCfm.mefCfm().maintenanceDomain().size());
Sean Condon0e89bda2017-03-21 14:23:19 +0000109 }
110
111 @Test
112 public void testGetConfigMseaCfmFull()
113 throws NetconfException, CfmConfigException {
114 MseaCfm mseaCfm = mseaCfmService.getMepFull(
115 MdIdCharStr.asMdId("md-1"),
116 MaIdCharStr.asMaId("ma-1-1"),
117 MepId.valueOf((short) 1), session);
118 assertNotNull(mseaCfm);
119
120 //See SAMPLE_MSEACFM_MD_MA_MEP_FULL_REPLY in MockNetconfSessionEa1000
121 assertEquals(1, mseaCfm.mefCfm().maintenanceDomain().size());
122 MaintenanceAssociationEndPoint mep = mseaCfm.mefCfm()
123 .maintenanceDomain().get(0)
124 .maintenanceAssociation().get(0)
125 .maintenanceAssociationEndPoint().get(0);
126 assertTrue(mep.administrativeState());
127 assertEquals("00:b0:ae:03:ff:31", mep.macAddress().toString());
128
129 org.onosproject.yang.gen.v1.mseasoamfm.rev20160229.mseasoamfm.mefcfm.maintenancedomain
130 .maintenanceassociation.maintenanceassociationendpoint
131 .AugmentedMseaCfmMaintenanceAssociationEndPoint augmentedMep =
132 MepIdUtil2.convertFmAugmentedMep(mep);
133
134 assertEquals("partially-active", augmentedMep.connectivityStatus().toString());
135 assertEquals("up", augmentedMep.interfaceStatus().enumeration().toString());
136 }
137
138 /**
139 * Driven by SAMPLE_MSEACFM_DELAY_MEASUREMENT_FULL_REPLY.
140 * @throws NetconfException If there's a problem
141 */
142 @Test
143 public void testGetSoamDm() throws NetconfException {
144 MseaCfm mseaCfmWithDm = mseaCfmService.getSoamDm(
145 MdIdCharStr.asMdId("md-1"),
146 MaIdCharStr.asMaId("ma-1-1"),
147 MepId.valueOf((short) 1),
148 SoamId.valueOf(1),
149 DmEntryParts.ALL_PARTS, session);
150
151 assertNotNull(mseaCfmWithDm);
152 MaintenanceAssociationEndPoint mep = mseaCfmWithDm.mefCfm()
153 .maintenanceDomain().get(0)
154 .maintenanceAssociation().get(0)
155 .maintenanceAssociationEndPoint().get(0);
156
157 //Because of a checkstyle problem with typecasts including really long
158 //package names, this has to be handed off to a different class
159 org.onosproject.yang.gen.v1.mseasoampm.rev20160229.mseasoampm.mefcfm.maintenancedomain
160 .maintenanceassociation.maintenanceassociationendpoint
161 .AugmentedMseaCfmMaintenanceAssociationEndPoint augmentedMep =
162 MepIdUtil.convertPmAugmentedMep(mep);
163
164 DelayMeasurement dm = augmentedMep.delayMeasurements().delayMeasurement().get(0);
165 assertEquals(true, dm.administrativeState());
166 assertTrue(dm.measurementEnable().get(3)); //frame-delay-two-way-bins
167 assertTrue(dm.measurementEnable().get(1)); //frame-delay-two-way-max
168
169 assertEquals(MessagePeriodEnum.YANGAUTOPREFIX3MS.name(), dm.messagePeriod().name());
170 assertEquals(6, dm.priority().uint8());
171 assertEquals(1000, dm.frameSize());
172 assertEquals(15, dm.measurementInterval());
173 assertEquals(32, dm.numberIntervalsStored());
174 assertEquals(SessionStatusTypeEnum.ACTIVE.name(),
175 dm.sessionStatus().enumeration().name());
176 assertEquals(100, dm.frameDelayTwoWay().uint32());
177 assertEquals(101, dm.interFrameDelayVariationTwoWay().uint32());
178
179 //The remoteMep of the DM is a choice, which for mepId is a leafref object
180 org.onosproject.yang.gen.v1.mseasoampm.rev20160229.mseasoampm.remotemepgroup.remotemep
181 .DefaultMepId remoteMepId = MepIdUtil3.convertPmRemoteMepToMepId(dm.remoteMep());
182 assertNotNull(remoteMepId);
183 assertEquals(10, ((MepIdType) remoteMepId.mepId()).uint16());
184
Sean Condonfae8e662016-12-15 10:25:13 +0000185 }
186
187 /**
188 * Create the Maintenance Domain "md-1".
189 * @throws NetconfException
190 */
191 @Test
192 public void testSetMseaCfm() throws NetconfException {
Sean Condon06613e92017-06-09 15:14:01 +0100193 NameCharacterString mdName = new DefaultNameCharacterString();
194 mdName.name(Identifier45.fromString("md-1"));
Sean Condonfae8e662016-12-15 10:25:13 +0000195
Sean Condon06613e92017-06-09 15:14:01 +0100196 MaintenanceDomain yangMd = new DefaultMaintenanceDomain();
197 yangMd.id((short) 1);
198 yangMd.mdNameAndTypeCombo(mdName);
Sean Condonfae8e662016-12-15 10:25:13 +0000199
Sean Condon06613e92017-06-09 15:14:01 +0100200 MefCfm mefCfm = new DefaultMefCfm();
201 mefCfm.addToMaintenanceDomain(yangMd);
Sean Condonfae8e662016-12-15 10:25:13 +0000202 //FIXME implement this
203// MseaCfmOpParam mseaCfmOpParam = (MseaCfmOpParam) MseaCfmOpParam.builder().mefCfm(mefCfm).build();
204// mseaCfmService.setMseaCfm(mseaCfmOpParam, session, NcDsType.running);
205 }
206
Sean Condon96b896d2017-12-11 12:44:29 -0800207 /**
208 * Using mep Id 10.
209 */
Sean Condonfae8e662016-12-15 10:25:13 +0000210 @Test
Sean Condon96b896d2017-12-11 12:44:29 -0800211 public void testDeleteMseaMep() {
212 MaintenanceAssociationEndPoint mep10 = new DefaultMaintenanceAssociationEndPoint();
213 mep10.mepIdentifier(MepIdType.of(10));
214
215 MaintenanceAssociation ma1100 = new DefaultMaintenanceAssociation();
216 NamePrimaryVid pvid1100Name = new DefaultNamePrimaryVid();
217 pvid1100Name.namePrimaryVid(NamePrimaryVidUnion.fromString("1100"));
218 ma1100.maNameAndTypeCombo(pvid1100Name);
219 ma1100.id((short) 1100);
220 ma1100.addToMaintenanceAssociationEndPoint(mep10);
221
222 MaintenanceDomain md = new DefaultMaintenanceDomain();
223 NameCharacterString mdName = new DefaultNameCharacterString();
224 mdName.name(new Identifier45("md-1"));
225 md.mdNameAndTypeCombo(mdName);
226 md.id((short) 1);
227 md.addToMaintenanceAssociation(ma1100);
228
229 MefCfm mefCfm = new DefaultMefCfm();
230 mefCfm.addToMaintenanceDomain(md);
231 MseaCfmOpParam mseaCfm = new MseaCfmOpParam();
232 mseaCfm.mefCfm(mefCfm);
233
234 try {
235 boolean deleted = mseaCfmService.deleteMseaMep(mseaCfm, session, DatastoreId.RUNNING);
236 assertTrue(deleted);
237 } catch (NetconfException e) {
238 e.printStackTrace();
239 fail();
240 } catch (CfmConfigException e) {
241 e.printStackTrace();
242 fail();
243 }
244 }
245
246 /**
247 * Using mep Id 10.
248 */
249 @Test
250 public void testDeleteMseaMa() {
251 MaintenanceAssociation ma1300 = new DefaultMaintenanceAssociation();
252 NamePrimaryVid pvid1300Name = new DefaultNamePrimaryVid();
253 pvid1300Name.namePrimaryVid(NamePrimaryVidUnion.fromString("1300"));
254 ma1300.id((short) 1300);
255 ma1300.maNameAndTypeCombo(pvid1300Name);
256
257 MaintenanceDomain md = new DefaultMaintenanceDomain();
258 NameCharacterString mdName = new DefaultNameCharacterString();
259 mdName.name(new Identifier45("md-13"));
260 md.mdNameAndTypeCombo(mdName);
261 md.id((short) 13);
262 md.addToMaintenanceAssociation(ma1300);
263
264 MefCfm mefCfm = new DefaultMefCfm();
265 mefCfm.addToMaintenanceDomain(md);
266 MseaCfmOpParam mseaCfm = new MseaCfmOpParam();
267 mseaCfm.mefCfm(mefCfm);
268
269 try {
270 boolean deleted = mseaCfmService.deleteMseaMa(mseaCfm, session, DatastoreId.RUNNING);
271 assertTrue(deleted);
272 } catch (NetconfException e) {
273 e.printStackTrace();
274 fail();
275 } catch (CfmConfigException e) {
276 e.printStackTrace();
277 fail();
278 }
279 }
280
281
282 @Test
283 public void testDeleteMseaRemoteMep() {
284 MaintenanceAssociation ma1100 = new DefaultMaintenanceAssociation();
285 NamePrimaryVid pvid1100Name = new DefaultNamePrimaryVid();
286 pvid1100Name.namePrimaryVid(NamePrimaryVidUnion.fromString("1100"));
287 ma1100.maNameAndTypeCombo(pvid1100Name);
288 ma1100.id((short) 1100);
289 ma1100.addToRemoteMeps(MepIdType.of(100));
290 ma1100.addToRemoteMeps(MepIdType.of(101));
291
292 MaintenanceDomain md = new DefaultMaintenanceDomain();
293 NameCharacterString mdName = new DefaultNameCharacterString();
294 mdName.name(new Identifier45("md-1"));
295 md.mdNameAndTypeCombo(mdName);
296 md.id((short) 1);
297 md.addToMaintenanceAssociation(ma1100);
298
299 MefCfm mefCfm = new DefaultMefCfm();
300 mefCfm.addToMaintenanceDomain(md);
301 MseaCfmOpParam mseaCfm = new MseaCfmOpParam();
302 mseaCfm.mefCfm(mefCfm);
303
304 try {
305 boolean deleted = mseaCfmService.deleteMseaMaRMep(mseaCfm, session, DatastoreId.RUNNING);
306 assertTrue(deleted);
307 } catch (NetconfException e) {
308 e.printStackTrace();
309 fail();
310 } catch (CfmConfigException e) {
311 e.printStackTrace();
312 fail();
313 }
314 }
315
316 /**
317 * Using mep Id 10.
318 */
319 @Test
320 public void testDeleteMseaMdById() {
321
322 MaintenanceDomain md = new DefaultMaintenanceDomain();
323 NameDomainName mdName = new DefaultNameDomainName();
324 mdName.nameDomainName(NameDomainNameUnion.fromString("www.opennetworking.org"));
325 md.mdNameAndTypeCombo(mdName);
326 md.id((short) 10);
327
328 MefCfm mefCfm = new DefaultMefCfm();
329 mefCfm.addToMaintenanceDomain(md);
330 MseaCfmOpParam mseaCfm = new MseaCfmOpParam();
331 mseaCfm.mefCfm(mefCfm);
332
333 try {
334 boolean deleted = mseaCfmService.deleteMseaMd(mseaCfm, session, DatastoreId.RUNNING);
335 assertTrue(deleted);
336 } catch (NetconfException e) {
337 e.printStackTrace();
338 fail();
339 } catch (CfmConfigException e) {
340 e.printStackTrace();
341 fail();
342 }
343 }
344
345 /**
346 * Using mep Id 10.
347 */
348 @Test
349 public void testDeleteMseaMdByName() {
350
351 MaintenanceDomain md = new DefaultMaintenanceDomain();
352 NameDomainName mdName = new DefaultNameDomainName();
353 mdName.nameDomainName(NameDomainNameUnion.fromString("www.opennetworking.org"));
354 md.mdNameAndTypeCombo(mdName);
355
356 MefCfm mefCfm = new DefaultMefCfm();
357 mefCfm.addToMaintenanceDomain(md);
358 MseaCfmOpParam mseaCfm = new MseaCfmOpParam();
359 mseaCfm.mefCfm(mefCfm);
360
361 try {
362 mseaCfmService.deleteMseaMd(mseaCfm, session, DatastoreId.RUNNING);
363 fail("Should not have succeeded as no numeric id was given");
364 } catch (NetconfException | CfmConfigException e) {
365 assertEquals("An MD numeric ID must be given", e.getMessage());
366 }
367 }
368
369
Sean Condon0e89bda2017-03-21 14:23:19 +0000370 /**
371 * Using Remote remote MEP ID and all arguments.
372 */
Sean Condon96b896d2017-12-11 12:44:29 -0800373 @Test
Sean Condon0e89bda2017-03-21 14:23:19 +0000374 public void testTransmitLoopback1() {
375 TransmitLoopbackInput lbTr1 = new DefaultTransmitLoopbackInput();
376 lbTr1.maintenanceDomain(Short.valueOf((short) 1));
377 lbTr1.maintenanceAssociation(Short.valueOf((short) 2));
378 lbTr1.maintenanceAssociationEndPoint(Short.valueOf((short) 3));
379
380 DefaultTargetAddress ta = new DefaultTargetAddress();
381 DefaultMepId mepId = new DefaultMepId();
382 mepId.mepId(MepIdType.of(4));
Yuta HIGUCHI8dee1452018-05-02 19:09:04 -0700383 ta.addressType(mepId);
Sean Condon0e89bda2017-03-21 14:23:19 +0000384 lbTr1.targetAddress(ta);
385
386// lbTr1.dataTlv(new byte[]{0x01, 0x02, 0x03}); Not supported in onos-yang-tools just yet
387 lbTr1.numberOfMessages(10);
388 lbTr1.vlanDropEligible(true);
389 lbTr1.vlanPriority(PriorityType.of((short) 1));
Sean Condonfae8e662016-12-15 10:25:13 +0000390 try {
Sean Condon0e89bda2017-03-21 14:23:19 +0000391 mseaCfmService.transmitLoopback(lbTr1, session);
392 } catch (NetconfException e) {
393 fail("Calling of TransmitLoopback failed: " + e.getMessage());
394 }
395 }
396
Sean Condon0e89bda2017-03-21 14:23:19 +0000397 /**
398 * Using Remote Mac address in place of remote MEP ID and fewer arguments.
399 */
Sean Condon96b896d2017-12-11 12:44:29 -0800400 @Test
Sean Condon0e89bda2017-03-21 14:23:19 +0000401 public void testTransmitLoopback2() {
402 TransmitLoopbackInput lbTr2 = new DefaultTransmitLoopbackInput();
403
404 lbTr2.maintenanceDomain(Short.valueOf((short) 63));
405 lbTr2.maintenanceAssociation(Short.valueOf((short) 62));
406 lbTr2.maintenanceAssociationEndPoint(Short.valueOf((short) 61));
407
408 DefaultTargetAddress ta = new DefaultTargetAddress();
409 DefaultMacAddress macAddr = new DefaultMacAddress();
410 macAddr.macAddress(MacAddress.of("FF:EE:DD:CC:BB:AA"));
411 ta.addressType(macAddr);
412 lbTr2.targetAddress(ta);
413 try {
414 mseaCfmService.transmitLoopback(lbTr2, session);
415 } catch (NetconfException e) {
416 fail("Calling of TransmitLoopback failed: " + e.getMessage());
Sean Condonfae8e662016-12-15 10:25:13 +0000417 }
418 }
419
420 @Test
421 public void testAbortLoopback() throws NetconfException {
Sean Condon0e89bda2017-03-21 14:23:19 +0000422 AbortLoopbackInput lbAbort = new DefaultAbortLoopbackInput();
423
424 lbAbort.maintenanceDomain((short) 70);
425 lbAbort.maintenanceAssociation((short) 71);
426 lbAbort.maintenanceAssociationEndPoint((short) 72);
427
Sean Condonfae8e662016-12-15 10:25:13 +0000428 try {
Sean Condon0e89bda2017-03-21 14:23:19 +0000429 mseaCfmService.abortLoopback(lbAbort, session);
430 } catch (NetconfException e) {
431 fail("Calling of AbortLoopback failed: " + e.getMessage());
Sean Condonfae8e662016-12-15 10:25:13 +0000432 }
433 }
434
435 @Test
436 public void testTransmitLinktrace() throws NetconfException {
437 try {
438 mseaCfmService.transmitLinktrace(null, session);
439 } catch (UnsupportedOperationException e) {
440 assertTrue(e.getMessage().contains("Not yet implemented"));
441 }
442 }
443
444}