You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2015/04/01 23:21:13 UTC

[2/4] incubator-brooklyn git commit: minor geo-lookup fixes

minor geo-lookup fixes

occasional NPE in utrace lookup, deprecate geobytes lookup whose api has changed, better messages in integration test


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/a08c72dd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/a08c72dd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/a08c72dd

Branch: refs/heads/master
Commit: a08c72dd125f388852a5ea125c47135c4c793428
Parents: 44b6b4a
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Fri Mar 27 18:43:31 2015 -0500
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sat Mar 28 21:27:36 2015 -0500

----------------------------------------------------------------------
 .../brooklyn/location/geo/GeoBytesHostGeoLookup.java | 11 +++++++----
 .../brooklyn/location/geo/UtraceHostGeoLookup.java   | 15 +++++++++++++--
 .../location/geo/HostGeoLookupIntegrationTest.java   | 13 ++++++++++---
 3 files changed, 30 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a08c72dd/core/src/main/java/brooklyn/location/geo/GeoBytesHostGeoLookup.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/location/geo/GeoBytesHostGeoLookup.java b/core/src/main/java/brooklyn/location/geo/GeoBytesHostGeoLookup.java
index ce01828..1c68000 100644
--- a/core/src/main/java/brooklyn/location/geo/GeoBytesHostGeoLookup.java
+++ b/core/src/main/java/brooklyn/location/geo/GeoBytesHostGeoLookup.java
@@ -29,6 +29,8 @@ import org.slf4j.LoggerFactory;
 
 import brooklyn.util.net.Networking;
 
+/** @deprecated Mar 2015 - the API has changed; GetLocation now discouraged for free access, and valuepairs.txt not supported */
+@Deprecated
 public class GeoBytesHostGeoLookup implements HostGeoLookup {
 
     public static final Logger log = LoggerFactory.getLogger(GeoBytesHostGeoLookup.class);
@@ -84,7 +86,12 @@ public class GeoBytesHostGeoLookup implements HostGeoLookup {
         Properties props = new Properties();
         try {
             props.load( new URL(url).openStream() );
+            HostGeoInfo geo = new HostGeoInfo(address.getHostName(), props.getProperty("city")+" ("+props.getProperty("iso2")+")", 
+                Double.parseDouble(props.getProperty("latitude")), Double.parseDouble(props.getProperty("longitude")));
+            log.info("Geo info lookup for "+address+" returned: "+geo);
+            return geo;
         } catch (Exception e) {
+            // may be web not available, or gateway giving us funny crap
             if (log.isDebugEnabled())
                 log.debug("Geo info lookup for "+address+" failed: "+e);
             if (!LOGGED_GEO_LOOKUP_UNAVAILABLE) {
@@ -93,10 +100,6 @@ public class GeoBytesHostGeoLookup implements HostGeoLookup {
             }
             return null;
         }
-        HostGeoInfo geo = new HostGeoInfo(address.getHostName(), props.getProperty("city")+" ("+props.getProperty("iso2")+")", 
-                Double.parseDouble(props.getProperty("latitude")), Double.parseDouble(props.getProperty("longitude")));
-        log.info("Geo info lookup for "+address+" returned: "+geo);
-        return geo;
     }
     
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a08c72dd/core/src/main/java/brooklyn/location/geo/UtraceHostGeoLookup.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/location/geo/UtraceHostGeoLookup.java b/core/src/main/java/brooklyn/location/geo/UtraceHostGeoLookup.java
index 2560b55..37ed9f7 100644
--- a/core/src/main/java/brooklyn/location/geo/UtraceHostGeoLookup.java
+++ b/core/src/main/java/brooklyn/location/geo/UtraceHostGeoLookup.java
@@ -27,6 +27,9 @@ import java.net.InetAddress;
 import java.net.MalformedURLException;
 import java.util.concurrent.atomic.AtomicReference;
 
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -189,9 +192,17 @@ Beyond this you get blacklisted and requests may time out, or return none.
         }
     }
     
+    @Nullable
+    private static Node getFirstChild(Node xml, String field) {
+        if (xml==null) return null;
+        NodeList nl = (NodeList)xml.get(field);
+        if (nl==null || nl.isEmpty()) return null;
+        return (Node)nl.get(0);
+    }
+    @Nonnull
     private static String getXmlResultsField(Node xml, String field) {
-        Node r1 = ((Node)((NodeList)xml.get("result")).get(0));
-        Node f1 = ((Node)((NodeList)r1.get(field)).get(0));
+        Node f1 = getFirstChild(getFirstChild(xml, "result"), field);
+        if (f1==null) return "";
         return f1.text();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a08c72dd/core/src/test/java/brooklyn/location/geo/HostGeoLookupIntegrationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/location/geo/HostGeoLookupIntegrationTest.java b/core/src/test/java/brooklyn/location/geo/HostGeoLookupIntegrationTest.java
index 9b32442..85acb6d 100644
--- a/core/src/test/java/brooklyn/location/geo/HostGeoLookupIntegrationTest.java
+++ b/core/src/test/java/brooklyn/location/geo/HostGeoLookupIntegrationTest.java
@@ -36,16 +36,21 @@ public class HostGeoLookupIntegrationTest {
     
     @Test(groups = "Integration")
     public void testLocalhostGetsLocation() throws Exception {
-        SshMachineLocation l = new LocalhostMachineProvisioningLocation().obtain();
+        LocalhostMachineProvisioningLocation ll = new LocalhostMachineProvisioningLocation();
+        SshMachineLocation l = ll.obtain();
         HostGeoInfo geo = HostGeoInfo.fromLocation(l);
+        Assert.assertNotNull(geo, "host lookup unavailable - is the maxmind database installed? or else network unavailable or too slow?");
         log.info("localhost is in "+geo);
         Assert.assertNotNull(geo, "couldn't load data; must have a valid HostGeoLookup impl (e.g. MaxMind installed, or online and with Utrace credit)");
         Assert.assertTrue(-90 <= geo.latitude && geo.latitude <= 90); 
+        ll.close();
     }
 
-    @Test(groups = "Integration")
+    @Deprecated // see GeoBytesHostGeoLookup - their API changed
+    @Test(groups = "Integration", enabled=false)
     public void testGeobytesLookup() throws Exception {
         HostGeoInfo geo = new GeoBytesHostGeoLookup().getHostGeoInfo(InetAddress.getByName("geobytes.com"));
+        Assert.assertNotNull(geo, "host lookup unavailable");
         Assert.assertEquals(geo.displayName, "Baltimore (US)");
         Assert.assertEquals(geo.latitude, 39.2894, 0.1);
         Assert.assertEquals(geo.longitude, -76.6384, 0.1);
@@ -54,14 +59,16 @@ public class HostGeoLookupIntegrationTest {
     @Test(groups = "Integration")
     public void testUtraceLookup() throws Exception {
         HostGeoInfo geo = new UtraceHostGeoLookup().getHostGeoInfo(InetAddress.getByName("utrace.de"));
+        Assert.assertNotNull(geo, "host lookup unavailable - maybe network not available ");
         Assert.assertTrue(geo.displayName.contains("(DE)"));
         Assert.assertEquals(geo.latitude, 51, 2);
         Assert.assertEquals(geo.longitude, 9, 5);
     }
 
-    @Test(groups = "Integration")
+    @Test(groups = "Integration")  // only works if maxmind database is installed to ~/.brooklyn/
     public void testMaxmindLookup() throws Exception {
         HostGeoInfo geo = new MaxMind2HostGeoLookup().getHostGeoInfo(InetAddress.getByName("maxmind.com"));
+        Assert.assertNotNull(geo, "host lookup unavailable - is the maxmind database installed?");
         log.info("maxmind.com at "+geo);
         
         // used to be Washington; now Dallas - in case this changes again, we will accept either!