Committed by
Gerrit Code Review
Added configurable connection timeout for Netconf Server connection.
Change-Id: I40fd1737529e5e864f16119293e46340243118cb
Showing
3 changed files
with
26 additions
and
12 deletions
... | @@ -58,6 +58,7 @@ public class NetconfDevice { | ... | @@ -58,6 +58,7 @@ public class NetconfDevice { |
58 | } | 58 | } |
59 | 59 | ||
60 | private static final int DEFAULT_SSH_PORT = 22; | 60 | private static final int DEFAULT_SSH_PORT = 22; |
61 | + private static final int DEFAULT_CON_TIMEOUT = 0; | ||
61 | private static final String XML_CAPABILITY_KEY = "capability"; | 62 | private static final String XML_CAPABILITY_KEY = "capability"; |
62 | private static final int EVENTINTERVAL = 2000; | 63 | private static final int EVENTINTERVAL = 2000; |
63 | private static final int CONNECTION_CHECK_INTERVAL = 3; | 64 | private static final int CONNECTION_CHECK_INTERVAL = 3; |
... | @@ -69,6 +70,7 @@ public class NetconfDevice { | ... | @@ -69,6 +70,7 @@ public class NetconfDevice { |
69 | 70 | ||
70 | private String sshHost; | 71 | private String sshHost; |
71 | private int sshPort = DEFAULT_SSH_PORT; | 72 | private int sshPort = DEFAULT_SSH_PORT; |
73 | + private int connectTimeout = DEFAULT_CON_TIMEOUT; | ||
72 | private String username; | 74 | private String username; |
73 | private String password; | 75 | private String password; |
74 | private boolean reachable = false; | 76 | private boolean reachable = false; |
... | @@ -97,7 +99,7 @@ public class NetconfDevice { | ... | @@ -97,7 +99,7 @@ public class NetconfDevice { |
97 | public void init() throws Exception { | 99 | public void init() throws Exception { |
98 | try { | 100 | try { |
99 | if (sshConnection == null) { | 101 | if (sshConnection == null) { |
100 | - sshConnection = new SSHConnection(sshHost, sshPort); | 102 | + sshConnection = new SSHConnection(sshHost, sshPort, connectTimeout); |
101 | sshConnection.authenticateWithPassword(username, password); | 103 | sshConnection.authenticateWithPassword(username, password); |
102 | } | 104 | } |
103 | // Send hello message to retrieve capabilities. | 105 | // Send hello message to retrieve capabilities. |
... | @@ -293,4 +295,8 @@ public class NetconfDevice { | ... | @@ -293,4 +295,8 @@ public class NetconfDevice { |
293 | public boolean isActive() { | 295 | public boolean isActive() { |
294 | return deviceState == DeviceState.ACTIVE ? true : false; | 296 | return deviceState == DeviceState.ACTIVE ? true : false; |
295 | } | 297 | } |
298 | + | ||
299 | + public void setConnectTimeout(int connectTimeout) { | ||
300 | + this.connectTimeout = connectTimeout; | ||
301 | + } | ||
296 | } | 302 | } | ... | ... |
... | @@ -21,6 +21,8 @@ import static org.onlab.util.Tools.get; | ... | @@ -21,6 +21,8 @@ import static org.onlab.util.Tools.get; |
21 | import static org.onlab.util.Tools.groupedThreads; | 21 | import static org.onlab.util.Tools.groupedThreads; |
22 | import static org.slf4j.LoggerFactory.getLogger; | 22 | import static org.slf4j.LoggerFactory.getLogger; |
23 | 23 | ||
24 | +import java.io.IOException; | ||
25 | +import java.net.SocketTimeoutException; | ||
24 | import java.net.URI; | 26 | import java.net.URI; |
25 | import java.net.URISyntaxException; | 27 | import java.net.URISyntaxException; |
26 | import java.util.Dictionary; | 28 | import java.util.Dictionary; |
... | @@ -329,6 +331,12 @@ public class NetconfDeviceProvider extends AbstractProvider | ... | @@ -329,6 +331,12 @@ public class NetconfDeviceProvider extends AbstractProvider |
329 | log.error("Syntax Error while creating URI for the device: " | 331 | log.error("Syntax Error while creating URI for the device: " |
330 | + device.deviceInfo() | 332 | + device.deviceInfo() |
331 | + " couldn't persist the device onto the store", e); | 333 | + " couldn't persist the device onto the store", e); |
334 | + } catch (SocketTimeoutException e) { | ||
335 | + log.error("Error while setting connection for the device: " | ||
336 | + + device.deviceInfo(), e); | ||
337 | + } catch (IOException e) { | ||
338 | + log.error("Error while setting connection for the device: " | ||
339 | + + device.deviceInfo(), e); | ||
332 | } catch (Exception e) { | 340 | } catch (Exception e) { |
333 | log.error("Error while initializing session for the device: " | 341 | log.error("Error while initializing session for the device: " |
334 | + device.deviceInfo(), e); | 342 | + device.deviceInfo(), e); | ... | ... |
... | @@ -22,6 +22,7 @@ import static org.onlab.util.Tools.delay; | ... | @@ -22,6 +22,7 @@ import static org.onlab.util.Tools.delay; |
22 | import static org.slf4j.LoggerFactory.getLogger; | 22 | import static org.slf4j.LoggerFactory.getLogger; |
23 | 23 | ||
24 | import java.io.IOException; | 24 | import java.io.IOException; |
25 | +import java.net.SocketTimeoutException; | ||
25 | import java.net.URI; | 26 | import java.net.URI; |
26 | import java.net.URISyntaxException; | 27 | import java.net.URISyntaxException; |
27 | import java.util.Collection; | 28 | import java.util.Collection; |
... | @@ -34,7 +35,6 @@ import java.util.concurrent.ConcurrentHashMap; | ... | @@ -34,7 +35,6 @@ import java.util.concurrent.ConcurrentHashMap; |
34 | import org.easymock.EasyMock; | 35 | import org.easymock.EasyMock; |
35 | import org.junit.After; | 36 | import org.junit.After; |
36 | import org.junit.Before; | 37 | import org.junit.Before; |
37 | -import org.junit.Ignore; | ||
38 | import org.junit.Test; | 38 | import org.junit.Test; |
39 | import org.onlab.packet.ChassisId; | 39 | import org.onlab.packet.ChassisId; |
40 | import org.onosproject.cfg.ComponentConfigService; | 40 | import org.onosproject.cfg.ComponentConfigService; |
... | @@ -179,15 +179,12 @@ public class NetconfDeviceProviderTest { | ... | @@ -179,15 +179,12 @@ public class NetconfDeviceProviderTest { |
179 | return dictionary; | 179 | return dictionary; |
180 | } | 180 | } |
181 | 181 | ||
182 | - @Ignore | 182 | + @Test(expected = SocketTimeoutException.class) |
183 | - @Test(expected = IOException.class) | 183 | + public void testSSHAuthentication() throws JNCException, IOException { |
184 | - public void testSSHAuthentication() throws IOException, JNCException { | 184 | + NetconfDevice netconfDevice = new NetconfDevice("10.18.14.19", 22, |
185 | - TestDeviceCreator objForTestDev = new TestDeviceCreator( | 185 | + "cisco", "cisco"); |
186 | - new NetconfDevice( | 186 | + netconfDevice.setConnectTimeout(1000); |
187 | - "10.18.14.19", | 187 | + TestDeviceCreator objForTestDev = new TestDeviceCreator(netconfDevice, |
188 | - 22, | ||
189 | - "cisco", | ||
190 | - "cisco"), | ||
191 | true); | 188 | true); |
192 | objForTestDev.run(); | 189 | objForTestDev.run(); |
193 | } | 190 | } |
... | @@ -344,7 +341,8 @@ public class NetconfDeviceProviderTest { | ... | @@ -344,7 +341,8 @@ public class NetconfDeviceProviderTest { |
344 | * Initialize Netconf Device object, and notify core saying device | 341 | * Initialize Netconf Device object, and notify core saying device |
345 | * connected. | 342 | * connected. |
346 | */ | 343 | */ |
347 | - private void advertiseDevices() throws JNCException, IOException { | 344 | + private void advertiseDevices() |
345 | + throws JNCException, IOException, SocketTimeoutException { | ||
348 | try { | 346 | try { |
349 | if (device == null) { | 347 | if (device == null) { |
350 | log.warn("The Request Netconf Device is null, cannot proceed further"); | 348 | log.warn("The Request Netconf Device is null, cannot proceed further"); |
... | @@ -372,6 +370,8 @@ public class NetconfDeviceProviderTest { | ... | @@ -372,6 +370,8 @@ public class NetconfDeviceProviderTest { |
372 | + " couldn't persist the device onto the store", e); | 370 | + " couldn't persist the device onto the store", e); |
373 | } catch (JNCException e) { | 371 | } catch (JNCException e) { |
374 | throw e; | 372 | throw e; |
373 | + } catch (SocketTimeoutException e) { | ||
374 | + throw e; | ||
375 | } catch (IOException e) { | 375 | } catch (IOException e) { |
376 | throw e; | 376 | throw e; |
377 | } catch (Exception e) { | 377 | } catch (Exception e) { | ... | ... |
-
Please register or login to post a comment