8049694: Migrate functional AWT_DesktopProperties/Automated tests to OpenJDK
Reviewed-by: azvegint, serb
This commit is contained in:
parent
b25600bdbe
commit
29f1de0411
jdk/test/java/awt/Toolkit/DesktopProperties
238
jdk/test/java/awt/Toolkit/DesktopProperties/rfe4758438.java
Normal file
238
jdk/test/java/awt/Toolkit/DesktopProperties/rfe4758438.java
Normal file
@ -0,0 +1,238 @@
|
||||
/*
|
||||
* Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import java.awt.*;
|
||||
import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyChangeListener;
|
||||
import java.io.InputStream;
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 4758438
|
||||
* @summary Testcase to check the implementation of RFE 4758438
|
||||
* The RFE suggests that the GNOME desktop properties
|
||||
* should be made accessible through the
|
||||
* Toolkit.getDesktopProperty() API.
|
||||
* @author Girish R (girish.ramachandran@sun.com)
|
||||
* @author Dmitriy Ermashov (dmitriy.ermashov@oracle.com)
|
||||
* @run shell rfe4758438.sh
|
||||
*/
|
||||
|
||||
public class rfe4758438 implements PropertyChangeListener {
|
||||
|
||||
enum PROPS {
|
||||
drag_threshold(
|
||||
"org.gnome.settings-daemon.peripherals.mouse drag-threshold",
|
||||
"/desktop/gnome/peripherals/mouse/drag_threshold",
|
||||
"gnome.Net/DndDragThreshold",
|
||||
"int",
|
||||
new String[]{"5", "6"}),
|
||||
double_click(
|
||||
"org.gnome.settings-daemon.peripherals.mouse double-click",
|
||||
"/desktop/gnome/peripherals/mouse/double_click",
|
||||
"gnome.Net/DoubleClickTime",
|
||||
"int",
|
||||
new String[]{"200","300"}),
|
||||
cursor_blink(
|
||||
"org.gnome.desktop.interface cursor-blink",
|
||||
"/desktop/gnome/interface/cursor_blink",
|
||||
"gnome.Net/CursorBlink",
|
||||
"bool",
|
||||
new String[]{"true","false"}),
|
||||
cursor_blink_time(
|
||||
"org.gnome.desktop.interface cursor-blink-time",
|
||||
"/desktop/gnome/interface/cursor_blink_time",
|
||||
"gnome.Net/CursorBlinkTime",
|
||||
"int",
|
||||
new String[]{"1000","1500"}),
|
||||
gtk_theme(
|
||||
"org.gnome.desktop.interface gtk-theme",
|
||||
"/desktop/gnome/interface/gtk_theme",
|
||||
"gnome.Net/ThemeName",
|
||||
"string",
|
||||
new String[]{"Crux","Simple"});
|
||||
|
||||
public final String gsettings;
|
||||
public final String gconftool;
|
||||
public final String java;
|
||||
public final String type;
|
||||
public final String[] values;
|
||||
|
||||
PROPS(String gsettings, String gconftool, String java, String type, String[] values){
|
||||
this.gsettings = gsettings;
|
||||
this.gconftool = gconftool;
|
||||
this.java = java;
|
||||
this.type = type;
|
||||
this.values = values;
|
||||
}
|
||||
}
|
||||
|
||||
static boolean useGsettings;
|
||||
static String tool;
|
||||
Toolkit toolkit = Toolkit.getDefaultToolkit();
|
||||
String changedProperty;
|
||||
Object changedValue;
|
||||
Object lock = new Object();
|
||||
|
||||
/**
|
||||
* Implementation of PropertyChangeListener method
|
||||
*/
|
||||
public void propertyChange(PropertyChangeEvent event) {
|
||||
changedProperty = event.getPropertyName();
|
||||
changedValue = toolkit.getDesktopProperty(changedProperty);
|
||||
System.out.println("Property "+changedProperty+" changed. Changed value: "+changedValue);
|
||||
synchronized(lock) {
|
||||
try {
|
||||
lock.notifyAll();
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
useGsettings = System.getProperty("useGsettings").equals("true");
|
||||
tool = System.getProperty("tool");
|
||||
|
||||
String osName = System.getProperty("os.name");
|
||||
if (!"Linux".equals(osName) && !"SunOS".equals(osName))
|
||||
System.out.println("This test need not be run on this platform");
|
||||
else
|
||||
new rfe4758438().doTest();
|
||||
}
|
||||
|
||||
void doTest() throws Exception {
|
||||
for (PROPS p : PROPS.values())
|
||||
toolkit.addPropertyChangeListener(p.java, this);
|
||||
|
||||
for (PROPS p : PROPS.values()) {
|
||||
Thread.sleep(1000);
|
||||
doTest(p);
|
||||
}
|
||||
System.out.println("Test passed");
|
||||
}
|
||||
|
||||
/**
|
||||
* Do the test for each property. Find the current value
|
||||
* of the property, set the property to a value not equal
|
||||
* to the current value, check if the propertyChange event
|
||||
* is triggered. Reset the property to the actual value.
|
||||
*/
|
||||
void doTest(PROPS property) throws Exception {
|
||||
//Choose the test value which is not same as the current value
|
||||
Object obj = toolkit.getDesktopProperty(property.java);
|
||||
if (obj == null)
|
||||
throw new RuntimeException("No such property available: " + property.java);
|
||||
|
||||
//For boolean type values, getDesktopProperty method returns Integer objects
|
||||
if (property.type.equals("bool")) {
|
||||
if (obj.equals(new Integer(1))) {
|
||||
obj = new String("true");
|
||||
} else {
|
||||
obj = new String("false");
|
||||
}
|
||||
}
|
||||
Object value = property.values[0];
|
||||
if (obj.toString().equals(value)) {
|
||||
value = property.values[1];
|
||||
}
|
||||
|
||||
//Create the command to execute
|
||||
StringBuffer sb = new StringBuffer(tool);
|
||||
if (useGsettings) {
|
||||
sb.append(" set ");
|
||||
sb.append(property.gsettings);
|
||||
sb.append(" ");
|
||||
} else {
|
||||
sb.append(" --set --type=");
|
||||
sb.append(property.type);
|
||||
sb.append(" ");
|
||||
sb.append(property.gconftool);
|
||||
sb.append(" ");
|
||||
}
|
||||
String tempCommand = sb.toString();
|
||||
sb.append(value.toString());
|
||||
|
||||
//Initialize the variables and execute the command
|
||||
changedProperty = "";
|
||||
changedValue = null;
|
||||
if (executeCommand(sb.toString()) != 0)
|
||||
throw new RuntimeException("Could not execute the command");
|
||||
|
||||
synchronized(lock) {
|
||||
try {
|
||||
lock.wait(5000);
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
if (property.type.equals("bool")) {
|
||||
if (changedValue.equals(new Integer(1))) {
|
||||
changedValue = new String("true");
|
||||
} else {
|
||||
changedValue = new String("false");
|
||||
}
|
||||
}
|
||||
|
||||
//Check if the event got triggered
|
||||
if (!changedProperty.equals(property.java)) {
|
||||
//Reset the property
|
||||
executeCommand(tempCommand + obj.toString());
|
||||
throw new RuntimeException("PropertyChangedEvent did not occur for " + property.java);
|
||||
} else if (!changedValue.toString().equals(value.toString())) {
|
||||
//Reset the property
|
||||
executeCommand(tempCommand + obj.toString());
|
||||
throw new RuntimeException("New value of the property is different from " +
|
||||
"the value supplied");
|
||||
}
|
||||
|
||||
//Reset the property
|
||||
executeCommand(tempCommand + obj.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* Uses the gconftool-2 command to change the value of the property.
|
||||
* Gets the output of the command and prints the output
|
||||
*/
|
||||
int executeCommand(String command) throws Exception {
|
||||
System.out.println("Executing " + command);
|
||||
Process process = Runtime.getRuntime().exec(command);
|
||||
|
||||
InputStream is = process.getInputStream();
|
||||
InputStream es = process.getErrorStream();
|
||||
StringBuilder stdout = new StringBuilder();
|
||||
StringBuilder stderr = new StringBuilder();
|
||||
|
||||
process.waitFor();
|
||||
|
||||
while (is.available() > 0)
|
||||
stdout.append((char) is.read());
|
||||
|
||||
while (es.available() > 0)
|
||||
stderr.append((char) es.read());
|
||||
|
||||
if (stdout.length() > 0)
|
||||
System.out.println(stdout.toString());
|
||||
if (stderr.length() > 0)
|
||||
System.err.println(stderr.toString());
|
||||
return process.exitValue();
|
||||
}
|
||||
}
|
83
jdk/test/java/awt/Toolkit/DesktopProperties/rfe4758438.sh
Normal file
83
jdk/test/java/awt/Toolkit/DesktopProperties/rfe4758438.sh
Normal file
@ -0,0 +1,83 @@
|
||||
# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
|
||||
if [ -z "${TESTJAVA}" ]; then
|
||||
echo "TESTJAVA undefined: can't continue."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
OS=`uname`
|
||||
|
||||
case "$OS" in
|
||||
Linux* )
|
||||
GNOMESID=`pgrep gnome-session`
|
||||
DBUS_SESSION_BUS_ADDRESS=`grep -z DBUS_SESSION_BUS_ADDRESS /proc/$GNOMESID/environ | cut -d= -f2-`
|
||||
export DBUS_SESSION_BUS_ADDRESS
|
||||
DISPLAY=`grep -z DISPLAY /proc/$GNOMESID/environ | cut -d= -f2-`
|
||||
export DISPLAY
|
||||
;;
|
||||
Sun* )
|
||||
GNOMESID=`pgrep gnome-session`
|
||||
DBUS_SESSION_BUS_ADDRESS=`pargs -e $GNOMESID | grep DBUS_SESSION_BUS_ADDRESS | cut -d= -f2-`
|
||||
export DBUS_SESSION_BUS_ADDRESS
|
||||
DISPLAY=`pargs -e $GNOMESID | grep DISPLAY | cut -d= -f2-`
|
||||
export DISPLAY
|
||||
;;
|
||||
* )
|
||||
echo "This Feature is not to be tested on $OS"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ ${GNOME_DESKTOP_SESSION_ID:-nonset} = "nonset" ];
|
||||
then
|
||||
if [ ${GNOME_SESSION_NAME:-nonset} = "nonset" ];
|
||||
then
|
||||
echo "This test should run under Gnome"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
SCHEMAS=`gsettings list-schemas | wc -l`
|
||||
|
||||
if [ $SCHEMAS -eq 0 ];
|
||||
then
|
||||
TOOL=`which gconftool-2`
|
||||
USE_GSETTINGS="false"
|
||||
else
|
||||
TOOL=`which gsettings`
|
||||
USE_GSETTINGS="true"
|
||||
fi
|
||||
|
||||
cd ${TESTSRC}
|
||||
echo $PWD
|
||||
echo "${TESTJAVA}/bin/javac -d ${TESTCLASSES} rfe4758438.java"
|
||||
${TESTJAVA}/bin/javac -d ${TESTCLASSES} rfe4758438.java
|
||||
|
||||
cd ${TESTCLASSES}
|
||||
${TESTJAVA}/bin/java -DuseGsettings=${USE_GSETTINGS} -Dtool=${TOOL} ${TESTVMOPTS} rfe4758438
|
||||
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "Test failed. See the error stream output"
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
Loading…
x
Reference in New Issue
Block a user