You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2014/07/18 18:37:43 UTC

[4/6] git commit: Tests added for JsonFunctions.getPath

Tests added for JsonFunctions.getPath


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

Branch: refs/heads/master
Commit: de5991c2e0d998c37174e8d680be5a59bff6948a
Parents: 65ddabd
Author: Miguel Barrientos <mb...@lcc.uma.es>
Authored: Mon Jul 14 17:23:35 2014 +0200
Committer: Miguel Barrientos <mb...@lcc.uma.es>
Committed: Thu Jul 17 12:31:33 2014 +0200

----------------------------------------------------------------------
 .../brooklyn/entity/effector/AddSensor.java     | 11 +++++----
 .../event/feed/http/JsonFunctionsTest.java      | 16 +++++++++++++
 .../entity/software/http/HttpRequestSensor.java | 15 +++++++-----
 .../software/http/HttpRequestSensorTest.java    | 25 +++++++-------------
 4 files changed, 41 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/de5991c2/core/src/main/java/brooklyn/entity/effector/AddSensor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/effector/AddSensor.java b/core/src/main/java/brooklyn/entity/effector/AddSensor.java
index fb58e52..4c2f1ed 100644
--- a/core/src/main/java/brooklyn/entity/effector/AddSensor.java
+++ b/core/src/main/java/brooklyn/entity/effector/AddSensor.java
@@ -32,9 +32,12 @@ import brooklyn.util.time.Duration;
 import com.google.common.annotations.Beta;
 import com.google.common.base.Preconditions;
 
-/** Entity initializer which adds a sensor to an entity's type definition.
- * Subclasses must add the feed; this class does not do that. 
- * @since 0.7.0 */
+/**
+ * Creates a new sensor. The configuration can include the sensor {@code name} and {@code targetType}.
+ * For the targetType, currently this only supports classes on the initial classpath
+ * (e.g. not those in OSGi bundles added at runtime).
+ * @since 0.7.0
+ * */
 @Beta
 public class AddSensor<RT,T extends Sensor<RT>> implements EntityInitializer {
     protected final T sensor;
@@ -66,7 +69,7 @@ public class AddSensor<RT,T extends Sensor<RT>> implements EntityInitializer {
         try {
             type = (Class<T>) Class.forName(className);
         } catch (ClassNotFoundException e) {
-            throw new IllegalArgumentException("Invalid target type");
+            throw new IllegalArgumentException("Invalid target type for sensor "+name+": " + className);
         }
         return Sensors.newSensor(type, name);
     }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/de5991c2/core/src/test/java/brooklyn/event/feed/http/JsonFunctionsTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/event/feed/http/JsonFunctionsTest.java b/core/src/test/java/brooklyn/event/feed/http/JsonFunctionsTest.java
index 047f319..5aaa47e 100644
--- a/core/src/test/java/brooklyn/event/feed/http/JsonFunctionsTest.java
+++ b/core/src/test/java/brooklyn/event/feed/http/JsonFunctionsTest.java
@@ -102,5 +102,21 @@ public class JsonFunctionsTest {
         Assert.assertNull(n);
     }
 
+    @Test
+    public void testGetPath1(){
+        Integer obj = (Integer) JsonFunctions.getPath("$.europe.uk.edinburgh.population").apply(europeMap());
+        Assert.assertEquals((int) obj, 500*1000);
+    }
 
+    @Test
+    public void testGetPath2(){
+        String obj = (String) JsonFunctions.getPath("$.europe.uk.edinburgh.lighting").apply(europeMap());
+        Assert.assertEquals(obj, "dark");
+    }
+
+    @Test
+    public void testGetPathWrong(){
+        Object obj = JsonFunctions.getPath("$.europe.spain.malaga").apply(europeMap());
+        Assert.assertNull(obj);
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/de5991c2/software/base/src/main/java/brooklyn/entity/software/http/HttpRequestSensor.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/brooklyn/entity/software/http/HttpRequestSensor.java b/software/base/src/main/java/brooklyn/entity/software/http/HttpRequestSensor.java
index aab0123..c16a739 100644
--- a/software/base/src/main/java/brooklyn/entity/software/http/HttpRequestSensor.java
+++ b/software/base/src/main/java/brooklyn/entity/software/http/HttpRequestSensor.java
@@ -14,12 +14,15 @@ import com.google.common.base.Functions;
 import com.google.common.base.Preconditions;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.annotations.Beta;
+
 import java.util.Map;
 
 /**
  * Configurable {@link brooklyn.entity.proxying.EntityInitializer} which adds an HTTP sensor feed to retrieve the
  * <code>JSONObject</code> from a JSON response in order to populate the sensor with the indicated <code>name</code>.
  */
+@Beta
 public final class HttpRequestSensor<T> extends AddSensor<T, AttributeSensor<T>> {
 
     private static final org.slf4j.Logger log = LoggerFactory.getLogger(HttpRequestSensor.class);
@@ -27,8 +30,12 @@ public final class HttpRequestSensor<T> extends AddSensor<T, AttributeSensor<T>>
     public static final ConfigKey<String> JSON_PATH = ConfigKeys.newStringConfigKey("jsonPath");
     public static final ConfigKey<String> SENSOR_URI = ConfigKeys.newStringConfigKey("uri");
 
-    private String jsonPath;
-    private String uri;
+    private final String jsonPath;
+    private final String uri;
+
+    public HttpRequestSensor(Map<String, String> params) {
+        this(ConfigBag.newInstance(params));
+    }
 
     public HttpRequestSensor(ConfigBag params) {
         super(AddSensor.<T>newSensor(params));
@@ -53,8 +60,4 @@ public final class HttpRequestSensor<T> extends AddSensor<T, AttributeSensor<T>>
                 .poll(pollConfig)
                 .build();
     }
-
-    public HttpRequestSensor(Map<String, String> params) {
-        this(ConfigBag.newInstance(params));
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/de5991c2/software/base/src/test/java/brooklyn/entity/software/http/HttpRequestSensorTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/software/http/HttpRequestSensorTest.java b/software/base/src/test/java/brooklyn/entity/software/http/HttpRequestSensorTest.java
index 7ec06c1..5f29e5d 100644
--- a/software/base/src/test/java/brooklyn/entity/software/http/HttpRequestSensorTest.java
+++ b/software/base/src/test/java/brooklyn/entity/software/http/HttpRequestSensorTest.java
@@ -8,6 +8,7 @@ import brooklyn.entity.proxying.EntitySpec;
 import brooklyn.event.AttributeSensor;
 import brooklyn.event.basic.Sensors;
 import brooklyn.location.Location;
+import brooklyn.test.EntityTestUtils;
 import brooklyn.test.entity.TestApplication;
 import brooklyn.test.entity.TestEntity;
 import brooklyn.util.config.ConfigBag;
@@ -16,14 +17,11 @@ import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.assertEquals;
-import static brooklyn.test.Asserts.succeedsEventually;
 
 public class HttpRequestSensorTest {
-    final static AttributeSensor<String> SENSOR_STRING = Sensors.newStringSensor("aString", "");
-    final static AttributeSensor<String> SENSOR_JSON_OBJECT = Sensors.newStringSensor("aJSONObject","");
-    final static AttributeSensor<String> SENSOR_URI = Sensors.newStringSensor("uri","");
+    final static AttributeSensor<String> SENSOR_STRING = Sensors.newStringSensor("aString");
+    final static String TARGET_TYPE = "java.lang.String";
 
     private TestApplication app;
     private EntityLocal entity;
@@ -42,21 +40,16 @@ public class HttpRequestSensorTest {
 
     @Test(groups="Integration")
     public void testHttpSensor() throws Exception {
-        new HttpRequestSensor<String>(ConfigBag.newInstance()
+        HttpRequestSensor<Integer> sensor = new HttpRequestSensor<Integer>(ConfigBag.newInstance()
                 .configure(HttpRequestSensor.SENSOR_NAME, SENSOR_STRING.getName())
+                .configure(HttpRequestSensor.SENSOR_TYPE, TARGET_TYPE)
                 .configure(HttpRequestSensor.JSON_PATH, "$.myKey")
-                .configure(HttpRequestSensor.SENSOR_URI, "http://echo.jsontest.com/myKey/myValue"))
-            .apply(entity);
+                .configure(HttpRequestSensor.SENSOR_URI, "http://echo.jsontest.com/myKey/myValue"));
+            sensor.apply(entity);
         entity.setAttribute(Attributes.SERVICE_UP, true);
 
-        succeedsEventually(new Runnable() {
-            public void run() {
-                String val = entity.getAttribute(SENSOR_STRING);
-                assertTrue(val != null);
-            }
-        });
-
-        String val = entity.getAttribute(SENSOR_STRING);
+        EntityTestUtils.assertAttributeEqualsEventually(entity, SENSOR_STRING, SENSOR_STRING.getName());
+        String val = entity.getConfig(HttpRequestSensor.SENSOR_NAME);
         assertEquals(val, "myValue", "val=" + val);
     }
 }