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);
}
}