d292947f6c5b8955ef57512c5f9f83d243b145df
[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.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;
42
43 @RunWith(HoneycombTestRunner.class)
44 public class FibTableCustomizerTest extends WriterCustomizerTest implements SchemaContextTestHelper,
45         ByteDataTranslator {
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";
50     @Mock
51     private ModificationCache modificationCache;
52     private FibTableCustomizer customizer;
53
54     @Override
55     protected void setUpTest() {
56         customizer = new FibTableCustomizer(api);
57         when(writeContext.getModificationCache()).thenReturn(modificationCache);
58         when(api.ipTableAddDel(any())).thenReturn(future(new IpTableAddDelReply()));
59     }
60
61     @Test
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();
69         request.isAdd = 1;
70         request.isIpv6 = 0;
71         request.tableId = 0;
72         request.name = IPV4_VRF_0.getBytes();
73
74         verify(api).ipTableAddDel(request);
75     }
76
77     @Test
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();
85         request.isAdd = 0;
86         request.isIpv6 = 1;
87         request.tableId = 0;
88         request.name = IPV6_VRF_0.getBytes();
89
90         verify(api).ipTableAddDel(request);
91     }
92 }