2 * Copyright (c) 2018 Bell Canada, Pantheon Technologies 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.hc2vpp.fib.management.write;
19 import static org.mockito.ArgumentMatchers.any;
20 import static org.mockito.Mockito.verify;
21 import static org.mockito.Mockito.when;
23 import io.fd.hc2vpp.common.test.write.WriterCustomizerTest;
24 import io.fd.hc2vpp.common.translate.util.ByteDataTranslator;
25 import io.fd.hc2vpp.fib.management.FibManagementIIds;
26 import io.fd.hc2vpp.fib.management.helpers.SchemaContextTestHelper;
27 import io.fd.honeycomb.test.tools.HoneycombTestRunner;
28 import io.fd.honeycomb.test.tools.annotations.InjectTestData;
29 import io.fd.honeycomb.translate.ModificationCache;
30 import io.fd.honeycomb.translate.write.WriteFailedException;
31 import io.fd.vpp.jvpp.core.dto.IpTableAddDel;
32 import io.fd.vpp.jvpp.core.dto.IpTableAddDelReply;
33 import org.junit.Test;
34 import org.junit.runner.RunWith;
35 import org.mockito.Mock;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.fib.table.management.rev180521.Ipv6;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.fib.table.management.rev180521.VniReference;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.fib.table.management.rev180521.vpp.fib.table.management.FibTables;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.fib.table.management.rev180521.vpp.fib.table.management.fib.tables.Table;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.fib.table.management.rev180521.vpp.fib.table.management.fib.tables.TableKey;
42 @RunWith(HoneycombTestRunner.class)
43 public class FibTableCustomizerTest extends WriterCustomizerTest implements SchemaContextTestHelper,
45 private static final String FIB_PATH =
46 "/vpp-fib-table-management:fib-table-management/vpp-fib-table-management:fib-tables";
47 private static final String IPV4_VRF_0 = "ipv4-VRF:0";
48 private static final String IPV6_VRF_0 = "ipv6-VRF:0";
50 private ModificationCache modificationCache;
51 private FibTableCustomizer customizer;
54 protected void setUpTest() {
55 customizer = new FibTableCustomizer(api);
56 when(writeContext.getModificationCache()).thenReturn(modificationCache);
57 when(api.ipTableAddDel(any())).thenReturn(future(new IpTableAddDelReply()));
61 public void testWriteSimple(@InjectTestData(resourcePath = "/fib.json", id = FIB_PATH) FibTables tables)
62 throws WriteFailedException {
63 final Table data = tables.getTable().get(0);
64 customizer.writeCurrentAttributes(FibManagementIIds.FM_FIB_TABLES
65 .child(Table.class, new TableKey(Ipv6.class, new VniReference(0L))), data, writeContext);
66 final IpTableAddDel request = new IpTableAddDel();
70 request.name = IPV4_VRF_0.getBytes();
72 verify(api).ipTableAddDel(request);
76 public void testDelete(@InjectTestData(resourcePath = "/fib.json", id = FIB_PATH) FibTables tables)
77 throws WriteFailedException {
78 final Table data = tables.getTable().get(3);
79 customizer.deleteCurrentAttributes(FibManagementIIds.FM_FIB_TABLES
80 .child(Table.class, new TableKey(Ipv6.class, new VniReference(0L))), data, writeContext);
81 final IpTableAddDel request = new IpTableAddDel();
85 request.name = IPV6_VRF_0.getBytes();
87 verify(api).ipTableAddDel(request);