2 * Copyright (c) 2016 Cisco and/or its affiliates.
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:
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package io.fd.honeycomb.vppnsh.impl.oper;
19 import static org.junit.Assert.assertEquals;
20 import static org.mockito.Matchers.any;
21 import static org.mockito.Mockito.doReturn;
22 import static org.mockito.Mockito.verify;
24 import com.google.common.collect.Lists;
25 import io.fd.honeycomb.translate.read.ReadFailedException;
26 import io.fd.honeycomb.translate.spi.read.ReaderCustomizer;
27 import io.fd.honeycomb.translate.vpp.util.NamingContext;
28 import io.fd.honeycomb.vpp.test.read.ListReaderCustomizerTest;
29 import io.fd.vpp.jvpp.VppBaseCallException;
30 import io.fd.vpp.jvpp.nsh.dto.NshEntryDetails;
31 import io.fd.vpp.jvpp.nsh.dto.NshEntryDetailsReplyDump;
32 import io.fd.vpp.jvpp.nsh.dto.NshEntryDump;
33 import io.fd.vpp.jvpp.nsh.future.FutureJVppNsh;
34 import java.util.List;
35 import org.junit.Test;
36 import org.mockito.Mock;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.nsh.rev160624.Ethernet;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.nsh.rev160624.MdType1;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.nsh.rev160624.NshMdType1StateAugment;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.nsh.rev160624.vpp.nsh.state.NshEntries;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.nsh.rev160624.vpp.nsh.state.NshEntriesBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.nsh.rev160624.vpp.nsh.state.nsh.entries.NshEntry;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.nsh.rev160624.vpp.nsh.state.nsh.entries.NshEntryBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.nsh.rev160624.vpp.nsh.state.nsh.entries.NshEntryKey;
45 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
48 public class NshEntryReaderCustomizerTest extends
49 ListReaderCustomizerTest<NshEntry, NshEntryKey, NshEntryBuilder> {
51 private static final String ENTRY_CTX_NAME = "nsh-entry-instance";
52 private static final int ENTRY_INDEX_1 = 1;
53 private static final String ENTRY_NAME_1 = "entry1";
54 private static final int ENTRY_INDEX_2 = 2;
55 private static final String ENTRY_NAME_2 = "entry2";
58 protected FutureJVppNsh jvppNsh;
60 private NamingContext nshContext;
62 public NshEntryReaderCustomizerTest() {
63 super(NshEntry.class, NshEntriesBuilder.class);
67 protected ReaderCustomizer<NshEntry, NshEntryBuilder> initCustomizer() {
68 return new NshEntryReaderCustomizer(jvppNsh, nshContext);
71 private static InstanceIdentifier<NshEntry> getNshEntryId(final String name) {
72 return InstanceIdentifier.create(NshEntries.class)
73 .child(NshEntry.class, new NshEntryKey(name));
77 public void setUp() throws VppBaseCallException {
78 nshContext = new NamingContext("nsh_entry", ENTRY_CTX_NAME);
79 defineMapping(mappingContext, ENTRY_NAME_1, ENTRY_INDEX_1, ENTRY_CTX_NAME);
80 defineMapping(mappingContext, ENTRY_NAME_2, ENTRY_INDEX_2, ENTRY_CTX_NAME);
82 final NshEntryDetailsReplyDump reply = new NshEntryDetailsReplyDump();
83 final NshEntryDetails nshEntryDetails = new NshEntryDetails();
84 nshEntryDetails.verOC = 0;
85 nshEntryDetails.length = 6;
86 nshEntryDetails.mdType = 1;
87 nshEntryDetails.nextProtocol = 3;
88 nshEntryDetails.nspNsi = (123<<8 | 4);
89 nshEntryDetails.c1 = 1;
90 nshEntryDetails.c2 = 2;
91 nshEntryDetails.c3 = 3;
92 nshEntryDetails.c4 = 4;
93 reply.nshEntryDetails = Lists.newArrayList(nshEntryDetails);
94 doReturn(future(reply)).when(jvppNsh).nshEntryDump(any(NshEntryDump.class));
98 public void testreadCurrentAttributes() throws ReadFailedException {
100 NshEntryBuilder builder = new NshEntryBuilder();
101 getCustomizer().readCurrentAttributes(getNshEntryId(ENTRY_NAME_1), builder, ctx);
103 assertEquals(0, builder.getVersion().intValue());
104 assertEquals(6, builder.getLength().intValue());
105 assertEquals(MdType1.class, builder.getMdType());
106 assertEquals(Ethernet.class, builder.getNextProtocol());
107 assertEquals(123, builder.getNsp().intValue());
108 assertEquals(4, builder.getNsi().intValue());
109 assertEquals(1, builder.getAugmentation(NshMdType1StateAugment.class).getC1().intValue());
110 assertEquals(2, builder.getAugmentation(NshMdType1StateAugment.class).getC2().intValue());
111 assertEquals(3, builder.getAugmentation(NshMdType1StateAugment.class).getC3().intValue());
112 assertEquals(4, builder.getAugmentation(NshMdType1StateAugment.class).getC4().intValue());
114 verify(jvppNsh).nshEntryDump(any(NshEntryDump.class));
118 public void testGetAllIds() throws ReadFailedException {
119 final NshEntryDetailsReplyDump reply = new NshEntryDetailsReplyDump();
121 final NshEntryDetails nshEntryDetails_1 = new NshEntryDetails();
122 nshEntryDetails_1.entryIndex = ENTRY_INDEX_1;
123 nshEntryDetails_1.verOC = 0;
124 nshEntryDetails_1.length = 6;
125 nshEntryDetails_1.mdType = 1;
126 nshEntryDetails_1.nextProtocol = 3;
127 nshEntryDetails_1.nspNsi = (123<<8 | 4);
128 nshEntryDetails_1.c1 = 1;
129 nshEntryDetails_1.c2 = 2;
130 nshEntryDetails_1.c3 = 3;
131 nshEntryDetails_1.c4 = 4;
132 reply.nshEntryDetails = Lists.newArrayList(nshEntryDetails_1);
134 final NshEntryDetails nshEntryDetails_2 = new NshEntryDetails();
135 nshEntryDetails_2.entryIndex = ENTRY_INDEX_2;
136 nshEntryDetails_2.verOC = 0;
137 nshEntryDetails_2.length = 6;
138 nshEntryDetails_2.mdType = 1;
139 nshEntryDetails_2.nextProtocol = 2;
140 nshEntryDetails_2.nspNsi = (223<<8 | 24);
141 nshEntryDetails_2.c1 = 21;
142 nshEntryDetails_2.c2 = 22;
143 nshEntryDetails_2.c3 = 23;
144 nshEntryDetails_2.c4 = 24;
145 reply.nshEntryDetails = Lists.newArrayList(nshEntryDetails_2);
147 doReturn(future(reply)).when(jvppNsh).nshEntryDump(any(NshEntryDump.class));
149 final List<NshEntryKey> allIds = getCustomizer().getAllIds(getNshEntryId(ENTRY_NAME_1), ctx);
151 assertEquals(reply.nshEntryDetails.size(), allIds.size());