@Test public void testAppliesFilterWhenAggregatingChildrenOfGroup() { TestEntity p1 = entity.createAndManageChild(EntitySpec.create(TestEntity.class)); p1.sensors().set(intSensor, 1); entity.enrichers().add(Enrichers.builder() .aggregating(intSensor) .publishing(target) .computingSum() .fromChildren() .entityFilter(Predicates.equalTo((Entity)p1)) .build()); EntityAsserts.assertAttributeEqualsEventually(entity, target, 1); TestEntity p2 = entity.createAndManageChild(EntitySpec.create(TestEntity.class)); p2.sensors().set(intSensor, 2); EntityAsserts.assertAttributeEqualsContinually(ImmutableMap.of("timeout", SHORT_WAIT_MS), entity, target, 1); }
@Test public void testAveragingEnricherWhenNoProducersDefaultsToNull() { entity.enrichers().add(Enrichers.builder() .aggregating(intSensor) .publishing(doubleSensor) .computingAverage() .fromChildren() .build()); EntityAsserts.assertAttributeEqualsContinually(MutableMap.of("timeout", 50), entity, doubleSensor, null); }
@Test public void testSummingEnricherWithNoProducersDefaultsToNull() { entity.enrichers().add(Enrichers.builder() .aggregating(intSensor) .publishing(target) .computingSum() .fromChildren() .build()); EntityAsserts.assertAttributeEqualsContinually(MutableMap.of("timeout", 50), entity, target, null); }
@Test public void testAggregatesNewChidren() { entity.enrichers().add(Enrichers.builder() .aggregating(intSensor) .publishing(target) .computingSum() .fromChildren() .defaultValueForUnreportedSensors(0) .valueToReportIfNoSensors(0) .build()); EntityAsserts.assertAttributeEqualsEventually(entity, target, 0); TestEntity p1 = entity.createAndManageChild(EntitySpec.create(TestEntity.class)); p1.sensors().set(intSensor, 1); EntityAsserts.assertAttributeEqualsEventually(entity, target, 1); TestEntity p2 = entity.createAndManageChild(EntitySpec.create(TestEntity.class)); p2.sensors().set(intSensor, 2); EntityAsserts.assertAttributeEqualsEventually(entity, target, 3); Entities.unmanage(p2); EntityAsserts.assertAttributeEqualsEventually(entity, target, 1); }
@Test public void testAggregatesExistingChildren() { TestEntity p1 = entity.createAndManageChild(EntitySpec.create(TestEntity.class)); TestEntity p2 = entity.createAndManageChild(EntitySpec.create(TestEntity.class)); p1.sensors().set(intSensor, 1); entity.enrichers().add(Enrichers.builder() .aggregating(intSensor) .publishing(target) .computingSum() .fromChildren() .build()); EntityAsserts.assertAttributeEqualsEventually(entity, target, 1); p2.sensors().set(intSensor, 2); EntityAsserts.assertAttributeEqualsEventually(entity, target, 3); Entities.unmanage(p2); EntityAsserts.assertAttributeEqualsEventually(entity, target, 1); }
@Test public void testAggregatesChildrenOfProducer() { TestEntity p1 = entity.createAndManageChild(EntitySpec.create(TestEntity.class)); TestEntity p2 = entity.createAndManageChild(EntitySpec.create(TestEntity.class)); p1.sensors().set(intSensor, 1); app.enrichers().add(Enrichers.builder() .aggregating(intSensor) .publishing(target) .computingSum() .from(entity) .fromChildren() .build()); EntityAsserts.assertAttributeEqualsEventually(app, target, 1); p2.sensors().set(intSensor, 2); EntityAsserts.assertAttributeEqualsEventually(app, target, 3); Entities.unmanage(p2); EntityAsserts.assertAttributeEqualsEventually(app, target, 1); }
@Test public void testAggregatingChildrenSum() { group.addMember(entity); TestEntity child1 = group.addChild(EntitySpec.create(TestEntity.class)); TestEntity child2 = group.addChild(EntitySpec.create(TestEntity.class)); group.enrichers().add(Enrichers.builder() .aggregating(NUM1) .publishing(NUM2) .fromChildren() .computingSum() .build()); entity.sensors().set(NUM1, 1); child1.sensors().set(NUM1, 2); child2.sensors().set(NUM1, 3); EntityAsserts.assertAttributeEqualsEventually(group, NUM2, 5); }
@Test public void testSummingEnricherWithNoProducers() { entity.enrichers().add(Enrichers.builder() .aggregating(intSensor) .publishing(target) .computingSum() .fromChildren() .defaultValueForUnreportedSensors(11) .valueToReportIfNoSensors(40) .build()); EntityAsserts.assertAttributeEqualsEventually(entity, target, 40); }
@Test public void testAveragingEnricherWhenNoSensors() { entity.enrichers().add(Enrichers.builder() .aggregating(intSensor) .publishing(doubleSensor) .computingAverage() .fromChildren() .defaultValueForUnreportedSensors(3) .valueToReportIfNoSensors(5) .build()); EntityAsserts.assertAttributeEqualsEventually(entity, doubleSensor, 5d); }