Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
dd1cd8a3
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
dd1cd8a3
编写于
6月 10, 2014
作者:
A
amurillo
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
4d67e4ad
0612b634
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
226 addition
and
45 deletion
+226
-45
.hgtags
.hgtags
+1
-0
make/mapfiles/libjava/mapfile-vers
make/mapfiles/libjava/mapfile-vers
+2
-1
src/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataFile.java
...jvmstat/perfdata/monitor/protocol/local/PerfDataFile.java
+4
-24
src/share/classes/sun/misc/VMSupport.java
src/share/classes/sun/misc/VMSupport.java
+10
-0
src/share/javavm/export/jvm.h
src/share/javavm/export/jvm.h
+3
-0
src/share/native/sun/misc/VMSupport.c
src/share/native/sun/misc/VMSupport.c
+6
-0
test/com/sun/tools/attach/BasicTests.java
test/com/sun/tools/attach/BasicTests.java
+11
-13
test/com/sun/tools/attach/RunnerUtil.java
test/com/sun/tools/attach/RunnerUtil.java
+20
-5
test/com/sun/tools/attach/TempDirTest.java
test/com/sun/tools/attach/TempDirTest.java
+169
-0
test/com/sun/tools/attach/java.policy.allow
test/com/sun/tools/attach/java.policy.allow
+0
-1
test/com/sun/tools/attach/java.policy.deny
test/com/sun/tools/attach/java.policy.deny
+0
-1
未找到文件。
.hgtags
浏览文件 @
dd1cd8a3
...
...
@@ -287,3 +287,4 @@ e323c74edabd29378819150ec000c6a0a99266ed jdk8u20-b12
bf4acb74e4a82d6126ad7a82bd8c52bdcce4bc8d jdk8u20-b14
82c35c2546a4c903f0da223ced4f0bebc266de82 jdk8u20-b15
d723d05cd17afd5c4dd4293bcba83fef44a3c0bb jdk8u20-b16
31433e5da5bcfd107381f281058dc80377f04d23 jdk8u20-b17
make/mapfiles/libjava/mapfile-vers
浏览文件 @
dd1cd8a3
...
...
@@ -277,7 +277,8 @@ SUNWprivate_1.1 {
Java_sun_misc_VM_latestUserDefinedLoader;
Java_sun_misc_VM_initialize;
Java_sun_misc_VMSupport_initAgentProperties;
Java_sun_misc_VMSupport_getVMTemporaryDirectory;
# ZipFile.c needs this one
throwFileNotFoundException;
...
...
src/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataFile.java
浏览文件 @
dd1cd8a3
...
...
@@ -233,8 +233,6 @@ public class PerfDataFile {
* does not conform to the expected pattern
*/
public
static
int
getLocalVmId
(
File
file
)
{
int
lvmid
=
0
;
try
{
// try 1.4.2 and later format first
return
Integer
.
parseInt
(
file
.
getName
());
...
...
@@ -287,31 +285,13 @@ public class PerfDataFile {
return
tmpDirName
+
dirNamePrefix
+
user
+
File
.
separator
;
}
/*
* this static initializer would not be necessary if the
* Solaris java.io.tmpdir property were set to /tmp by default
*/
static
{
/*
* Why is java.io.tmpdir on Solaris set to "/var/tmp/" when the
* HotSpot JVM os:get_temp_path() method returns "/tmp/"
*
* Why do Solaris and Windows return a string with a trailing
* file separator character where as Linix does not? (this change
* seems to have occurred sometime during hopper beta)
* For this to work, the target VM and this code need to use
* the same directory. Instead of guessing which directory the
* VM is using, we will ask.
*/
String
tmpdir
=
System
.
getProperty
(
"java.io.tmpdir"
);
if
(
tmpdir
.
compareTo
(
"/var/tmp/"
)
==
0
)
{
/*
* shared memory files are created in /tmp. Interestingly,
* java.io.tmpdir is set to "/var/tmp/" on Solaris and Linux,
* but os::get_temp_directory() is set to "/tmp/" on these
* platforms. the java.io.logging packages also makes reference
* to java.io.tmpdir.
*/
tmpdir
=
"/tmp/"
;
}
String
tmpdir
=
sun
.
misc
.
VMSupport
.
getVMTemporaryDirectory
();
/*
* Assure that the string returned has a trailing File.separator
...
...
src/share/classes/sun/misc/VMSupport.java
浏览文件 @
dd1cd8a3
...
...
@@ -97,4 +97,14 @@ public class VMSupport {
throw
new
RuntimeException
(
ioe
.
getMessage
());
}
}
/*
* Return the temporary directory that the VM uses for the attach
* and perf data files.
*
* It is important that this directory is well-known and the
* same for all VM instances. It cannot be affected by configuration
* variables such as java.io.tmpdir.
*/
public
static
native
String
getVMTemporaryDirectory
();
}
src/share/javavm/export/jvm.h
浏览文件 @
dd1cd8a3
...
...
@@ -1331,6 +1331,9 @@ JVM_GetManagement(jint version);
JNIEXPORT
jobject
JNICALL
JVM_InitAgentProperties
(
JNIEnv
*
env
,
jobject
agent_props
);
JNIEXPORT
jstring
JNICALL
JVM_GetTemporaryDirectory
(
JNIEnv
*
env
);
/* Generics reflection support.
*
* Returns information about the given class's EnclosingMethod
...
...
src/share/native/sun/misc/VMSupport.c
浏览文件 @
dd1cd8a3
...
...
@@ -53,3 +53,9 @@ Java_sun_misc_VMSupport_initAgentProperties(JNIEnv *env, jclass cls, jobject pro
}
return
(
*
InitAgentProperties_fp
)(
env
,
props
);
}
JNIEXPORT
jstring
JNICALL
Java_sun_misc_VMSupport_getVMTemporaryDirectory
(
JNIEnv
*
env
,
jclass
cls
)
{
return
JVM_GetTemporaryDirectory
(
env
);
}
test/com/sun/tools/attach/BasicTests.java
浏览文件 @
dd1cd8a3
...
...
@@ -38,7 +38,7 @@ import jdk.testlibrary.ProcessThread;
* @bug 6173612 6273707 6277253 6335921 6348630 6342019 6381757
* @summary Basic unit tests for the VM attach mechanism.
* @library /lib/testlibrary
* @build jdk.testlibrary.* Agent BadAgent RedefineAgent Application Shutdown RedefineDummy
* @build jdk.testlibrary.* Agent BadAgent RedefineAgent Application Shutdown RedefineDummy
RunnerUtil
* @run main BasicTests
*
* This test will perform a number of basic attach tests.
...
...
@@ -238,20 +238,18 @@ public class BasicTests {
// Test 6 - list method should list the target VM
System
.
out
.
println
(
" - Test: VirtualMachine.list"
);
List
<
VirtualMachineDescriptor
>
l
=
VirtualMachine
.
list
();
if
(!
l
.
isEmpty
())
{
boolean
found
=
false
;
for
(
VirtualMachineDescriptor
vmd:
l
)
{
if
(
vmd
.
id
().
equals
(
pid
))
{
found
=
true
;
break
;
}
}
if
(
found
)
{
System
.
out
.
println
(
" - "
+
pid
+
" found."
);
}
else
{
throw
new
RuntimeException
(
pid
+
" not found in VM list"
);
boolean
found
=
false
;
for
(
VirtualMachineDescriptor
vmd:
l
)
{
if
(
vmd
.
id
().
equals
(
pid
))
{
found
=
true
;
break
;
}
}
if
(
found
)
{
System
.
out
.
println
(
" - "
+
pid
+
" found."
);
}
else
{
throw
new
RuntimeException
(
pid
+
" not found in VM list"
);
}
// test 7 - basic hashCode/equals tests
System
.
out
.
println
(
" - Test: hashCode/equals"
);
...
...
test/com/sun/tools/attach/RunnerUtil.java
浏览文件 @
dd1cd8a3
...
...
@@ -24,12 +24,11 @@
import
java.io.IOException
;
import
java.io.File
;
import
java.nio.file.Files
;
import
java.nio.file.Path
;
import
java.util.Arrays
;
import
java.util.regex.Pattern
;
import
java.util.regex.Matcher
;
import
jdk.testlibrary.OutputAnalyzer
;
import
jdk.testlibrary.JDKToolLauncher
;
import
jdk.testlibrary.ProcessTools
;
import
jdk.testlibrary.Utils
;
import
jdk.testlibrary.ProcessThread
;
...
...
@@ -39,6 +38,7 @@ import jdk.testlibrary.ProcessThread;
* (Test runner = class that launch a test)
*/
public
class
RunnerUtil
{
/**
* The Application process must be run concurrently with our tests since
* the tests will attach to the Application.
...
...
@@ -49,16 +49,31 @@ public class RunnerUtil {
*
* The Application will write its pid and shutdownPort in the given outFile.
*/
public
static
ProcessThread
startApplication
(
String
outFile
)
throws
Throwable
{
public
static
ProcessThread
startApplication
(
String
outFile
,
String
...
additionalOpts
)
throws
Throwable
{
String
classpath
=
System
.
getProperty
(
"test.class.path"
,
"."
);
String
[]
args
=
Utils
.
addTestJavaOpts
(
"-Dattach.test=true"
,
"-classpath"
,
classpath
,
"Application"
,
outFile
);
String
[]
myArgs
=
concat
(
additionalOpts
,
new
String
[]
{
"-Dattach.test=true"
,
"-classpath"
,
classpath
,
"Application"
,
outFile
});
String
[]
args
=
Utils
.
addTestJavaOpts
(
myArgs
);
ProcessBuilder
pb
=
ProcessTools
.
createJavaProcessBuilder
(
args
);
ProcessThread
pt
=
new
ProcessThread
(
"runApplication"
,
pb
);
pt
.
start
();
return
pt
;
}
public
static
String
[]
concat
(
String
[]
a
,
String
[]
b
)
{
if
(
a
==
null
)
{
return
b
;
}
if
(
b
==
null
)
{
return
a
;
}
int
aLen
=
a
.
length
;
int
bLen
=
b
.
length
;
String
[]
c
=
new
String
[
aLen
+
bLen
];
System
.
arraycopy
(
a
,
0
,
c
,
0
,
aLen
);
System
.
arraycopy
(
b
,
0
,
c
,
aLen
,
bLen
);
return
c
;
}
/**
* Will stop the running Application.
* First tries to shutdown nicely by connecting to the shut down port.
...
...
test/com/sun/tools/attach/TempDirTest.java
0 → 100644
浏览文件 @
dd1cd8a3
/*
* 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.
*/
import
com.sun.tools.attach.*
;
import
java.nio.file.Files
;
import
java.nio.file.Path
;
import
java.util.Properties
;
import
java.util.List
;
import
java.io.File
;
import
jdk.testlibrary.OutputAnalyzer
;
import
jdk.testlibrary.ProcessTools
;
import
jdk.testlibrary.ProcessThread
;
/*
* @test
* @bug 8033104
* @summary Test to make sure attach and jvmstat works correctly when java.io.tmpdir is set
* @library /lib/testlibrary
* @run build Application Shutdown RunnerUtil
* @run main/timeout=10 TempDirTest
*/
public
class
TempDirTest
{
public
static
void
main
(
String
args
[])
throws
Throwable
{
Path
clientTmpDir
=
Files
.
createTempDirectory
(
"TempDirTest-client"
);
clientTmpDir
.
toFile
().
deleteOnExit
();
Path
targetTmpDir
=
Files
.
createTempDirectory
(
"TempDirTest-target"
);
targetTmpDir
.
toFile
().
deleteOnExit
();
// run the test with all possible combinations of setting java.io.tmpdir
runExperiment
(
null
,
null
);
runExperiment
(
clientTmpDir
,
null
);
runExperiment
(
clientTmpDir
,
targetTmpDir
);
runExperiment
(
null
,
targetTmpDir
);
}
private
static
int
counter
=
0
;
/*
* The actual test is in the nested class TestMain.
* The responsibility of this class is to:
* 1. Start the Application class in a separate process.
* 2. Find the pid and shutdown port of the running Application.
* 3. Launches the tests in nested class TestMain that will attach to the Application.
* 4. Shut down the Application.
*/
public
static
void
runExperiment
(
Path
clientTmpDir
,
Path
targetTmpDir
)
throws
Throwable
{
System
.
out
.
print
(
"### Running tests with overridden tmpdir for"
);
System
.
out
.
print
(
" client: "
+
(
clientTmpDir
==
null
?
"no"
:
"yes"
));
System
.
out
.
print
(
" target: "
+
(
targetTmpDir
==
null
?
"no"
:
"yes"
));
System
.
out
.
println
(
" ###"
);
final
String
pidFile
=
"TempDirTest.Application.pid-"
+
counter
++;
ProcessThread
processThread
=
null
;
RunnerUtil
.
ProcessInfo
info
=
null
;
try
{
String
[]
tmpDirArg
=
null
;
if
(
targetTmpDir
!=
null
)
{
tmpDirArg
=
new
String
[]
{
"-Djava.io.tmpdir="
+
targetTmpDir
};
}
processThread
=
RunnerUtil
.
startApplication
(
pidFile
,
tmpDirArg
);
info
=
RunnerUtil
.
readProcessInfo
(
pidFile
);
launchTests
(
info
.
pid
,
clientTmpDir
);
}
catch
(
Throwable
t
)
{
System
.
out
.
println
(
"TempDirTest got unexpected exception: "
+
t
);
t
.
printStackTrace
();
throw
t
;
}
finally
{
// Make sure the Application process is stopped.
RunnerUtil
.
stopApplication
(
info
.
shutdownPort
,
processThread
);
}
}
/**
* Runs the actual tests in nested class TestMain.
* The reason for running the tests in a separate process
* is that we need to modify the class path and
* the -Djava.io.tmpdir property.
*/
private
static
void
launchTests
(
int
pid
,
Path
clientTmpDir
)
throws
Throwable
{
final
String
sep
=
File
.
separator
;
// Need to add jdk/lib/tools.jar to classpath.
String
classpath
=
System
.
getProperty
(
"test.class.path"
,
""
)
+
File
.
pathSeparator
+
System
.
getProperty
(
"test.jdk"
,
"."
)
+
sep
+
"lib"
+
sep
+
"tools.jar"
;
String
[]
tmpDirArg
=
null
;
if
(
clientTmpDir
!=
null
)
{
tmpDirArg
=
new
String
[]
{
"-Djava.io.tmpdir="
+
clientTmpDir
};
}
// Arguments : [-Djava.io.tmpdir=] -classpath cp TempDirTest$TestMain pid
String
[]
args
=
RunnerUtil
.
concat
(
tmpDirArg
,
new
String
[]
{
"-classpath"
,
classpath
,
"TempDirTest$TestMain"
,
Integer
.
toString
(
pid
)
});
OutputAnalyzer
output
=
ProcessTools
.
executeTestJvm
(
args
);
output
.
shouldHaveExitValue
(
0
);
}
/**
* This is the actual test. It will attach to the running Application
* and perform a number of basic attach tests.
*/
public
static
class
TestMain
{
public
static
void
main
(
String
args
[])
throws
Exception
{
String
pid
=
args
[
0
];
// Test 1 - list method should list the target VM
System
.
out
.
println
(
" - Test: VirtualMachine.list"
);
List
<
VirtualMachineDescriptor
>
l
=
VirtualMachine
.
list
();
boolean
found
=
false
;
for
(
VirtualMachineDescriptor
vmd:
l
)
{
if
(
vmd
.
id
().
equals
(
pid
))
{
found
=
true
;
break
;
}
}
if
(
found
)
{
System
.
out
.
println
(
" - "
+
pid
+
" found."
);
}
else
{
throw
new
RuntimeException
(
pid
+
" not found in VM list"
);
}
// Test 2 - try to attach and verify connection
System
.
out
.
println
(
" - Attaching to application ..."
);
VirtualMachine
vm
=
VirtualMachine
.
attach
(
pid
);
System
.
out
.
println
(
" - Test: system properties in target VM"
);
Properties
props
=
vm
.
getSystemProperties
();
String
value
=
props
.
getProperty
(
"attach.test"
);
if
(
value
==
null
||
!
value
.
equals
(
"true"
))
{
throw
new
RuntimeException
(
"attach.test property not set"
);
}
System
.
out
.
println
(
" - attach.test property set as expected"
);
}
}
}
test/com/sun/tools/attach/java.policy.allow
浏览文件 @
dd1cd8a3
...
...
@@ -13,7 +13,6 @@ grant {
permission java.lang.RuntimePermission "accessClassInPackage.sun.jvmstat.monitor";
permission java.lang.RuntimePermission "loadLibrary.attach";
permission java.util.PropertyPermission "sun.jvmstat.*", "read";
permission java.util.PropertyPermission "java.io.tmpdir", "read";
/* to read configuration file in META-INF/services, and write/delete .attach_pid<pid> */
permission java.io.FilePermission "<<ALL FILES>>", "read,write,delete";
...
...
test/com/sun/tools/attach/java.policy.deny
浏览文件 @
dd1cd8a3
...
...
@@ -11,7 +11,6 @@ grant {
permission java.lang.RuntimePermission "accessClassInPackage.sun.tools.attach";
permission java.lang.RuntimePermission "loadLibrary.attach";
permission java.util.PropertyPermission "sun.jvmstat.*", "read";
permission java.util.PropertyPermission "java.io.tmpdir", "read";
/* to read configuration file in META-INF/services, and write/delete .attach_pid<pid> */
permission java.io.FilePermission "<<ALL FILES>>", "read,write,delete";
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录