blob: 6ecfb00608fa4f3202661414f8b68c7e1b2211f1 [file] [log] [blame]
/*
* Copyright 2016 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.ospf.controller.lsdb;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.onosproject.ospf.controller.OspfLsaType;
import org.onosproject.ospf.controller.area.OspfAreaImpl;
import org.onosproject.ospf.controller.area.OspfInterfaceImpl;
import org.onosproject.ospf.protocol.lsa.LsaHeader;
import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
import org.onosproject.ospf.protocol.lsa.types.AsbrSummaryLsa;
import org.onosproject.ospf.protocol.lsa.types.ExternalLsa;
import org.onosproject.ospf.protocol.lsa.types.NetworkLsa;
import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa10;
import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa11;
import org.onosproject.ospf.protocol.lsa.types.OpaqueLsa9;
import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
import org.onosproject.ospf.protocol.lsa.types.SummaryLsa;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
/**
* Unit test class for OspfLsdbImpl.
*/
public class OspfLsdbImplTest {
private OspfLsdbImpl ospfLsdb;
private RouterLsa routerLsa;
private NetworkLsa networkLsa;
private SummaryLsa summaryLsa;
private AsbrSummaryLsa asbrSummaryLsa;
private OpaqueLsa9 opaqueLsa9;
private OpaqueLsa10 opaqueLsa10;
private OpaqueLsa11 opaqueLsa11;
private ExternalLsa externalLsa;
private OpaqueLsaHeader opaqueLsaHeader;
private LsaWrapperImpl lsaWrapper;
private OpaqueLsaHeader opaqueLsaHeader1;
private String key;
@Before
public void setUp() throws Exception {
OspfAreaImpl ospfArea = new OspfAreaImpl();
ospfLsdb = new OspfLsdbImpl(ospfArea);
routerLsa = new RouterLsa();
networkLsa = new NetworkLsa();
summaryLsa = new SummaryLsa(new LsaHeader());
asbrSummaryLsa = new AsbrSummaryLsa(new LsaHeader());
opaqueLsa9 = new OpaqueLsa9(new OpaqueLsaHeader());
opaqueLsa10 = new OpaqueLsa10(new OpaqueLsaHeader());
opaqueLsa11 = new OpaqueLsa11(new OpaqueLsaHeader());
externalLsa = new ExternalLsa(new LsaHeader());
}
@After
public void tearDown() throws Exception {
ospfLsdb = null;
routerLsa = null;
externalLsa = null;
summaryLsa = null;
asbrSummaryLsa = null;
opaqueLsa10 = null;
opaqueLsa11 = null;
opaqueLsa9 = null;
networkLsa = null;
lsaWrapper = null;
opaqueLsaHeader = null;
opaqueLsaHeader1 = null;
key = null;
}
/**
* Tests equals() method.
*/
@Test
public void testEquals() throws Exception {
assertThat(ospfLsdb.equals(new OspfLsdbImpl(new OspfAreaImpl())), is(false));
}
/**
* Tests hashCode() method.
*/
@Test
public void testHashCode() throws Exception {
int hashCode = ospfLsdb.hashCode();
assertThat(hashCode, is(notNullValue()));
}
/**
* Tests initializeDb() method.
*/
@Test
public void testInitializeDb() throws Exception {
ospfLsdb.initializeDb();
assertThat(ospfLsdb, is(notNullValue()));
}
/**
* Tests getAllLsaHeaders() method.
*/
@Test
public void testGetAllLsaHeaders() throws Exception {
ospfLsdb.initializeDb();
routerLsa.setLsType(1);
assertThat(ospfLsdb.addLsa(routerLsa, false, new OspfInterfaceImpl()), is(true));
networkLsa.setLsType(2);
assertThat(ospfLsdb.addLsa(networkLsa, false, new OspfInterfaceImpl()), is(true));
summaryLsa.setLsType(3);
assertThat(ospfLsdb.addLsa(summaryLsa, false, new OspfInterfaceImpl()), is(true));
asbrSummaryLsa.setLsType(4);
assertThat(ospfLsdb.addLsa(asbrSummaryLsa, false, new OspfInterfaceImpl()), is(true));
externalLsa.setLsType(5);
assertThat(ospfLsdb.addLsa(externalLsa, false, new OspfInterfaceImpl()), is(true));
ospfLsdb.initializeDb();
assertThat(ospfLsdb.getAllLsaHeaders(true, true).size(), is(5));
}
/**
* Tests getLsaKey() method.
*/
@Test
public void testGetLsaKey() throws Exception {
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(1);
assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue()));
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(2);
assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue()));
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(3);
assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue()));
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(4);
assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue()));
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(5);
assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue()));
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(9);
assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue()));
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(10);
assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue()));
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(11);
assertThat(ospfLsdb.getLsaKey(opaqueLsaHeader), is(notNullValue()));
}
/**
* Tests lsaLookup() method.
*/
@Test
public void testLsaLookup() throws Exception {
ospfLsdb.initializeDb();
opaqueLsaHeader = new OpaqueLsaHeader();
ospfLsdb.addLsa(opaqueLsaHeader, true, new OspfInterfaceImpl());
opaqueLsaHeader.setLsType(1);
String key = ospfLsdb.getLsaKey(opaqueLsaHeader);
assertThat(ospfLsdb.lsaLookup(opaqueLsaHeader), is(nullValue()));
}
/**
* Tests findLsa() method.
*/
@Test
public void testFindlsa() throws Exception {
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(1);
key = ospfLsdb.getLsaKey(opaqueLsaHeader);
ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl());
lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key);
assertThat(lsaWrapper, is(nullValue()));
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(2);
key = ospfLsdb.getLsaKey(opaqueLsaHeader);
ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl());
lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key);
assertThat(lsaWrapper, is(nullValue()));
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(3);
key = ospfLsdb.getLsaKey(opaqueLsaHeader);
ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl());
lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key);
assertThat(lsaWrapper, is(nullValue()));
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(4);
key = ospfLsdb.getLsaKey(opaqueLsaHeader);
ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl());
lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key);
assertThat(lsaWrapper, is(nullValue()));
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(5);
key = ospfLsdb.getLsaKey(opaqueLsaHeader);
ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl());
lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key);
assertThat(lsaWrapper, is(nullValue()));
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(9);
key = ospfLsdb.getLsaKey(opaqueLsaHeader);
ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl());
lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key);
assertThat(lsaWrapper, is(nullValue()));
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(10);
key = ospfLsdb.getLsaKey(opaqueLsaHeader);
ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl());
lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key);
assertThat(lsaWrapper, is(nullValue()));
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(11);
key = ospfLsdb.getLsaKey(opaqueLsaHeader);
ospfLsdb.addLsa(new RouterLsa(), false, new OspfInterfaceImpl());
lsaWrapper = (LsaWrapperImpl) ospfLsdb.findLsa(opaqueLsaHeader.lsType(), key);
assertThat(lsaWrapper, is(nullValue()));
}
/**
* Tests addLSA() method.
*/
@Test
public void testAddLsa() throws Exception {
routerLsa.setLsType(1);
assertThat(ospfLsdb.addLsa(routerLsa, false, new OspfInterfaceImpl()), is(true));
networkLsa.setLsType(2);
assertThat(ospfLsdb.addLsa(networkLsa, false, new OspfInterfaceImpl()), is(true));
summaryLsa.setLsType(3);
assertThat(ospfLsdb.addLsa(summaryLsa, false, new OspfInterfaceImpl()), is(true));
asbrSummaryLsa.setLsType(4);
assertThat(ospfLsdb.addLsa(asbrSummaryLsa, false, new OspfInterfaceImpl()), is(true));
externalLsa.setLsType(5);
assertThat(ospfLsdb.addLsa(externalLsa, false, new OspfInterfaceImpl()), is(true));
opaqueLsa9.setLsType(9);
assertThat(ospfLsdb.addLsa(opaqueLsa9, false, new OspfInterfaceImpl()), is(true));
opaqueLsa10.setLsType(10);
assertThat(ospfLsdb.addLsa(opaqueLsa10, false, new OspfInterfaceImpl()), is(true));
opaqueLsa11.setLsType(11);
assertThat(ospfLsdb.addLsa(opaqueLsa11, false, new OspfInterfaceImpl()), is(true));
}
/**
* Tests addLsaToMaxAgeBin() method.
*/
@Test
public void testAddLsaToMaxAgeBin() throws Exception {
lsaWrapper = new LsaWrapperImpl();
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(1);
key = ospfLsdb.getLsaKey(opaqueLsaHeader);
lsaWrapper.setLsaHeader((OpaqueLsaHeader) opaqueLsaHeader);
ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
lsaWrapper = new LsaWrapperImpl();
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(2);
ospfLsdb.getLsaKey(opaqueLsaHeader);
lsaWrapper.setLsaHeader(opaqueLsaHeader);
ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
lsaWrapper = new LsaWrapperImpl();
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(3);
ospfLsdb.getLsaKey(opaqueLsaHeader);
lsaWrapper.setLsaHeader(opaqueLsaHeader);
ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
lsaWrapper = new LsaWrapperImpl();
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(4);
ospfLsdb.getLsaKey(opaqueLsaHeader);
lsaWrapper.setLsaHeader(opaqueLsaHeader);
ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
lsaWrapper = new LsaWrapperImpl();
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(5);
ospfLsdb.getLsaKey(opaqueLsaHeader);
lsaWrapper.setLsaHeader(opaqueLsaHeader);
ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
lsaWrapper = new LsaWrapperImpl();
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(9);
ospfLsdb.getLsaKey(opaqueLsaHeader);
lsaWrapper.setLsaHeader(opaqueLsaHeader);
ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
lsaWrapper = new LsaWrapperImpl();
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(10);
ospfLsdb.getLsaKey(opaqueLsaHeader);
lsaWrapper.setLsaHeader(opaqueLsaHeader);
ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
lsaWrapper = new LsaWrapperImpl();
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(11);
ospfLsdb.getLsaKey(opaqueLsaHeader);
lsaWrapper.setLsaHeader(opaqueLsaHeader);
ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
assertThat(ospfLsdb, is(notNullValue()));
}
/**
* Tests removeLsaFromBin() method.
*/
@Test
public void testRemoveLsaFromBin() throws Exception {
lsaWrapper = new LsaWrapperImpl();
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(1);
key = ospfLsdb.getLsaKey(opaqueLsaHeader);
lsaWrapper.setLsaHeader(opaqueLsaHeader);
ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
ospfLsdb.removeLsaFromBin(lsaWrapper);
lsaWrapper = new LsaWrapperImpl();
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(2);
ospfLsdb.getLsaKey(opaqueLsaHeader);
lsaWrapper.setLsaHeader(opaqueLsaHeader);
ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
ospfLsdb.removeLsaFromBin(lsaWrapper);
lsaWrapper = new LsaWrapperImpl();
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(3);
ospfLsdb.getLsaKey(opaqueLsaHeader);
lsaWrapper.setLsaHeader(opaqueLsaHeader);
ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
ospfLsdb.removeLsaFromBin(lsaWrapper);
lsaWrapper = new LsaWrapperImpl();
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(4);
ospfLsdb.getLsaKey(opaqueLsaHeader);
lsaWrapper.setLsaHeader(opaqueLsaHeader);
ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
ospfLsdb.removeLsaFromBin(lsaWrapper);
lsaWrapper = new LsaWrapperImpl();
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(5);
ospfLsdb.getLsaKey(opaqueLsaHeader);
lsaWrapper.setLsaHeader(opaqueLsaHeader);
ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
ospfLsdb.removeLsaFromBin(lsaWrapper);
lsaWrapper = new LsaWrapperImpl();
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(9);
ospfLsdb.getLsaKey(opaqueLsaHeader);
lsaWrapper.setLsaHeader(opaqueLsaHeader);
ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
ospfLsdb.removeLsaFromBin(lsaWrapper);
lsaWrapper = new LsaWrapperImpl();
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(10);
ospfLsdb.getLsaKey(opaqueLsaHeader);
lsaWrapper.setLsaHeader(opaqueLsaHeader);
ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
ospfLsdb.removeLsaFromBin(lsaWrapper);
lsaWrapper = new LsaWrapperImpl();
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(11);
ospfLsdb.getLsaKey(opaqueLsaHeader);
lsaWrapper.setLsaHeader(opaqueLsaHeader);
ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
ospfLsdb.removeLsaFromBin(lsaWrapper);
assertThat(ospfLsdb, is(notNullValue()));
}
/**
* Tests isNewerOrSameLsa() method.
*/
@Test
public void testIsNewerorSameLsa() throws Exception {
lsaWrapper = new LsaWrapperImpl();
opaqueLsaHeader1 = new OpaqueLsaHeader();
opaqueLsaHeader1.setLsType(1);
key = ospfLsdb.getLsaKey(opaqueLsaHeader1);
lsaWrapper.setLsaHeader(opaqueLsaHeader1);
ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
lsaWrapper = new LsaWrapperImpl();
opaqueLsaHeader = new OpaqueLsaHeader();
opaqueLsaHeader.setLsType(2);
ospfLsdb.getLsaKey(opaqueLsaHeader);
lsaWrapper.setLsaHeader(opaqueLsaHeader);
ospfLsdb.addLsaToMaxAgeBin(key, lsaWrapper);
assertThat(ospfLsdb.isNewerOrSameLsa(opaqueLsaHeader1, opaqueLsaHeader), is(notNullValue()));
assertThat(ospfLsdb, is(notNullValue()));
}
/**
* Tests getLsSequenceNumber() method.
*/
@Test
public void testGetLsSequenceNumber() throws Exception {
assertThat(ospfLsdb.getLsSequenceNumber(OspfLsaType.NETWORK), is(notNullValue()));
assertThat(ospfLsdb.getLsSequenceNumber(OspfLsaType.ROUTER), is(notNullValue()));
}
/**
* Tests deleteLsa() method.
*/
@Test
public void testDeleteLsa() throws Exception {
opaqueLsaHeader1 = new OpaqueLsaHeader();
opaqueLsaHeader1.setLsType(1);
ospfLsdb.deleteLsa(opaqueLsaHeader1);
opaqueLsaHeader1 = new OpaqueLsaHeader();
opaqueLsaHeader1.setLsType(2);
ospfLsdb.deleteLsa(opaqueLsaHeader1);
opaqueLsaHeader1 = new OpaqueLsaHeader();
opaqueLsaHeader1.setLsType(3);
ospfLsdb.deleteLsa(opaqueLsaHeader1);
opaqueLsaHeader1 = new OpaqueLsaHeader();
opaqueLsaHeader1.setLsType(4);
ospfLsdb.deleteLsa(opaqueLsaHeader1);
opaqueLsaHeader1 = new OpaqueLsaHeader();
opaqueLsaHeader1.setLsType(5);
ospfLsdb.deleteLsa(opaqueLsaHeader1);
opaqueLsaHeader1 = new OpaqueLsaHeader();
opaqueLsaHeader1.setLsType(9);
ospfLsdb.deleteLsa(opaqueLsaHeader1);
opaqueLsaHeader1 = new OpaqueLsaHeader();
opaqueLsaHeader1.setLsType(10);
ospfLsdb.deleteLsa(opaqueLsaHeader1);
opaqueLsaHeader1 = new OpaqueLsaHeader();
opaqueLsaHeader1.setLsType(11);
ospfLsdb.deleteLsa(opaqueLsaHeader1);
assertThat(ospfLsdb, is(notNullValue()));
}
/**
* Tests getLsSequenceNumber() method.
*/
@Test
public void testSetRouterLsaSeqNo() throws Exception {
ospfLsdb.setRouterLsaSeqNo(-2147483647);
assertThat(ospfLsdb.getLsSequenceNumber(OspfLsaType.ROUTER), is(-2147483647L));
}
/**
* Tests getLsSequenceNumber() method.
*/
@Test
public void testSetNetworkLsaSeqNo() throws Exception {
ospfLsdb.setNetworkLsaSeqNo(111111);
assertThat(ospfLsdb.getLsSequenceNumber(OspfLsaType.NETWORK), is(111111L));
}
}