Repository: brooklyn-server Updated Branches: refs/heads/master 746a81906 -> a941963c9
Propagator defaults to producer=self, if not specified Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/db424924 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/db424924 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/db424924 Branch: refs/heads/master Commit: db4249245e3e2d4c749b458c94f834903ad7dc51 Parents: 4b11f50 Author: Aled Sage <[email protected]> Authored: Thu Jun 23 14:08:12 2016 +0100 Committer: Aled Sage <[email protected]> Committed: Thu Jun 23 14:08:12 2016 +0100 ---------------------------------------------------------------------- .../brooklyn/enricher/stock/Propagator.java | 3 ++- .../stock/SensorPropagatingEnricherTest.java | 26 +++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/db424924/core/src/main/java/org/apache/brooklyn/enricher/stock/Propagator.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/enricher/stock/Propagator.java b/core/src/main/java/org/apache/brooklyn/enricher/stock/Propagator.java index 5e0bc8a..a8f9f97 100644 --- a/core/src/main/java/org/apache/brooklyn/enricher/stock/Propagator.java +++ b/core/src/main/java/org/apache/brooklyn/enricher/stock/Propagator.java @@ -100,7 +100,8 @@ public class Propagator extends AbstractEnricher implements SensorEventListener< Collection<Sensor<?>> propagating = resolveSensorCollection(getConfig(PROPAGATING)); if (producer == null) { - throw new IllegalStateException("Propagator enricher "+this+" missing config '"+PRODUCER.getName()); + LOG.debug("Defaulting to producer==self for {}, on entity {}", this, entity); + producer = entity; } if (propagating.isEmpty() && sensorMapping.isEmpty() && !propagatingAll) { throw new IllegalStateException("Propagator enricher "+this+" must have 'propagating' and/or 'sensorMapping', or 'propagatingAll' or 'propagatingAllBut' set"); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/db424924/core/src/test/java/org/apache/brooklyn/enricher/stock/SensorPropagatingEnricherTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/brooklyn/enricher/stock/SensorPropagatingEnricherTest.java b/core/src/test/java/org/apache/brooklyn/enricher/stock/SensorPropagatingEnricherTest.java index fdbba94..0f5d028 100644 --- a/core/src/test/java/org/apache/brooklyn/enricher/stock/SensorPropagatingEnricherTest.java +++ b/core/src/test/java/org/apache/brooklyn/enricher/stock/SensorPropagatingEnricherTest.java @@ -273,6 +273,30 @@ public class SensorPropagatingEnricherTest extends BrooklynAppUnitTestSupport { } @Test + public void testPropagatorDefaultsToProducerAsSelf() throws Exception { + AttributeSensor<String> sourceSensor = Sensors.newSensor(String.class, "mySensor"); + AttributeSensor<String> targetSensor = Sensors.newSensor(String.class, "myTarget"); + + app.enrichers().add(EnricherSpec.create(Propagator.class) + .configure(Propagator.PRODUCER, app) + .configure(Propagator.SENSOR_MAPPING, ImmutableMap.of(sourceSensor, targetSensor))); + + app.sensors().set(sourceSensor, "myval"); + EntityAsserts.assertAttributeEqualsEventually(app, targetSensor, "myval"); + } + + @Test + public void testPropagatorAvoidsInfiniteLoopInPropagateAllWithImplicitProducer() throws Exception { + AttributeSensor<String> mySensor = Sensors.newSensor(String.class, "mySensor"); + + EnricherSpec<?> spec = EnricherSpec.create(Propagator.class) + .configure(Propagator.PROPAGATING_ALL, true); + + assertAddEnricherThrowsIllegalStateException(spec, "when publishing to own entity"); + assertAttributeNotRepublished(app, mySensor); + } + + @Test public void testPropagatorAvoidsInfiniteLoopInPropagateAll() throws Exception { AttributeSensor<String> mySensor = Sensors.newSensor(String.class, "mySensor"); @@ -325,7 +349,7 @@ public class SensorPropagatingEnricherTest extends BrooklynAppUnitTestSupport { public void testPropagatorFailsWithEmptyConfig() throws Exception { EnricherSpec<?> spec = EnricherSpec.create(Propagator.class); - assertAddEnricherThrowsIllegalStateException(spec, "missing config"); + assertAddEnricherThrowsIllegalStateException(spec, "must have"); } protected void assertAttributeNotRepublished(Entity entity, AttributeSensor<String> sensor) {
