“64e73098b16e15417d1aebc3d708b49383b9d0c3”上不存在“test/javax/swing/UIDefaults/6795356/TableTest.java”
提交 472c3367 编写于 作者: J jbachorik

8072908: com/sun/management/OperatingSystemMXBean/TestTotalSwap.sh fails on OS X with exit code 2

Reviewed-by: dholmes, sla
上级 a63e9f30
/* /*
* Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -22,11 +22,16 @@ ...@@ -22,11 +22,16 @@
*/ */
/* /*
* * @test
*
* @bug 4858522 * @bug 4858522
* @summary Basic unit test of OperatingSystemMXBean.getTotalSwapSpaceSize() * @summary Basic unit test of OperatingSystemMXBean.getTotalSwapSpaceSize()
*
* @library /lib/testlibrary
* @build TestTotalSwap jdk.testlibrary.*
* @run main TestTotalSwap
*
* @author Steve Bohne * @author Steve Bohne
* @author Jaroslav Bachorik
*/ */
/* /*
...@@ -50,9 +55,13 @@ ...@@ -50,9 +55,13 @@
import com.sun.management.OperatingSystemMXBean; import com.sun.management.OperatingSystemMXBean;
import java.lang.management.*; import java.lang.management.*;
public class GetTotalSwapSpaceSize { import jdk.testlibrary.OSInfo;
import jdk.testlibrary.ProcessTools;
import jdk.testlibrary.OutputAnalyzer;
private static OperatingSystemMXBean mbean = public class TestTotalSwap {
private static final OperatingSystemMXBean mbean =
(com.sun.management.OperatingSystemMXBean) (com.sun.management.OperatingSystemMXBean)
ManagementFactory.getOperatingSystemMXBean(); ManagementFactory.getOperatingSystemMXBean();
...@@ -62,19 +71,9 @@ public class GetTotalSwapSpaceSize { ...@@ -62,19 +71,9 @@ public class GetTotalSwapSpaceSize {
private static long min_size_for_pass = 0; private static long min_size_for_pass = 0;
private static final long MAX_SIZE_FOR_PASS = Long.MAX_VALUE; private static final long MAX_SIZE_FOR_PASS = Long.MAX_VALUE;
private static boolean trace = false; public static void main(String args[]) throws Throwable {
public static void main(String args[]) throws Exception {
if (args.length > 1 && args[1].equals("trace")) {
trace = true;
}
long expected_swap_size = 0;
if (args.length < 1 || args.length > 2) {
throw new IllegalArgumentException("Unexpected number of args " + args.length);
}
long expected_swap_size = getSwapSizeFromOs();
long min_size = mbean.getFreeSwapSpaceSize(); long min_size = mbean.getFreeSwapSpaceSize();
if (min_size > 0) { if (min_size > 0) {
...@@ -83,12 +82,9 @@ public class GetTotalSwapSpaceSize { ...@@ -83,12 +82,9 @@ public class GetTotalSwapSpaceSize {
long size = mbean.getTotalSwapSpaceSize(); long size = mbean.getTotalSwapSpaceSize();
if (trace) {
System.out.println("Total swap space size in bytes: " + size); System.out.println("Total swap space size in bytes: " + size);
}
if (!args[0].matches("sanity-only")) { if (expected_swap_size > -1) {
expected_swap_size = Long.parseLong(args[0]);
if (size != expected_swap_size) { if (size != expected_swap_size) {
throw new RuntimeException("Expected total swap size : " + throw new RuntimeException("Expected total swap size : " +
expected_swap_size + expected_swap_size +
...@@ -97,6 +93,7 @@ public class GetTotalSwapSpaceSize { ...@@ -97,6 +93,7 @@ public class GetTotalSwapSpaceSize {
} }
} }
// sanity check
if (size < min_size_for_pass || size > MAX_SIZE_FOR_PASS) { if (size < min_size_for_pass || size > MAX_SIZE_FOR_PASS) {
throw new RuntimeException("Total swap space size " + throw new RuntimeException("Total swap space size " +
"illegal value: " + size + " bytes " + "illegal value: " + size + " bytes " +
...@@ -106,4 +103,60 @@ public class GetTotalSwapSpaceSize { ...@@ -106,4 +103,60 @@ public class GetTotalSwapSpaceSize {
System.out.println("Test passed."); System.out.println("Test passed.");
} }
private static long getSwapSizeFromOs() throws Throwable {
OSInfo.OSType os = OSInfo.getOSType();
switch (os) {
// total used free shared buffers cached
// Mem: 16533540864 13638467584 2895073280 534040576 1630248960 6236909568
// -/+ buffers/cache: 5771309056 10762231808
// Swap: 15999168512 0 15999168512
case LINUX: {
String swapSizeStr = ProcessTools.executeCommand("free", "-b")
.firstMatch("Swap:\\s+([0-9]+)\\s+.*", 1);
return Long.parseLong(swapSizeStr);
}
case SOLARIS: {
// swapfile dev swaplo blocks free
// /dev/dsk/c0t0d0s1 136,1 16 1638608 1600528
OutputAnalyzer out= ProcessTools.executeCommand(
"/usr/sbin/swap",
"-l"
);
long swapSize = 0;
for (String line : out.asLines()) {
if (line.contains("swapfile")) continue;
String[] vals = line.split("\\s+");
if (vals.length == 5) {
swapSize += Long.parseLong(vals[3]) * 512; // size is reported in 512b blocks
}
}
return swapSize;
}
case MACOSX: {
// total = 8192.00M used = 7471.11M free = 720.89M (encrypted)
String swapSizeStr = ProcessTools.executeCommand(
"/usr/sbin/sysctl",
"-n",
"vm.swapusage"
).firstMatch("total\\s+=\\s+([0-9]+(\\.[0-9]+)?[Mm]?).*", 1);
if (swapSizeStr.toLowerCase().endsWith("m")) {
swapSizeStr = swapSizeStr.substring(0, swapSizeStr.length() - 1);
return (long)(Double.parseDouble(swapSizeStr) * 1024 * 1024); // size in MB
}
return (long)(Double.parseDouble(swapSizeStr) * 1024 * 1024);
}
default: {
System.err.println("Unsupported operating system: " + os);
}
}
return -1;
}
} }
#
# Copyright (c) 2005, 2012, 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.
#
#
# @test
# @summary Tests MM getTotalSwapSpaceSize() api.
# @author Swamy V
# @bug 6252770
#
# @run build GetTotalSwapSpaceSize
# @run shell TestTotalSwap.sh
#
#
# This test tests the actual swap size on linux and solaris.
# On windows this is just a sanity check and correct size should
# be checked manually:
#
# Windows NT/XP/2000:
# 1. Run Start->Accessories->System Tools->System Information.
# 2. The value (reported in Kbytes) is in the "Page File Space" entry
# Windows 98/ME:
# Unknown.
#
#set -x
#Set appropriate jdk
#
if [ ! -z "${TESTJAVA}" ] ; then
jdk="$TESTJAVA"
else
echo "--Error: TESTJAVA must be defined as the pathname of a jdk to test."
exit 1
fi
runOne()
{
echo "runOne $@"
$TESTJAVA/bin/java ${TESTVMOPTS} -classpath $TESTCLASSES $@ || exit 3
}
solaris_swap_size()
{
total_swap=0
for i in `/usr/sbin/swap -l | awk '{print $4}' | grep -v blocks`
do
# swap -l returns size in blocks of 512 bytes.
total_swap=`expr $i \* 512 + $total_swap`
done
}
# Test GetTotalSwapSpaceSize if we are running on Unix
total_swap=0
case `uname -s` in
SunOS )
solaris_swap_size
runOne GetTotalSwapSpaceSize $total_swap
;;
Linux )
total_swap=`free -b | grep -i swap | awk '{print $2}'`
runOne GetTotalSwapSpaceSize $total_swap
;;
Darwin )
# $ sysctl -n vm.swapusage
# total = 8192.00M used = 7471.11M free = 720.89M (encrypted)
swap=`/usr/sbin/sysctl -n vm.swapusage | awk '{ print $3 }' | awk -F . '{ print $1 }'` || exit 2
total_swap=`expr $swap \* 1024 \* 1024` || exit 2
runOne GetTotalSwapSpaceSize $total_swap
;;
* )
runOne GetTotalSwapSpaceSize "sanity-only"
;;
esac
exit 0
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册