Repository: brooklyn-server Updated Branches: refs/heads/master 215c02cb5 -> 374e01f41
Convenience predicates to test attributes + config by name. Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/f3f39938 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/f3f39938 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/f3f39938 Branch: refs/heads/master Commit: f3f39938d75aaa4ebb1132952493a186399ad30f Parents: 3364786 Author: Alasdair Hodge <git...@alasdairhodge.co.uk> Authored: Fri Aug 5 14:26:20 2016 +0100 Committer: Alasdair Hodge <git...@alasdairhodge.co.uk> Committed: Fri Aug 5 15:46:48 2016 +0100 ---------------------------------------------------------------------- .../brooklyn/core/entity/EntityPredicates.java | 72 +++++++++++++++++--- .../core/entity/EntityPredicatesTest.java | 58 +++++++++++++--- 2 files changed, 112 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/f3f39938/core/src/main/java/org/apache/brooklyn/core/entity/EntityPredicates.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/entity/EntityPredicates.java b/core/src/main/java/org/apache/brooklyn/core/entity/EntityPredicates.java index a618784..41f016c 100644 --- a/core/src/main/java/org/apache/brooklyn/core/entity/EntityPredicates.java +++ b/core/src/main/java/org/apache/brooklyn/core/entity/EntityPredicates.java @@ -29,6 +29,8 @@ import org.apache.brooklyn.api.location.Location; import org.apache.brooklyn.api.sensor.AttributeSensor; import org.apache.brooklyn.config.ConfigKey; import org.apache.brooklyn.config.ConfigKey.HasConfigKey; +import org.apache.brooklyn.core.config.ConfigKeys; +import org.apache.brooklyn.core.sensor.Sensors; import org.apache.brooklyn.util.collections.CollectionFunctionals; import org.apache.brooklyn.util.guava.SerializablePredicate; import org.apache.brooklyn.util.javalang.Reflections; @@ -171,11 +173,35 @@ public class EntityPredicates { } // --------------------------- - + + public static Predicate<Entity> attributeNotNull(final String attributeName) { + return attributeSatisfies(attributeName, Predicates.notNull()); + } + + public static <T> Predicate<Entity> attributeNotNull(final AttributeSensor<T> attribute) { + return attributeSatisfies(attribute, Predicates.<T>notNull()); + } + + public static Predicate<Entity> attributeEqualTo(final String attributeName, final Object val) { + return attributeSatisfies(attributeName, Predicates.equalTo(val)); + } + public static <T> Predicate<Entity> attributeEqualTo(final AttributeSensor<T> attribute, final T val) { return attributeSatisfies(attribute, Predicates.equalTo(val)); } - + + public static <T> Predicate<Entity> attributeNotEqualTo(final String attributeName, final Object val) { + return attributeSatisfies(attributeName, Predicates.not(Predicates.equalTo(val))); + } + + public static <T> Predicate<Entity> attributeNotEqualTo(final AttributeSensor<T> attribute, final T val) { + return attributeSatisfies(attribute, Predicates.not(Predicates.equalTo(val))); + } + + public static Predicate<Entity> attributeSatisfies(final String attributeName, final Predicate<Object> condition) { + return new AttributeSatisfies<Object>(Sensors.newSensor(Object.class, attributeName), condition); + } + public static <T> Predicate<Entity> attributeSatisfies(final AttributeSensor<T> attribute, final Predicate<T> condition) { return new AttributeSatisfies<T>(attribute, condition); } @@ -208,24 +234,52 @@ public class EntityPredicates { }; } - public static <T> Predicate<Entity> attributeNotEqualTo(final AttributeSensor<T> attribute, final T val) { - return attributeSatisfies(attribute, Predicates.not(Predicates.equalTo(val))); + // --------------------------- + + public static <T> Predicate<Entity> configNotNull(final String configKeyName) { + return configSatisfies(configKeyName, Predicates.notNull()); } - // --------------------------- + public static <T> Predicate<Entity> configNotNull(final ConfigKey<T> configKey) { + return configSatisfies(configKey, Predicates.<T>notNull()); + } - public static <T> Predicate<Entity> configEqualTo(final ConfigKey<T> configKey, final T val) { - return configSatisfies(configKey, Predicates.equalTo(val)); + public static <T> Predicate<Entity> configNotNull(final HasConfigKey<T> configKey) { + return configNotNull(configKey.getConfigKey()); } - public static <T> Predicate<Entity> configSatisfies(final ConfigKey<T> configKey, final Predicate<T> condition) { - return new ConfigKeySatisfies<T>(configKey, condition); + public static <T> Predicate<Entity> configEqualTo(final String configKeyName, final Object val) { + return configSatisfies(configKeyName, Predicates.equalTo(val)); + } + + public static <T> Predicate<Entity> configEqualTo(final ConfigKey<T> configKey, final T val) { + return configSatisfies(configKey, Predicates.equalTo(val)); } public static <T> Predicate<Entity> configEqualTo(final HasConfigKey<T> configKey, final T val) { return configEqualTo(configKey.getConfigKey(), val); } + public static <T> Predicate<Entity> configNotEqualTo(final String configKeyName, final Object val) { + return configSatisfies(configKeyName, Predicates.not(Predicates.equalTo(val))); + } + + public static <T> Predicate<Entity> configNotEqualTo(final ConfigKey<T> configKey, final T val) { + return configSatisfies(configKey, Predicates.not(Predicates.equalTo(val))); + } + + public static <T> Predicate<Entity> configNotEqualTo(final HasConfigKey<T> configKey, final T val) { + return configNotEqualTo(configKey.getConfigKey(), val); + } + + public static Predicate<Entity> configSatisfies(final String configKeyName, final Predicate<Object> condition) { + return new ConfigKeySatisfies<Object>(ConfigKeys.newConfigKey(Object.class, configKeyName), condition); + } + + public static <T> Predicate<Entity> configSatisfies(final ConfigKey<T> configKey, final Predicate<T> condition) { + return new ConfigKeySatisfies<T>(configKey, condition); + } + public static <T> Predicate<Entity> configSatisfies(final HasConfigKey<T> configKey, final Predicate<T> condition) { return new ConfigKeySatisfies<T>(configKey.getConfigKey(), condition); } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/f3f39938/core/src/test/java/org/apache/brooklyn/core/entity/EntityPredicatesTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/EntityPredicatesTest.java b/core/src/test/java/org/apache/brooklyn/core/entity/EntityPredicatesTest.java index 1b75876..4cf6df3 100644 --- a/core/src/test/java/org/apache/brooklyn/core/entity/EntityPredicatesTest.java +++ b/core/src/test/java/org/apache/brooklyn/core/entity/EntityPredicatesTest.java @@ -40,7 +40,7 @@ public class EntityPredicatesTest extends BrooklynAppUnitTestSupport { private TestEntity entity; private BasicGroup group; private Location loc; - + @BeforeMethod(alwaysRun=true) @Override public void setUp() throws Exception { @@ -55,33 +55,73 @@ public class EntityPredicatesTest extends BrooklynAppUnitTestSupport { assertTrue(EntityPredicates.applicationIdEqualTo(app.getId()).apply(entity)); assertFalse(EntityPredicates.applicationIdEqualTo("wrongid").apply(entity)); } - + @Test public void testIdEqualTo() throws Exception { assertTrue(EntityPredicates.idEqualTo(entity.getId()).apply(entity)); assertFalse(EntityPredicates.idEqualTo("wrongid").apply(entity)); } - + + @Test + public void testAttributeNotNull() throws Exception { + entity.sensors().set(TestEntity.NAME, "myname"); + assertTrue(EntityPredicates.attributeNotNull(TestEntity.NAME).apply(entity)); + assertTrue(EntityPredicates.attributeNotNull(TestEntity.NAME.getName()).apply(entity)); + assertFalse(EntityPredicates.attributeNotNull(TestEntity.SEQUENCE).apply(entity)); + assertFalse(EntityPredicates.attributeNotNull(TestEntity.SEQUENCE.getName()).apply(entity)); + } + @Test public void testAttributeEqualTo() throws Exception { entity.sensors().set(TestEntity.NAME, "myname"); assertTrue(EntityPredicates.attributeEqualTo(TestEntity.NAME, "myname").apply(entity)); + assertTrue(EntityPredicates.attributeEqualTo(TestEntity.NAME.getName(), "myname").apply(entity)); assertFalse(EntityPredicates.attributeEqualTo(TestEntity.NAME, "wrongname").apply(entity)); + assertFalse(EntityPredicates.attributeEqualTo(TestEntity.NAME.getName(), "wrongname").apply(entity)); } - + + @Test + public void testAttributeNotEqualTo() throws Exception { + entity.sensors().set(TestEntity.NAME, "myname"); + assertFalse(EntityPredicates.attributeNotEqualTo(TestEntity.NAME, "myname").apply(entity)); + assertFalse(EntityPredicates.attributeNotEqualTo(TestEntity.NAME.getName(), "myname").apply(entity)); + assertTrue(EntityPredicates.attributeNotEqualTo(TestEntity.NAME, "wrongname").apply(entity)); + assertTrue(EntityPredicates.attributeNotEqualTo(TestEntity.NAME.getName(), "wrongname").apply(entity)); + } + + @Test + public void testConfigNotNull() throws Exception { + entity.config().set(TestEntity.CONF_NAME, "myname"); + assertTrue(EntityPredicates.configNotNull(TestEntity.CONF_NAME).apply(entity)); + assertTrue(EntityPredicates.configNotNull(TestEntity.CONF_NAME.getName()).apply(entity)); + assertFalse(EntityPredicates.configNotNull(TestEntity.CONF_OBJECT).apply(entity)); + assertFalse(EntityPredicates.configNotNull(TestEntity.CONF_OBJECT.getName()).apply(entity)); + } + @Test public void testConfigEqualTo() throws Exception { entity.config().set(TestEntity.CONF_NAME, "myname"); assertTrue(EntityPredicates.configEqualTo(TestEntity.CONF_NAME, "myname").apply(entity)); + assertTrue(EntityPredicates.configEqualTo(TestEntity.CONF_NAME.getName(), "myname").apply(entity)); assertFalse(EntityPredicates.configEqualTo(TestEntity.CONF_NAME, "wrongname").apply(entity)); + assertFalse(EntityPredicates.configEqualTo(TestEntity.CONF_NAME.getName(), "wrongname").apply(entity)); } - + + @Test + public void testConfigNotEqualTo() throws Exception { + entity.config().set(TestEntity.CONF_NAME, "myname"); + assertFalse(EntityPredicates.configNotEqualTo(TestEntity.CONF_NAME, "myname").apply(entity)); + assertFalse(EntityPredicates.configNotEqualTo(TestEntity.CONF_NAME.getName(), "myname").apply(entity)); + assertTrue(EntityPredicates.configNotEqualTo(TestEntity.CONF_NAME, "wrongname").apply(entity)); + assertTrue(EntityPredicates.configNotEqualTo(TestEntity.CONF_NAME.getName(), "wrongname").apply(entity)); + } + @Test public void testDisplayNameEqualTo() throws Exception { assertTrue(EntityPredicates.displayNameEqualTo("mydisplayname").apply(entity)); assertFalse(EntityPredicates.displayNameEqualTo("wrongname").apply(entity)); } - + @Test public void testDisplayNameSatisfies() throws Exception { assertTrue(EntityPredicates.displayNameSatisfies(StringPredicates.matchesRegex("myd.*me")).apply(entity)); @@ -94,7 +134,7 @@ public class EntityPredicatesTest extends BrooklynAppUnitTestSupport { assertFalse(EntityPredicates.isChildOf(entity).apply(entity)); assertFalse(EntityPredicates.isChildOf(entity).apply(app)); } - + @Test public void testIsMemberOf() throws Exception { group.addMember(entity); @@ -102,14 +142,14 @@ public class EntityPredicatesTest extends BrooklynAppUnitTestSupport { assertFalse(EntityPredicates.isMemberOf(group).apply(app)); assertFalse(EntityPredicates.isMemberOf(group).apply(group)); } - + @Test public void testManaged() throws Exception { assertTrue(EntityPredicates.isManaged().apply(entity)); Entities.unmanage(entity); assertFalse(EntityPredicates.isManaged().apply(entity)); } - + @Test public void testWithLocation() throws Exception { entity.addLocations(ImmutableList.of(loc));