On Sat, 15 Oct 2022 13:03:26 GMT, Andrey Turbanov <[email protected]> wrote:

> Test failed on Ubuntu, because both implementations of `MixerProvider` have 
> no devices:
> 1. com.sun.media.sound.DirectAudioDeviceProvider#nGetNumDevices returns `0`
>  ![DirectAudioDeviceProvider 
> init](https://user-images.githubusercontent.com/741251/195988216-aa86da0f-739b-433f-87e2-86c2d6904a0d.png)
> 2. com.sun.media.sound.PortMixerProvider#nGetNumDevices returns `0`
>  ![PortMixerProvider 
> init](https://user-images.githubusercontent.com/741251/195988239-59678e0c-be7b-43ff-b02a-9abb2392e8f9.png)
> 
> 
> It leads to `javax.sound.sampled.spi.MixerProvider#getMixerInfo` returns 
> empty array.
> ![AudioSystem 
> getMixedInfoList](https://user-images.githubusercontent.com/741251/195988266-1656e6d3-de4a-4e53-a613-415f60075726.png)
> 
> And DataPusher thread is not created, because of AudioSystem.isLineSupported 
> returns false in the method 
> `com.sun.media.sound.JavaSoundAudioClip#createSourceDataLine`.
> I propose to perform the same check in test code and skip it.

So I have no real objection to this check because it will solve something - 
more on that at the end.
1) On my Ubuntu 22.04 system it passes this new condition you added - ie the 
device is present.
2) This test has been failing only very intermittently, which points to the 
failure mode in the test being that the DataPusher thread is created but is 
terminated before it can be observed.

Where I've seen the device not present is when running on some VM configs where 
there is no audio support - there the test will fail every time.
For that I think your check should cure the 100% failure, but will do nothing 
about the 1% (or less) failure.

That said .. the test doesn't call clip.stop() until after the verification, so 
perhaps there's something else going on.

-------------

PR: https://git.openjdk.org/jdk/pull/10717

Reply via email to