c9d05dc45d490e0d67ab98b5e05fe64b26876d2c
[hc2vpp.git] /
1 /*
2  * Copyright (c) 2018 Bell Canada, Pantheon Technologies and/or its affiliates.
3  *
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  */
16
17 package io.fd.hc2vpp.fib.management.write;
18
19 import static org.mockito.ArgumentMatchers.any;
20 import static org.mockito.Mockito.verify;
21 import static org.mockito.Mockito.when;
22
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;
41
42 @RunWith(HoneycombTestRunner.class)
43 public class FibTableCustomizerTest extends WriterCustomizerTest implements SchemaContextTestHelper,
44         ByteDataTranslator {
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";
49     @Mock
50     private ModificationCache modificationCache;
51     private FibTableCustomizer customizer;
52
53     @Override
54     protected void setUpTest() {
55         customizer = new FibTableCustomizer(api);
56         when(writeContext.getModificationCache()).thenReturn(modificationCache);
57         when(api.ipTableAddDel(any())).thenReturn(future(new IpTableAddDelReply()));
58     }
59
60     @Test
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();
67         request.isAdd = 1;
68         request.isIpv6 = 0;
69         request.tableId = 0;
70         request.name = IPV4_VRF_0.getBytes();
71
72         verify(api).ipTableAddDel(request);
73     }
74
75     @Test
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();
82         request.isAdd = 0;
83         request.isIpv6 = 1;
84         request.tableId = 0;
85         request.name = IPV6_VRF_0.getBytes();
86
87         verify(api).ipTableAddDel(request);
88     }
89 }