Fix unstable tests due to RuleEngine not being started (#2093)

Fixes #1633
Fixes #1955
Fixes #2080

Signed-off-by: Wouter Born <github@maindrain.net>
This commit is contained in:
Wouter Born
2021-01-09 23:17:40 +01:00
committed by GitHub
parent c2702d0dfe
commit c28090497d
9 changed files with 78 additions and 73 deletions
@@ -169,7 +169,9 @@ public class AutomationIntegrationJsonTest extends JavaOSGiTest {
}, 9000, 1000);
// start rule engine
((RuleEngineImpl) ruleManager).onReadyMarkerAdded(new ReadyMarker("", ""));
RuleEngineImpl ruleEngine = (RuleEngineImpl) ruleManager;
ruleEngine.onReadyMarkerAdded(new ReadyMarker("", ""));
waitForAssert(() -> assertTrue(ruleEngine.isStarted()));
logger.info("@Before.finish");
}
@@ -48,4 +48,5 @@ Fragment-Host: org.openhab.core.automation
junit-jupiter-engine;version='[5.7.0,5.7.1)',\
junit-platform-commons;version='[1.7.0,1.7.1)',\
junit-platform-engine;version='[1.7.0,1.7.1)',\
junit-platform-launcher;version='[1.7.0,1.7.1)'
junit-platform-launcher;version='[1.7.0,1.7.1)',\
org.eclipse.jdt.annotation;version='[2.2.100,2.2.101)'
@@ -13,6 +13,7 @@
package org.openhab.core.automation.internal.module;
import static java.util.Map.entry;
import static org.eclipse.jdt.annotation.Checks.requireNonNull;
import static org.junit.jupiter.api.Assertions.*;
import java.util.ArrayList;
@@ -51,6 +52,7 @@ import org.openhab.core.library.types.OnOffType;
import org.openhab.core.service.ReadyMarker;
import org.openhab.core.test.java.JavaOSGiTest;
import org.openhab.core.test.storage.VolatileStorageService;
import org.osgi.framework.ServiceReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -86,7 +88,9 @@ public class RunRuleModuleTest extends JavaOSGiTest {
registerService(volatileStorageService);
// start rule engine
((RuleEngineImpl) getService(RuleManager.class)).onReadyMarkerAdded(new ReadyMarker("", ""));
RuleEngineImpl ruleEngine = requireNonNull((RuleEngineImpl) getService(RuleManager.class));
ruleEngine.onReadyMarkerAdded(new ReadyMarker("", ""));
waitForAssert(() -> assertTrue(ruleEngine.isStarted()));
}
private Rule createSceneRule() {
@@ -166,24 +170,7 @@ public class RunRuleModuleTest extends JavaOSGiTest {
assertNotNull(itemRegistry);
final Queue<Event> events = new LinkedList<>();
registerService(new EventSubscriber() {
@Override
public void receive(final Event event) {
logger.info("Event: {}", event.getTopic());
events.add(event);
}
@Override
public Set<String> getSubscribedEventTypes() {
return Set.of(ItemCommandEvent.TYPE);
}
@Override
public @Nullable EventFilter getEventFilter() {
return null;
}
});
subscribeToEvents(ItemCommandEvent.TYPE, events);
// trigger rule by switching triggerItem ON
eventPublisher.post(ItemEventFactory.createStateEvent("ruleTrigger", OnOffType.ON));
@@ -194,4 +181,27 @@ public class RunRuleModuleTest extends JavaOSGiTest {
assertEquals(OnOffType.ON, event.getItemCommand());
});
}
private void subscribeToEvents(String eventType, final Queue<Event> events) {
EventSubscriber eventSubscriber = new EventSubscriber() {
@Override
public void receive(final Event event) {
logger.info("Event: {}", event.getTopic());
events.add(event);
}
@Override
public Set<String> getSubscribedEventTypes() {
return Set.of(eventType);
}
@Override
public @Nullable EventFilter getEventFilter() {
return null;
}
};
ServiceReference<?> subscriberReference = registerService(eventSubscriber).getReference();
assertNotNull(getServices(EventSubscriber.class, (reference) -> reference.equals(subscriberReference)));
}
}
@@ -13,6 +13,7 @@
package org.openhab.core.automation.internal.module;
import static java.util.Map.entry;
import static org.eclipse.jdt.annotation.Checks.requireNonNull;
import static org.junit.jupiter.api.Assertions.*;
import java.util.Collection;
@@ -59,6 +60,7 @@ import org.openhab.core.service.ReadyMarker;
import org.openhab.core.test.java.JavaOSGiTest;
import org.openhab.core.test.storage.VolatileStorageService;
import org.openhab.core.types.TypeParser;
import org.osgi.framework.ServiceReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -98,16 +100,13 @@ public class RuntimeRuleTest extends JavaOSGiTest {
registerService(volatileStorageService);
// start rule engine
((RuleEngineImpl) getService(RuleManager.class)).onReadyMarkerAdded(new ReadyMarker("", ""));
RuleEngineImpl ruleEngine = requireNonNull((RuleEngineImpl) getService(RuleManager.class));
ruleEngine.onReadyMarkerAdded(new ReadyMarker("", ""));
waitForAssert(() -> assertTrue(ruleEngine.isStarted()));
}
@Test
@Disabled
public void testPredefinedRule() throws ItemNotFoundException, InterruptedException {
final EventPublisher eventPublisher = getService(EventPublisher.class);
final Queue<Event> events = new LinkedList<>();
registerService(new EventSubscriber() {
private void subscribeToEvents(String eventType, final Queue<Event> events) {
EventSubscriber eventSubscriber = new EventSubscriber() {
@Override
public void receive(final Event event) {
logger.info("Event: {}", event.getTopic());
@@ -116,15 +115,26 @@ public class RuntimeRuleTest extends JavaOSGiTest {
@Override
public Set<String> getSubscribedEventTypes() {
return Set.of(ItemCommandEvent.TYPE);
return Set.of(eventType);
}
@Override
public @Nullable EventFilter getEventFilter() {
return null;
}
});
};
ServiceReference<?> subscriberReference = registerService(eventSubscriber).getReference();
assertNotNull(getServices(EventSubscriber.class, (reference) -> reference.equals(subscriberReference)));
}
@Test
@Disabled
public void testPredefinedRule() throws ItemNotFoundException, InterruptedException {
final Queue<Event> events = new LinkedList<>();
subscribeToEvents(ItemCommandEvent.TYPE, events);
final EventPublisher eventPublisher = getService(EventPublisher.class);
eventPublisher.post(ItemEventFactory.createStateEvent("myMotionItem", OnOffType.ON));
waitForAssert(() -> {
@@ -167,23 +177,7 @@ public class RuntimeRuleTest extends JavaOSGiTest {
final Queue<Event> events = new LinkedList<>();
registerService(new EventSubscriber() {
@Override
public void receive(final Event event) {
logger.info("Event: {}", event.getTopic());
events.add(event);
}
@Override
public Set<String> getSubscribedEventTypes() {
return Set.of(ItemCommandEvent.TYPE);
}
@Override
public @Nullable EventFilter getEventFilter() {
return null;
}
});
subscribeToEvents(ItemCommandEvent.TYPE, events);
eventPublisher.post(ItemEventFactory.createStateEvent("myMotionItem2", OnOffType.ON));
@@ -370,24 +364,7 @@ public class RuntimeRuleTest extends JavaOSGiTest {
});
final Queue<Event> events = new LinkedList<>();
registerService(new EventSubscriber() {
@Override
public void receive(final Event event) {
logger.info("RuleEvent: {}", event.getTopic());
events.add(event);
}
@Override
public Set<String> getSubscribedEventTypes() {
return Set.of(RuleStatusInfoEvent.TYPE);
}
@Override
public @Nullable EventFilter getEventFilter() {
return null;
}
});
subscribeToEvents(RuleStatusInfoEvent.TYPE, events);
final EventPublisher eventPublisher = getService(EventPublisher.class);
eventPublisher.post(ItemEventFactory.createStateEvent("myPresenceItem3", OnOffType.ON));
@@ -48,4 +48,5 @@ Fragment-Host: org.openhab.core.automation
junit-jupiter-engine;version='[5.7.0,5.7.1)',\
junit-platform-commons;version='[1.7.0,1.7.1)',\
junit-platform-engine;version='[1.7.0,1.7.1)',\
junit-platform-launcher;version='[1.7.0,1.7.1)'
junit-platform-launcher;version='[1.7.0,1.7.1)',\
org.eclipse.jdt.annotation;version='[2.2.100,2.2.101)'
@@ -12,8 +12,10 @@
*/
package org.openhab.core.automation.module.timer.internal;
import static org.eclipse.jdt.annotation.Checks.requireNonNull;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.ArrayList;
import java.util.Collection;
@@ -109,7 +111,9 @@ public abstract class BasicConditionHandlerTest extends JavaOSGiTest {
}, 3000, 100);
// start rule engine
((RuleEngineImpl) getService(RuleManager.class)).onReadyMarkerAdded(new ReadyMarker("", ""));
RuleEngineImpl ruleEngine = requireNonNull((RuleEngineImpl) getService(RuleManager.class));
ruleEngine.onReadyMarkerAdded(new ReadyMarker("", ""));
waitForAssert(() -> assertTrue(ruleEngine.isStarted()));
}
@Test
@@ -142,7 +146,9 @@ public abstract class BasicConditionHandlerTest extends JavaOSGiTest {
EventPublisher eventPublisher = getService(EventPublisher.class);
// start rule engine
((RuleEngineImpl) getService(RuleManager.class)).onReadyMarkerAdded(new ReadyMarker("", ""));
RuleEngineImpl ruleEngine = requireNonNull((RuleEngineImpl) getService(RuleManager.class));
ruleEngine.onReadyMarkerAdded(new ReadyMarker("", ""));
waitForAssert(() -> assertTrue(ruleEngine.isStarted()));
EventSubscriber itemEventHandler = new EventSubscriber() {
@@ -12,8 +12,10 @@
*/
package org.openhab.core.automation.module.timer.internal;
import static org.eclipse.jdt.annotation.Checks.requireNonNull;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Collection;
import java.util.HashMap;
@@ -86,7 +88,9 @@ public class RuntimeRuleTest extends JavaOSGiTest {
}, 3000, 100);
// start rule engine
((RuleEngineImpl) getService(RuleManager.class)).onReadyMarkerAdded(new ReadyMarker("", ""));
RuleEngineImpl ruleEngine = requireNonNull((RuleEngineImpl) getService(RuleManager.class));
ruleEngine.onReadyMarkerAdded(new ReadyMarker("", ""));
waitForAssert(() -> assertTrue(ruleEngine.isStarted()));
}
@Test
@@ -48,4 +48,5 @@ Fragment-Host: org.openhab.core.automation
junit-jupiter-engine;version='[5.7.0,5.7.1)',\
junit-platform-commons;version='[1.7.0,1.7.1)',\
junit-platform-engine;version='[1.7.0,1.7.1)',\
junit-platform-launcher;version='[1.7.0,1.7.1)'
junit-platform-launcher;version='[1.7.0,1.7.1)',\
org.eclipse.jdt.annotation;version='[2.2.100,2.2.101)'
@@ -13,9 +13,10 @@
package org.openhab.core.automation.event;
import static java.util.Map.entry;
import static org.eclipse.jdt.annotation.Checks.requireNonNull;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.*;
import java.util.ArrayList;
import java.util.Collection;
@@ -101,7 +102,9 @@ public class RuleEventTest extends JavaOSGiTest {
registerVolatileStorageService();
// start rule engine
((RuleEngineImpl) getService(RuleManager.class)).onReadyMarkerAdded(new ReadyMarker("", ""));
RuleEngineImpl ruleEngine = requireNonNull((RuleEngineImpl) getService(RuleManager.class));
ruleEngine.onReadyMarkerAdded(new ReadyMarker("", ""));
waitForAssert(() -> assertTrue(ruleEngine.isStarted()));
}
@Test