sunish vk
Committed by Gerrit Code Review

ONOS-4505: Bug Fixes

Change-Id: Ia030aa3aff9e2ad34a5e27fbe4ba088dda65bfa7
Showing 34 changed files with 584 additions and 55 deletions
...@@ -195,13 +195,6 @@ public interface IsisInterface { ...@@ -195,13 +195,6 @@ public interface IsisInterface {
195 void setAreaLength(int areaLength); 195 void setAreaLength(int areaLength);
196 196
197 /** 197 /**
198 - * Sets link state packet ID.
199 - *
200 - * @param lspId link state packet ID
201 - */
202 - void setLspId(String lspId);
203 -
204 - /**
205 * Returns holding time. 198 * Returns holding time.
206 * 199 *
207 * @return holding time 200 * @return holding time
...@@ -251,6 +244,11 @@ public interface IsisInterface { ...@@ -251,6 +244,11 @@ public interface IsisInterface {
251 void startHelloSender(Channel channel); 244 void startHelloSender(Channel channel);
252 245
253 /** 246 /**
247 + * Stops the hello timer which sends hello packet every configured seconds.
248 + */
249 + void stopHelloSender();
250 +
251 + /**
254 * Processes an ISIS message which is received on this interface. 252 * Processes an ISIS message which is received on this interface.
255 * 253 *
256 * @param isisMessage ISIS message instance 254 * @param isisMessage ISIS message instance
...@@ -315,4 +313,9 @@ public interface IsisInterface { ...@@ -315,4 +313,9 @@ public interface IsisInterface {
315 * @param isisNeighbor ISIS neighbor instance 313 * @param isisNeighbor ISIS neighbor instance
316 */ 314 */
317 void removeNeighbor(IsisNeighbor isisNeighbor); 315 void removeNeighbor(IsisNeighbor isisNeighbor);
316 +
317 + /**
318 + * Removes all the neighbors.
319 + */
320 + void removeNeighbors();
318 } 321 }
......
...@@ -108,4 +108,18 @@ public interface IsisLsdb { ...@@ -108,4 +108,18 @@ public interface IsisLsdb {
108 * @return neighbor database information 108 * @return neighbor database information
109 */ 109 */
110 Map<String, LspWrapper> getL2Db(); 110 Map<String, LspWrapper> getL2Db();
111 +
112 + /**
113 + * Sets the level 1 link state sequence number.
114 + *
115 + * @param l1LspSeqNo link state sequence number
116 + */
117 + void setL1LspSeqNo(int l1LspSeqNo);
118 +
119 + /**
120 + * Sets the level 2 link state sequence number.
121 + *
122 + * @param l2LspSeqNo link state sequence number
123 + */
124 + void setL2LspSeqNo(int l2LspSeqNo);
111 } 125 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -108,4 +108,16 @@ public interface IsisNeighbor { ...@@ -108,4 +108,16 @@ public interface IsisNeighbor {
108 * Stops the inactivity timer. 108 * Stops the inactivity timer.
109 */ 109 */
110 void stopInactivityTimeCheck(); 110 void stopInactivityTimeCheck();
111 -} 111 +
112 + /**
113 + * Stops the holding time check timer.
114 + */
115 + void stopHoldingTimeCheck();
116 +
117 + /**
118 + * Returns router type.
119 + *
120 + * @return router type
121 + */
122 + IsisRouterType routerType();
123 +}
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -88,6 +88,7 @@ public class DefaultIsisNeighbor implements IsisNeighbor { ...@@ -88,6 +88,7 @@ public class DefaultIsisNeighbor implements IsisNeighbor {
88 } 88 }
89 this.isisInterface = isisInterface; 89 this.isisInterface = isisInterface;
90 startHoldingTimeCheck(); 90 startHoldingTimeCheck();
91 + log.debug("Neighbor added - {}", neighborMacAddress);
91 } 92 }
92 93
93 /** 94 /**
...@@ -387,6 +388,10 @@ public class DefaultIsisNeighbor implements IsisNeighbor { ...@@ -387,6 +388,10 @@ public class DefaultIsisNeighbor implements IsisNeighbor {
387 @Override 388 @Override
388 public void run() { 389 public void run() {
389 holdingTime--; 390 holdingTime--;
391 + if (holdingTime <= 0) {
392 + log.debug("Calling neighbor down. Holding time is 0.");
393 + neighborDown();
394 + }
390 } 395 }
391 } 396 }
392 } 397 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -94,13 +94,35 @@ public class IsisChannelHandler extends IdleStateAwareChannelHandler { ...@@ -94,13 +94,35 @@ public class IsisChannelHandler extends IdleStateAwareChannelHandler {
94 for (IsisInterface isisUpdatedInterface : isisUpdatedProcess.isisInterfaceList()) { 94 for (IsisInterface isisUpdatedInterface : isisUpdatedProcess.isisInterfaceList()) {
95 IsisInterface isisInterface = isisInterfaceMap.get(isisUpdatedInterface.interfaceIndex()); 95 IsisInterface isisInterface = isisInterfaceMap.get(isisUpdatedInterface.interfaceIndex());
96 if (isisInterface == null) { 96 if (isisInterface == null) {
97 - isisInterfaceMap.put(isisInterface.interfaceIndex(), isisInterface); 97 + isisInterfaceMap.put(isisUpdatedInterface.interfaceIndex(), isisUpdatedInterface);
98 - interfaceIps.add(isisInterface.interfaceIpAddress()); 98 + interfaceIps.add(isisUpdatedInterface.interfaceIpAddress());
99 } else { 99 } else {
100 - isisInterface.setReservedPacketCircuitType(isisUpdatedInterface.reservedPacketCircuitType()); 100 + if (isisInterface.intermediateSystemName() != isisUpdatedInterface.intermediateSystemName()) {
101 - isisInterface.setNetworkType(isisUpdatedInterface.networkType()); 101 + isisInterface.setIntermediateSystemName(isisUpdatedInterface.intermediateSystemName());
102 - isisInterface.setHoldingTime(isisUpdatedInterface.holdingTime()); 102 + }
103 - isisInterface.setHelloInterval(isisUpdatedInterface.helloInterval()); 103 + if (isisInterface.reservedPacketCircuitType() != isisUpdatedInterface.reservedPacketCircuitType()) {
104 + isisInterface.setReservedPacketCircuitType(isisUpdatedInterface.reservedPacketCircuitType());
105 + isisInterface.removeNeighbors();
106 + }
107 + if (isisInterface.circuitId() != isisUpdatedInterface.circuitId()) {
108 + isisInterface.setCircuitId(isisUpdatedInterface.circuitId());
109 + }
110 + if (isisInterface.networkType() != isisUpdatedInterface.networkType()) {
111 + isisInterface.setNetworkType(isisUpdatedInterface.networkType());
112 + isisInterface.removeNeighbors();
113 + }
114 + if (isisInterface.areaAddress() != isisUpdatedInterface.areaAddress()) {
115 + isisInterface.setAreaAddress(isisUpdatedInterface.areaAddress());
116 + }
117 + if (isisInterface.holdingTime() != isisUpdatedInterface.holdingTime()) {
118 + isisInterface.setHoldingTime(isisUpdatedInterface.holdingTime());
119 + }
120 + if (isisInterface.helloInterval() != isisUpdatedInterface.helloInterval()) {
121 + isisInterface.setHelloInterval(isisUpdatedInterface.helloInterval());
122 + isisInterface.stopHelloSender();
123 + isisInterface.startHelloSender(channel);
124 + }
125 +
104 isisInterfaceMap.put(isisInterface.interfaceIndex(), isisInterface); 126 isisInterfaceMap.put(isisInterface.interfaceIndex(), isisInterface);
105 } 127 }
106 } 128 }
...@@ -144,6 +166,9 @@ public class IsisChannelHandler extends IdleStateAwareChannelHandler { ...@@ -144,6 +166,9 @@ public class IsisChannelHandler extends IdleStateAwareChannelHandler {
144 @Override 166 @Override
145 public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent evt) { 167 public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent evt) {
146 log.debug("IsisChannelHandler::channelDisconnected...!!!"); 168 log.debug("IsisChannelHandler::channelDisconnected...!!!");
169 + if (controller != null) {
170 + controller.connectPeer();
171 + }
147 } 172 }
148 173
149 @Override 174 @Override
...@@ -169,8 +194,9 @@ public class IsisChannelHandler extends IdleStateAwareChannelHandler { ...@@ -169,8 +194,9 @@ public class IsisChannelHandler extends IdleStateAwareChannelHandler {
169 } else if (e.getCause() instanceof RejectedExecutionException) { 194 } else if (e.getCause() instanceof RejectedExecutionException) {
170 log.warn("Could not process message: queue full"); 195 log.warn("Could not process message: queue full");
171 } else { 196 } else {
172 - log.error("Error while processing message from ISIS {}", 197 + log.error("Error while processing message from ISIS {}, {}",
173 - e.getChannel().getRemoteAddress()); 198 + e.getChannel().getRemoteAddress(), e.getCause().getMessage());
199 + e.getCause().printStackTrace();
174 } 200 }
175 } 201 }
176 202
......
...@@ -45,7 +45,7 @@ public class IsisHelloPduSender implements Runnable { ...@@ -45,7 +45,7 @@ public class IsisHelloPduSender implements Runnable {
45 45
46 @Override 46 @Override
47 public void run() { 47 public void run() {
48 - if (channel != null) { 48 + if (channel != null && channel.isConnected() && channel.isOpen()) {
49 try { 49 try {
50 byte[] helloPdu = null; 50 byte[] helloPdu = null;
51 byte[] interfaceIndex = {(byte) isisInterface.interfaceIndex()}; 51 byte[] interfaceIndex = {(byte) isisInterface.interfaceIndex()};
......
...@@ -44,7 +44,6 @@ public class IsisMessageDecoder extends FrameDecoder { ...@@ -44,7 +44,6 @@ public class IsisMessageDecoder extends FrameDecoder {
44 log.info("Channel is not connected."); 44 log.info("Channel is not connected.");
45 return null; 45 return null;
46 } 46 }
47 -
48 IsisMessageReader messageReader = new IsisMessageReader(); 47 IsisMessageReader messageReader = new IsisMessageReader();
49 List<IsisMessage> isisMessageList = new LinkedList<>(); 48 List<IsisMessage> isisMessageList = new LinkedList<>();
50 int dataLength = buffer.readableBytes(); 49 int dataLength = buffer.readableBytes();
...@@ -74,8 +73,7 @@ public class IsisMessageDecoder extends FrameDecoder { ...@@ -74,8 +73,7 @@ public class IsisMessageDecoder extends FrameDecoder {
74 isisMessageList.add(message); 73 isisMessageList.add(message);
75 } 74 }
76 } 75 }
77 - 76 + return (isisMessageList.size() > 0) ? isisMessageList : null;
78 - return isisMessageList;
79 } 77 }
80 78
81 /** 79 /**
......
...@@ -45,7 +45,6 @@ public class DefaultIsisLsdb implements IsisLsdb { ...@@ -45,7 +45,6 @@ public class DefaultIsisLsdb implements IsisLsdb {
45 private IsisLsdbAge lsdbAge = null; 45 private IsisLsdbAge lsdbAge = null;
46 46
47 47
48 -
49 private int l1LspSeqNo = IsisConstants.STARTLSSEQUENCENUM; 48 private int l1LspSeqNo = IsisConstants.STARTLSSEQUENCENUM;
50 private int l2LspSeqNo = IsisConstants.STARTLSSEQUENCENUM; 49 private int l2LspSeqNo = IsisConstants.STARTLSSEQUENCENUM;
51 50
...@@ -80,6 +79,7 @@ public class DefaultIsisLsdb implements IsisLsdb { ...@@ -80,6 +79,7 @@ public class DefaultIsisLsdb implements IsisLsdb {
80 public void setL2LspSeqNo(int l2LspSeqNo) { 79 public void setL2LspSeqNo(int l2LspSeqNo) {
81 this.l2LspSeqNo = l2LspSeqNo; 80 this.l2LspSeqNo = l2LspSeqNo;
82 } 81 }
82 +
83 /** 83 /**
84 * Returns the LSDB LSP key. 84 * Returns the LSDB LSP key.
85 * 85 *
...@@ -96,6 +96,7 @@ public class DefaultIsisLsdb implements IsisLsdb { ...@@ -96,6 +96,7 @@ public class DefaultIsisLsdb implements IsisLsdb {
96 return lspKey.toString(); 96 return lspKey.toString();
97 } 97 }
98 98
99 +
99 /** 100 /**
100 * Returns the neighbor L1 database information. 101 * Returns the neighbor L1 database information.
101 * 102 *
...@@ -218,7 +219,12 @@ public class DefaultIsisLsdb implements IsisLsdb { ...@@ -218,7 +219,12 @@ public class DefaultIsisLsdb implements IsisLsdb {
218 byte[] checkSum = {lspBytes[IsisConstants.CHECKSUMPOSITION], lspBytes[IsisConstants.CHECKSUMPOSITION + 1]}; 219 byte[] checkSum = {lspBytes[IsisConstants.CHECKSUMPOSITION], lspBytes[IsisConstants.CHECKSUMPOSITION + 1]};
219 lspdu.setCheckSum(ChannelBuffers.copiedBuffer(checkSum).readUnsignedShort()); 220 lspdu.setCheckSum(ChannelBuffers.copiedBuffer(checkSum).readUnsignedShort());
220 } 221 }
221 - DefaultLspWrapper lspWrapper = new DefaultLspWrapper(); 222 +
223 + DefaultLspWrapper lspWrapper = (DefaultLspWrapper) findLsp(lspdu.isisPduType(), lspdu.lspId());
224 + if (lspWrapper == null) {
225 + lspWrapper = new DefaultLspWrapper();
226 + }
227 +
222 lspWrapper.setLspAgeReceived(IsisConstants.LSPMAXAGE - lspdu.remainingLifeTime()); 228 lspWrapper.setLspAgeReceived(IsisConstants.LSPMAXAGE - lspdu.remainingLifeTime());
223 lspWrapper.setLspType(IsisPduType.get(lspdu.pduType())); 229 lspWrapper.setLspType(IsisPduType.get(lspdu.pduType()));
224 lspWrapper.setLsPdu(lspdu); 230 lspWrapper.setLsPdu(lspdu);
...@@ -228,8 +234,8 @@ public class DefaultIsisLsdb implements IsisLsdb { ...@@ -228,8 +234,8 @@ public class DefaultIsisLsdb implements IsisLsdb {
228 lspWrapper.setIsisInterface(isisInterface); 234 lspWrapper.setIsisInterface(isisInterface);
229 lspWrapper.setLsdbAge(lsdbAge); 235 lspWrapper.setLsdbAge(lsdbAge);
230 addLsp(lspWrapper, lspdu.lspId()); 236 addLsp(lspWrapper, lspdu.lspId());
231 - log.debug("Added LSp In LSDB: {}", lspWrapper);
232 237
238 + log.debug("Added LSp In LSDB: {}", lspWrapper);
233 return true; 239 return true;
234 } 240 }
235 241
...@@ -270,7 +276,6 @@ public class DefaultIsisLsdb implements IsisLsdb { ...@@ -270,7 +276,6 @@ public class DefaultIsisLsdb implements IsisLsdb {
270 lspWrapper.lsPdu().isisPduType(), 276 lspWrapper.lsPdu().isisPduType(),
271 binNumber, lspWrapper.remainingLifetime()); 277 binNumber, lspWrapper.remainingLifetime());
272 } 278 }
273 -
274 return false; 279 return false;
275 } 280 }
276 281
...@@ -344,4 +349,4 @@ public class DefaultIsisLsdb implements IsisLsdb { ...@@ -344,4 +349,4 @@ public class DefaultIsisLsdb implements IsisLsdb {
344 break; 349 break;
345 } 350 }
346 } 351 }
347 -} 352 +}
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -36,10 +36,10 @@ import java.util.concurrent.TimeUnit; ...@@ -36,10 +36,10 @@ import java.util.concurrent.TimeUnit;
36 */ 36 */
37 public class DefaultIsisLsdbAge implements IsisLsdbAge { 37 public class DefaultIsisLsdbAge implements IsisLsdbAge {
38 private static final Logger log = LoggerFactory.getLogger(DefaultIsisLsdbAge.class); 38 private static final Logger log = LoggerFactory.getLogger(DefaultIsisLsdbAge.class);
39 - protected static int ageCounter = 0; 39 + protected int ageCounter = 0;
40 private InternalAgeTimer dbAgeTimer; 40 private InternalAgeTimer dbAgeTimer;
41 private ScheduledExecutorService exServiceage; 41 private ScheduledExecutorService exServiceage;
42 - private Integer maxBins = 1200; 42 + private Integer maxBins = IsisConstants.LSPMAXAGE;
43 private Map<Integer, IsisLspBin> ageBins = new ConcurrentHashMap<>(maxBins); 43 private Map<Integer, IsisLspBin> ageBins = new ConcurrentHashMap<>(maxBins);
44 private int ageCounterRollOver = 0; 44 private int ageCounterRollOver = 0;
45 private IsisLspQueueConsumer queueConsumer = null; 45 private IsisLspQueueConsumer queueConsumer = null;
...@@ -202,7 +202,7 @@ public class DefaultIsisLsdbAge implements IsisLsdbAge { ...@@ -202,7 +202,7 @@ public class DefaultIsisLsdbAge implements IsisLsdbAge {
202 } else { 202 } else {
203 binNumber = ageCounter - IsisConstants.LSPREFRESH; 203 binNumber = ageCounter - IsisConstants.LSPREFRESH;
204 } 204 }
205 - if (binNumber > IsisConstants.LSPMAXAGE) { 205 + if (binNumber >= IsisConstants.LSPMAXAGE) {
206 binNumber = binNumber - IsisConstants.LSPMAXAGE; 206 binNumber = binNumber - IsisConstants.LSPMAXAGE;
207 } 207 }
208 IsisLspBin lspBin = ageBins.get(binNumber); 208 IsisLspBin lspBin = ageBins.get(binNumber);
......
...@@ -21,11 +21,14 @@ import org.onosproject.isis.controller.IsisPduType; ...@@ -21,11 +21,14 @@ import org.onosproject.isis.controller.IsisPduType;
21 import org.onosproject.isis.controller.LspWrapper; 21 import org.onosproject.isis.controller.LspWrapper;
22 import org.onosproject.isis.io.isispacket.pdu.LsPdu; 22 import org.onosproject.isis.io.isispacket.pdu.LsPdu;
23 import org.onosproject.isis.io.util.IsisConstants; 23 import org.onosproject.isis.io.util.IsisConstants;
24 +import org.slf4j.Logger;
25 +import org.slf4j.LoggerFactory;
24 26
25 /** 27 /**
26 * Representation of LSP wrapper where the LSPs are stored with metadata. 28 * Representation of LSP wrapper where the LSPs are stored with metadata.
27 */ 29 */
28 public class DefaultLspWrapper implements LspWrapper { 30 public class DefaultLspWrapper implements LspWrapper {
31 + private static final Logger log = LoggerFactory.getLogger(DefaultLspWrapper.class);
29 private int binNumber = -1; 32 private int binNumber = -1;
30 private boolean selfOriginated = false; 33 private boolean selfOriginated = false;
31 private IsisPduType lspType; 34 private IsisPduType lspType;
...@@ -229,7 +232,15 @@ public class DefaultLspWrapper implements LspWrapper { ...@@ -229,7 +232,15 @@ public class DefaultLspWrapper implements LspWrapper {
229 int currentAge = 0; 232 int currentAge = 0;
230 //ls age received 233 //ls age received
231 if (lsdbAge.ageCounter() >= ageCounterWhenReceived) { 234 if (lsdbAge.ageCounter() >= ageCounterWhenReceived) {
235 + if (!selfOriginated) {
236 + if (ageCounterRollOverWhenAdded == lsdbAge.ageCounterRollOver()) {
232 currentAge = lspAgeReceived + (lsdbAge.ageCounter() - ageCounterWhenReceived); 237 currentAge = lspAgeReceived + (lsdbAge.ageCounter() - ageCounterWhenReceived);
238 + } else {
239 + return IsisConstants.LSPMAXAGE;
240 + }
241 + } else {
242 + currentAge = lspAgeReceived + (lsdbAge.ageCounter() - ageCounterWhenReceived);
243 + }
233 } else { 244 } else {
234 currentAge = lspAgeReceived + ((IsisConstants.LSPMAXAGE + lsdbAge.ageCounter()) 245 currentAge = lspAgeReceived + ((IsisConstants.LSPMAXAGE + lsdbAge.ageCounter())
235 - ageCounterWhenReceived); 246 - ageCounterWhenReceived);
...@@ -245,6 +256,8 @@ public class DefaultLspWrapper implements LspWrapper { ...@@ -245,6 +256,8 @@ public class DefaultLspWrapper implements LspWrapper {
245 return currentAge; 256 return currentAge;
246 } 257 }
247 258
259 +
260 +
248 /** 261 /**
249 * Returns remaining time. 262 * Returns remaining time.
250 * 263 *
...@@ -252,7 +265,7 @@ public class DefaultLspWrapper implements LspWrapper { ...@@ -252,7 +265,7 @@ public class DefaultLspWrapper implements LspWrapper {
252 */ 265 */
253 public int remainingLifetime() { 266 public int remainingLifetime() {
254 //Calculate the remaining lifetime 267 //Calculate the remaining lifetime
255 - remainingLifetime = IsisConstants.LSPMAXAGE - lsdbAge.ageCounter(); 268 + remainingLifetime = IsisConstants.LSPMAXAGE - currentAge();
256 return remainingLifetime; 269 return remainingLifetime;
257 } 270 }
258 271
......
...@@ -100,7 +100,9 @@ public class IsisLspQueueConsumer implements Runnable { ...@@ -100,7 +100,9 @@ public class IsisLspQueueConsumer implements Runnable {
100 IsisConstants.CHECKSUMPOSITION + 1); 100 IsisConstants.CHECKSUMPOSITION + 1);
101 //write to the channel 101 //write to the channel
102 channel.write(IsisUtil.framePacket(lspBytes, isisInterface.interfaceIndex())); 102 channel.write(IsisUtil.framePacket(lspBytes, isisInterface.interfaceIndex()));
103 - 103 + // Updating the database with resetting remaining life time to default.
104 + IsisLsdb isisDb = isisInterface.isisLsdb();
105 + isisDb.addLsp(lsPdu, true, isisInterface);
104 log.debug("LSPQueueConsumer: processRefreshLsp - Flooded SelfOriginated LSP {}", 106 log.debug("LSPQueueConsumer: processRefreshLsp - Flooded SelfOriginated LSP {}",
105 wrapper.lsPdu()); 107 wrapper.lsPdu());
106 } 108 }
......
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
16 16
17 package org.onosproject.isis.controller.impl; 17 package org.onosproject.isis.controller.impl;
18 18
19 +import com.fasterxml.jackson.databind.JsonNode;
20 +import com.fasterxml.jackson.databind.ObjectMapper;
19 import org.junit.After; 21 import org.junit.After;
20 import org.junit.Before; 22 import org.junit.Before;
21 import org.junit.Test; 23 import org.junit.Test;
...@@ -30,10 +32,65 @@ import static org.junit.Assert.assertThat; ...@@ -30,10 +32,65 @@ import static org.junit.Assert.assertThat;
30 public class ControllerTest { 32 public class ControllerTest {
31 33
32 private Controller controller; 34 private Controller controller;
35 + private ObjectMapper mapper;
36 + private JsonNode jsonNode;
37 + private JsonNode jsonNode1;
38 + private String jsonString = "{" +
39 + " \"processes\": [{" +
40 + " \"processId\": \"4.4.4.4\"," +
41 + " \"interface\": [{" +
42 + " \"interfaceIndex\": \"2\"," +
43 + " \"macAddress\": \"08:00:27:b7:ab:bf\"," +
44 + " \"interfaceIp\": \"192.168.56.101\"," +
45 + " \"networkMask\": \"255.255.255.224\"," +
46 + " \"intermediateSystemName\": \"ROUTERONE\"," +
47 + " \"systemId\": \"2929.2929.2929\"," +
48 + " \"lanId\": \"0000.0000.0000.00\"," +
49 + " \"idLength\": \"0\"," +
50 + " \"maxAreaAddresses\": \"3\"," +
51 + " \"reservedPacketCircuitType\": \"1\"," +
52 + " \"circuitId\": \"10\"," +
53 + " \"networkType\": \"2\"," +
54 + " \"areaAddress\": \"490000\"," +
55 + " \"areaLength\": \"3\"," +
56 + " \"lspId\": \"1313131313130000\"," +
57 + " \"holdingTime\": \"50\"," +
58 + " \"helloInterval\": \"10\"," +
59 + " \"priority\": \"0\"" +
60 + " }]" +
61 + " }]" +
62 + "}";
63 + private String jsonString1 = "{" +
64 + " \"processes\": {" +
65 + " \"interface\": [{" +
66 + " \"interfaceIndex\": \"2\"," +
67 + " \"interfaceIp\": \"100.100.100.100\"," +
68 + " \"macAddress\": \"08:00:27:b7:ab:bf\"," +
69 + " \"networkMask\": \"255.255.255.224\"," +
70 + " \"intermediateSystemName\": \"ROUTERONE\"," +
71 + " \"systemId\": \"2929.2929.2929\"," +
72 + " \"lanId\": \"0000.0000.0000.00\"," +
73 + " \"idLength\": \"0\"," +
74 + " \"maxAreaAddresses\": \"3\"," +
75 + " \"reservedPacketCircuitType\": \"1\"," +
76 + " \"circuitId\": \"10\"," +
77 + " \"networkType\": \"2\"," +
78 + " \"areaAddress\": \"490000\"," +
79 + " \"areaLength\": \"3\"," +
80 + " \"lspId\": \"1313131313130000\"," +
81 + " \"holdingTime\": \"50\"," +
82 + " \"helloInterval\": \"10\"," +
83 + " \"priority\": \"0\"" +
84 + " }]" +
85 + " }" +
86 + "}";
33 87
34 @Before 88 @Before
35 public void setUp() throws Exception { 89 public void setUp() throws Exception {
36 controller = new Controller(); 90 controller = new Controller();
91 + mapper = new ObjectMapper();
92 + jsonNode = mapper.readTree(jsonString);
93 + jsonNode1 = mapper.readTree(jsonString1);
37 } 94 }
38 95
39 @After 96 @After
...@@ -58,4 +115,18 @@ public class ControllerTest { ...@@ -58,4 +115,18 @@ public class ControllerTest {
58 controller.getAllConfiguredProcesses(); 115 controller.getAllConfiguredProcesses();
59 assertThat(controller, is(notNullValue())); 116 assertThat(controller, is(notNullValue()));
60 } 117 }
118 +
119 + /**
120 + * Tests updateConfig() method.
121 + */
122 + @Test
123 + public void testUpdateConfig() throws Exception {
124 + jsonNode.path("interface");
125 + controller.updateConfig(jsonNode);
126 + assertThat(controller, is(notNullValue()));
127 +
128 + controller.updateConfig(jsonNode1);
129 + assertThat(controller, is(notNullValue()));
130 + }
131 +
61 } 132 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -15,9 +15,13 @@ ...@@ -15,9 +15,13 @@
15 */ 15 */
16 package org.onosproject.isis.controller.impl; 16 package org.onosproject.isis.controller.impl;
17 17
18 +import com.fasterxml.jackson.databind.JsonNode;
19 +import com.fasterxml.jackson.databind.ObjectMapper;
20 +import org.easymock.EasyMock;
18 import org.junit.After; 21 import org.junit.After;
19 import org.junit.Before; 22 import org.junit.Before;
20 import org.junit.Test; 23 import org.junit.Test;
24 +import org.onosproject.isis.controller.topology.IsisRouterListener;
21 25
22 import static org.hamcrest.CoreMatchers.is; 26 import static org.hamcrest.CoreMatchers.is;
23 import static org.hamcrest.CoreMatchers.notNullValue; 27 import static org.hamcrest.CoreMatchers.notNullValue;
...@@ -27,11 +31,43 @@ import static org.junit.Assert.assertThat; ...@@ -27,11 +31,43 @@ import static org.junit.Assert.assertThat;
27 * Unit test case for DefaultIsisController. 31 * Unit test case for DefaultIsisController.
28 */ 32 */
29 public class DefaultIsisControllerTest { 33 public class DefaultIsisControllerTest {
34 + private ObjectMapper mapper;
35 + private JsonNode jsonNode;
30 private DefaultIsisController defaultIsisController; 36 private DefaultIsisController defaultIsisController;
37 + private String jsonString = "{" +
38 + " \"processes\": [{" +
39 + " \"processId\": \"4.4.4.4\"," +
40 + " \"interface\": [{" +
41 + " \"interfaceIndex\": \"2\"," +
42 + " \"macAddress\": \"08:00:27:b7:ab:bf\"," +
43 + " \"interfaceIp\": \"192.168.56.101\"," +
44 + " \"networkMask\": \"255.255.255.224\"," +
45 + " \"intermediateSystemName\": \"ROUTERONE\"," +
46 + " \"systemId\": \"2929.2929.2929\"," +
47 + " \"lanId\": \"0000.0000.0000.00\"," +
48 + " \"idLength\": \"0\"," +
49 + " \"maxAreaAddresses\": \"3\"," +
50 + " \"reservedPacketCircuitType\": \"1\"," +
51 + " \"circuitId\": \"10\"," +
52 + " \"networkType\": \"2\"," +
53 + " \"areaAddress\": \"490000\"," +
54 + " \"areaLength\": \"3\"," +
55 + " \"lspId\": \"1313131313130000\"," +
56 + " \"holdingTime\": \"50\"," +
57 + " \"helloInterval\": \"10\"," +
58 + " \"priority\": \"0\"" +
59 + " }]" +
60 + " }]" +
61 + "}";
62 +
63 + private IsisRouterListener isisRouterListener;
31 64
32 @Before 65 @Before
33 public void setUp() throws Exception { 66 public void setUp() throws Exception {
34 defaultIsisController = new DefaultIsisController(); 67 defaultIsisController = new DefaultIsisController();
68 + mapper = new ObjectMapper();
69 + jsonNode = mapper.readTree(jsonString);
70 + isisRouterListener = EasyMock.createNiceMock(IsisRouterListener.class);
35 } 71 }
36 72
37 @After 73 @After
...@@ -66,4 +102,31 @@ public class DefaultIsisControllerTest { ...@@ -66,4 +102,31 @@ public class DefaultIsisControllerTest {
66 defaultIsisController.allConfiguredProcesses(); 102 defaultIsisController.allConfiguredProcesses();
67 assertThat(defaultIsisController, is(notNullValue())); 103 assertThat(defaultIsisController, is(notNullValue()));
68 } 104 }
105 +
106 + /**
107 + * Tests updateConfig() method.
108 + */
109 + @Test
110 + public void testUpdateConfig() throws Exception {
111 + defaultIsisController.updateConfig(jsonNode);
112 + assertThat(defaultIsisController, is(notNullValue()));
113 + }
114 +
115 + /**
116 + * Tests addRouterListener() method.
117 + */
118 + @Test
119 + public void testaddRouterListener() throws Exception {
120 + defaultIsisController.addRouterListener(isisRouterListener);
121 + assertThat(defaultIsisController, is(notNullValue()));
122 + }
123 +
124 + /**
125 + * Tests removeRouterListener() method.
126 + */
127 + @Test
128 + public void testremoveRouterListener() throws Exception {
129 + defaultIsisController.removeRouterListener(isisRouterListener);
130 + assertThat(defaultIsisController, is(notNullValue()));
131 + }
69 } 132 }
......
...@@ -36,6 +36,7 @@ public class DefaultIsisProcessTest { ...@@ -36,6 +36,7 @@ public class DefaultIsisProcessTest {
36 private final String processId = "1"; 36 private final String processId = "1";
37 private IsisProcess isisProcess; 37 private IsisProcess isisProcess;
38 private String result; 38 private String result;
39 + private IsisProcess defaultIsisProcess;
39 private IsisInterface isisInterface; 40 private IsisInterface isisInterface;
40 private List<IsisInterface> isisInterfaceList; 41 private List<IsisInterface> isisInterfaceList;
41 private List<IsisInterface> result1; 42 private List<IsisInterface> result1;
...@@ -44,6 +45,7 @@ public class DefaultIsisProcessTest { ...@@ -44,6 +45,7 @@ public class DefaultIsisProcessTest {
44 public void setUp() throws Exception { 45 public void setUp() throws Exception {
45 isisProcess = new DefaultIsisProcess(); 46 isisProcess = new DefaultIsisProcess();
46 isisInterface = EasyMock.createNiceMock(DefaultIsisInterface.class); 47 isisInterface = EasyMock.createNiceMock(DefaultIsisInterface.class);
48 + defaultIsisProcess = new DefaultIsisProcess();
47 } 49 }
48 50
49 @After 51 @After
...@@ -90,4 +92,4 @@ public class DefaultIsisProcessTest { ...@@ -90,4 +92,4 @@ public class DefaultIsisProcessTest {
90 result1 = isisProcess.isisInterfaceList(); 92 result1 = isisProcess.isisInterfaceList();
91 assertThat(result1, is(nullValue())); 93 assertThat(result1, is(nullValue()));
92 } 94 }
93 -} 95 +}
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -23,10 +23,14 @@ import org.jboss.netty.channel.MessageEvent; ...@@ -23,10 +23,14 @@ import org.jboss.netty.channel.MessageEvent;
23 import org.junit.After; 23 import org.junit.After;
24 import org.junit.Before; 24 import org.junit.Before;
25 import org.junit.Test; 25 import org.junit.Test;
26 +import org.onlab.packet.Ip4Address;
27 +import org.onosproject.isis.controller.IsisInterface;
26 import org.onosproject.isis.controller.IsisMessage; 28 import org.onosproject.isis.controller.IsisMessage;
29 +import org.onosproject.isis.controller.IsisNetworkType;
27 import org.onosproject.isis.controller.IsisProcess; 30 import org.onosproject.isis.controller.IsisProcess;
28 import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu; 31 import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu;
29 32
33 +import java.util.ArrayList;
30 import java.util.List; 34 import java.util.List;
31 35
32 import static org.hamcrest.CoreMatchers.is; 36 import static org.hamcrest.CoreMatchers.is;
...@@ -43,12 +47,14 @@ public class IsisChannelHandlerTest { ...@@ -43,12 +47,14 @@ public class IsisChannelHandlerTest {
43 private IsisChannelHandler isisChannelHandler; 47 private IsisChannelHandler isisChannelHandler;
44 private Controller controller; 48 private Controller controller;
45 private IsisProcess isisProcess; 49 private IsisProcess isisProcess;
46 - private List<IsisProcess> isisProcessList; 50 + private List<IsisProcess> isisProcessList = new ArrayList();
47 private ChannelHandlerContext channelHandlerContext; 51 private ChannelHandlerContext channelHandlerContext;
48 private ChannelStateEvent channelStateEvent; 52 private ChannelStateEvent channelStateEvent;
49 private ExceptionEvent exceptionEvent; 53 private ExceptionEvent exceptionEvent;
50 private MessageEvent messageEvent; 54 private MessageEvent messageEvent;
51 private IsisMessage isisMessage; 55 private IsisMessage isisMessage;
56 + private List<IsisInterface> isisInterfaceList = new ArrayList<>();
57 + private Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10");
52 58
53 @Before 59 @Before
54 public void setUp() throws Exception { 60 public void setUp() throws Exception {
...@@ -71,7 +77,7 @@ public class IsisChannelHandlerTest { ...@@ -71,7 +77,7 @@ public class IsisChannelHandlerTest {
71 /** 77 /**
72 * Tests initializeInterfaceMap() method. 78 * Tests initializeInterfaceMap() method.
73 */ 79 */
74 - @Test(expected = Exception.class) 80 + @Test
75 public void testInitializeInterfaceMap() throws Exception { 81 public void testInitializeInterfaceMap() throws Exception {
76 isisChannelHandler.initializeInterfaceMap(); 82 isisChannelHandler.initializeInterfaceMap();
77 assertThat(isisChannelHandler, is(notNullValue())); 83 assertThat(isisChannelHandler, is(notNullValue()));
...@@ -82,6 +88,32 @@ public class IsisChannelHandlerTest { ...@@ -82,6 +88,32 @@ public class IsisChannelHandlerTest {
82 */ 88 */
83 @Test(expected = Exception.class) 89 @Test(expected = Exception.class)
84 public void testUpdateInterfaceMap() throws Exception { 90 public void testUpdateInterfaceMap() throws Exception {
91 + IsisInterface isisInterface = new DefaultIsisInterface();
92 + IsisInterface isisInterface1 = new DefaultIsisInterface();
93 + isisInterface.setInterfaceIpAddress(ip4Address);
94 + isisInterface.setInterfaceIndex(1);
95 + isisInterfaceList.add(isisInterface);
96 + IsisProcess isisProcess = new DefaultIsisProcess();
97 + isisProcess.setIsisInterfaceList(isisInterfaceList);
98 + isisProcessList.add(isisProcess);
99 + isisChannelHandler.updateInterfaceMap(isisProcessList);
100 + assertThat(isisChannelHandler, is(notNullValue()));
101 + isisProcessList = new ArrayList<>();
102 + isisInterface1.setInterfaceIpAddress(ip4Address);
103 + isisInterface1.setInterfaceIndex(1);
104 + isisInterface1.setInterfaceIpAddress(ip4Address);
105 + isisInterface1.setInterfaceIndex(1);
106 + isisInterface1.setSystemId("9999.9999.9999");
107 + isisInterface1.setIntermediateSystemName("router");
108 + isisInterface1.setReservedPacketCircuitType(3);
109 + isisInterface1.setCircuitId("10");
110 + isisInterface1.setNetworkType(IsisNetworkType.BROADCAST);
111 + isisInterface1.setAreaAddress("490001");
112 + isisInterface1.setHoldingTime(50);
113 + isisInterface1.setHelloInterval(10);
114 + isisInterfaceList.add(isisInterface1);
115 + isisProcess.setIsisInterfaceList(isisInterfaceList);
116 + isisProcessList.add(isisProcess);
85 isisChannelHandler.updateInterfaceMap(isisProcessList); 117 isisChannelHandler.updateInterfaceMap(isisProcessList);
86 assertThat(isisChannelHandler, is(notNullValue())); 118 assertThat(isisChannelHandler, is(notNullValue()));
87 } 119 }
...@@ -89,7 +121,7 @@ public class IsisChannelHandlerTest { ...@@ -89,7 +121,7 @@ public class IsisChannelHandlerTest {
89 /** 121 /**
90 * Tests initializeInterfaceIpList() method. 122 * Tests initializeInterfaceIpList() method.
91 */ 123 */
92 - @Test(expected = Exception.class) 124 + @Test
93 public void testInitializeInterfaceIpList() throws Exception { 125 public void testInitializeInterfaceIpList() throws Exception {
94 isisChannelHandler.initializeInterfaceIpList(); 126 isisChannelHandler.initializeInterfaceIpList();
95 assertThat(isisChannelHandler, is(notNullValue())); 127 assertThat(isisChannelHandler, is(notNullValue()));
......
...@@ -58,7 +58,7 @@ public class IsisHelloPduSenderTest { ...@@ -58,7 +58,7 @@ public class IsisHelloPduSenderTest {
58 /** 58 /**
59 * Tests run() method. 59 * Tests run() method.
60 */ 60 */
61 - @Test 61 + @Test(expected = Exception.class)
62 public void testRun() throws Exception { 62 public void testRun() throws Exception {
63 isisInterface.setNetworkType(IsisNetworkType.P2P); 63 isisInterface.setNetworkType(IsisNetworkType.P2P);
64 isisInterface.setCircuitId(circuitId); 64 isisInterface.setCircuitId(circuitId);
......
...@@ -24,11 +24,14 @@ import static org.hamcrest.MatcherAssert.assertThat; ...@@ -24,11 +24,14 @@ import static org.hamcrest.MatcherAssert.assertThat;
24 public class IsisMessageDecoderTest { 24 public class IsisMessageDecoderTest {
25 25
26 private final byte[] hello = { 26 private final byte[] hello = {
27 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
27 -125, 20, 1, 0, 17, 1, 0, 0, 28 -125, 20, 1, 0, 17, 1, 0, 0,
28 2, 51, 51, 51, 51, 51, 51, 0, 100, 5, -39, -126, 1, 4, 3, 29 2, 51, 51, 51, 51, 51, 51, 0, 100, 5, -39, -126, 1, 4, 3,
29 73, 0, 0, -127, 1, -52, -124, 4, -64, -88, 56, 102 30 73, 0, 0, -127, 1, -52, -124, 4, -64, -88, 56, 102
30 }; 31 };
32 + private final byte[] array2 = {0, 0, 0, 0, 0, 0, 0};
31 private final String id = "127.0.0.1"; 33 private final String id = "127.0.0.1";
34 + private byte[] array1;
32 private IsisMessageDecoder isisMessageDecoder; 35 private IsisMessageDecoder isisMessageDecoder;
33 private ChannelHandlerContext ctx; 36 private ChannelHandlerContext ctx;
34 private Channel channel; 37 private Channel channel;
...@@ -49,7 +52,8 @@ public class IsisMessageDecoderTest { ...@@ -49,7 +52,8 @@ public class IsisMessageDecoderTest {
49 public void testDecode() throws Exception { 52 public void testDecode() throws Exception {
50 channel = EasyMock.createMock(Channel.class); 53 channel = EasyMock.createMock(Channel.class);
51 socketAddress = InetSocketAddress.createUnresolved(id, 7000); 54 socketAddress = InetSocketAddress.createUnresolved(id, 7000);
52 - byte[] array = IsisUtil.getPaddingTlvs(hello.length); 55 + byte[] array = IsisUtil.getPaddingTlvs(hello.length - 17);
56 + array1 = Bytes.concat(hello, array);
53 channelBuffer = ChannelBuffers.copiedBuffer(Bytes.concat(hello, array)); 57 channelBuffer = ChannelBuffers.copiedBuffer(Bytes.concat(hello, array));
54 assertThat(isisMessageDecoder.decode(ctx, channel, channelBuffer), is(nullValue())); 58 assertThat(isisMessageDecoder.decode(ctx, channel, channelBuffer), is(nullValue()));
55 } 59 }
......
...@@ -22,8 +22,13 @@ import org.onosproject.isis.controller.IsisLsdb; ...@@ -22,8 +22,13 @@ import org.onosproject.isis.controller.IsisLsdb;
22 import org.onosproject.isis.controller.IsisLsdbAge; 22 import org.onosproject.isis.controller.IsisLsdbAge;
23 import org.onosproject.isis.controller.IsisPduType; 23 import org.onosproject.isis.controller.IsisPduType;
24 import org.onosproject.isis.controller.LspWrapper; 24 import org.onosproject.isis.controller.LspWrapper;
25 +import org.onosproject.isis.controller.impl.DefaultIsisInterface;
26 +import org.onosproject.isis.io.isispacket.IsisHeader;
27 +import org.onosproject.isis.io.isispacket.pdu.AttachedToOtherAreas;
28 +import org.onosproject.isis.io.isispacket.pdu.LsPdu;
25 import org.onosproject.isis.io.util.IsisConstants; 29 import org.onosproject.isis.io.util.IsisConstants;
26 30
31 +import java.util.List;
27 import java.util.Map; 32 import java.util.Map;
28 import java.util.concurrent.ConcurrentHashMap; 33 import java.util.concurrent.ConcurrentHashMap;
29 34
...@@ -37,19 +42,27 @@ public class DefaultIsisLsdbTest { ...@@ -37,19 +42,27 @@ public class DefaultIsisLsdbTest {
37 private final int l1LspSeqNo = IsisConstants.STARTLSSEQUENCENUM; 42 private final int l1LspSeqNo = IsisConstants.STARTLSSEQUENCENUM;
38 private final int l2LspSeqNo = IsisConstants.STARTLSSEQUENCENUM; 43 private final int l2LspSeqNo = IsisConstants.STARTLSSEQUENCENUM;
39 private final String srcId = "1111.1111.1111"; 44 private final String srcId = "1111.1111.1111";
40 -
41 private DefaultIsisLsdb defaultIsisLsdb; 45 private DefaultIsisLsdb defaultIsisLsdb;
42 private IsisLsdbAge lsdbAge = null; 46 private IsisLsdbAge lsdbAge = null;
43 -
44 -
45 private int resultInt; 47 private int resultInt;
46 private Map<String, LspWrapper> resultMap = new ConcurrentHashMap<>(); 48 private Map<String, LspWrapper> resultMap = new ConcurrentHashMap<>();
47 private IsisLsdb resultLsdb; 49 private IsisLsdb resultLsdb;
48 private LspWrapper resultLspWrapper; 50 private LspWrapper resultLspWrapper;
49 - 51 + private List<LspWrapper> lspWrapperList;
52 + private LsPdu lsPdu;
53 + private IsisHeader isisHeader;
54 + private DefaultIsisInterface defaultIsisInterface;
55 + private String lspId = "1234.1234.1234.00-00";
56 + private String result;
50 57
51 @Before 58 @Before
52 public void setUp() throws Exception { 59 public void setUp() throws Exception {
60 + defaultIsisInterface = new DefaultIsisInterface();
61 + isisHeader = new IsisHeader();
62 + lsPdu = new LsPdu(isisHeader);
63 + lsPdu.setLspId(lspId);
64 + lsPdu.setAttachedToOtherAreas(AttachedToOtherAreas.DEFAULTMETRIC);
65 + lsPdu.setIsisPduType(IsisPduType.L1LSPDU.value());
53 defaultIsisLsdb = new DefaultIsisLsdb(); 66 defaultIsisLsdb = new DefaultIsisLsdb();
54 } 67 }
55 68
...@@ -129,5 +142,60 @@ public class DefaultIsisLsdbTest { ...@@ -129,5 +142,60 @@ public class DefaultIsisLsdbTest {
129 resultLspWrapper = defaultIsisLsdb.findLsp(IsisPduType.L1HELLOPDU, srcId); 142 resultLspWrapper = defaultIsisLsdb.findLsp(IsisPduType.L1HELLOPDU, srcId);
130 assertThat(resultLspWrapper, is(nullValue())); 143 assertThat(resultLspWrapper, is(nullValue()));
131 } 144 }
145 +
146 + /**
147 + * Tests allLspHeaders() method.
148 + */
149 + @Test
150 + public void testAllLspHeaders() throws Exception {
151 + defaultIsisLsdb.addLsp(lsPdu, false, defaultIsisInterface);
152 + lspWrapperList = defaultIsisLsdb.allLspHeaders(true);
153 + assertThat(lspWrapperList, is(notNullValue()));
154 +
155 + defaultIsisLsdb.addLsp(lsPdu, true, defaultIsisInterface);
156 + lspWrapperList = defaultIsisLsdb.allLspHeaders(true);
157 + assertThat(lspWrapperList, is(notNullValue()));
158 + }
159 +
160 + /**
161 + * Tests isNewerOrSameLsp() method.
162 + */
163 + @Test
164 + public void testIsNewerOrSameLsp() throws Exception {
165 + result = defaultIsisLsdb.isNewerOrSameLsp(lsPdu, lsPdu);
166 + assertThat(result, is("same"));
167 + }
168 +
169 + /**
170 + * Tests lsSequenceNumber() method.
171 + */
172 + @Test
173 + public void testLsSequenceNumber() throws Exception {
174 + resultInt = defaultIsisLsdb.lsSequenceNumber(IsisPduType.L1LSPDU);
175 + assertThat(resultInt, is(1));
176 +
177 + resultInt = defaultIsisLsdb.lsSequenceNumber(IsisPduType.L2LSPDU);
178 + assertThat(resultInt, is(1));
179 +
180 + resultInt = defaultIsisLsdb.lsSequenceNumber(IsisPduType.L1CSNP);
181 + assertThat(resultInt, is(1));
182 + }
183 +
184 + /**
185 + * Tests deleteLsp() method.
186 + */
187 + @Test
188 + public void testdeleteLsp() throws Exception {
189 + defaultIsisLsdb.deleteLsp(lsPdu);
190 + assertThat(defaultIsisLsdb, is(notNullValue()));
191 +
192 + lsPdu.setIsisPduType(IsisPduType.L2LSPDU.value());
193 + defaultIsisLsdb.deleteLsp(lsPdu);
194 + assertThat(defaultIsisLsdb, is(notNullValue()));
195 +
196 + lsPdu.setIsisPduType(IsisPduType.L1CSNP.value());
197 + defaultIsisLsdb.deleteLsp(lsPdu);
198 + assertThat(defaultIsisLsdb, is(notNullValue()));
199 + }
132 } 200 }
133 201
......
...@@ -19,7 +19,11 @@ import org.junit.After; ...@@ -19,7 +19,11 @@ import org.junit.After;
19 import org.junit.Before; 19 import org.junit.Before;
20 import org.junit.Test; 20 import org.junit.Test;
21 import org.onosproject.isis.controller.IsisInterface; 21 import org.onosproject.isis.controller.IsisInterface;
22 +import org.onosproject.isis.controller.IsisLsdbAge;
23 +import org.onosproject.isis.controller.IsisPduType;
22 import org.onosproject.isis.controller.impl.DefaultIsisInterface; 24 import org.onosproject.isis.controller.impl.DefaultIsisInterface;
25 +import org.onosproject.isis.io.isispacket.IsisHeader;
26 +import org.onosproject.isis.io.isispacket.pdu.LsPdu;
23 27
24 import static org.hamcrest.CoreMatchers.is; 28 import static org.hamcrest.CoreMatchers.is;
25 import static org.hamcrest.CoreMatchers.notNullValue; 29 import static org.hamcrest.CoreMatchers.notNullValue;
...@@ -36,11 +40,20 @@ public class DefaultLspWrapperTest { ...@@ -36,11 +40,20 @@ public class DefaultLspWrapperTest {
36 private int result1; 40 private int result1;
37 private IsisInterface isisInterface; 41 private IsisInterface isisInterface;
38 private IsisInterface result2; 42 private IsisInterface result2;
43 + private IsisPduType isisPduType;
44 + private boolean result3;
45 + private LsPdu lsPdu;
46 + private LsPdu pdu;
47 + private DefaultIsisLsdbAge defaultIsisLsdbAge;
48 + private IsisLsdbAge lsdbAge;
39 49
40 @Before 50 @Before
41 public void setUp() throws Exception { 51 public void setUp() throws Exception {
42 defaultLspWrapper = new DefaultLspWrapper(); 52 defaultLspWrapper = new DefaultLspWrapper();
43 isisInterface = new DefaultIsisInterface(); 53 isisInterface = new DefaultIsisInterface();
54 + pdu = new LsPdu(new IsisHeader());
55 + defaultIsisLsdbAge = new DefaultIsisLsdbAge();
56 + defaultIsisLsdbAge.startDbAging();
44 } 57 }
45 58
46 @After 59 @After
...@@ -108,4 +121,169 @@ public class DefaultLspWrapperTest { ...@@ -108,4 +121,169 @@ public class DefaultLspWrapperTest {
108 assertThat(result2, is(notNullValue())); 121 assertThat(result2, is(notNullValue()));
109 } 122 }
110 123
124 + /**
125 + * Tests ageCounterWhenReceived() getter method.
126 + */
127 + @Test
128 + public void testAgeCounterWhenReceived() throws Exception {
129 + defaultLspWrapper.setAgeCounterWhenReceived(1);
130 + result1 = defaultLspWrapper.ageCounterWhenReceived();
131 + assertThat(result1, is(notNullValue()));
132 + }
133 +
134 + /**
135 + * Tests ageCounterWhenReceived() setter method.
136 + */
137 + @Test
138 + public void testSetAgeCounterWhenReceived() throws Exception {
139 + defaultLspWrapper.setAgeCounterWhenReceived(1);
140 + result1 = defaultLspWrapper.ageCounterWhenReceived();
141 + assertThat(result1, is(notNullValue()));
142 + }
143 +
144 + /**
145 + * Tests ageCounterRollOverWhenAdded() getter method.
146 + */
147 + @Test
148 + public void testAgeCounterRollOverWhenAdded() throws Exception {
149 + defaultLspWrapper.setAgeCounterRollOverWhenAdded(1);
150 + result1 = defaultLspWrapper.ageCounterRollOverWhenAdded();
151 + assertThat(result1, is(notNullValue()));
152 + }
153 +
154 + /**
155 + * Tests ageCounterRollOverWhenAdded() setter method.
156 + */
157 + @Test
158 + public void testSetAgeCounterRollOverWhenAdded() throws Exception {
159 + defaultLspWrapper.setAgeCounterRollOverWhenAdded(1);
160 + result1 = defaultLspWrapper.ageCounterRollOverWhenAdded();
161 + assertThat(result1, is(notNullValue()));
162 + }
163 +
164 + /**
165 + * Tests lspType() getter method.
166 + */
167 + @Test
168 + public void testLspType() throws Exception {
169 + defaultLspWrapper.setLspType(IsisPduType.L1LSPDU);
170 + isisPduType = defaultLspWrapper.lspType();
171 + assertThat(isisPduType, is(IsisPduType.L1LSPDU));
172 + }
173 +
174 + /**
175 + * Tests lspType() setter method.
176 + */
177 + @Test
178 + public void testSetLspType() throws Exception {
179 + defaultLspWrapper.setLspType(IsisPduType.L1LSPDU);
180 + isisPduType = defaultLspWrapper.lspType();
181 + assertThat(isisPduType, is(IsisPduType.L1LSPDU));
182 + }
183 +
184 + /**
185 + * Tests isSelfOriginated() getter method.
186 + */
187 + @Test
188 + public void testIsSelfOriginated() throws Exception {
189 + defaultLspWrapper.setSelfOriginated(true);
190 + result3 = defaultLspWrapper.isSelfOriginated();
191 + assertThat(result3, is(true));
192 + }
193 +
194 + /**
195 + * Tests isSelfOriginated() setter method.
196 + */
197 + @Test
198 + public void testSetSelfOriginated() throws Exception {
199 + defaultLspWrapper.setSelfOriginated(true);
200 + result3 = defaultLspWrapper.isSelfOriginated();
201 + assertThat(result3, is(true));
202 + }
203 +
204 + /**
205 + * Tests binNumber() getter method.
206 + */
207 + @Test
208 + public void testBinNumber() throws Exception {
209 + defaultLspWrapper.setBinNumber(1);
210 + result1 = defaultLspWrapper.binNumber();
211 + assertThat(result1, is(1));
212 + }
213 +
214 + /**
215 + * Tests binNumber() setter method.
216 + */
217 + @Test
218 + public void testSetBinNumber() throws Exception {
219 + defaultLspWrapper.setBinNumber(1);
220 + result1 = defaultLspWrapper.binNumber();
221 + assertThat(result1, is(1));
222 + }
223 +
224 + /**
225 + * Tests lsPdu() getter method.
226 + */
227 + @Test
228 + public void testLsPdu() throws Exception {
229 + defaultLspWrapper.setLsPdu(pdu);
230 + lsPdu = defaultLspWrapper.lsPdu();
231 + assertThat(lsPdu, is(pdu));
232 + }
233 +
234 + /**
235 + * Tests lsPdu() setter method.
236 + */
237 + @Test
238 + public void testSetLsPdu() throws Exception {
239 + defaultLspWrapper.setLsPdu(pdu);
240 + lsPdu = defaultLspWrapper.lsPdu();
241 + assertThat(lsPdu, is(pdu));
242 + }
243 +
244 + /**
245 + * Tests lsdbAge() getter method.
246 + */
247 + @Test
248 + public void testlsdbAge() throws Exception {
249 + defaultLspWrapper.setLsdbAge(defaultIsisLsdbAge);
250 + lsdbAge = defaultLspWrapper.lsdbAge();
251 + assertThat(lsdbAge, is(defaultIsisLsdbAge));
252 + }
253 +
254 + /**
255 + * Tests lsdbAge() setter method.
256 + */
257 + @Test
258 + public void testSetLsdbAge() throws Exception {
259 + defaultLspWrapper.setLsdbAge(defaultIsisLsdbAge);
260 + lsdbAge = defaultLspWrapper.lsdbAge();
261 + assertThat(lsdbAge, is(defaultIsisLsdbAge));
262 + }
263 +
264 + /**
265 + * Tests remainingLifetime() getter method.
266 + */
267 + @Test
268 + public void testRemainingLifetime() throws Exception {
269 + defaultLspWrapper.setLsdbAge(defaultIsisLsdbAge);
270 + defaultLspWrapper.setAgeCounterWhenReceived(1);
271 + defaultLspWrapper.currentAge();
272 + defaultLspWrapper.setRemainingLifetime(1);
273 + result1 = defaultLspWrapper.remainingLifetime();
274 + assertThat(result1, is(1));
275 + }
276 +
277 + /**
278 + * Tests remainingLifetime() setter method.
279 + */
280 + @Test
281 + public void testSetRemainingLifetime() throws Exception {
282 + defaultLspWrapper.setLsdbAge(defaultIsisLsdbAge);
283 + defaultLspWrapper.setAgeCounterWhenReceived(1);
284 + defaultLspWrapper.currentAge();
285 + defaultLspWrapper.setRemainingLifetime(1);
286 + result1 = defaultLspWrapper.remainingLifetime();
287 + assertThat(result1, is(1));
288 + }
111 } 289 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -18,7 +18,11 @@ package org.onosproject.isis.controller.impl.lsdb; ...@@ -18,7 +18,11 @@ package org.onosproject.isis.controller.impl.lsdb;
18 import org.junit.After; 18 import org.junit.After;
19 import org.junit.Before; 19 import org.junit.Before;
20 import org.junit.Test; 20 import org.junit.Test;
21 +import org.onosproject.isis.controller.impl.DefaultIsisInterface;
21 22
23 +import java.net.InetSocketAddress;
24 +import java.net.SocketAddress;
25 +import java.util.concurrent.ArrayBlockingQueue;
22 import java.util.concurrent.BlockingQueue; 26 import java.util.concurrent.BlockingQueue;
23 27
24 import static org.hamcrest.CoreMatchers.is; 28 import static org.hamcrest.CoreMatchers.is;
...@@ -31,10 +35,22 @@ import static org.junit.Assert.assertThat; ...@@ -31,10 +35,22 @@ import static org.junit.Assert.assertThat;
31 public class IsisLspQueueConsumerTest { 35 public class IsisLspQueueConsumerTest {
32 36
33 private IsisLspQueueConsumer isisLspQueueConsumer; 37 private IsisLspQueueConsumer isisLspQueueConsumer;
34 - private BlockingQueue blockingQueue; 38 + private BlockingQueue blockingQueue = new ArrayBlockingQueue(1024);
39 + private DefaultLspWrapper lspWrapper;
40 + private DefaultLspWrapper lspWrapper1;
41 + private SocketAddress socketAddress = InetSocketAddress.createUnresolved("127.0.0.1", 7000);
35 42
36 @Before 43 @Before
37 public void setUp() throws Exception { 44 public void setUp() throws Exception {
45 + lspWrapper = new DefaultLspWrapper();
46 + lspWrapper.setLspProcessing("refreshLsp");
47 + lspWrapper.setSelfOriginated(true);
48 + lspWrapper.setIsisInterface(new DefaultIsisInterface());
49 + lspWrapper1 = new DefaultLspWrapper();
50 + lspWrapper1.setLspProcessing("maxAgeLsp");
51 + lspWrapper1.setIsisInterface(new DefaultIsisInterface());
52 + blockingQueue.add(lspWrapper);
53 + blockingQueue.add(lspWrapper1);
38 isisLspQueueConsumer = new IsisLspQueueConsumer(blockingQueue); 54 isisLspQueueConsumer = new IsisLspQueueConsumer(blockingQueue);
39 } 55 }
40 56
......
...@@ -33,6 +33,7 @@ public final class IsisConstants { ...@@ -33,6 +33,7 @@ public final class IsisConstants {
33 public static final int IRPDISCRIMINATOR = 131; 33 public static final int IRPDISCRIMINATOR = 131;
34 public static final int ISISVERSION = 1; 34 public static final int ISISVERSION = 1;
35 public static final int RESERVED = 0; 35 public static final int RESERVED = 0;
36 + public static final int PRIORITY = 0;
36 public static final int MAXAREAADDRESS = 0; 37 public static final int MAXAREAADDRESS = 0;
37 public static final int SYSTEMIDLENGTH = 0; 38 public static final int SYSTEMIDLENGTH = 0;
38 public static final int PROTOCOLSUPPORTED = 204; 39 public static final int PROTOCOLSUPPORTED = 204;
...@@ -55,24 +56,15 @@ public final class IsisConstants { ...@@ -55,24 +56,15 @@ public final class IsisConstants {
55 public static final String DEFAULTLANID = "0000.0000.0000.00"; 56 public static final String DEFAULTLANID = "0000.0000.0000.00";
56 public static final String PROCESSESID = "processId"; 57 public static final String PROCESSESID = "processId";
57 public static final String INTERFACE = "interface"; 58 public static final String INTERFACE = "interface";
58 - public static final String INTERFACEIP = "interfaceIp";
59 - public static final String NETWORKMASK = "networkMask";
60 public static final String INTERFACEINDEX = "interfaceIndex"; 59 public static final String INTERFACEINDEX = "interfaceIndex";
61 public static final String INTERMEDIATESYSTEMNAME = "intermediateSystemName"; 60 public static final String INTERMEDIATESYSTEMNAME = "intermediateSystemName";
62 public static final String SYSTEMID = "systemId"; 61 public static final String SYSTEMID = "systemId";
63 - public static final String LANID = "lanId";
64 - public static final String IDLENGTH = "idLength";
65 - public static final String MAXAREAADDRESSES = "maxAreaAddresses";
66 public static final String RESERVEDPACKETCIRCUITTYPE = "reservedPacketCircuitType"; 62 public static final String RESERVEDPACKETCIRCUITTYPE = "reservedPacketCircuitType";
67 public static final String CIRCUITID = "circuitId"; 63 public static final String CIRCUITID = "circuitId";
68 public static final String NETWORKTYPE = "networkType"; 64 public static final String NETWORKTYPE = "networkType";
69 public static final String AREAADDRESS = "areaAddress"; 65 public static final String AREAADDRESS = "areaAddress";
70 - public static final String AREALENGTH = "areaLength";
71 - public static final String LSPID = "lspId";
72 public static final String HOLDINGTIME = "holdingTime"; 66 public static final String HOLDINGTIME = "holdingTime";
73 public static final String HELLOINTERVAL = "helloInterval"; 67 public static final String HELLOINTERVAL = "helloInterval";
74 - public static final String PRIORITY = "priority";
75 - public static final String MACADDRESS = "macAddress";
76 68
77 /** 69 /**
78 * Non parameterized constructor. 70 * Non parameterized constructor.
......
...@@ -22,6 +22,7 @@ import org.onosproject.isis.controller.IsisInterface; ...@@ -22,6 +22,7 @@ import org.onosproject.isis.controller.IsisInterface;
22 import org.onosproject.isis.controller.IsisInterfaceState; 22 import org.onosproject.isis.controller.IsisInterfaceState;
23 import org.onosproject.isis.controller.IsisNeighbor; 23 import org.onosproject.isis.controller.IsisNeighbor;
24 import org.onosproject.isis.controller.IsisPduType; 24 import org.onosproject.isis.controller.IsisPduType;
25 +import org.onosproject.isis.controller.IsisRouterType;
25 import org.onosproject.isis.io.isispacket.IsisHeader; 26 import org.onosproject.isis.io.isispacket.IsisHeader;
26 import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu; 27 import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu;
27 import org.onosproject.isis.io.isispacket.pdu.P2PHelloPdu; 28 import org.onosproject.isis.io.isispacket.pdu.P2PHelloPdu;
...@@ -394,7 +395,6 @@ public final class IsisUtil { ...@@ -394,7 +395,6 @@ public final class IsisUtil {
394 isisHeader.setIdLength((byte) IsisConstants.SYSTEMIDLENGTH); 395 isisHeader.setIdLength((byte) IsisConstants.SYSTEMIDLENGTH);
395 isisHeader.setIsisPduType(IsisPduType.P2PHELLOPDU.value()); 396 isisHeader.setIsisPduType(IsisPduType.P2PHELLOPDU.value());
396 isisHeader.setVersion2((byte) IsisConstants.ISISVERSION); 397 isisHeader.setVersion2((byte) IsisConstants.ISISVERSION);
397 - //isisHeader.setReserved((byte) IsisConstants.RESERVED);
398 isisHeader.setReserved((byte) IsisConstants.PDULENGTHPOSITION); 398 isisHeader.setReserved((byte) IsisConstants.PDULENGTHPOSITION);
399 isisHeader.setMaximumAreaAddresses((byte) IsisConstants.MAXAREAADDRESS); 399 isisHeader.setMaximumAreaAddresses((byte) IsisConstants.MAXAREAADDRESS);
400 P2PHelloPdu p2pHelloPdu = new P2PHelloPdu(isisHeader); 400 P2PHelloPdu p2pHelloPdu = new P2PHelloPdu(isisHeader);
...@@ -510,14 +510,32 @@ public final class IsisUtil { ...@@ -510,14 +510,32 @@ public final class IsisUtil {
510 l1L2HelloPdu.addTlv(areaAddressTlv); 510 l1L2HelloPdu.addTlv(areaAddressTlv);
511 Set<MacAddress> neighbors = isisInterface.neighbors(); 511 Set<MacAddress> neighbors = isisInterface.neighbors();
512 if (neighbors.size() > 0) { 512 if (neighbors.size() > 0) {
513 + List<MacAddress> neighborMacs = new ArrayList<>();
514 + for (MacAddress neighbor : neighbors) {
515 + IsisNeighbor isisNeighbor = isisInterface.lookup(neighbor);
516 + if (isisPduType == IsisPduType.L1HELLOPDU) {
517 + if (isisNeighbor.routerType() == IsisRouterType.L1 ||
518 + isisNeighbor.routerType() == IsisRouterType.L1L2) {
519 + neighborMacs.add(neighbor);
520 + }
521 + } else if (isisPduType == IsisPduType.L2HELLOPDU) {
522 + if (isisNeighbor.routerType() == IsisRouterType.L2 ||
523 + isisNeighbor.routerType() == IsisRouterType.L1L2) {
524 + neighborMacs.add(neighbor);
525 + }
526 + }
527 + }
528 +
513 tlvHeader.setTlvType(TlvType.ISNEIGHBORS.value()); 529 tlvHeader.setTlvType(TlvType.ISNEIGHBORS.value());
514 tlvHeader.setTlvLength(0); 530 tlvHeader.setTlvLength(0);
531 +
515 IsisNeighborTlv isisNeighborTlv = new IsisNeighborTlv(tlvHeader); 532 IsisNeighborTlv isisNeighborTlv = new IsisNeighborTlv(tlvHeader);
516 - for (MacAddress neighbor : neighbors) { 533 + for (MacAddress neighbor : neighborMacs) {
517 isisNeighborTlv.addNeighbor(neighbor); 534 isisNeighborTlv.addNeighbor(neighbor);
518 } 535 }
519 l1L2HelloPdu.addTlv(isisNeighborTlv); 536 l1L2HelloPdu.addTlv(isisNeighborTlv);
520 } 537 }
538 +
521 tlvHeader.setTlvType(TlvType.PROTOCOLSUPPORTED.value()); 539 tlvHeader.setTlvType(TlvType.PROTOCOLSUPPORTED.value());
522 tlvHeader.setTlvLength(0); 540 tlvHeader.setTlvLength(0);
523 ProtocolSupportedTlv protocolSupportedTlv = new ProtocolSupportedTlv(tlvHeader); 541 ProtocolSupportedTlv protocolSupportedTlv = new ProtocolSupportedTlv(tlvHeader);
...@@ -708,4 +726,4 @@ public final class IsisUtil { ...@@ -708,4 +726,4 @@ public final class IsisUtil {
708 } 726 }
709 return Bytes.toArray(byteList); 727 return Bytes.toArray(byteList);
710 } 728 }
711 -} 729 +}
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -140,8 +140,15 @@ public class LspGenerator { ...@@ -140,8 +140,15 @@ public class LspGenerator {
140 metricOfIntRea.setExpenseIsInternal(true); 140 metricOfIntRea.setExpenseIsInternal(true);
141 Ip4Address ip4Address = isisInterface.interfaceIpAddress(); 141 Ip4Address ip4Address = isisInterface.interfaceIpAddress();
142 byte[] ipAddress = ip4Address.toOctets(); 142 byte[] ipAddress = ip4Address.toOctets();
143 - ipAddress[ipAddress.length - 1] = 0; 143 + // ipAddress[ipAddress.length - 1] = 0;
144 - metricOfIntRea.setIpAddress(Ip4Address.valueOf(ipAddress)); 144 + byte[] networkmass = isisInterface.networkMask();
145 + // metric calculation part
146 + byte[] result = new byte[ipAddress.length];
147 + result[0] = (byte) (ipAddress[0] & networkmass[0]);
148 + result[1] = (byte) (ipAddress[1] & networkmass[1]);
149 + result[2] = (byte) (ipAddress[2] & networkmass[2]);
150 + result[3] = (byte) (ipAddress[3] & networkmass[3]);
151 + metricOfIntRea.setIpAddress(Ip4Address.valueOf(result));
145 metricOfIntRea.setSubnetAddres(Ip4Address.valueOf(isisInterface.networkMask())); 152 metricOfIntRea.setSubnetAddres(Ip4Address.valueOf(isisInterface.networkMask()));
146 ipInterReacTlv.addInternalReachabilityMetric(metricOfIntRea); 153 ipInterReacTlv.addInternalReachabilityMetric(metricOfIntRea);
147 lsp.addTlv(ipInterReacTlv); 154 lsp.addTlv(ipInterReacTlv);
......