mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-09 09:58:43 +00:00
Merge
This commit is contained in:
commit
d85d8b1ade
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -22,11 +22,16 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
*
|
||||
*
|
||||
* @test
|
||||
* @bug 4858522
|
||||
* @summary Basic unit test of OperatingSystemMXBean.getTotalSwapSpaceSize()
|
||||
*
|
||||
* @library /lib/testlibrary
|
||||
* @build TestTotalSwap jdk.testlibrary.*
|
||||
* @run main TestTotalSwap
|
||||
*
|
||||
* @author Steve Bohne
|
||||
* @author Jaroslav Bachorik
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -50,9 +55,13 @@
|
||||
import com.sun.management.OperatingSystemMXBean;
|
||||
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)
|
||||
ManagementFactory.getOperatingSystemMXBean();
|
||||
|
||||
@ -62,19 +71,9 @@ public class GetTotalSwapSpaceSize {
|
||||
private static long min_size_for_pass = 0;
|
||||
private static final long MAX_SIZE_FOR_PASS = Long.MAX_VALUE;
|
||||
|
||||
private static boolean trace = false;
|
||||
|
||||
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);
|
||||
}
|
||||
public static void main(String args[]) throws Throwable {
|
||||
|
||||
long expected_swap_size = getSwapSizeFromOs();
|
||||
|
||||
long min_size = mbean.getFreeSwapSpaceSize();
|
||||
if (min_size > 0) {
|
||||
@ -83,12 +82,9 @@ public class 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")) {
|
||||
expected_swap_size = Long.parseLong(args[0]);
|
||||
if (expected_swap_size > -1) {
|
||||
if (size != expected_swap_size) {
|
||||
throw new RuntimeException("Expected total swap size : " +
|
||||
expected_swap_size +
|
||||
@ -97,6 +93,7 @@ public class GetTotalSwapSpaceSize {
|
||||
}
|
||||
}
|
||||
|
||||
// sanity check
|
||||
if (size < min_size_for_pass || size > MAX_SIZE_FOR_PASS) {
|
||||
throw new RuntimeException("Total swap space size " +
|
||||
"illegal value: " + size + " bytes " +
|
||||
@ -106,4 +103,60 @@ public class GetTotalSwapSpaceSize {
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
@ -1,99 +0,0 @@
|
||||
#
|
||||
# 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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user