mirror of
https://github.com/danieldemus/openhab-core.git
synced 2026-07-29 12:34:22 +02:00
Improve test stability and OS compatibility (#2878)
This fixes the build being broken when building on Windows. It also contains many fixes for timing issues which seem to impact macOS and Windows more than Linux. * Fix .gitattributes and add *.xml_gen to fix line ending issues on Windows * Derive fork count from CPU details in org.openhab.core tests for more stable tests on machines with fewer cores * Adjust SafeCallerImplTest timings * Increase ExecUtilTest timeout * Increase SchedulerImplTest timeouts * Increase AudioConsoleTest serveStream timeout * Increase AudioServletTest serveStream timeout * Increase SchedulerImplTest test timeouts * Increase ExpireManagerTest timeout used for checking published events * Increase PeriodicSchedulerImplTest max allowed delta * Increase SchedulerImplTest timeouts * Fix BundleInfoReader file stream not closed causing temp dir deletion issues on Windows * Fix GenerateDefaultTranslationsMojoTest Windows line endings issues * Fix GenerateDefaultTranslationsMojoTest Windows temp dir deletion problem * Fix GenericItemProviderTest tearDown sometimes fails because of queued events * Fix ChannelLinkNotifierOSGiTest wait for channel link events * Fix ChannelCommandDescriptionProviderOSGiTest fails if provider not immediately registered * Fix ChannelStateDescriptionProviderOSGiTest fails if provider not immediately registered * Fix GenericItemChannelLinkProviderTest not waiting for async updated state to become true * Fix GenericThingProviderTest failing due to events of previous test * Fix InboxOSGiTest sometimes fails because of queued events * Fix ScriptEngineOSGiTest failing because items are not yet added to registry * Fix ThingManagerOSGiTest failing due to async handleRemoval call Signed-off-by: Wouter Born <github@maindrain.net>
This commit is contained in:
+40
-7
@@ -24,6 +24,7 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
@@ -79,7 +80,7 @@ import org.osgi.service.component.ComponentContext;
|
||||
@NonNullByDefault
|
||||
public class InboxOSGiTest extends JavaOSGiTest {
|
||||
|
||||
class DiscoveryService1 extends AbstractDiscoveryService {
|
||||
static class DiscoveryService1 extends AbstractDiscoveryService {
|
||||
public DiscoveryService1() {
|
||||
super(5);
|
||||
}
|
||||
@@ -89,7 +90,7 @@ public class InboxOSGiTest extends JavaOSGiTest {
|
||||
}
|
||||
}
|
||||
|
||||
class DiscoveryService2 extends AbstractDiscoveryService {
|
||||
static class DiscoveryService2 extends AbstractDiscoveryService {
|
||||
public DiscoveryService2() {
|
||||
super(5);
|
||||
}
|
||||
@@ -195,12 +196,44 @@ public class InboxOSGiTest extends JavaOSGiTest {
|
||||
|
||||
@AfterEach
|
||||
public void cleanUp() {
|
||||
discoveryResults.forEach((thingUID, discoveryResult) -> inbox.remove(thingUID));
|
||||
inboxListeners.forEach(listener -> inbox.removeInboxListener(listener));
|
||||
discoveryResults.clear();
|
||||
inboxListeners.clear();
|
||||
Set<String> inboxThingUIDsToRemove = inbox.getAll().stream().map(DiscoveryResult::getThingUID)
|
||||
.map(ThingUID::toString).collect(Collectors.toSet());
|
||||
Set<String> removedInboxThingUIDs = new HashSet<>();
|
||||
|
||||
EventSubscriber inboxEventSubscriber = new EventSubscriber() {
|
||||
@Override
|
||||
public void receive(Event event) {
|
||||
if (event instanceof InboxRemovedEvent) {
|
||||
removedInboxThingUIDs.add(((InboxRemovedEvent) event).getDiscoveryResult().thingUID);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getSubscribedEventTypes() {
|
||||
return Set.of(InboxRemovedEvent.TYPE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable EventFilter getEventFilter() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
registerService(inboxEventSubscriber);
|
||||
|
||||
registry.remove(BRIDGE_THING_UID);
|
||||
managedThingProvider.getAll().forEach(thing -> managedThingProvider.remove(thing.getUID()));
|
||||
|
||||
inboxListeners.forEach(listener -> inbox.removeInboxListener(listener));
|
||||
inbox.getAll().stream().forEach(discoveryResult -> inbox.remove(discoveryResult.getThingUID()));
|
||||
|
||||
discoveryResults.clear();
|
||||
inboxListeners.clear();
|
||||
|
||||
// wait for the resulting events to be handled so they do not cause the next test to fail
|
||||
waitForAssert(() -> assertTrue(removedInboxThingUIDs.containsAll(inboxThingUIDsToRemove)));
|
||||
|
||||
unregisterService(inboxEventSubscriber);
|
||||
}
|
||||
|
||||
private boolean addDiscoveryResult(DiscoveryResult discoveryResult) {
|
||||
@@ -963,7 +996,7 @@ public class InboxOSGiTest extends JavaOSGiTest {
|
||||
assertTrue(thingProperty.equals(descResultParam));
|
||||
}
|
||||
|
||||
services.forEach(obj -> unregisterService(obj));
|
||||
services.forEach(this::unregisterService);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
+30
-21
@@ -16,6 +16,7 @@ import static java.util.stream.Collectors.*;
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.collection.IsCollectionWithSize.hasSize;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.math.BigDecimal;
|
||||
@@ -41,6 +42,7 @@ import org.openhab.core.items.GenericItem;
|
||||
import org.openhab.core.items.GroupFunction;
|
||||
import org.openhab.core.items.GroupItem;
|
||||
import org.openhab.core.items.Item;
|
||||
import org.openhab.core.items.ItemNotFoundException;
|
||||
import org.openhab.core.items.ItemProvider;
|
||||
import org.openhab.core.items.ItemRegistry;
|
||||
import org.openhab.core.items.Metadata;
|
||||
@@ -107,9 +109,9 @@ public class GenericItemProviderTest extends JavaOSGiTest {
|
||||
*/
|
||||
@AfterEach
|
||||
public void tearDown() {
|
||||
Collection<Item> itemsToRemove = itemRegistry.getAll();
|
||||
List<String> modelNamesToRemove = TESTMODEL_NAMES.stream()
|
||||
.filter(name -> modelRepository.getModel(name) != null).collect(Collectors.toList());
|
||||
Set<String> itemNamesToRemove = itemRegistry.getAll().stream().map(Item::getName).collect(Collectors.toSet());
|
||||
Set<String> modelNamesToRemove = TESTMODEL_NAMES.stream().filter(name -> modelRepository.getModel(name) != null)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
if (!modelNamesToRemove.isEmpty()) {
|
||||
Set<String> removedModelNames = new HashSet<>();
|
||||
@@ -123,18 +125,18 @@ public class GenericItemProviderTest extends JavaOSGiTest {
|
||||
}
|
||||
};
|
||||
|
||||
List<AbstractItemRegistryEvent> removedItemEvents = new ArrayList<>();
|
||||
List<String> removedItemNames = new ArrayList<>();
|
||||
|
||||
EventSubscriber itemEventSubscriber = new EventSubscriber() {
|
||||
@Override
|
||||
public void receive(Event event) {
|
||||
logger.debug("Received event: {}", event);
|
||||
removedItemEvents.add((AbstractItemRegistryEvent) event);
|
||||
removedItemNames.add(((AbstractItemRegistryEvent) event).getItem().name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getSubscribedEventTypes() {
|
||||
return Stream.of(ItemRemovedEvent.TYPE).collect(toSet());
|
||||
return Set.of(ItemRemovedEvent.TYPE);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -149,7 +151,8 @@ public class GenericItemProviderTest extends JavaOSGiTest {
|
||||
modelNamesToRemove.forEach(modelRepository::removeModel);
|
||||
|
||||
waitForAssert(() -> {
|
||||
assertThat(removedItemEvents, hasSize(itemsToRemove.size()));
|
||||
// removedItemNames can have more item names due to queued events generated in the test
|
||||
assertTrue(removedItemNames.containsAll(itemNamesToRemove));
|
||||
assertThat(removedModelNames, hasSize(modelNamesToRemove.size()));
|
||||
});
|
||||
|
||||
@@ -240,22 +243,17 @@ public class GenericItemProviderTest extends JavaOSGiTest {
|
||||
String model = "String test1 \"Test Item [%s]\" { channel=\"test:test:test:test\" }\n"
|
||||
+ "String test2 \"Test Item [%s]\" { channel=\"test:test:test:test\" }";
|
||||
modelRepository.addOrRefreshModel(TESTMODEL_NAME, new ByteArrayInputStream(model.getBytes()));
|
||||
|
||||
assertThat(itemRegistry.getAll(), hasSize(2));
|
||||
waitForAssert(() -> assertThat(itemRegistry.getAll(), hasSize(2)));
|
||||
|
||||
model = "String test1 \"Test Item [%s]\" { channel=\"test:test:test:test\" }\n"
|
||||
+ "String {something is wrong} test \"Test Item [%s]\" { channel=\"test:test:test:test\" }";
|
||||
modelRepository.addOrRefreshModel(TESTMODEL_NAME, new ByteArrayInputStream(model.getBytes()));
|
||||
|
||||
waitForAssert(() -> {
|
||||
assertThat(itemRegistry.getAll(), hasSize(0));
|
||||
});
|
||||
waitForAssert(() -> assertThat(itemRegistry.getAll(), hasSize(0)));
|
||||
|
||||
model = "String test1 \"Test Item [%s]\" { channel=\"test:test:test:test\" }\n"
|
||||
+ "String test2 \"Test Item [%s]\" { channel=\"test:test:test:test\" }";
|
||||
modelRepository.addOrRefreshModel(TESTMODEL_NAME, new ByteArrayInputStream(model.getBytes()));
|
||||
|
||||
assertThat(itemRegistry.getAll(), hasSize(2));
|
||||
waitForAssert(() -> assertThat(itemRegistry.getAll(), hasSize(2)));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -392,23 +390,34 @@ public class GenericItemProviderTest extends JavaOSGiTest {
|
||||
+ "String test2 \"Test Item [%s]\" { channel=\"test:test:test:test\" }\n"
|
||||
+ "String test3 \"Test Item [%s]\" { channel=\"test:test:test:test\" }";
|
||||
modelRepository.addOrRefreshModel(TESTMODEL_NAME, new ByteArrayInputStream(model.getBytes()));
|
||||
assertThat(itemRegistry.getAll(), hasSize(3));
|
||||
waitForAssert(() -> assertThat(itemRegistry.getAll(), hasSize(3)));
|
||||
|
||||
Item unchangedItem = itemRegistry.getItem("test1");
|
||||
|
||||
model = "String test1 \"Test Item [%s]\" { channel=\"test:test:test:test\" }\n"
|
||||
+ "String test2 \"Test Item Changed [%s]\" { channel=\"test:test:test:test\" }";
|
||||
modelRepository.addOrRefreshModel(TESTMODEL_NAME, new ByteArrayInputStream(model.getBytes()));
|
||||
assertThat(itemRegistry.getAll(), hasSize(2));
|
||||
assertThat(itemRegistry.getItem("test1"), is(unchangedItem));
|
||||
waitForAssert(() -> {
|
||||
assertThat(itemRegistry.getAll(), hasSize(2));
|
||||
try {
|
||||
assertThat(itemRegistry.getItem("test1"), is(unchangedItem));
|
||||
} catch (ItemNotFoundException e) {
|
||||
}
|
||||
});
|
||||
|
||||
model = "";
|
||||
modelRepository.addOrRefreshModel(TESTMODEL_NAME, new ByteArrayInputStream(model.getBytes()));
|
||||
assertThat(itemRegistry.getAll(), hasSize(0));
|
||||
waitForAssert(() -> assertThat(itemRegistry.getAll(), hasSize(0)));
|
||||
|
||||
model = "String test1 \"Test Item [%s]\" { channel=\"test:test:test:test\" }";
|
||||
modelRepository.addOrRefreshModel(TESTMODEL_NAME, new ByteArrayInputStream(model.getBytes()));
|
||||
assertThat(itemRegistry.getAll(), hasSize(1));
|
||||
assertThat(itemRegistry.getItem("test1"), is(unchangedItem));
|
||||
waitForAssert(() -> {
|
||||
assertThat(itemRegistry.getAll(), hasSize(1));
|
||||
try {
|
||||
assertThat(itemRegistry.getItem("test1"), is(unchangedItem));
|
||||
} catch (ItemNotFoundException e) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
+2
-1
@@ -72,7 +72,6 @@ public class ScriptEngineOSGiTest extends JavaOSGiTest {
|
||||
assertNotNull(itemRegistry);
|
||||
|
||||
itemProvider = new ItemProvider() {
|
||||
|
||||
@Override
|
||||
public void addProviderChangeListener(ProviderChangeListener<Item> listener) {
|
||||
}
|
||||
@@ -90,6 +89,8 @@ public class ScriptEngineOSGiTest extends JavaOSGiTest {
|
||||
|
||||
registerService(itemProvider);
|
||||
|
||||
waitForAssert(() -> assertThat(itemRegistry.getAll().size(), is(itemProvider.getAll().size())));
|
||||
|
||||
ScriptServiceUtil scriptServiceUtil = getService(ScriptServiceUtil.class);
|
||||
assertNotNull(scriptServiceUtil);
|
||||
scriptEngine = ScriptServiceUtil.getScriptEngine();
|
||||
|
||||
+26
-31
@@ -24,7 +24,6 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.openhab.core.items.Item;
|
||||
import org.openhab.core.items.ItemRegistry;
|
||||
import org.openhab.core.model.core.ModelRepository;
|
||||
import org.openhab.core.test.java.JavaOSGiTest;
|
||||
@@ -85,27 +84,25 @@ public class GenericItemChannelLinkProviderTest extends JavaOSGiTest {
|
||||
"}";
|
||||
|
||||
modelRepository.addOrRefreshModel(THINGS_TESTMODEL_NAME, new ByteArrayInputStream(thingsModel.getBytes()));
|
||||
Collection<Thing> actualThings = thingRegistry.getAll();
|
||||
|
||||
assertThat(actualThings.size(), is(3));
|
||||
|
||||
Collection<Item> items = itemRegistry.getItems();
|
||||
assertThat(items.size(), is(0));
|
||||
|
||||
Collection<ItemChannelLink> itemChannelLinks = itemChannelLinkRegistry.getAll();
|
||||
assertThat(itemChannelLinks.size(), is(0));
|
||||
waitForAssert(() -> {
|
||||
assertThat(thingRegistry.getAll().size(), is(3));
|
||||
assertThat(itemRegistry.getItems().size(), is(0));
|
||||
assertThat(itemChannelLinkRegistry.getAll().size(), is(0));
|
||||
});
|
||||
|
||||
String itemsModel = "Color Light3Color \"Light3 Color\" { channel=\"hue:LCT001:huebridge:bulb3:color\" }";
|
||||
|
||||
modelRepository.addOrRefreshModel(ITEMS_TESTMODEL_NAME, new ByteArrayInputStream(itemsModel.getBytes()));
|
||||
Collection<Item> actualItems = itemRegistry.getItems();
|
||||
|
||||
assertThat(actualItems.size(), is(1));
|
||||
waitForAssert(() -> {
|
||||
assertThat(itemRegistry.getItems().size(), is(1));
|
||||
|
||||
List<ItemChannelLink> actualItemChannelLinks = new ArrayList<>(itemChannelLinkRegistry.getAll());
|
||||
assertThat(actualItemChannelLinks.size(), is(1));
|
||||
assertThat(actualItemChannelLinks.get(0).toString(),
|
||||
is(equalTo("Light3Color -> hue:LCT001:huebridge:bulb3:color")));
|
||||
List<ItemChannelLink> actualItemChannelLinks = new ArrayList<>(itemChannelLinkRegistry.getAll());
|
||||
assertThat(actualItemChannelLinks.size(), is(1));
|
||||
assertThat(actualItemChannelLinks.get(0).toString(),
|
||||
is(equalTo("Light3Color -> hue:LCT001:huebridge:bulb3:color")));
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -120,28 +117,26 @@ public class GenericItemChannelLinkProviderTest extends JavaOSGiTest {
|
||||
"}";
|
||||
|
||||
modelRepository.addOrRefreshModel(THINGS_TESTMODEL_NAME, new ByteArrayInputStream(thingsModel.getBytes()));
|
||||
Collection<Thing> actualThings = thingRegistry.getAll();
|
||||
|
||||
assertThat(actualThings.size(), is(3));
|
||||
|
||||
Collection<Item> items = itemRegistry.getItems();
|
||||
assertThat(items.size(), is(0));
|
||||
|
||||
Collection<ItemChannelLink> itemChannelLinks = itemChannelLinkRegistry.getAll();
|
||||
assertThat(itemChannelLinks.size(), is(0));
|
||||
waitForAssert(() -> {
|
||||
assertThat(thingRegistry.getAll().size(), is(3));
|
||||
assertThat(itemRegistry.getItems().size(), is(0));
|
||||
assertThat(itemChannelLinkRegistry.getAll().size(), is(0));
|
||||
});
|
||||
|
||||
String itemsModel = "Color Light3Color \"Light3 Color\" { channel=\"hue:LCT001:huebridge:bulb3:color, hue:LCT001:huebridge:bulb4:color\" }";
|
||||
|
||||
modelRepository.addOrRefreshModel(ITEMS_TESTMODEL_NAME, new ByteArrayInputStream(itemsModel.getBytes()));
|
||||
Collection<Item> actualItems = itemRegistry.getItems();
|
||||
|
||||
assertThat(actualItems.size(), is(1));
|
||||
waitForAssert(() -> {
|
||||
assertThat(itemRegistry.getItems().size(), is(1));
|
||||
|
||||
List<ItemChannelLink> actualItemChannelLinks = new ArrayList<>(itemChannelLinkRegistry.getAll());
|
||||
assertThat(actualItemChannelLinks.size(), is(2));
|
||||
assertThat(actualItemChannelLinks.get(0).toString(),
|
||||
is(equalTo("Light3Color -> hue:LCT001:huebridge:bulb3:color")));
|
||||
assertThat(actualItemChannelLinks.get(1).toString(),
|
||||
is(equalTo("Light3Color -> hue:LCT001:huebridge:bulb4:color")));
|
||||
List<ItemChannelLink> actualItemChannelLinks = new ArrayList<>(itemChannelLinkRegistry.getAll());
|
||||
assertThat(actualItemChannelLinks.size(), is(2));
|
||||
assertThat(actualItemChannelLinks.get(0).toString(),
|
||||
is(equalTo("Light3Color -> hue:LCT001:huebridge:bulb3:color")));
|
||||
assertThat(actualItemChannelLinks.get(1).toString(),
|
||||
is(equalTo("Light3Color -> hue:LCT001:huebridge:bulb4:color")));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
+10
-6
@@ -495,7 +495,11 @@ public class GenericThingProviderTest extends JavaOSGiTest {
|
||||
|
||||
@Override
|
||||
public void receive(Event event) {
|
||||
receivedEvents.add((AbstractThingRegistryEvent) event);
|
||||
AbstractThingRegistryEvent registryEvent = (AbstractThingRegistryEvent) event;
|
||||
if (List.of("hue:bridge:my1234Bridge", "hue:LCT001:my1234Bridge:myKitchenBulb1")
|
||||
.contains(registryEvent.getThing().UID)) {
|
||||
receivedEvents.add(registryEvent);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -503,8 +507,8 @@ public class GenericThingProviderTest extends JavaOSGiTest {
|
||||
|
||||
assertThat(thingRegistry.getAll().size(), is(0));
|
||||
|
||||
String model = "Bridge hue:bridge:myBridge [ ip = \"1.2.3.4\", username = \"123\" ] {" + //
|
||||
" LCT001 bulb1 [ lightId = \"1\" ] { Switch : notification }" + //
|
||||
String model = "Bridge hue:bridge:my1234Bridge [ ip = \"1.2.3.4\", username = \"123\" ] {" + //
|
||||
" LCT001 myKitchenBulb1 [ lightId = \"1\" ] { Switch : notification }" + //
|
||||
"}";
|
||||
|
||||
modelRepository.addOrRefreshModel(TESTMODEL_NAME, new ByteArrayInputStream(model.getBytes()));
|
||||
@@ -515,8 +519,8 @@ public class GenericThingProviderTest extends JavaOSGiTest {
|
||||
});
|
||||
receivedEvents.clear();
|
||||
|
||||
String newModel = "Bridge hue:bridge:myBridge [ ip = \"1.2.3.4\", username = \"123\" ] {" + //
|
||||
" LCT001 bulb1 [ lightId = \"2\" ] { Switch : notification }" + //
|
||||
String newModel = "Bridge hue:bridge:my1234Bridge [ ip = \"1.2.3.4\", username = \"123\" ] {" + //
|
||||
" LCT001 myKitchenBulb1 [ lightId = \"2\" ] { Switch : notification }" + //
|
||||
"}";
|
||||
|
||||
modelRepository.addOrRefreshModel(TESTMODEL_NAME, new ByteArrayInputStream(newModel.getBytes()));
|
||||
@@ -527,7 +531,7 @@ public class GenericThingProviderTest extends JavaOSGiTest {
|
||||
Event event = receivedEvents.get(0);
|
||||
assertEquals(ThingUpdatedEvent.class, event.getClass());
|
||||
ThingUpdatedEvent thingUpdatedEvent = (ThingUpdatedEvent) event;
|
||||
assertEquals("hue:LCT001:myBridge:bulb1", thingUpdatedEvent.getThing().UID.toString());
|
||||
assertEquals("hue:LCT001:my1234Bridge:myKitchenBulb1", thingUpdatedEvent.getThing().UID);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+15
-23
@@ -21,6 +21,7 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
@@ -208,13 +209,8 @@ public class ChannelCommandDescriptionProviderOSGiTest extends JavaOSGiTest {
|
||||
|
||||
registerService(new TestDynamicCommandDescriptionProvider(), DynamicCommandDescriptionProvider.class.getName());
|
||||
|
||||
Thing thing = thingRegistry.createThingOfType(new ThingTypeUID("hue:lamp"), new ThingUID("hue:lamp:lamp1"),
|
||||
null, "test thing", new Configuration());
|
||||
|
||||
assertNotNull(thing);
|
||||
if (thing == null) {
|
||||
throw new IllegalStateException("thing is null");
|
||||
}
|
||||
Thing thing = Objects.requireNonNull(thingRegistry.createThingOfType(new ThingTypeUID("hue:lamp"),
|
||||
new ThingUID("hue:lamp:lamp1"), null, "test thing", new Configuration()));
|
||||
|
||||
managedThingProvider.add(thing);
|
||||
ItemChannelLink link = new ItemChannelLink("TestItem1", getChannel(thing, "1").getUID());
|
||||
@@ -230,9 +226,10 @@ public class ChannelCommandDescriptionProviderOSGiTest extends JavaOSGiTest {
|
||||
Item item = itemRegistry.getItem("TestItem1");
|
||||
assertEquals(CoreItemFactory.NUMBER, item.getType());
|
||||
|
||||
CommandDescription command = item.getCommandDescription();
|
||||
assertNotNull(command);
|
||||
final Item finalItem = item;
|
||||
waitForAssert(() -> assertNotNull(finalItem.getCommandDescription()));
|
||||
|
||||
CommandDescription command = Objects.requireNonNull(item.getCommandDescription());
|
||||
List<CommandOption> opts = command.getCommandOptions();
|
||||
assertNotNull(opts);
|
||||
assertEquals(1, opts.size());
|
||||
@@ -280,12 +277,8 @@ public class ChannelCommandDescriptionProviderOSGiTest extends JavaOSGiTest {
|
||||
DynamicCommandDescriptionProvider.class.getName());
|
||||
registerService(new TestDynamicCommandDescriptionProvider(), DynamicCommandDescriptionProvider.class.getName());
|
||||
|
||||
Thing thing = thingRegistry.createThingOfType(new ThingTypeUID("hue:lamp"), new ThingUID("hue:lamp:lamp1"),
|
||||
null, "test thing", new Configuration());
|
||||
assertNotNull(thing);
|
||||
if (thing == null) {
|
||||
throw new IllegalStateException("thing is null");
|
||||
}
|
||||
Thing thing = Objects.requireNonNull(thingRegistry.createThingOfType(new ThingTypeUID("hue:lamp"),
|
||||
new ThingUID("hue:lamp:lamp1"), null, "test thing", new Configuration()));
|
||||
|
||||
managedThingProvider.add(thing);
|
||||
ItemChannelLink link = new ItemChannelLink("TestItem7_2", getChannel(thing, "7_2").getUID());
|
||||
@@ -294,11 +287,10 @@ public class ChannelCommandDescriptionProviderOSGiTest extends JavaOSGiTest {
|
||||
final Collection<Item> items = itemRegistry.getItems();
|
||||
assertFalse(items.isEmpty());
|
||||
|
||||
Item item = itemRegistry.getItem("TestItem7_2");
|
||||
|
||||
CommandDescription command = item.getCommandDescription();
|
||||
assertNotNull(command);
|
||||
final Item item = itemRegistry.getItem("TestItem7_2");
|
||||
waitForAssert(() -> assertNotNull(item.getCommandDescription()));
|
||||
|
||||
CommandDescription command = Objects.requireNonNull(item.getCommandDescription());
|
||||
List<CommandOption> opts = command.getCommandOptions();
|
||||
assertNotNull(opts);
|
||||
assertEquals(1, opts.size());
|
||||
@@ -310,7 +302,7 @@ public class ChannelCommandDescriptionProviderOSGiTest extends JavaOSGiTest {
|
||||
/*
|
||||
* Helper
|
||||
*/
|
||||
class TestDynamicCommandDescriptionProvider extends BaseDynamicCommandDescriptionProvider {
|
||||
static class TestDynamicCommandDescriptionProvider extends BaseDynamicCommandDescriptionProvider {
|
||||
final CommandDescription newCommand = CommandDescriptionBuilder.create()
|
||||
.withCommandOption(new CommandOption("NEW COMMAND", "My new command.")).build();
|
||||
|
||||
@@ -326,7 +318,7 @@ public class ChannelCommandDescriptionProviderOSGiTest extends JavaOSGiTest {
|
||||
}
|
||||
}
|
||||
|
||||
class MalfunctioningDynamicCommandDescriptionProvider extends BaseDynamicCommandDescriptionProvider {
|
||||
static class MalfunctioningDynamicCommandDescriptionProvider extends BaseDynamicCommandDescriptionProvider {
|
||||
@Override
|
||||
public @Nullable CommandDescription getCommandDescription(Channel channel,
|
||||
@Nullable CommandDescription originalCommandDescription, @Nullable Locale locale) {
|
||||
@@ -362,7 +354,7 @@ public class ChannelCommandDescriptionProviderOSGiTest extends JavaOSGiTest {
|
||||
}
|
||||
}
|
||||
|
||||
class TestItemProvider implements ItemProvider {
|
||||
static class TestItemProvider implements ItemProvider {
|
||||
private final Collection<Item> items;
|
||||
|
||||
TestItemProvider(Collection<Item> items) {
|
||||
@@ -383,7 +375,7 @@ public class ChannelCommandDescriptionProviderOSGiTest extends JavaOSGiTest {
|
||||
}
|
||||
}
|
||||
|
||||
private abstract class AbstractThingHandler extends BaseThingHandler {
|
||||
private abstract static class AbstractThingHandler extends BaseThingHandler {
|
||||
public AbstractThingHandler(Thing thing) {
|
||||
super(thing);
|
||||
}
|
||||
|
||||
+100
-5
@@ -14,15 +14,18 @@ package org.openhab.core.thing.internal;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
@@ -36,7 +39,13 @@ import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.openhab.core.common.registry.RegistryChangeListener;
|
||||
import org.openhab.core.events.Event;
|
||||
import org.openhab.core.events.EventFilter;
|
||||
import org.openhab.core.events.EventSubscriber;
|
||||
import org.openhab.core.items.Item;
|
||||
import org.openhab.core.items.ManagedItemProvider;
|
||||
import org.openhab.core.items.events.AbstractItemRegistryEvent;
|
||||
import org.openhab.core.items.events.ItemRemovedEvent;
|
||||
import org.openhab.core.library.CoreItemFactory;
|
||||
import org.openhab.core.library.items.NumberItem;
|
||||
import org.openhab.core.test.java.JavaOSGiTest;
|
||||
@@ -53,15 +62,23 @@ import org.openhab.core.thing.binding.BaseThingHandler;
|
||||
import org.openhab.core.thing.binding.ThingHandlerFactory;
|
||||
import org.openhab.core.thing.binding.builder.ChannelBuilder;
|
||||
import org.openhab.core.thing.binding.builder.ThingBuilder;
|
||||
import org.openhab.core.thing.events.AbstractThingRegistryEvent;
|
||||
import org.openhab.core.thing.events.ThingRemovedEvent;
|
||||
import org.openhab.core.thing.link.AbstractLink;
|
||||
import org.openhab.core.thing.link.ItemChannelLink;
|
||||
import org.openhab.core.thing.link.ItemChannelLinkRegistry;
|
||||
import org.openhab.core.thing.link.ManagedItemChannelLinkProvider;
|
||||
import org.openhab.core.thing.link.dto.ItemChannelLinkDTO;
|
||||
import org.openhab.core.thing.link.events.AbstractItemChannelLinkRegistryEvent;
|
||||
import org.openhab.core.thing.link.events.ItemChannelLinkRemovedEvent;
|
||||
import org.openhab.core.thing.type.ChannelKind;
|
||||
import org.openhab.core.thing.type.ChannelTypeUID;
|
||||
import org.openhab.core.thing.util.ThingHandlerHelper;
|
||||
import org.openhab.core.types.Command;
|
||||
import org.openhab.core.util.BundleResolver;
|
||||
import org.osgi.framework.Bundle;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* Tests {@link ChannelLinkNotifier}.
|
||||
@@ -76,6 +93,8 @@ public class ChannelLinkNotifierOSGiTest extends JavaOSGiTest {
|
||||
private static final ChannelTypeUID CHANNEL_TYPE_UID = new ChannelTypeUID("binding:channelType");
|
||||
private static final int CHANNEL_COUNT = 5;
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(ChannelLinkNotifierOSGiTest.class);
|
||||
|
||||
private int thingCount;
|
||||
|
||||
private @NonNullByDefault({}) ItemChannelLinkRegistry itemChannelLinkRegistry;
|
||||
@@ -178,12 +197,59 @@ public class ChannelLinkNotifierOSGiTest extends JavaOSGiTest {
|
||||
|
||||
@AfterEach
|
||||
public void afterEach() throws Exception {
|
||||
Set<String> itemChannelLinkUIDsToRemove = managedItemChannelLinkProvider.getAll().stream()
|
||||
.map(ItemChannelLink::getUID).collect(Collectors.toSet());
|
||||
Set<String> itemNamesToRemove = managedItemProvider.getAll().stream().map(Item::getName)
|
||||
.collect(Collectors.toSet());
|
||||
Set<String> thingUIDsToRemove = managedThingProvider.getAll().stream().map(Thing::getUID)
|
||||
.map(ThingUID::toString).collect(Collectors.toSet());
|
||||
|
||||
Set<String> removedItemNames = new HashSet<>();
|
||||
Set<String> removedItemChannelLinkUIDs = new HashSet<>();
|
||||
Set<String> removedThingUIDs = new HashSet<>();
|
||||
|
||||
EventSubscriber itemEventSubscriber = new EventSubscriber() {
|
||||
@Override
|
||||
public void receive(Event event) {
|
||||
logger.debug("Received event: {}", event);
|
||||
if (event instanceof AbstractItemChannelLinkRegistryEvent) {
|
||||
ItemChannelLinkDTO link = ((AbstractItemChannelLinkRegistryEvent) event).getLink();
|
||||
removedItemChannelLinkUIDs
|
||||
.add(AbstractLink.getIDFor(link.itemName, new ChannelUID(link.channelUID)));
|
||||
} else if (event instanceof AbstractItemRegistryEvent) {
|
||||
removedItemNames.add(((AbstractItemRegistryEvent) event).getItem().name);
|
||||
} else if (event instanceof AbstractThingRegistryEvent) {
|
||||
removedThingUIDs.add(((AbstractThingRegistryEvent) event).getThing().UID);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getSubscribedEventTypes() {
|
||||
return Set.of(ItemChannelLinkRemovedEvent.TYPE, ItemRemovedEvent.TYPE, ThingRemovedEvent.TYPE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable EventFilter getEventFilter() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
registerService(itemEventSubscriber);
|
||||
Thread.sleep(300);
|
||||
|
||||
managedItemChannelLinkProvider.getAll()
|
||||
.forEach(itemChannelLink -> managedItemChannelLinkProvider.remove(itemChannelLink.getUID()));
|
||||
managedItemProvider.getAll().forEach(item -> managedItemProvider.remove(item.getUID()));
|
||||
managedThingProvider.getAll().forEach(thing -> managedThingProvider.remove(thing.getUID()));
|
||||
|
||||
thingCount = 0;
|
||||
// wait for the resulting events to be handled so they do not cause the next test to fail
|
||||
waitForAssert(() -> {
|
||||
assertTrue(removedItemChannelLinkUIDs.containsAll(itemChannelLinkUIDsToRemove));
|
||||
assertTrue(removedItemNames.containsAll(itemNamesToRemove));
|
||||
assertTrue(removedThingUIDs.containsAll(thingUIDsToRemove));
|
||||
});
|
||||
|
||||
unregisterService(itemEventSubscriber);
|
||||
}
|
||||
|
||||
private Thing addThing(@Nullable ThingStatus thingStatus) {
|
||||
@@ -232,11 +298,38 @@ public class ChannelLinkNotifierOSGiTest extends JavaOSGiTest {
|
||||
}
|
||||
|
||||
private void addItemsAndLinks(Thing thing, String itemSuffix) {
|
||||
Set<String> linkUIDsToAdd = new HashSet<>();
|
||||
Set<String> addedLinkUIDs = new HashSet<>();
|
||||
|
||||
RegistryChangeListener<ItemChannelLink> changeListener = new RegistryChangeListener<>() {
|
||||
@Override
|
||||
public void added(ItemChannelLink element) {
|
||||
addedLinkUIDs.add(element.getUID());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updated(ItemChannelLink oldElement, ItemChannelLink element) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removed(ItemChannelLink element) {
|
||||
}
|
||||
};
|
||||
|
||||
itemChannelLinkRegistry.addRegistryChangeListener(changeListener);
|
||||
|
||||
forEachThingChannelUID(thing, channelUID -> {
|
||||
String itemName = getItemName(thing, channelUID, itemSuffix);
|
||||
managedItemProvider.add(new NumberItem(itemName));
|
||||
managedItemChannelLinkProvider.add(new ItemChannelLink(itemName, channelUID));
|
||||
ItemChannelLink itemChannelLink = new ItemChannelLink(itemName, channelUID);
|
||||
managedItemChannelLinkProvider.add(itemChannelLink);
|
||||
linkUIDsToAdd.add(itemChannelLink.getUID());
|
||||
});
|
||||
|
||||
// wait for the resulting events to be handled so they do not cause further assertions fail
|
||||
waitForAssert(() -> assertTrue(addedLinkUIDs.containsAll(linkUIDsToAdd)));
|
||||
|
||||
itemChannelLinkRegistry.removeRegistryChangeListener(changeListener);
|
||||
}
|
||||
|
||||
private void removeItemsAndLinks(Thing thing, String itemSuffix) {
|
||||
@@ -270,9 +363,11 @@ public class ChannelLinkNotifierOSGiTest extends JavaOSGiTest {
|
||||
|
||||
private void assertAllChannelsLinkedBasedOnEvents(Thing thing, int eventCount) {
|
||||
TestHandler handler = getHandler(thing);
|
||||
forEachThingChannelUID(thing, channelUID -> {
|
||||
assertThat(handler.isLinkedBasedOnEvent(channelUID), is(true));
|
||||
assertThat(handler.getChannelLinkEvents(channelUID).size(), is(eventCount));
|
||||
waitForAssert(() -> {
|
||||
forEachThingChannelUID(thing, channelUID -> {
|
||||
assertThat(handler.isLinkedBasedOnEvent(channelUID), is(true));
|
||||
assertThat(handler.getChannelLinkEvents(channelUID).size(), is(eventCount));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+15
-22
@@ -21,6 +21,7 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
@@ -237,13 +238,8 @@ public class ChannelStateDescriptionProviderOSGiTest extends JavaOSGiTest {
|
||||
|
||||
registerService(new TestDynamicStateDescriptionProvider(), DynamicStateDescriptionProvider.class.getName());
|
||||
|
||||
Thing thing = thingRegistry.createThingOfType(new ThingTypeUID("hue:lamp"), new ThingUID("hue:lamp:lamp1"),
|
||||
null, "test thing", new Configuration());
|
||||
|
||||
assertNotNull(thing);
|
||||
if (thing == null) {
|
||||
throw new IllegalStateException("thing is null");
|
||||
}
|
||||
Thing thing = Objects.requireNonNull(thingRegistry.createThingOfType(new ThingTypeUID("hue:lamp"),
|
||||
new ThingUID("hue:lamp:lamp1"), null, "test thing", new Configuration()));
|
||||
|
||||
managedThingProvider.add(thing);
|
||||
ItemChannelLink link = new ItemChannelLink("TestItem", getChannel(thing, "1").getUID());
|
||||
@@ -269,9 +265,10 @@ public class ChannelStateDescriptionProviderOSGiTest extends JavaOSGiTest {
|
||||
Item item = itemRegistry.getItem("TestItem");
|
||||
assertEquals(CoreItemFactory.NUMBER, item.getType());
|
||||
|
||||
StateDescription state = item.getStateDescription();
|
||||
assertNotNull(state);
|
||||
final Item finalItem = item;
|
||||
waitForAssert(() -> assertNotNull(finalItem.getStateDescription()));
|
||||
|
||||
StateDescription state = Objects.requireNonNull(item.getStateDescription());
|
||||
assertEquals(BigDecimal.ZERO, state.getMinimum());
|
||||
assertEquals(BigDecimal.valueOf(100), state.getMaximum());
|
||||
assertEquals(BigDecimal.TEN, state.getStep());
|
||||
@@ -384,13 +381,8 @@ public class ChannelStateDescriptionProviderOSGiTest extends JavaOSGiTest {
|
||||
DynamicStateDescriptionProvider.class.getName());
|
||||
registerService(new TestDynamicStateDescriptionProvider(), DynamicStateDescriptionProvider.class.getName());
|
||||
|
||||
Thing thing = thingRegistry.createThingOfType(new ThingTypeUID("hue:lamp"), new ThingUID("hue:lamp:lamp1"),
|
||||
null, "test thing", new Configuration());
|
||||
|
||||
assertNotNull(thing);
|
||||
if (thing == null) {
|
||||
throw new IllegalStateException("thing is null");
|
||||
}
|
||||
Thing thing = Objects.requireNonNull(thingRegistry.createThingOfType(new ThingTypeUID("hue:lamp"),
|
||||
new ThingUID("hue:lamp:lamp1"), null, "test thing", new Configuration()));
|
||||
|
||||
managedThingProvider.add(thing);
|
||||
ItemChannelLink link = new ItemChannelLink("TestItem7_2", getChannel(thing, "7_2").getUID());
|
||||
@@ -401,9 +393,10 @@ public class ChannelStateDescriptionProviderOSGiTest extends JavaOSGiTest {
|
||||
|
||||
Item item = itemRegistry.getItem("TestItem7_2");
|
||||
|
||||
StateDescription state = item.getStateDescription();
|
||||
assertNotNull(state);
|
||||
final Item finalItem = item;
|
||||
waitForAssert(() -> assertNotNull(finalItem.getStateDescription()));
|
||||
|
||||
StateDescription state = Objects.requireNonNull(item.getStateDescription());
|
||||
assertEquals(BigDecimal.valueOf(1), state.getMinimum());
|
||||
assertEquals(BigDecimal.valueOf(101), state.getMaximum());
|
||||
assertEquals(BigDecimal.valueOf(20), state.getStep());
|
||||
@@ -421,7 +414,7 @@ public class ChannelStateDescriptionProviderOSGiTest extends JavaOSGiTest {
|
||||
/*
|
||||
* Helper
|
||||
*/
|
||||
class TestDynamicStateDescriptionProvider extends BaseDynamicStateDescriptionProvider {
|
||||
static class TestDynamicStateDescriptionProvider extends BaseDynamicStateDescriptionProvider {
|
||||
final @Nullable StateDescription newState = StateDescriptionFragmentBuilder.create()
|
||||
.withMinimum(BigDecimal.valueOf(10)).withMaximum(BigDecimal.valueOf(100))
|
||||
.withStep(BigDecimal.valueOf(5)).withPattern("VALUE %d").withReadOnly(false)
|
||||
@@ -450,7 +443,7 @@ public class ChannelStateDescriptionProviderOSGiTest extends JavaOSGiTest {
|
||||
}
|
||||
}
|
||||
|
||||
class TestMalfunctioningDynamicStateDescriptionProvider extends BaseDynamicStateDescriptionProvider {
|
||||
static class TestMalfunctioningDynamicStateDescriptionProvider extends BaseDynamicStateDescriptionProvider {
|
||||
@Override
|
||||
public @Nullable StateDescription getStateDescription(Channel channel, @Nullable StateDescription original,
|
||||
@Nullable Locale locale) {
|
||||
@@ -486,7 +479,7 @@ public class ChannelStateDescriptionProviderOSGiTest extends JavaOSGiTest {
|
||||
}
|
||||
}
|
||||
|
||||
class TestItemProvider implements ItemProvider {
|
||||
static class TestItemProvider implements ItemProvider {
|
||||
private final Collection<Item> items;
|
||||
|
||||
TestItemProvider(Collection<Item> items) {
|
||||
@@ -507,7 +500,7 @@ public class ChannelStateDescriptionProviderOSGiTest extends JavaOSGiTest {
|
||||
}
|
||||
}
|
||||
|
||||
private abstract class AbstractThingHandler extends BaseThingHandler {
|
||||
private abstract static class AbstractThingHandler extends BaseThingHandler {
|
||||
public AbstractThingHandler(Thing thing) {
|
||||
super(thing);
|
||||
}
|
||||
|
||||
+8
-7
@@ -804,6 +804,7 @@ public class ThingManagerOSGiTest extends JavaOSGiTest {
|
||||
String itemName = "name";
|
||||
managedThingProvider.add(thing);
|
||||
managedItemChannelLinkProvider.add(new ItemChannelLink(itemName, CHANNEL_UID));
|
||||
waitForAssert(() -> assertThat(itemChannelLinkRegistry.getLinks(itemName).size(), is(1)));
|
||||
|
||||
registerService(thingHandlerFactory);
|
||||
Item item = new StringItem(itemName);
|
||||
@@ -870,12 +871,12 @@ public class ThingManagerOSGiTest extends JavaOSGiTest {
|
||||
|
||||
managedThingProvider.add(thing);
|
||||
managedItemChannelLinkProvider.add(new ItemChannelLink(itemName, CHANNEL_UID));
|
||||
waitForAssert(() -> assertThat(itemChannelLinkRegistry.getLinks(itemName).size(), is(1)));
|
||||
|
||||
state.callback.statusUpdated(thing, ThingStatusInfoBuilder.create(ThingStatus.ONLINE).build());
|
||||
|
||||
final List<Event> receivedEvents = new ArrayList<>();
|
||||
|
||||
@NonNullByDefault
|
||||
EventSubscriber itemUpdateEventSubscriber = new EventSubscriber() {
|
||||
@Override
|
||||
public void receive(Event event) {
|
||||
@@ -990,7 +991,7 @@ public class ThingManagerOSGiTest extends JavaOSGiTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void thingManagerIgnoresRestoringOfThingStatusFromRemoving() {
|
||||
public void thingManagerIgnoresRestoringOfThingStatusFromRemoving() throws Exception {
|
||||
class ThingHandlerState {
|
||||
@Nullable
|
||||
ThingHandlerCallback callback;
|
||||
@@ -1028,7 +1029,8 @@ public class ThingManagerOSGiTest extends JavaOSGiTest {
|
||||
|
||||
assertThat(thing.getStatusInfo(), is(removingNone));
|
||||
|
||||
// handleRemoval is called when thing is fully initialized and shall be removed
|
||||
// handleRemoval is called asynchronously when thing is fully initialized and shall be removed
|
||||
Thread.sleep(500);
|
||||
verify(thingHandler).handleRemoval();
|
||||
}
|
||||
|
||||
@@ -1125,6 +1127,7 @@ public class ThingManagerOSGiTest extends JavaOSGiTest {
|
||||
|
||||
managedThingProvider.add(thing);
|
||||
managedItemChannelLinkProvider.add(new ItemChannelLink(itemName, CHANNEL_UID));
|
||||
waitForAssert(() -> assertThat(itemChannelLinkRegistry.getLinks(itemName).size(), is(1)));
|
||||
|
||||
class ThingHandlerState {
|
||||
@Nullable
|
||||
@@ -1218,7 +1221,6 @@ public class ThingManagerOSGiTest extends JavaOSGiTest {
|
||||
|
||||
final List<Event> receivedEvents = new ArrayList<>();
|
||||
|
||||
@NonNullByDefault
|
||||
EventSubscriber thingStatusEventSubscriber = new EventSubscriber() {
|
||||
@Override
|
||||
public Set<String> getSubscribedEventTypes() {
|
||||
@@ -1315,7 +1317,6 @@ public class ThingManagerOSGiTest extends JavaOSGiTest {
|
||||
|
||||
final List<ThingStatusInfoChangedEvent> infoChangedEvents = new ArrayList<>();
|
||||
|
||||
@NonNullByDefault
|
||||
EventSubscriber thingStatusEventSubscriber = new EventSubscriber() {
|
||||
@Override
|
||||
public Set<String> getSubscribedEventTypes() {
|
||||
@@ -1398,7 +1399,7 @@ public class ThingManagerOSGiTest extends JavaOSGiTest {
|
||||
thingStatusInfoI18nLocalizationService.setBundleResolver(bundleResolver);
|
||||
|
||||
final List<ThingStatusInfoEvent> infoEvents = new ArrayList<>();
|
||||
@NonNullByDefault
|
||||
|
||||
EventSubscriber thingStatusInfoEventSubscriber = new EventSubscriber() {
|
||||
@Override
|
||||
public Set<String> getSubscribedEventTypes() {
|
||||
@@ -1418,7 +1419,7 @@ public class ThingManagerOSGiTest extends JavaOSGiTest {
|
||||
registerService(thingStatusInfoEventSubscriber);
|
||||
|
||||
final List<ThingStatusInfoChangedEvent> infoChangedEvents = new ArrayList<>();
|
||||
@NonNullByDefault
|
||||
|
||||
EventSubscriber thingStatusInfoChangedEventSubscriber = new EventSubscriber() {
|
||||
@Override
|
||||
public Set<String> getSubscribedEventTypes() {
|
||||
|
||||
+4
-11
@@ -159,8 +159,7 @@ public class VoiceManagerImplTest extends JavaOSGiTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void interpretSomethingWhenTheDefaultHliIsSetAndItIsARegisteredService()
|
||||
throws IOException, InterpretationException {
|
||||
public void interpretSomethingWhenTheDefaultHliIsSetAndItIsARegisteredService() throws Exception {
|
||||
hliStub = new HumanLanguageInterpreterStub();
|
||||
registerService(hliStub);
|
||||
|
||||
@@ -171,10 +170,7 @@ public class VoiceManagerImplTest extends JavaOSGiTest {
|
||||
configuration.update(voiceConfig);
|
||||
|
||||
// Wait some time to be sure that the configuration will be updated
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
Thread.sleep(2000);
|
||||
|
||||
String result = voiceManager.interpret("something", null);
|
||||
assertThat(result, is("Interpreted text"));
|
||||
@@ -368,7 +364,7 @@ public class VoiceManagerImplTest extends JavaOSGiTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void startDialogWithoutPassingAnyParameters() throws IOException, InterruptedException {
|
||||
public void startDialogWithoutPassingAnyParameters() throws Exception {
|
||||
sttService = new STTServiceStub();
|
||||
ksService = new KSServiceStub();
|
||||
hliStub = new HumanLanguageInterpreterStub();
|
||||
@@ -390,10 +386,7 @@ public class VoiceManagerImplTest extends JavaOSGiTest {
|
||||
configuration.update(config);
|
||||
|
||||
// Wait some time to be sure that the configuration will be updated
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
Thread.sleep(2000);
|
||||
|
||||
voiceManager.startDialog();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user