openhab-addons icon indicating copy to clipboard operation
openhab-addons copied to clipboard

[wemo] WemoHandlerOSGiTest unstable

Open wborn opened this issue 2 years ago • 17 comments

This test failed in: https://github.com/openhab/openhab-addons/runs/5533265679

TEST org.openhab.binding.wemo.internal.handler.test.WemoHandlerOSGiTest#assertThatThingHandlesOnOffCommandCorrectly() <<< ERROR: 
Expected: is <UNKNOWN>
     but: was <OFFLINE>
java.lang.AssertionError: 
Expected: is <UNKNOWN>
     but: was <OFFLINE>
	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:6)
	at org.openhab.binding.wemo.internal.handler.test.WemoHandlerOSGiTest.lambda$0(WemoHandlerOSGiTest.java:78)
	at org.openhab.core.test.java.JavaTest.waitForAssert(JavaTest.java:152)
	at org.openhab.core.test.java.JavaTest.waitForAssert(JavaTest.java:120)
	at org.openhab.core.test.java.JavaTest.waitForAssert(JavaTest.java:73)
	at org.openhab.binding.wemo.internal.handler.test.WemoHandlerOSGiTest.assertThatThingHandlesOnOffCommandCorrectly(WemoHandlerOSGiTest.java:77)

wborn avatar Mar 14 '22 08:03 wborn

@wborn, @hmerk - this might be fixed by #12461. While refactoring handlers to have own initialize() methods I noticed that a polling job was being scheduled in initialize() to start immediately, and after that status was being set to UNKNOWN before leaving initialize(). Since the job would run asynchronously, it could be setting the status at the same time as initialize() itself when the job would start really fast. I changed this so initialize() will set status UNKNOWN before starting the job.

jlaur avatar Mar 14 '22 13:03 jlaur

That might indeed explain it! I've linked the issue to the PR so it will be closed when it is merged. If it still occurs after that we can reopen it again.

wborn avatar Mar 14 '22 14:03 wborn

This is still an issue, see: https://github.com/openhab/openhab-addons/runs/7269653198

wborn avatar Jul 10 '22 10:07 wborn

Still unstable, see: https://github.com/openhab/openhab-addons/actions/runs/3129621749/jobs/5078939913

TEST org.openhab.binding.wemo.internal.handler.test.WemoHandlerOSGiTest#assertThatThingHandlesREFRESHCommandCorrectly() <<< ERROR: 
Expected: is <OFFLINE>
     but: was <UNKNOWN>
java.lang.AssertionError: 
Expected: is <OFFLINE>
     but: was <UNKNOWN>
	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:6)
	at org.openhab.binding.wemo.internal.handler.test.WemoHandlerOSGiTest.lambda$1(WemoHandlerOSGiTest.java:114)
	at org.openhab.core.test.java.JavaTest.waitForAssert(JavaTest.java:245)
	at org.openhab.core.test.java.JavaTest.waitForAssert(JavaTest.java:213)
	at org.openhab.core.test.java.JavaTest.waitForAssert(JavaTest.java:166)
	at org.openhab.binding.wemo.internal.handler.test.WemoHandlerOSGiTest.assertThatThingHandlesREFRESHCommandCorrectly(WemoHandlerOSGiTest.java:113)

wborn avatar Oct 09 '22 10:10 wborn

Today it caused this build to fail: https://ci.openhab.org/job/PR-openHAB-Addons/17297/

TEST org.openhab.binding.wemo.internal.handler.test.WemoHandlerOSGiTest#assertThatThingHandlesOnOffCommandCorrectly() <<< ERROR: 
Expected: is <UNKNOWN>
     but: was <OFFLINE>
java.lang.AssertionError: 
Expected: is <UNKNOWN>
     but: was <OFFLINE>
	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:6)
	at org.openhab.binding.wemo.internal.handler.test.WemoHandlerOSGiTest.lambda$0(WemoHandlerOSGiTest.java:78)
	at org.openhab.core.test.java.JavaTest.waitForAssert(JavaTest.java:245)
	at org.openhab.core.test.java.JavaTest.waitForAssert(JavaTest.java:213)
	at org.openhab.core.test.java.JavaTest.waitForAssert(JavaTest.java:166)
	at org.openhab.binding.wemo.internal.handler.test.WemoHandlerOSGiTest.assertThatThingHandlesOnOffCommandCorrectly(WemoHandlerOSGiTest.java:77)

wborn avatar Oct 02 '23 21:10 wborn

And today https://github.com/openhab/openhab-addons/actions/runs/6492582809/job/17631797376:

TEST org.openhab.binding.wemo.internal.handler.test.WemoHandlerOSGiTest#assertThatThingHandlesREFRESHCommandCorrectly() <<< ERROR: 
Expected: is <UNKNOWN>
     but: was <OFFLINE>
java.lang.AssertionError: 
Expected: is <UNKNOWN>
     but: was <OFFLINE>
	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:6)
	at org.openhab.binding.wemo.internal.handler.test.WemoHandlerOSGiTest.lambda$1(WemoHandlerOSGiTest.java:114)
	at org.openhab.core.test.java.JavaTest.waitForAssert(JavaTest.java:245)
	at org.openhab.core.test.java.JavaTest.waitForAssert(JavaTest.java:213)
	at org.openhab.core.test.java.JavaTest.waitForAssert(JavaTest.java:166)
	at org.openhab.binding.wemo.internal.handler.test.WemoHandlerOSGiTest.assertThatThingHandlesREFRESHCommandCorrectly(WemoHandlerOSGiTest.java:113)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at aQute.tester.bundle.engine.BundleDescriptor.executeChild(BundleDescriptor.java:49)
	at aQute.tester.bundle.engine.BundleEngine.lambda$executeBundle$7(BundleEngine.java:120)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
	at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
	at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
	at aQute.tester.bundle.engine.BundleEngine.executeBundle(BundleEngine.java:120)
	at aQute.tester.bundle.engine.BundleEngine.lambda$executeBundle$8(BundleEngine.java:133)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
	at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
	at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
	at aQute.tester.bundle.engine.BundleEngine.executeBundle(BundleEngine.java:133)
	at aQute.tester.bundle.engine.BundleEngine.lambda$execute$5(BundleEngine.java:100)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
	at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
	at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
	at aQute.tester.bundle.engine.BundleEngine.execute(BundleEngine.java:100)

jlaur avatar Oct 12 '23 10:10 jlaur