Skip to content

Commit

Permalink
Fix timing issue in PolicyAnnouncementManagerTest.
Browse files Browse the repository at this point in the history
Signed-off-by: Yufei Cai <yufei.cai@bosch.io>
  • Loading branch information
yufei-cai committed Oct 5, 2021
1 parent 8c55f40 commit 08d551e
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@
package org.eclipse.ditto.policies.service.persistence.actors.announcements;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
Expand Down Expand Up @@ -65,9 +63,9 @@ private PolicyAnnouncementManager(final PolicyId policyId,
}

PolicyAnnouncementManager(final Function<Subject, Props> createChildProps) {
this.subjectExpiryActors = new LinkedHashMap<>();
this.activeSubjects = new LinkedHashMap<>();
this.activeSubjectIds = new LinkedHashMap<>();
this.subjectExpiryActors = new HashMap<>();
this.activeSubjects = new HashMap<>();
this.activeSubjectIds = new HashMap<>();
this.createChildProps = createChildProps;
}

Expand Down Expand Up @@ -170,7 +168,7 @@ private Set<Subject> getSubjectsWithExpiryOrAnnouncements(final Policy policy) {
.map(PolicyEntry::getSubjects)
.flatMap(Subjects::stream)
.filter(subject -> subject.getExpiry().isPresent() || subject.getAnnouncement().isPresent())
.collect(Collectors.toCollection(LinkedHashSet::new));
.collect(Collectors.toSet());
} else {
return Set.of();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

import static org.assertj.core.api.Assertions.assertThat;

import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;

import org.eclipse.ditto.json.JsonPointer;
Expand All @@ -36,6 +38,9 @@
import akka.japi.pf.ReceiveBuilder;
import akka.testkit.javadsl.TestKit;

/**
* Tests {@link PolicyAnnouncementManager}.
*/
public final class PolicyAnnouncementManagerTest {

private final ActorSystem system = ActorSystem.create();
Expand Down Expand Up @@ -81,19 +86,25 @@ public void deleting2SubjectsPublishesSubjectDeletionAnnouncement() {
final var child2 = watch(expectMsgClass(ActorRef.class));
underTest.tell(policy2, getRef());

final var terminatedActor = new AtomicReference<ActorRef>();
final var subjectDeletedActor = new AtomicReference<ActorRef>();
final Consumer<Object> assertMessage = message -> {
if (message instanceof Terminated) {
assertThat(((Terminated) message).getActor()).isEqualTo(child1);
terminatedActor.set(((Terminated) message).getActor());
} else {
assertThat(message).isEqualTo(SubjectExpiryActor.Message.SUBJECT_DELETED);
assertThat(getLastSender()).isEqualTo(child2);
subjectDeletedActor.set(getLastSender());
}
};

final var message1 = expectMsgClass(Object.class);
assertMessage.accept(message1);
final var message2 = expectMsgClass(Object.class);
assertMessage.accept(message2);
final var childActors = Set.of(child1, child2);
assertThat(terminatedActor.get()).isIn(childActors);
assertThat(subjectDeletedActor.get()).isIn(childActors);
assertThat(terminatedActor.get()).isNotEqualTo(subjectDeletedActor.get());
}};
}

Expand Down

0 comments on commit 08d551e

Please sign in to comment.