blob: b6635547ca69d46b17589637eb4ee12c5b641713 [file] [log] [blame]
/*
* Copyright 2017-present Open Networking Laboratory
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.drivers.microsemi.yang;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import java.io.UncheckedIOException;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.onlab.packet.Ip4Address;
import org.onosproject.drivers.microsemi.yang.impl.MseaSaFilteringManager;
import org.onosproject.netconf.NetconfDeviceInfo;
import org.onosproject.netconf.NetconfException;
import org.onosproject.netconf.NetconfSession;
import org.onosproject.netconf.TargetConfig;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.sa.filtering.rev20160412.MseaSaFiltering;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.sa.filtering.rev20160412.MseaSaFilteringOpParam;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.sa.filtering.rev20160412.mseasafiltering.DefaultSourceIpaddressFiltering;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.sa.filtering.rev20160412.mseasafiltering.SourceIpaddressFiltering;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.sa.filtering.rev20160412.mseasafiltering.sourceipaddressfiltering.DefaultInterfaceEth0;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.sa.filtering.rev20160412.mseasafiltering.sourceipaddressfiltering.InterfaceEth0;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.sa.filtering.rev20160412.mseasafiltering.sourceipaddressfiltering.interfaceeth0.DefaultSourceAddressRange;
import org.onosproject.yang.gen.v1.http.www.microsemi.com.microsemi.edge.assure.msea.sa.filtering.rev20160412.mseasafiltering.sourceipaddressfiltering.interfaceeth0.SourceAddressRange;
import org.onosproject.yms.ymsm.YmsService;
public class MseaSaFilteringManagerTest {
MseaSaFilteringManager mseaSaSvc;
YmsService ymsService;
NetconfSession session;
@Before
public void setUp() throws Exception {
try {
mseaSaSvc = new MockMseaSaFilteringManager();
mseaSaSvc.activate();
} catch (UncheckedIOException e) {
fail(e.getMessage());
}
NetconfDeviceInfo deviceInfo = new NetconfDeviceInfo("netconf", "netconf", Ip4Address.valueOf("1.2.3.4"), 830);
session = new MockNetconfSessionEa1000(deviceInfo);
}
@After
public void tearDown() throws Exception {
}
@Test
public void testGetMseaSaFilteringMseaSaFilteringOpParamNetconfSession() throws NetconfException {
SourceIpaddressFiltering.SourceIpaddressFilteringBuilder sipBuilder =
new DefaultSourceIpaddressFiltering.SourceIpaddressFilteringBuilder();
MseaSaFilteringOpParam.MseaSaFilteringBuilder opBuilder =
new MseaSaFilteringOpParam.MseaSaFilteringBuilder();
MseaSaFilteringOpParam mseaSaFilteringFilter =
(MseaSaFilteringOpParam) opBuilder
.sourceIpaddressFiltering(sipBuilder.build())
.build();
MseaSaFiltering result = mseaSaSvc.getMseaSaFiltering(mseaSaFilteringFilter, session);
//Results come from MockNetconfSession SAMPLE_MSEASAFILTERING_REPLY_INIT
assertNotNull(result.sourceIpaddressFiltering().interfaceEth0().sourceAddressRange());
List<SourceAddressRange> ranges = result.sourceIpaddressFiltering().interfaceEth0().sourceAddressRange();
assertEquals(2, ranges.size());
for (SourceAddressRange sa:ranges) {
if (sa.rangeId() == 1) {
assertEquals("10.10.10.10/16", sa.ipv4AddressPrefix());
} else if (sa.rangeId() == 2) {
assertEquals("20.30.40.50/18", sa.ipv4AddressPrefix());
}
}
}
@Test
public void testSetMseaSaFilteringMseaSaFilteringOpParamNetconfSessionNcDsType() {
MseaSaFilteringOpParam mseaSaFilteringConfig = createConfigForEdit("192.168.60.10/27", (short) 3, "Filter3");
//Calling on the edit-config just makes the change and hopefully does not throw a Netconf Exception
try {
mseaSaSvc.setMseaSaFiltering(mseaSaFilteringConfig, session, TargetConfig.RUNNING);
} catch (NetconfException e) {
e.printStackTrace();
fail("NETCONF Exception: " + e.getMessage());
}
}
/**
* This is also called from the test case EA1000FlowRuleProgrammableTest().
* In the ea1000driver project
* @return
*/
public static MseaSaFilteringOpParam createConfigForEdit(String ipAddrPrefix, short rangeId, String rangeName) {
SourceAddressRange.SourceAddressRangeBuilder sarBuilder =
new DefaultSourceAddressRange.SourceAddressRangeBuilder();
SourceAddressRange saRange =
sarBuilder
.ipv4AddressPrefix(ipAddrPrefix)
.rangeId(rangeId)
.name(rangeName)
.build();
InterfaceEth0.InterfaceEth0Builder eth0Builder =
new DefaultInterfaceEth0.InterfaceEth0Builder();
InterfaceEth0 eth0 = eth0Builder.addToSourceAddressRange(saRange).build();
SourceIpaddressFiltering.SourceIpaddressFilteringBuilder sipBuilder =
new DefaultSourceIpaddressFiltering.SourceIpaddressFilteringBuilder();
SourceIpaddressFiltering sip = sipBuilder.interfaceEth0(eth0).build();
MseaSaFilteringOpParam.MseaSaFilteringBuilder opBuilder =
new MseaSaFilteringOpParam.MseaSaFilteringBuilder();
MseaSaFilteringOpParam mseaSaFilteringConfig =
(MseaSaFilteringOpParam) opBuilder
.sourceIpaddressFiltering(sipBuilder.build())
.build();
return mseaSaFilteringConfig;
}
}