@Test public void testAggregatingMembersEnricher() throws Exception { origApp.start(ImmutableList.of(origLoc)); origCluster.resize(2); origApp.enrichers().add(Enrichers.builder() .aggregating(METRIC1) .from(origCluster) .fromMembers() .computing(StringFunctions.joiner(",")) .publishing(METRIC2) .build()); TestApplication newApp = rebind(); DynamicCluster newCluster = (DynamicCluster) Iterables.find(newApp.getChildren(), Predicates.instanceOf(DynamicCluster.class)); int i = 1; for (Entity member : newCluster.getMembers()) { ((EntityInternal)member).sensors().set(METRIC1, "myval"+(i++)); } EntityAsserts.assertAttributeEventually(newApp, METRIC2, Predicates.or(Predicates.equalTo("myval1,myval2"), Predicates.equalTo("myval2,myval1"))); }
@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 testAggregatesMembersOfProducer() { BasicGroup group = app.addChild(EntitySpec.create(BasicGroup.class)); TestEntity p1 = group.addChild(EntitySpec.create(TestEntity.class)); TestEntity p2 = group.addChild(EntitySpec.create(TestEntity.class)); group.addMember(p1); group.addMember(p2); p1.sensors().set(intSensor, 1); app.enrichers().add(Enrichers.builder() .aggregating(intSensor) .publishing(target) .computingSum() .from(group) .fromMembers() .build()); EntityAsserts.assertAttributeEqualsEventually(app, target, 1); p2.sensors().set(intSensor, 2); EntityAsserts.assertAttributeEqualsEventually(app, target, 3); group.removeMember(p2); EntityAsserts.assertAttributeEqualsEventually(app, target, 1); }