Return-Path: X-Original-To: apmail-brooklyn-commits-archive@minotaur.apache.org Delivered-To: apmail-brooklyn-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id D7DD5115DE for ; Fri, 18 Jul 2014 16:38:07 +0000 (UTC) Received: (qmail 56708 invoked by uid 500); 18 Jul 2014 16:38:07 -0000 Delivered-To: apmail-brooklyn-commits-archive@brooklyn.apache.org Received: (qmail 56686 invoked by uid 500); 18 Jul 2014 16:38:07 -0000 Mailing-List: contact commits-help@brooklyn.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@brooklyn.incubator.apache.org Delivered-To: mailing list commits@brooklyn.incubator.apache.org Received: (qmail 56677 invoked by uid 99); 18 Jul 2014 16:38:07 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 18 Jul 2014 16:38:07 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO mail.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with SMTP; Fri, 18 Jul 2014 16:38:06 +0000 Received: (qmail 55375 invoked by uid 99); 18 Jul 2014 16:37:41 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 18 Jul 2014 16:37:41 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id E2C8994EB27; Fri, 18 Jul 2014 16:37:40 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: heneveld@apache.org To: commits@brooklyn.incubator.apache.org Date: Fri, 18 Jul 2014 16:37:43 -0000 Message-Id: <6a61095e56bb4074bece45af500a29a5@git.apache.org> In-Reply-To: <791cdfcc99234845832fa11fecd614a6@git.apache.org> References: <791cdfcc99234845832fa11fecd614a6@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [4/6] git commit: Tests added for JsonFunctions.getPath X-Virus-Checked: Checked by ClamAV on apache.org 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 Authored: Mon Jul 14 17:23:35 2014 +0200 Committer: Miguel Barrientos 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> implements EntityInitializer { protected final T sensor; @@ -66,7 +69,7 @@ public class AddSensor> implements EntityInitializer { try { type = (Class) 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 * JSONObject from a JSON response in order to populate the sensor with the indicated name. */ +@Beta public final class HttpRequestSensor extends AddSensor> { private static final org.slf4j.Logger log = LoggerFactory.getLogger(HttpRequestSensor.class); @@ -27,8 +30,12 @@ public final class HttpRequestSensor extends AddSensor> public static final ConfigKey JSON_PATH = ConfigKeys.newStringConfigKey("jsonPath"); public static final ConfigKey SENSOR_URI = ConfigKeys.newStringConfigKey("uri"); - private String jsonPath; - private String uri; + private final String jsonPath; + private final String uri; + + public HttpRequestSensor(Map params) { + this(ConfigBag.newInstance(params)); + } public HttpRequestSensor(ConfigBag params) { super(AddSensor.newSensor(params)); @@ -53,8 +60,4 @@ public final class HttpRequestSensor extends AddSensor> .poll(pollConfig) .build(); } - - public HttpRequestSensor(Map 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 SENSOR_STRING = Sensors.newStringSensor("aString", ""); - final static AttributeSensor SENSOR_JSON_OBJECT = Sensors.newStringSensor("aJSONObject",""); - final static AttributeSensor SENSOR_URI = Sensors.newStringSensor("uri",""); + final static AttributeSensor 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(ConfigBag.newInstance() + HttpRequestSensor sensor = new HttpRequestSensor(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); } }