mirror of
https://github.com/danieldemus/openhab-core.git
synced 2026-07-29 12:34:22 +02:00
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:
+3
-1
@@ -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)'
|
||||
|
||||
+29
-19
@@ -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)));
|
||||
}
|
||||
}
|
||||
|
||||
+22
-45
@@ -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)'
|
||||
|
||||
+8
-2
@@ -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() {
|
||||
|
||||
|
||||
+5
-1
@@ -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)'
|
||||
|
||||
+5
-2
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user