AbstractMemberTrackingPolicy does not call MEMBER_ADDED when rebinding
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/1c94979a
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/1c94979a
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/1c94979a
Branch: refs/heads/master
Commit: 1c94979a563230245e12d9ba4e7539f3abab8c48
Parents: e3dea6e
Author: Sam Corbett
Authored: Fri Jan 13 12:14:02 2017 +
Committer: Sam Corbett
Committed: Fri Jan 13 12:14:02 2017 +
--
.../group/AbstractMembershipTrackingPolicy.java | 9 ++-
.../mgmt/rebind/RebindDynamicGroupTest.java | 13 ++--
.../MembershipTrackingPolicyRebindTest.java | 81
3 files changed, 93 insertions(+), 10 deletions(-)
--
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/1c94979a/core/src/main/java/org/apache/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java
--
diff --git
a/core/src/main/java/org/apache/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java
b/core/src/main/java/org/apache/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java
index 6d053ad..021c336 100644
---
a/core/src/main/java/org/apache/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java
+++
b/core/src/main/java/org/apache/brooklyn/entity/group/AbstractMembershipTrackingPolicy.java
@@ -206,8 +206,13 @@ public abstract class AbstractMembershipTrackingPolicy
extends AbstractPolicy {
}
});
}
-
-for (Entity it : group.getMembers()) {
onEntityEvent(EventType.ENTITY_ADDED, it); }
+
+// The policy will have already fired events for its members.
+if (!isRebinding()) {
+for (Entity it : group.getMembers()) {
+onEntityEvent(EventType.ENTITY_ADDED, it);
+}
+}
}
protected void unsubscribeFromGroup() {
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/1c94979a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindDynamicGroupTest.java
--
diff --git
a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindDynamicGroupTest.java
b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindDynamicGroupTest.java
index 2f9bc8e..8f2c50c 100644
---
a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindDynamicGroupTest.java
+++
b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindDynamicGroupTest.java
@@ -24,7 +24,6 @@ import java.util.Collection;
import org.apache.brooklyn.api.entity.Entity;
import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.core.entity.Entities;
import org.apache.brooklyn.core.mgmt.rebind.RebindEntityTest.MyEntity;
import org.apache.brooklyn.entity.group.DynamicGroup;
import org.apache.brooklyn.test.Asserts;
@@ -42,26 +41,24 @@ public class RebindDynamicGroupTest extends
RebindTestFixtureWithApp {
origApp.createAndManageChild(EntitySpec.create(MyEntity.class));
origApp.createAndManageChild(EntitySpec.create(DynamicGroup.class)
.configure(DynamicGroup.ENTITY_FILTER,
Predicates.instanceOf(MyEntity.class)));
-
newApp = rebind();
final DynamicGroup newG = (DynamicGroup)
Iterables.find(newApp.getChildren(), Predicates.instanceOf(DynamicGroup.class));
final MyEntity newE = (MyEntity) Iterables.find(newApp.getChildren(),
Predicates.instanceOf(MyEntity.class));
// Rebound group should contain same members as last time
-assertGroupMemebers(newG, ImmutableSet.of(newE));
+assertGroupMembers(newG, ImmutableSet.of(newE));
// And should detect new members that match the filter
final MyEntity newE2 =
newApp.createAndManageChild(EntitySpec.create(MyEntity.class));
-
Asserts.succeedsEventually(new Runnable() {
@Override public void run() {
-assertGroupMemebers(newG, ImmutableSet.of(newE, newE2));
+assertGroupMembers(newG, ImmutableSet.of(newE, newE2));
}});
}
-private void assertGroupMemebers(DynamicGroup group, Collection expected) {
+private void assertGroupMembers(DynamicGroup group, Collection expected) {
assertEquals(Sets.newHashSet(group.getMembers()),
ImmutableSet.copyOf(expected));
-assertEquals(group.getMembers().size(), expected.size(),
"members="+group.getMembers());
+assertEquals(group.getMembers().size(), expected.size(), "members=" +
group.getMembers());
}
-
+
}