Fix missing TargetUpdate events (#476)

* Fix problem where target assignment sends not all events.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Improved concurrency.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Revert send assigned event change.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Adapt tests.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Readibility.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>
This commit is contained in:
Kai Zimmermann
2017-04-12 21:40:48 +02:00
committed by GitHub
parent 84b1980d32
commit 32fe53708e
6 changed files with 111 additions and 94 deletions

View File

@@ -16,6 +16,7 @@ import java.util.Optional;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.eclipse.hawkbit.repository.test.util.TestContextProvider;
import org.junit.Assert;
@@ -27,7 +28,7 @@ import org.springframework.context.ApplicationListener;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.event.ApplicationEventMulticaster;
import com.google.common.collect.HashMultiset;
import com.google.common.collect.ConcurrentHashMultiset;
import com.google.common.collect.Multiset;
import com.google.common.collect.Sets;
import com.jayway.awaitility.Awaitility;
@@ -111,20 +112,20 @@ public class EventVerifier implements TestRule {
private static class EventCaptor implements ApplicationListener<RemoteApplicationEvent> {
private final Multiset<Class<?>> capturedEvents = HashMultiset.create();
private final Multiset<Class<?>> capturedEvents = ConcurrentHashMultiset.create();
@Override
public synchronized void onApplicationEvent(final RemoteApplicationEvent event) {
public void onApplicationEvent(final RemoteApplicationEvent event) {
capturedEvents.add(event.getClass());
}
public synchronized int getCountFor(final Class<?> expectedEvent) {
public int getCountFor(final Class<?> expectedEvent) {
return capturedEvents.count(expectedEvent);
}
public synchronized Set<Class<?>> diff(final Expect[] allEvents) {
public Set<Class<?>> diff(final Expect[] allEvents) {
return Sets.difference(capturedEvents.elementSet(),
java.util.stream.Stream.of(allEvents).map((e) -> e.type()).collect(Collectors.toSet()));
Stream.of(allEvents).map(Expect::type).collect(Collectors.toSet()));
}
}