2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.ccsdk.sli.plugins.yangserializers.dfserializer;
23 import java.util.HashMap;
26 import org.junit.Before;
27 import org.junit.Test;
28 import org.mockito.invocation.InvocationOnMock;
29 import org.mockito.stubbing.Answer;
30 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
31 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
32 import org.onap.ccsdk.sli.plugins.restapicall.HttpResponse;
33 import org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode;
34 import org.onap.ccsdk.sli.plugins.restconfapicall.RestconfApiCallNode;
35 import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
37 import static org.hamcrest.MatcherAssert.assertThat;
38 import static org.hamcrest.core.Is.is;
39 import static org.mockito.Matchers.any;
40 import static org.mockito.Mockito.doAnswer;
41 import static org.mockito.Mockito.doCallRealMethod;
42 import static org.mockito.Mockito.doReturn;
43 import static org.mockito.Mockito.mock;
44 import static org.onap.ccsdk.sli.plugins.restapicall.HttpMethod.GET;
45 import static org.onap.ccsdk.sli.plugins.restapicall.HttpMethod.PATCH;
46 import static org.onap.ccsdk.sli.plugins.restapicall.HttpMethod.POST;
47 import static org.onap.ccsdk.sli.plugins.restapicall.HttpMethod.PUT;
48 import static org.onap.ccsdk.sli.plugins.restconfapicall.RestconfApiUtils.parseUrl;
49 import static org.onap.ccsdk.sli.plugins.yangserializers.dfserializer.DataFormatUtilsTest.DECODE_FROM_JSON_RPC;
50 import static org.onap.ccsdk.sli.plugins.yangserializers.dfserializer.DataFormatUtilsTest.DECODE_FROM_XML_RPC;
51 import static org.onap.ccsdk.sli.plugins.yangserializers.dfserializer.DataFormatUtilsTest.ENCODE_TO_JSON_ID;
52 import static org.onap.ccsdk.sli.plugins.yangserializers.dfserializer.DataFormatUtilsTest.ENCODE_TO_JSON_ID_PUT;
53 import static org.onap.ccsdk.sli.plugins.yangserializers.dfserializer.DataFormatUtilsTest.ENCODE_TO_JSON_RPC;
54 import static org.onap.ccsdk.sli.plugins.yangserializers.dfserializer.DataFormatUtilsTest.ENCODE_TO_JSON_YANG;
55 import static org.onap.ccsdk.sli.plugins.yangserializers.dfserializer.DataFormatUtilsTest.ENCODE_TO_JSON_YANG_AUG_POST;
56 import static org.onap.ccsdk.sli.plugins.yangserializers.dfserializer.DataFormatUtilsTest.ENCODE_TO_JSON_YANG_PUT;
57 import static org.onap.ccsdk.sli.plugins.yangserializers.dfserializer.DataFormatUtilsTest.ENCODE_TO_XML_ID;
58 import static org.onap.ccsdk.sli.plugins.yangserializers.dfserializer.DataFormatUtilsTest.ENCODE_TO_XML_ID_PUT;
59 import static org.onap.ccsdk.sli.plugins.yangserializers.dfserializer.DataFormatUtilsTest.ENCODE_TO_XML_RPC;
60 import static org.onap.ccsdk.sli.plugins.yangserializers.dfserializer.DataFormatUtilsTest.ENCODE_TO_XML_YANG;
61 import static org.onap.ccsdk.sli.plugins.yangserializers.dfserializer.DataFormatUtilsTest.ENCODE_TO_XML_YANG_AUG_POST;
62 import static org.onap.ccsdk.sli.plugins.yangserializers.dfserializer.DataFormatUtilsTest.ENCODE_TO_XML_YANG_PUT;
66 * Unit test cases for data format serialization and restconf api call node.
68 public class DataFormatSerializerTest {
70 private Map<String, String> p;
72 private RestconfApiCallNode restconf;
74 private RestapiCallNode restApi;
76 private DfCaptor dfCaptor;
79 * Sets up the pre-requisite for each test case.
81 * @throws SvcLogicException when test case fails
84 public void setUp() throws SvcLogicException {
86 p.put("restapiUser", "user1");
87 p.put("restapiPassword", "abc123");
88 p.put("responsePrefix", "response");
89 p.put("skipSending", "true");
90 restApi = new RestapiCallNode();
91 restconf = mock(RestconfApiCallNode.class);
92 dfCaptor = new DfCaptor();
97 * Creates method mocks using mockito for RestconfApiCallNode class.
99 * @throws SvcLogicException when test case fails
101 private void createMethodMocks() throws SvcLogicException {
102 doReturn(restApi).when(restconf).getRestapiCallNode();
103 doCallRealMethod().when(restconf).sendRequest(
104 any(Map.class), any(SvcLogicContext.class));
105 doCallRealMethod().when(restconf).sendRequest(
106 any(Map.class), any(SvcLogicContext.class), any(Integer.class));
107 doAnswer(dfCaptor).when(restconf).serializeRequest(
108 any(Map.class), any(YangParameters.class), any(String.class),
109 any(InstanceIdentifierContext.class));
110 doAnswer(dfCaptor).when(restconf).updateReq(
111 any(String.class), any(YangParameters.class),
112 any(InstanceIdentifierContext.class));
116 * Creates mock using mockito with input data for decoding.
118 * @param decodeData input data
119 * @throws SvcLogicException when test case fails
121 private void createMockForDecode(String decodeData)
122 throws SvcLogicException {
123 doReturn(decodeData).when(restconf).getResponse(
124 any(SvcLogicContext.class), any(YangParameters.class),
125 any(String.class), any(HttpResponse.class));
126 doCallRealMethod().when(restconf).serializeResponse(
127 any(YangParameters.class), any(String.class), any(String.class),
128 any(InstanceIdentifierContext.class));
132 * Verifies encoding of parameters to JSON data format with identity-ref
133 * and inter-file linking.
135 * @throws SvcLogicException when test case fails
138 public void encodeToJsonId() throws SvcLogicException {
139 String pre = "identity-test_test.";
140 SvcLogicContext ctx = createAttList(pre);
141 ctx.setAttribute(pre + "l", "abc");
142 p.put("dirPath", "src/test/resources");
143 p.put("format", "json");
144 p.put("httpMethod", "post");
145 p.put("restapiUrl", "http://echo.getpostman" +
146 ".com/restconf/operations/identity-test:test");
147 restconf.sendRequest(p, ctx);
148 assertThat(dfCaptor.getResult(), is(ENCODE_TO_JSON_ID));
152 * Verifies encoding of parameters to JSON data format with identity-ref
153 * and inter-file linking for put operation-type.
155 * @throws SvcLogicException when test case fails
158 public void encodeToJsonIdWithPut() throws SvcLogicException {
159 String pre = "identity-test_test.";
160 SvcLogicContext ctx = createAttList(pre);
161 ctx.setAttribute(pre + "l", "abc");
162 p.put("dirPath", "src/test/resources");
163 p.put("format", "json");
164 p.put("httpMethod", "put");
165 p.put("restapiUrl", "http://echo.getpostman" +
166 ".com/restconf/operations/identity-test:test");
167 restconf.sendRequest(p, ctx);
168 assertThat(dfCaptor.getResult(), is(ENCODE_TO_JSON_ID_PUT));
172 * Verifies encoding of parameters to JSON data format with identity-ref
173 * and inter-file linking for patch operation-type.
175 * @throws SvcLogicException when test case fails
178 public void encodeToJsonIdWithPatch() throws SvcLogicException {
179 String pre = "identity-test_test.";
180 SvcLogicContext ctx = createAttList(pre);
181 ctx.setAttribute(pre + "l", "abc");
182 p.put("dirPath", "src/test/resources");
183 p.put("format", "json");
184 p.put("httpMethod", "patch");
185 p.put("restapiUrl", "http://echo.getpostman" +
186 ".com/restconf/operations/identity-test:test");
187 restconf.sendRequest(p, ctx);
188 assertThat(dfCaptor.getResult(), is(ENCODE_TO_JSON_ID_PUT));
192 * Verifies encoding of parameters to XML data format with identity-ref
193 * and inter-file linking.
195 * @throws SvcLogicException when test case fails
198 public void encodeToXmlId() throws SvcLogicException {
199 String pre = "identity-test_test.";
200 SvcLogicContext ctx = createAttList(pre);
201 p.put("dirPath", "src/test/resources");
202 p.put("format", "xml");
203 p.put("httpMethod", "post");
204 p.put("restapiUrl", "http://echo.getpostman" +
205 ".com/restconf/operations/identity-test:test");
206 restconf.sendRequest(p, ctx);
207 assertThat(dfCaptor.getResult(), is(ENCODE_TO_XML_ID));
211 * Verifies encoding of parameters to XML data format with identity-ref
212 * and inter-file linking for put operation-type.
214 * @throws SvcLogicException when test case fails
217 public void encodeToXmlIdWithPut() throws SvcLogicException {
218 String pre = "identity-test_test.";
219 SvcLogicContext ctx = createAttList(pre);
220 p.put("dirPath", "src/test/resources");
221 p.put("format", "xml");
222 p.put("httpMethod", "put");
223 p.put("restapiUrl", "http://echo.getpostman" +
224 ".com/restconf/operations/identity-test:test");
225 restconf.sendRequest(p, ctx);
226 assertThat(dfCaptor.getResult(), is(ENCODE_TO_XML_ID_PUT));
230 * Verifies encoding of parameters to XML data format with identity-ref
231 * and inter-file linking for patch operation-type.
233 * @throws SvcLogicException when test case fails
236 public void encodeToXmlIdWithPatch() throws SvcLogicException {
237 String pre = "identity-test_test.";
238 SvcLogicContext ctx = createAttList(pre);
239 p.put("dirPath", "src/test/resources");
240 p.put("format", "xml");
241 p.put("httpMethod", "patch");
242 p.put("restapiUrl", "http://echo.getpostman" +
243 ".com/restconf/operations/identity-test:test");
244 restconf.sendRequest(p, ctx);
245 assertThat(dfCaptor.getResult(), is(ENCODE_TO_XML_ID_PUT));
249 * Verifies decoding of parameters from JSON data format with identity-ref
250 * and inter-file linking.
252 * @throws SvcLogicException when test case fails
255 public void decodeToJsonId() throws SvcLogicException {
256 createMockForDecode(ENCODE_TO_JSON_ID);
257 SvcLogicContext ctx = new SvcLogicContext();
258 String pre = "identity-test_test.";
259 p.put("dirPath", "src/test/resources");
260 p.put("format", "json");
261 p.put("httpMethod", "get");
262 p.put("restapiUrl", "http://echo.getpostman" +
263 ".com/restconf/operations/identity-test:test");
264 restconf.sendRequest(p, ctx);
265 assertThat(ctx.getAttribute(pre + "l"), is("abc"));
266 verifyAttList(ctx, pre);
270 * Verifies decoding of parameters from XML data format with identity-ref
271 * and inter-file linking.
273 * @throws SvcLogicException when test case fails
276 public void decodeToXmlId() throws SvcLogicException {
277 createMockForDecode(ENCODE_TO_XML_ID);
278 SvcLogicContext ctx = new SvcLogicContext();
279 String pre = "identity-test_test.";
280 p.put("dirPath", "src/test/resources");
281 p.put("format", "xml");
282 p.put("httpMethod", "get");
283 p.put("restapiUrl", "http://echo.getpostman" +
284 ".com/restconf/operations/identity-test:test");
285 restconf.sendRequest(p, ctx);
286 verifyAttList(ctx, pre);
290 * Verifies encoding of parameters to JSON data format with containers,
291 * grouping and augment.
293 * @throws SvcLogicException when test case fails
296 public void encodeToJsonYang() throws SvcLogicException {
297 String pre = "test-yang_cont1.cont2.";
298 SvcLogicContext ctx = createAttListYang(pre);
299 p.put("dirPath", "src/test/resources");
300 p.put("format", "json");
301 p.put("httpMethod", "post");
302 p.put("restapiUrl", "http://echo.getpostman" +
303 ".com/restconf/operations/test-yang:cont1");
304 restconf.sendRequest(p, ctx);
305 assertThat(dfCaptor.getResult(), is(ENCODE_TO_JSON_YANG));
309 * Verifies encoding of parameters to JSON data format with containers,
310 * grouping and augment for put operation-type.
312 * @throws SvcLogicException when test case fails
315 public void encodeToJsonYangWithPut() throws SvcLogicException {
316 String pre = "test-yang_cont1.cont2.";
317 SvcLogicContext ctx = createAttListYang(pre);
318 p.put("dirPath", "src/test/resources");
319 p.put("format", "json");
320 p.put("httpMethod", "put");
321 p.put("restapiUrl", "http://echo.getpostman" +
322 ".com/restconf/operations/test-yang:cont1/cont2/cont4");
323 restconf.sendRequest(p, ctx);
324 assertThat(dfCaptor.getResult(), is(ENCODE_TO_JSON_YANG_PUT));
328 * Verifies encoding of parameters to JSON data format with containers,
329 * grouping and augment for patch operation-type.
331 * @throws SvcLogicException when test case fails
334 public void encodeToJsonYangWithPatch() throws SvcLogicException {
335 String pre = "test-yang_cont1.cont2.";
336 SvcLogicContext ctx = createAttListYang(pre);
337 p.put("dirPath", "src/test/resources");
338 p.put("format", "json");
339 p.put("httpMethod", "patch");
340 p.put("restapiUrl", "http://echo.getpostman" +
341 ".com/restconf/operations/test-yang:cont1/cont2/cont4");
342 restconf.sendRequest(p, ctx);
343 assertThat(dfCaptor.getResult(), is(ENCODE_TO_JSON_YANG_PUT));
347 * Verifies encoding of parameters to JSON data format with augment as
350 * @throws SvcLogicException when test case fails
353 public void encodeToJsonWithAugAsRootChild() throws SvcLogicException {
354 String pre = "test-yang_cont1.cont2.";
355 SvcLogicContext ctx = createAttListYang(pre);
356 p.put("dirPath", "src/test/resources");
357 p.put("format", "json");
358 p.put("httpMethod", "post");
359 p.put("restapiUrl", "http://echo.getpostman" +
360 ".com/restconf/operations/test-yang:cont1/cont2/cont4");
361 restconf.sendRequest(p, ctx);
362 assertThat(dfCaptor.getResult(), is(ENCODE_TO_JSON_YANG_AUG_POST));
366 * Verifies decoding of parameters from JSON data format with containers,
367 * grouping and augment.
369 * @throws SvcLogicException when test case fails
372 public void decodeToJsonYang() throws SvcLogicException {
373 createMockForDecode(ENCODE_TO_JSON_YANG);
374 SvcLogicContext ctx = new SvcLogicContext();
375 String pre = "test-yang_cont1.cont2.";
376 p.put("dirPath", "src/test/resources");
377 p.put("format", "json");
378 p.put("httpMethod", "get");
379 p.put("restapiUrl", "http://echo.getpostman" +
380 ".com/restconf/operations/test-yang:cont1");
381 restconf.sendRequest(p, ctx);
382 verifyAttListYang(ctx, pre);
386 * Verifies encoding of parameters to XML data format with containers,
387 * grouping and augment.
389 * @throws SvcLogicException when test case fails
392 public void encodeToXmlYang() throws SvcLogicException {
393 String pre = "test-yang_cont1.cont2.";
394 SvcLogicContext ctx = createAttListYang(pre);
395 p.put("dirPath", "src/test/resources");
396 p.put("format", "xml");
397 p.put("httpMethod", "post");
398 p.put("restapiUrl", "http://echo.getpostman" +
399 ".com/restconf/operations/test-yang:cont1");
400 restconf.sendRequest(p, ctx);
401 assertThat(dfCaptor.getResult(), is(ENCODE_TO_XML_YANG));
405 * Verifies encoding of parameters to XML data format with containers,
406 * grouping and augment for put operation-type
408 * @throws SvcLogicException when test case fails
411 public void encodeToXmlYangWithPut() throws SvcLogicException {
412 String pre = "test-yang_cont1.cont2.";
413 SvcLogicContext ctx = createAttListYang(pre);
414 p.put("dirPath", "src/test/resources");
415 p.put("format", "xml");
416 p.put("httpMethod", "put");
417 p.put("restapiUrl", "http://echo.getpostman" +
418 ".com/restconf/operations/test-yang:cont1/cont2/cont4");
419 restconf.sendRequest(p, ctx);
420 assertThat(dfCaptor.getResult(), is(ENCODE_TO_XML_YANG_PUT));
424 * Verifies encoding of parameters to XML data format with containers,
425 * grouping and augment for patch operation-type
427 * @throws SvcLogicException when test case fails
430 public void encodeToXmlYangWithPatch() throws SvcLogicException {
431 String pre = "test-yang_cont1.cont2.";
432 SvcLogicContext ctx = createAttListYang(pre);
433 p.put("dirPath", "src/test/resources");
434 p.put("format", "xml");
435 p.put("httpMethod", "put");
436 p.put("restapiUrl", "http://echo.getpostman" +
437 ".com/restconf/operations/test-yang:cont1/cont2/cont4");
438 restconf.sendRequest(p, ctx);
439 assertThat(dfCaptor.getResult(), is(ENCODE_TO_XML_YANG_PUT));
443 * Verifies encoding of parameters to XML data format with augment as
446 * @throws SvcLogicException when test case fails
449 public void encodeToXmlWithAugAsRootChild() throws SvcLogicException {
450 String pre = "test-yang_cont1.cont2.";
451 SvcLogicContext ctx = createAttListYang(pre);
452 p.put("dirPath", "src/test/resources");
453 p.put("format", "xml");
454 p.put("httpMethod", "post");
455 p.put("restapiUrl", "http://echo.getpostman" +
456 ".com/restconf/operations/test-yang:cont1/cont2/cont4");
457 restconf.sendRequest(p, ctx);
458 assertThat(dfCaptor.getResult(), is(ENCODE_TO_XML_YANG_AUG_POST));
462 * Verifies decoding of parameters from XML data format with containers,
463 * grouping and augment.
465 * @throws SvcLogicException when test case fails
468 public void decodeToXmlYang() throws SvcLogicException {
469 createMockForDecode(ENCODE_TO_XML_YANG);
470 SvcLogicContext ctx = new SvcLogicContext();
471 String pre = "test-yang_cont1.cont2.";
472 p.put("dirPath", "src/test/resources");
473 p.put("format", "xml");
474 p.put("httpMethod", "get");
475 p.put("restapiUrl", "http://echo.getpostman" +
476 ".com/restconf/operations/test-yang:cont1");
477 restconf.sendRequest(p, ctx);
478 verifyAttListYang(ctx, pre);
482 * Verifies encoding of and decoding from, JSON respectively for data
483 * format with containers, grouping and augment.
485 * @throws SvcLogicException when test case fails
488 public void codecToJsonRpc() throws SvcLogicException {
489 createMockForDecode(DECODE_FROM_JSON_RPC);
490 String inPre = "test-yang_create-sfc.input.";
491 String outPre = "test-yang_create-sfc.output.";
492 SvcLogicContext ctx = createAttListRpc(inPre);
493 p.put("dirPath", "src/test/resources");
494 p.put("format", "json");
495 p.put("httpMethod", "post");
496 p.put("restapiUrl", "http://echo.getpostman" +
497 ".com/restconf/operations/test-yang:create-sfc");
498 restconf.sendRequest(p, ctx);
499 assertThat(dfCaptor.getResult(), is(ENCODE_TO_JSON_RPC));
500 verifyAttListRpc(ctx, outPre);
504 * Verifies encoding of and decoding from, XML respectively for data
505 * format with containers, grouping and augment.
507 * @throws SvcLogicException when test case fails
510 public void codecToXmlRpc() throws SvcLogicException {
511 createMockForDecode(DECODE_FROM_XML_RPC);
512 String inPre = "test-yang_create-sfc.input.";
513 String outPre = "test-yang_create-sfc.output.";
514 SvcLogicContext ctx = createAttListRpc(inPre);
515 p.put("dirPath", "src/test/resources");
516 p.put("format", "xml");
517 p.put("httpMethod", "post");
518 p.put("restapiUrl", "http://echo.getpostman" +
519 ".com/restconf/operations/test-yang:create-sfc");
520 restconf.sendRequest(p, ctx);
521 assertThat(dfCaptor.getResult(), is(ENCODE_TO_XML_RPC));
522 verifyAttListRpc(ctx, outPre);
526 * Verifies URL parser returning path with only schema information for all
529 * @throws SvcLogicException when test case fails
532 public void validateUrlParser() throws SvcLogicException {
533 String actVal = "identity-test:test";
534 String putId = "/for-put";
535 String url1 = "http://echo.getpostman.com/restconf/operations/" +
537 String url2 = "http://echo.getpostman.com/restconf/data/" + actVal;
538 String url3 = "https://echo.getpostman.com/restconf/operations/" +
540 String url4 = "https://echo.getpostman.com/restconf/data/" + actVal +
542 String url5 = "http://localhost:8282/restconf/operations/" + actVal;
543 String url6 = "https://localhost:8282/restconf/operations/" + actVal;
544 String url7 = "http://localhost:8282/restconf/data/" + actVal +
546 String url8 = "https://localhost:8282/restconf/data/" + actVal;
547 String url9 = "http://182.2.61.24:2250/restconf/data/" + actVal;
548 String url10 = "https://182.2.61.24:2250/restconf/operations/" + actVal;
549 String val1 = parseUrl(url1, POST);
550 String val2 = parseUrl(url2, GET);
551 String val3 = parseUrl(url3, PATCH);
552 String val4 = parseUrl(url4, PUT);
553 String val5 = parseUrl(url5, GET);
554 String val6 = parseUrl(url6, POST);
555 String val7 = parseUrl(url7, PUT);
556 String val8 = parseUrl(url8, POST);
557 String val9 = parseUrl(url9, GET);
558 String val10 = parseUrl(url10, POST);
559 assertThat(val1, is(actVal));
560 assertThat(val2, is(actVal));
561 assertThat(val3, is(actVal));
562 assertThat(val4, is(actVal + putId));
563 assertThat(val5, is(actVal));
564 assertThat(val6, is(actVal));
565 assertThat(val7, is(actVal + putId));
566 assertThat(val8, is(actVal));
567 assertThat(val9, is(actVal));
568 assertThat(val10, is(actVal));
572 * Creates attribute list for encoding JSON or XML with identity-ref YANG
576 * @return service logic context
578 private SvcLogicContext createAttList(String pre) {
579 SvcLogicContext ctx = new SvcLogicContext();
580 String pre1 = pre + "con1.interfaces.";
581 ctx.setAttribute(pre + "con1.interface", "identity-types:physical");
582 ctx.setAttribute(pre1 + "int-list[0].iden", "optical");
583 ctx.setAttribute(pre1 + "int-list[0].available.ll[0]", "Giga");
584 ctx.setAttribute(pre1 + "int-list[0].available.ll[1]",
585 "identity-types:Loopback");
586 ctx.setAttribute(pre1 + "int-list[0].available.ll[2]",
587 "identity-types-second:Ethernet");
588 ctx.setAttribute(pre1 + "int-list[0].available.leaf1", "58");
589 ctx.setAttribute(pre1 + "int-list[0].available.leaf2",
590 "identity-types-second:iden2");
592 ctx.setAttribute(pre1 + "int-list[1].iden", "214748364");
593 ctx.setAttribute(pre1 + "int-list[1].available.ll[0]", "Giga");
594 ctx.setAttribute(pre1 + "int-list[1].available.ll[1]",
595 "identity-types:Loopback");
596 ctx.setAttribute(pre1 + "int-list[1].available.ll[2]",
597 "identity-types-second:Ethernet");
598 ctx.setAttribute(pre1 + "int-list[1].available.leaf1",
600 ctx.setAttribute(pre1 + "int-list[1].available.leaf2",
601 "identity-types-second:iden2");
606 * Creates attribute list for encoding JSON or XML with container,
607 * grouping and augmented YANG file.
610 * @return service logic context
612 private SvcLogicContext createAttListYang(String pre) {
613 SvcLogicContext ctx = new SvcLogicContext();
614 ctx.setAttribute(pre + "cont3.leaf10", "abc");
615 ctx.setAttribute(pre + "list1[0].leaf1", "true");
616 ctx.setAttribute(pre + "list1[0].leaf2", "abc");
617 ctx.setAttribute(pre + "list1[0].leaf3", "abc");
618 ctx.setAttribute(pre + "list1[0].ll1[0]", "abc");
619 ctx.setAttribute(pre + "list1[0].ll1[1]", "abc");
620 ctx.setAttribute(pre + "list1[0].ll2[0]", "abc");
621 ctx.setAttribute(pre + "list1[0].ll2[1]", "abc");
622 ctx.setAttribute(pre + "list1[0].cont4.leaf11", "abc");
623 ctx.setAttribute(pre + "list1[0].list4[0].leaf8", "abc");
624 ctx.setAttribute(pre + "list1[0].list4[1].leaf8", "abc");
625 ctx.setAttribute(pre + "list1[0].list5[0].leaf9", "abc");
626 ctx.setAttribute(pre + "list1[0].list5[1].leaf9", "abc");
627 ctx.setAttribute(pre + "list1[1].leaf1", "true");
628 ctx.setAttribute(pre + "list1[1].leaf2", "abc");
629 ctx.setAttribute(pre + "list1[1].leaf3", "abc");
630 ctx.setAttribute(pre + "list1[1].ll1[0]", "abc");
631 ctx.setAttribute(pre + "list1[1].ll1[1]", "abc");
632 ctx.setAttribute(pre + "list1[1].ll2[0]", "abc");
633 ctx.setAttribute(pre + "list1[1].ll2[1]", "abc");
634 ctx.setAttribute(pre + "list1[1].cont4.leaf11", "abc");
635 ctx.setAttribute(pre + "list1[1].list4[0].leaf8", "abc");
636 ctx.setAttribute(pre + "list1[1].list4[1].leaf8", "abc");
637 ctx.setAttribute(pre + "list1[1].list5[0].leaf9", "abc");
638 ctx.setAttribute(pre + "list1[1].list5[1].leaf9", "abc");
639 ctx.setAttribute(pre + "list2[0].leaf4", "abc");
640 ctx.setAttribute(pre + "list2[1].leaf4", "abc");
641 ctx.setAttribute(pre + "leaf5", "abc");
642 ctx.setAttribute(pre + "leaf6", "abc");
643 ctx.setAttribute(pre + "ll3[0]", "abc");
644 ctx.setAttribute(pre + "ll3[1]", "abc");
645 ctx.setAttribute(pre + "ll4[0]", "abc");
646 ctx.setAttribute(pre + "ll4[1]", "abc");
647 ctx.setAttribute(pre + "cont4.leaf10", "abc");
648 ctx.setAttribute(pre + "list6[0].leaf11", "abc");
649 ctx.setAttribute(pre + "list6[1].leaf11", "abc");
650 ctx.setAttribute(pre + "leaf12", "abc");
651 ctx.setAttribute(pre + "ll5[0]", "abc");
652 ctx.setAttribute(pre + "ll5[1]", "abc");
653 ctx.setAttribute(pre + "cont4.test-augment_cont5.leaf13", "true");
654 ctx.setAttribute(pre + "cont4.test-augment_list7[0].leaf14", "test");
655 ctx.setAttribute(pre + "cont4.test-augment_list7[1].leaf14", "create");
656 ctx.setAttribute(pre + "cont4.test-augment_leaf15", "abc");
657 ctx.setAttribute(pre + "cont4.test-augment_ll6[0]", "unbounded");
658 ctx.setAttribute(pre + "cont4.test-augment_ll6[1]", "8");
659 ctx.setAttribute(pre + "cont4.test-augment_cont13.cont12.leaf26",
661 ctx.setAttribute(pre + "cont4.test-augment_cont13.list9[0].leaf27",
663 ctx.setAttribute(pre + "cont4.test-augment_cont13.list9[1].leaf27",
665 ctx.setAttribute(pre + "cont4.test-augment_cont13.leaf28", "abc");
666 ctx.setAttribute(pre + "cont4.test-augment_cont13.ll9[0]", "abc");
667 ctx.setAttribute(pre + "cont4.test-augment_cont13.ll9[1]", "abc");
672 * Creates attribute list for encoding JSON or XML with RPC YANG file.
675 * @return service logic context
677 private SvcLogicContext createAttListRpc(String pre) {
678 SvcLogicContext ctx = new SvcLogicContext();
679 ctx.setAttribute(pre + "cont14.leaf28", "abc");
680 ctx.setAttribute(pre + "list10[0].leaf29", "abc");
681 ctx.setAttribute(pre + "list10[1].leaf29", "abc");
682 ctx.setAttribute(pre + "leaf30", "abc");
683 ctx.setAttribute(pre + "ll10[0]", "abc");
684 ctx.setAttribute(pre + "ll10[1]", "abc");
685 ctx.setAttribute(pre + "cont15.leaf31", "abc");
686 ctx.setAttribute(pre + "cont13.list9[0].leaf27", "abc");
687 ctx.setAttribute(pre + "cont13.list9[1].leaf27", "abc");
688 ctx.setAttribute(pre + "cont13.leaf28", "abc");
689 ctx.setAttribute(pre + "cont13.ll9[0]", "abc");
690 ctx.setAttribute(pre + "cont13.ll9[1]", "abc");
695 * Verifies the attribute list for decoding from JSON or XML with
696 * identity-ref YANG file.
698 * @param ctx service logic context
701 private void verifyAttList(SvcLogicContext ctx, String pre) {
702 String pre1 = pre + "con1.interfaces.";
703 assertThat(ctx.getAttribute(pre + "con1.interface"), is(
704 "identity-types:physical"));
705 assertThat(ctx.getAttribute(pre + "con1.interface"), is(
706 "identity-types:physical"));
707 assertThat(ctx.getAttribute(pre1 + "int-list[0].iden"), is("optical"));
708 assertThat(ctx.getAttribute(pre1 + "int-list[0].available.ll[0]"), is(
710 assertThat(ctx.getAttribute(pre1 + "int-list[0].available.ll[1]"), is(
711 "identity-types:Loopback"));
712 assertThat(ctx.getAttribute(pre1 + "int-list[0].available.ll[2]"), is(
713 "identity-types-second:Ethernet"));
714 assertThat(ctx.getAttribute(pre1 + "int-list[0].available.leaf1"), is(
716 assertThat(ctx.getAttribute(pre1 + "int-list[0].available.leaf2"), is(
717 "identity-types-second:iden2"));
719 assertThat(ctx.getAttribute(pre1 + "int-list[1].iden"), is(
721 assertThat(ctx.getAttribute(pre1 + "int-list[1].available.ll[0]"), is(
723 assertThat(ctx.getAttribute(pre1 + "int-list[1].available.ll[1]"), is(
724 "identity-types:Loopback"));
725 assertThat(ctx.getAttribute(pre1 + "int-list[1].available.ll[2]"), is(
726 "identity-types-second:Ethernet"));
727 assertThat(ctx.getAttribute(pre1 + "int-list[1].available.leaf1"), is(
729 assertThat(ctx.getAttribute(pre1 + "int-list[1].available.leaf2"), is(
730 "identity-types-second:iden2"));
734 * Verifies the attribute list for decoding from JSON or XML with
735 * container, grouping and augmented file.
737 * @param ctx service logic context
740 private void verifyAttListYang(SvcLogicContext ctx, String pre) {
741 assertThat(ctx.getAttribute(pre + "cont3.leaf10"), is("abc"));
742 assertThat(ctx.getAttribute(pre + "list1[0].leaf1"), is("true"));
743 assertThat(ctx.getAttribute(pre + "list1[0].leaf2"), is("abc"));
744 assertThat(ctx.getAttribute(pre + "list1[0].leaf3"), is("abc"));
745 assertThat(ctx.getAttribute(pre + "list1[0].ll1[0]"), is("abc"));
746 assertThat(ctx.getAttribute(pre + "list1[0].ll1[1]"), is("abc"));
747 assertThat(ctx.getAttribute(pre + "list1[0].ll2[0]"), is("abc"));
748 assertThat(ctx.getAttribute(pre + "list1[0].ll2[1]"), is("abc"));
749 assertThat(ctx.getAttribute(pre + "list1[0].cont4.leaf11"), is("abc"));
750 assertThat(ctx.getAttribute(pre + "list1[0].list4[0].leaf8"),
752 assertThat(ctx.getAttribute(pre + "list1[0].list4[1].leaf8"),
754 assertThat(ctx.getAttribute(pre + "list1[0].list5[0].leaf9"),
756 assertThat(ctx.getAttribute(pre + "list1[0].list5[1].leaf9"),
758 assertThat(ctx.getAttribute(pre + "list1[1].leaf1"), is("true"));
759 assertThat(ctx.getAttribute(pre + "list1[1].leaf2"), is("abc"));
760 assertThat(ctx.getAttribute(pre + "list1[1].leaf3"), is("abc"));
761 assertThat(ctx.getAttribute(pre + "list1[1].ll1[0]"), is("abc"));
762 assertThat(ctx.getAttribute(pre + "list1[1].ll1[1]"), is("abc"));
763 assertThat(ctx.getAttribute(pre + "list1[1].ll2[0]"), is("abc"));
764 assertThat(ctx.getAttribute(pre + "list1[1].ll2[1]"), is("abc"));
765 assertThat(ctx.getAttribute(pre + "list1[1].cont4.leaf11"), is("abc"));
766 assertThat(ctx.getAttribute(pre + "list1[1].list4[0].leaf8"),
768 assertThat(ctx.getAttribute(pre + "list1[1].list4[1].leaf8"),
770 assertThat(ctx.getAttribute(pre + "list1[1].list5[0].leaf9"),
772 assertThat(ctx.getAttribute(pre + "list1[1].list5[1].leaf9"),
774 assertThat(ctx.getAttribute(pre + "list2[0].leaf4"), is("abc"));
775 assertThat(ctx.getAttribute(pre + "list2[1].leaf4"), is("abc"));
776 assertThat(ctx.getAttribute(pre + "leaf5"), is("abc"));
777 assertThat(ctx.getAttribute(pre + "leaf6"), is("abc"));
778 assertThat(ctx.getAttribute(pre + "ll3[0]"), is("abc"));
779 assertThat(ctx.getAttribute(pre + "ll3[1]"), is("abc"));
780 assertThat(ctx.getAttribute(pre + "ll4[0]"), is("abc"));
781 assertThat(ctx.getAttribute(pre + "ll4[1]"), is("abc"));
782 assertThat(ctx.getAttribute(pre + "cont4.leaf10"), is( "abc"));
783 assertThat(ctx.getAttribute(pre + "list6[0].leaf11"), is("abc"));
784 assertThat(ctx.getAttribute(pre + "list6[1].leaf11"), is("abc"));
785 assertThat(ctx.getAttribute(pre + "leaf12"), is("abc"));
786 assertThat(ctx.getAttribute(pre + "ll5[0]"), is("abc"));
787 assertThat(ctx.getAttribute(pre + "ll5[1]"), is("abc"));
788 assertThat(ctx.getAttribute(pre + "cont4.test-augment_cont5.leaf13"),
790 assertThat(ctx.getAttribute(pre + "cont4.test-augment_list7[0].leaf14"),
792 assertThat(ctx.getAttribute(pre + "cont4.test-augment_list7[1].leaf14"),
794 assertThat(ctx.getAttribute(pre + "cont4.test-augment_leaf15"),
796 assertThat(ctx.getAttribute(pre + "cont4.test-augment_ll6[0]"),
798 assertThat(ctx.getAttribute(pre + "cont4.test-augment_ll6[1]"),
800 assertThat(ctx.getAttribute(pre + "cont4.test-augment_cont13" +
801 ".cont12.leaf26"), is("abc"));
802 assertThat(ctx.getAttribute(pre + "cont4.test-augment_cont13.list9[0]" +
803 ".leaf27"), is("abc"));
804 assertThat(ctx.getAttribute(pre + "cont4.test-augment_cont13.list9[1]" +
805 ".leaf27"), is("abc"));
806 assertThat(ctx.getAttribute(pre + "cont4.test-augment_cont13.leaf28"),
808 assertThat(ctx.getAttribute(pre + "cont4.test-augment_cont13.ll9[0]"),
810 assertThat(ctx.getAttribute(pre + "cont4.test-augment_cont13.ll9[1]"),
815 * Verifies the attribute list for decoding from JSON or XML with
818 * @param ctx service logic context
821 private void verifyAttListRpc(SvcLogicContext ctx, String pre) {
822 assertThat(ctx.getAttribute(pre + "cont16.leaf32"), is("abc"));
823 assertThat(ctx.getAttribute(pre + "list11[0].leaf33"), is("abc"));
824 assertThat(ctx.getAttribute(pre + "list11[1].leaf33"), is("abc"));
825 assertThat(ctx.getAttribute(pre + "leaf34"), is("abc"));
826 assertThat(ctx.getAttribute(pre + "ll11[0]"), is("abc"));
827 assertThat(ctx.getAttribute(pre + "ll11[1]"), is("abc"));
828 assertThat(ctx.getAttribute(pre + "cont17.leaf35"), is("abc"));
829 assertThat(ctx.getAttribute(pre + "cont13.cont12.leaf26"), is("abc"));
830 assertThat(ctx.getAttribute(pre + "cont13.list9[0].leaf27"), is("abc"));
831 assertThat(ctx.getAttribute(pre + "cont13.list9[1].leaf27"), is("abc"));
832 assertThat(ctx.getAttribute(pre + "cont13.ll9[0]"), is("abc"));
833 assertThat(ctx.getAttribute(pre + "cont13.ll9[1]"), is("abc"));
834 assertThat(ctx.getAttribute(pre + "cont13.leaf28"), is("abc"));
838 * Captures the data format messages by mocking it, which can be used in
841 * @param <String> capturing data format
843 public class DfCaptor<String> implements Answer {
845 private String result;
848 * Returns the captured data format message.
850 * @return data format message.
852 public String getResult() {
857 public String answer(InvocationOnMock invocationOnMock)
859 result = (String) invocationOnMock.callRealMethod();