Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 4917200
Votes 0
Synopsis REGRESSION: 5 sound regression tests fail on Windows
Category java:classes_sound
Reported Against tiger
Release Fixed 1.5(tiger-b24)
State 10-Fix Delivered, Verified, bug
Priority: 3-Medium
Related Bugs 4772475 , 4839930 , 4936397
Submit Date 04-SEP-2003
Description
5 sound regression tests fail on Windows




Filed By       : J2SE-SQA [j2se-tck- xxxxx@xxxxx ]
JDK            : JDK1.5.0-b17, JDK1.5.0-b16 (passes using JDK1.5.0-b14, JDK1.4.2-b28)
Testbase       : Regression-test
Platform[s]    : Windows
switch/Mode    : default
Falling test[s]: 
        javax/sound/sampled/Controls/ReverbControl/SimpleMidiPlayer.java 
        javax/sound/midi/Sequencer/TickLength.java
        javax/sound/midi/Soundbanks/ExtraCharInSoundbank.java
        javax/sound/sampled/Clip/Duration/ClipDuration.java
	javax/sound/midi/Sequencer/MidiCrash.java 
	
These tests fail on Windows platforms only if a sound device is not available. 
But there are multimedia drivers which are installed in Windows by default 
(for example: Audio Codec, Legacy Audio Drivers, Media Control Devices)
Therefore the method "public static boolean isSoundcardInstalled()" works incorrect in these tests. 

Test source location:
=====================
/java/re/jdk/1.5.0/promoted/latest/ws/j2se/test/javax/sound/sampled/Controls/ReverbControl/SimpleMidiPlayer.java
/java/re/jdk/1.5.0/promoted/latest/ws/j2se/test/javax/sound/midi/Sequencer/TickLength.java
/java/re/jdk/1.5.0/promoted/latest/ws/j2se/test/javax/sound/midi/Soundbanks/ExtraCharInSoundbank.java
/java/re/jdk/1.5.0/promoted/latest/ws/j2se/test/javax/sound/sampled/Clip/Duration/ClipDuration.java
/java/re/jdk/1.5.0/promoted/latest/ws/j2se/test/javax/sound/midi/Sequencer/MidiCrash.java

jtr file location:
==================
/net/jtgb4u4c.sfbay/export/sail15/results.2/tiger/b17/regtest/win32/winXP_linux-16/workDir/test/javax/sound/sampled/Controls/ReverbControl/SimpleMidiPlayer.jtr
/net/jtgb4u4c.sfbay/export/sail15/results.2/tiger/b17/regtest/win32/winXP_linux-16/workDir/test/javax/sound/midi/Sequencer/TickLength.jtr
/net/jtgb4u4c.sfbay/export/sail15/results.2/tiger/b17/regtest/win32/winXP_linux-16/workDir/test/javax/sound/midi/Soundbanks/ExtraCharInSoundbank.jtr
/net/jtgb4u4c.sfbay/export/sail15/results.2/tiger/b17/regtest/win32/winXP_linux-16/workDir/test/javax/sound/sampled/Clip/Duration/ClipDuration.jtr
/net/jtgb4u4c.sfbay/export/sail15/results.2/tiger/b17/regtest/win32/winXP_linux-16/workDir/test/javax/sound/midi/Sequencer/MidiCrash.jtr

How to reproduce:
=================
Run the following script (you may need to change its variables)
 
--- script start ---
#!/bin/sh
RESULT_DIR=`pwd`
WORK_DIR=$RESULT_DIR/workDir/test
REPORT_DIR=$RESULT_DIR/reportDir
JT_HOME="h:/java/jct"
JAVA_HOME="h:/java/jdk1.5.0/win32"
TEST_BASE_PATH="h:/java/regtest.tiger/test"
CLASSPATH="$JT_HOME/classes;$JT_HOME/lib/javatest.jar;$JT_HOME/lib/jtreg.jar"

TEST="javax/sound/sampled/Controls/ReverbControl/SimpleMidiPlayer.java"
#TEST="javax/sound/midi/Sequencer/TickLength.java"
#TEST="javax/sound/midi/Soundbanks/ExtraCharInSoundbank.java"

mkdir -p $WORK_DIR/scratch 2>&1
mkdir -p $WORK_DIR/jtData 2>&1
mkdir -p $REPORT_DIR 2>&1

#rm $WORK_DIR/jtData/ResultCache.jtw 2>&1

cd $WORK_DIR/scratch

$JAVA_HOME/bin/java -server -cp $CLASSPATH -DenvVars=TESTJAVAHOME=$JAVA_HOME,TESTVMOPTS=$TESTVMOPTS,DISPLAY=:0,windir=$windir,SystemRoot=$SystemRoot,PATH=${SHELL%/*},CPAPPEND=$JT_HOME/jemmy/jemmy.jar,TZ=,LC_ALL=en_US,LC_CTYPE=en_US,LANG=en_US,LPDEST= -DDISPLAY=:0 -DlocalHost="linux-16" -Dprogram=jtreg com.sun.javatest.regtest.Main -a -v default -batch -params -w "$WORK_DIR" -r "$REPORT_DIR" -t "$TEST_BASE_PATH" "$TEST_BASE_PATH/$TEST"

--- script end ---

Script output:
==============

Test output (jtr part):
=======================
----------System.out:(0/0)----------
----------System.err:(14/952)----------
javax.sound.midi.MidiUnavailableException: no audio device available for Java Sound Audio Engine
	at com.sun.media.sound.AbstractPlayer.open(AbstractPlayer.java:139)
	at SimpleMidiPlayer.main(SimpleMidiPlayer.java:161)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:324)
	at com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:82)
	at java.lang.Thread.run(Thread.java:549)

JavaTest Message: Test threw exception: javax.sound.midi.MidiUnavailableException: no audio device available for Java Sound Audio Engine
JavaTest Message: shutting down test

STATUS:Failed.`main' threw exception: javax.sound.midi.MidiUnavailableException: no audio device available for Java Sound Audio Engine
result: Failed. Execution failed: `main' threw exception: javax.sound.midi.MidiUnavailableException: no audio device available for Java Sound Audio Engine


test result: Failed. Execution failed: `main' threw exception: javax.sound.midi.MidiUnavailableException: no audio device available for Java Sound Audio Engine


Specific machine info:
======================
Hostname: linux-16
OS: Windows XP Pro
Hostname: linux-18
OS: Windows 98
Hostname: linux-19
OS: Windows 2003

======================================================================
Work Around
N/A
Evaluation
 xxxxx@xxxxx  2003-09-26
	Easy fix of the reg tests only.


 xxxxx@xxxxx  2003-10-12
	On Windows, the function isSoundCardInstalled still reports devices, even if no devices are installed, due to bug 4936397. The "other" devices, like codecs, should not appear in Java Sound's list of mixers.

	Since the implementation should now always return 0 mixers if no sound hardware is installed, the implementation of isSoundCardInstalled can be made much simpler, by e.g. calling AudioSystem.getTargetDataLine.
Comments
  
  Include a link with my name & email   


PLEASE NOTE: JDK6 is formerly known as Project Mustang