From c3b095b43f2c86078aa7123f35764766636f95d7 Mon Sep 17 00:00:00 2001
From: Daniel Stonier <d.stonier@gmail.com>
Date: Fri, 20 Feb 2015 23:22:15 +0900
Subject: [PATCH] patch version bump, readying for release.

---
 .../src/main/java/org/ros/time/NtpTimeProvider.java  | 12 ++++++++++--
 .../test/java/org/ros/time/NtpTimeProviderTest.java  |  7 ++++---
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/rosjava/src/main/java/org/ros/time/NtpTimeProvider.java b/rosjava/src/main/java/org/ros/time/NtpTimeProvider.java
index e0195352..980e6146 100644
--- a/rosjava/src/main/java/org/ros/time/NtpTimeProvider.java
+++ b/rosjava/src/main/java/org/ros/time/NtpTimeProvider.java
@@ -63,6 +63,7 @@ public class NtpTimeProvider implements TimeProvider {
     this.scheduledExecutorService = scheduledExecutorService;
     wallTimeProvider = new WallTimeProvider();
     ntpClient = new NTPUDPClient();
+    ntpClient.setDefaultTimeout(500); // timeout to 500ms
     offset = 0;
     scheduledFuture = null;
   }
@@ -70,12 +71,19 @@ public class NtpTimeProvider implements TimeProvider {
   /**
    * Update the current time offset from the configured NTP host.
    * 
-   * @throws IOException
+   * @throws IOException : if ntpClient.getTime() fails too often.
    */
   public void updateTime() throws IOException {
     List<Long> offsets = Lists.newArrayList();
+    int failures = 0;
     for (int i = 0; i < SAMPLE_SIZE; i++) {
-      offsets.add(computeOffset());
+      try { 
+    	  offsets.add(computeOffset());
+      } catch (IOException e) {
+    	  if ( ++failures > SAMPLE_SIZE/2 ) {
+    		  throw e;
+    	  }
+      }
     }
     offset = CollectionMath.median(offsets);
     log.info(String.format("NTP time offset: %d ms", offset));
diff --git a/rosjava/src/test/java/org/ros/time/NtpTimeProviderTest.java b/rosjava/src/test/java/org/ros/time/NtpTimeProviderTest.java
index ea320ab4..2ad7e253 100644
--- a/rosjava/src/test/java/org/ros/time/NtpTimeProviderTest.java
+++ b/rosjava/src/test/java/org/ros/time/NtpTimeProviderTest.java
@@ -45,7 +45,7 @@ public class NtpTimeProviderTest extends RosTest {
     nodeMainExecutor.execute(new AbstractNodeMain() {
       @Override
       public GraphName getDefaultNodeName() {
-        return GraphName.of("node");
+        return GraphName.of("ntp_time_provider");
       }
 
       @Override
@@ -53,7 +53,6 @@ public class NtpTimeProviderTest extends RosTest {
         try {
           ntpTimeProvider.updateTime();
         } catch (IOException e) {
-          System.out.println("Dude");
           // Ignored. This is only a sanity check.
         }
         ntpTimeProvider.getCurrentTime();
@@ -62,6 +61,8 @@ public class NtpTimeProviderTest extends RosTest {
         latch.countDown();
       }
     }, nodeConfiguration);
-    assertTrue(latch.await(1, TimeUnit.SECONDS));
+    boolean result = latch.await(10, TimeUnit.SECONDS);
+    //System.out.println("Latch waiting : " + latch.getCount() + " " + result + " [" + System.currentTimeMillis() + "]");
+    assertTrue(result);
   }
 }
-- 
GitLab