blob: b6635547ca69d46b17589637eb4ee12c5b641713 [file] [log] [blame]
Sean Condonfae8e662016-12-15 10:25:13 +00001/*
2 * Copyright 2017-present Open Networking Laboratory
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 */
16package org.onosproject.drivers.microsemi.yang;
17
18import static org.junit.Assert.assertEquals;
19import static org.junit.Assert.assertNotNull;
20import static org.junit.Assert.fail;
21
22import java.io.UncheckedIOException;
23import java.util.List;
24
25import org.junit.After;
26import org.junit.Before;
27import org.junit.Test;
28import org.onlab.packet.Ip4Address;
29import org.onosproject.drivers.microsemi.yang.impl.MseaSaFilteringManager;
30import org.onosproject.netconf.NetconfDeviceInfo;
31import org.onosproject.netconf.NetconfException;
32import org.onosproject.netconf.NetconfSession;
33import org.onosproject.netconf.TargetConfig;
34import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.sa.filtering.rev20160412.MseaSaFiltering;
35import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.sa.filtering.rev20160412.MseaSaFilteringOpParam;
36import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.sa.filtering.rev20160412.mseasafiltering.DefaultSourceIpaddressFiltering;
37import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.sa.filtering.rev20160412.mseasafiltering.SourceIpaddressFiltering;
38import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.sa.filtering.rev20160412.mseasafiltering.sourceipaddressfiltering.DefaultInterfaceEth0;
39import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.sa.filtering.rev20160412.mseasafiltering.sourceipaddressfiltering.InterfaceEth0;
40import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.sa.filtering.rev20160412.mseasafiltering.sourceipaddressfiltering.interfaceeth0.DefaultSourceAddressRange;
41import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.sa.filtering.rev20160412.mseasafiltering.sourceipaddressfiltering.interfaceeth0.SourceAddressRange;
42import org.onosproject.yms.ymsm.YmsService;
43
44public class MseaSaFilteringManagerTest {
45
46 MseaSaFilteringManager mseaSaSvc;
47 YmsService ymsService;
48 NetconfSession session;
49
50 @Before
51 public void setUp() throws Exception {
52 try {
53 mseaSaSvc = new MockMseaSaFilteringManager();
54 mseaSaSvc.activate();
55 } catch (UncheckedIOException e) {
56 fail(e.getMessage());
57 }
58 NetconfDeviceInfo deviceInfo = new NetconfDeviceInfo("netconf", "netconf", Ip4Address.valueOf("1.2.3.4"), 830);
59 session = new MockNetconfSessionEa1000(deviceInfo);
60 }
61
62 @After
63 public void tearDown() throws Exception {
64 }
65
66 @Test
67 public void testGetMseaSaFilteringMseaSaFilteringOpParamNetconfSession() throws NetconfException {
68 SourceIpaddressFiltering.SourceIpaddressFilteringBuilder sipBuilder =
69 new DefaultSourceIpaddressFiltering.SourceIpaddressFilteringBuilder();
70
71 MseaSaFilteringOpParam.MseaSaFilteringBuilder opBuilder =
72 new MseaSaFilteringOpParam.MseaSaFilteringBuilder();
73 MseaSaFilteringOpParam mseaSaFilteringFilter =
74 (MseaSaFilteringOpParam) opBuilder
75 .sourceIpaddressFiltering(sipBuilder.build())
76 .build();
77
78 MseaSaFiltering result = mseaSaSvc.getMseaSaFiltering(mseaSaFilteringFilter, session);
79
80 //Results come from MockNetconfSession SAMPLE_MSEASAFILTERING_REPLY_INIT
81 assertNotNull(result.sourceIpaddressFiltering().interfaceEth0().sourceAddressRange());
82 List<SourceAddressRange> ranges = result.sourceIpaddressFiltering().interfaceEth0().sourceAddressRange();
83 assertEquals(2, ranges.size());
84
85 for (SourceAddressRange sa:ranges) {
86 if (sa.rangeId() == 1) {
87 assertEquals("10.10.10.10/16", sa.ipv4AddressPrefix());
88
89 } else if (sa.rangeId() == 2) {
90 assertEquals("20.30.40.50/18", sa.ipv4AddressPrefix());
91 }
92 }
93 }
94
95 @Test
96 public void testSetMseaSaFilteringMseaSaFilteringOpParamNetconfSessionNcDsType() {
97
98 MseaSaFilteringOpParam mseaSaFilteringConfig = createConfigForEdit("192.168.60.10/27", (short) 3, "Filter3");
99
100 //Calling on the edit-config just makes the change and hopefully does not throw a Netconf Exception
101 try {
102 mseaSaSvc.setMseaSaFiltering(mseaSaFilteringConfig, session, TargetConfig.RUNNING);
103 } catch (NetconfException e) {
104 e.printStackTrace();
105 fail("NETCONF Exception: " + e.getMessage());
106 }
107 }
108
109 /**
110 * This is also called from the test case EA1000FlowRuleProgrammableTest().
111 * In the ea1000driver project
112 * @return
113 */
114 public static MseaSaFilteringOpParam createConfigForEdit(String ipAddrPrefix, short rangeId, String rangeName) {
115 SourceAddressRange.SourceAddressRangeBuilder sarBuilder =
116 new DefaultSourceAddressRange.SourceAddressRangeBuilder();
117 SourceAddressRange saRange =
118 sarBuilder
119 .ipv4AddressPrefix(ipAddrPrefix)
120 .rangeId(rangeId)
121 .name(rangeName)
122 .build();
123
124 InterfaceEth0.InterfaceEth0Builder eth0Builder =
125 new DefaultInterfaceEth0.InterfaceEth0Builder();
126 InterfaceEth0 eth0 = eth0Builder.addToSourceAddressRange(saRange).build();
127
128 SourceIpaddressFiltering.SourceIpaddressFilteringBuilder sipBuilder =
129 new DefaultSourceIpaddressFiltering.SourceIpaddressFilteringBuilder();
130
131 SourceIpaddressFiltering sip = sipBuilder.interfaceEth0(eth0).build();
132
133 MseaSaFilteringOpParam.MseaSaFilteringBuilder opBuilder =
134 new MseaSaFilteringOpParam.MseaSaFilteringBuilder();
135 MseaSaFilteringOpParam mseaSaFilteringConfig =
136 (MseaSaFilteringOpParam) opBuilder
137 .sourceIpaddressFiltering(sipBuilder.build())
138 .build();
139
140 return mseaSaFilteringConfig;
141 }
142}