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.http.fd.io.hc2vpp.yang.vpp.fib.table.management.rev180521.Ipv4;
37 import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.fib.table.management.rev180521.Ipv6;
38 import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.fib.table.management.rev180521.VniReference;
39 import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.fib.table.management.rev180521.vpp.fib.table.management.FibTables;
40 import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.fib.table.management.rev180521.vpp.fib.table.management.fib.tables.Table;
41 import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.fib.table.management.rev180521.vpp.fib.table.management.fib.tables.TableKey;
43 @RunWith(HoneycombTestRunner.class)
44 public class FibTableCustomizerTest extends WriterCustomizerTest implements SchemaContextTestHelper,
46 private static final String FIB_PATH =
47 "/vpp-fib-table-management:fib-table-management/vpp-fib-table-management:fib-tables";
48 private static final String IPV4_VRF_0 = "ipv4-VRF:0";
49 private static final String IPV6_VRF_0 = "ipv6-VRF:0";
51 private ModificationCache modificationCache;
52 private FibTableCustomizer customizer;
55 protected void setUpTest() {
56 customizer = new FibTableCustomizer(api);
57 when(writeContext.getModificationCache()).thenReturn(modificationCache);
58 when(api.ipTableAddDel(any())).thenReturn(future(new IpTableAddDelReply()));
62 public void testWriteSimple(@InjectTestData(resourcePath = "/fib.json", id = FIB_PATH) FibTables tables)
63 throws WriteFailedException {
64 TableKey key = new TableKey(Ipv4.class, new VniReference(0L));
65 Table data = tables.getTable().stream().filter(table -> table.key().equals(key)).findAny().get();
66 customizer.writeCurrentAttributes(FibManagementIIds.FM_FIB_TABLES
67 .child(Table.class, key), data, writeContext);
68 final IpTableAddDel request = new IpTableAddDel();
72 request.name = IPV4_VRF_0.getBytes();
74 verify(api).ipTableAddDel(request);
78 public void testDelete(@InjectTestData(resourcePath = "/fib.json", id = FIB_PATH) FibTables tables)
79 throws WriteFailedException {
80 TableKey key = new TableKey(Ipv6.class, new VniReference(0L));
81 Table data = tables.getTable().stream().filter(table -> table.key().equals(key)).findAny().get();
82 customizer.deleteCurrentAttributes(FibManagementIIds.FM_FIB_TABLES
83 .child(Table.class, key), data, writeContext);
84 final IpTableAddDel request = new IpTableAddDel();
88 request.name = IPV6_VRF_0.getBytes();
90 verify(api).ipTableAddDel(request);