Merge
This commit is contained in:
commit
360e24d6ba
@ -420,6 +420,7 @@ ba5b16c9c6d80632b61959a33d424b1c3398ce62 jdk-9+166
|
||||
03fe61bb7670644cf6e46b5cfafb6b27c0e0157e jdk-10+6
|
||||
b25838a28195f4b6dab34668411eedd2d366a16c jdk-9+169
|
||||
4d163ec59d989a9261ed7f848bc6303f90869af5 jdk-9+170
|
||||
|
||||
aa3c97810d7c484c93a2fd75d3c76ff574deb6d8 jdk-10+7
|
||||
df33ef1dc163f994177fd97d4d0e73a1e3cb5d85 jdk-10+8
|
||||
b94be69cbb1d2943b886bf2d458745756df146e4 jdk-10+9
|
||||
4c12464a907db4656c1033f56fa49cba643ac629 jdk-9+171
|
||||
|
@ -651,7 +651,7 @@ MKDIR:=@MKDIR@
|
||||
MV:=@MV@
|
||||
NAWK:=@NAWK@
|
||||
NICE:=@NICE@
|
||||
PANDOC:=@PANDOC@
|
||||
PANDOC:=@FIXPATH@ @PANDOC@
|
||||
PATCH:=@PATCH@
|
||||
PRINTF:=@PRINTF@
|
||||
RM:=@RM@
|
||||
|
@ -1,21 +1,23 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="Content-Style-Type" content="text/css" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta charset="utf-8">
|
||||
<meta name="generator" content="pandoc">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
<title>OpenJDK Build README</title>
|
||||
<style type="text/css">code{white-space: pre;}</style>
|
||||
<link rel="stylesheet" href=" ../../jdk/make/data/docs-resources/specs/resources/jdk-default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../jdk/make/data/docs-resources/specs/resources/jdk-default.css">
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<header>
|
||||
<h1 class="title">OpenJDK Build README</h1>
|
||||
</div>
|
||||
<div class="figure">
|
||||
<img src="http://openjdk.java.net/images/openjdk.png" alt="OpenJDK" />
|
||||
<p class="caption">OpenJDK</p>
|
||||
</div>
|
||||
</header>
|
||||
<figure>
|
||||
<img src="http://openjdk.java.net/images/openjdk.png" alt="OpenJDK" /><figcaption>OpenJDK</figcaption>
|
||||
</figure>
|
||||
<hr />
|
||||
<h2 id="introduction">Introduction</h2>
|
||||
<p>This README file contains build instructions for the <a href="http://openjdk.java.net">OpenJDK</a>. Building the source code for the OpenJDK requires a certain degree of technical expertise.</p>
|
||||
@ -149,50 +151,50 @@
|
||||
<table>
|
||||
<thead>
|
||||
<tr class="header">
|
||||
<th align="left">Package</th>
|
||||
<th align="left">Version</th>
|
||||
<th style="text-align: left;">Package</th>
|
||||
<th style="text-align: left;">Version</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="odd">
|
||||
<td align="left">developer/solarisstudio-124/backend</td>
|
||||
<td align="left">12.4-1.0.6.0</td>
|
||||
<td style="text-align: left;">developer/solarisstudio-124/backend</td>
|
||||
<td style="text-align: left;">12.4-1.0.6.0</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td align="left">developer/solarisstudio-124/c++</td>
|
||||
<td align="left">12.4-1.0.10.0</td>
|
||||
<td style="text-align: left;">developer/solarisstudio-124/c++</td>
|
||||
<td style="text-align: left;">12.4-1.0.10.0</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td align="left">developer/solarisstudio-124/cc</td>
|
||||
<td align="left">12.4-1.0.4.0</td>
|
||||
<td style="text-align: left;">developer/solarisstudio-124/cc</td>
|
||||
<td style="text-align: left;">12.4-1.0.4.0</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td align="left">developer/solarisstudio-124/library/c++-libs</td>
|
||||
<td align="left">12.4-1.0.10.0</td>
|
||||
<td style="text-align: left;">developer/solarisstudio-124/library/c++-libs</td>
|
||||
<td style="text-align: left;">12.4-1.0.10.0</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td align="left">developer/solarisstudio-124/library/math-libs</td>
|
||||
<td align="left">12.4-1.0.0.1</td>
|
||||
<td style="text-align: left;">developer/solarisstudio-124/library/math-libs</td>
|
||||
<td style="text-align: left;">12.4-1.0.0.1</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td align="left">developer/solarisstudio-124/library/studio-gccrt</td>
|
||||
<td align="left">12.4-1.0.0.1</td>
|
||||
<td style="text-align: left;">developer/solarisstudio-124/library/studio-gccrt</td>
|
||||
<td style="text-align: left;">12.4-1.0.0.1</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td align="left">developer/solarisstudio-124/studio-common</td>
|
||||
<td align="left">12.4-1.0.0.1</td>
|
||||
<td style="text-align: left;">developer/solarisstudio-124/studio-common</td>
|
||||
<td style="text-align: left;">12.4-1.0.0.1</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td align="left">developer/solarisstudio-124/studio-ja</td>
|
||||
<td align="left">12.4-1.0.0.1</td>
|
||||
<td style="text-align: left;">developer/solarisstudio-124/studio-ja</td>
|
||||
<td style="text-align: left;">12.4-1.0.0.1</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td align="left">developer/solarisstudio-124/studio-legal</td>
|
||||
<td align="left">12.4-1.0.0.1</td>
|
||||
<td style="text-align: left;">developer/solarisstudio-124/studio-legal</td>
|
||||
<td style="text-align: left;">12.4-1.0.0.1</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td align="left">developer/solarisstudio-124/studio-zhCN</td>
|
||||
<td align="left">12.4-1.0.0.1</td>
|
||||
<td style="text-align: left;">developer/solarisstudio-124/studio-zhCN</td>
|
||||
<td style="text-align: left;">12.4-1.0.0.1</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@ -211,66 +213,66 @@
|
||||
<table>
|
||||
<thead>
|
||||
<tr class="header">
|
||||
<th align="left">Binary Name</th>
|
||||
<th align="left">Category</th>
|
||||
<th align="left">Package</th>
|
||||
<th align="left">Description</th>
|
||||
<th style="text-align: left;">Binary Name</th>
|
||||
<th style="text-align: left;">Category</th>
|
||||
<th style="text-align: left;">Package</th>
|
||||
<th style="text-align: left;">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="odd">
|
||||
<td align="left">ar.exe</td>
|
||||
<td align="left">Devel</td>
|
||||
<td align="left">binutils</td>
|
||||
<td align="left">The GNU assembler, linker and binary utilities</td>
|
||||
<td style="text-align: left;">ar.exe</td>
|
||||
<td style="text-align: left;">Devel</td>
|
||||
<td style="text-align: left;">binutils</td>
|
||||
<td style="text-align: left;">The GNU assembler, linker and binary utilities</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td align="left">make.exe</td>
|
||||
<td align="left">Devel</td>
|
||||
<td align="left">make</td>
|
||||
<td align="left">The GNU version of the 'make' utility built for CYGWIN</td>
|
||||
<td style="text-align: left;">make.exe</td>
|
||||
<td style="text-align: left;">Devel</td>
|
||||
<td style="text-align: left;">make</td>
|
||||
<td style="text-align: left;">The GNU version of the 'make' utility built for CYGWIN</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td align="left">m4.exe</td>
|
||||
<td align="left">Interpreters</td>
|
||||
<td align="left">m4</td>
|
||||
<td align="left">GNU implementation of the traditional Unix macro processor</td>
|
||||
<td style="text-align: left;">m4.exe</td>
|
||||
<td style="text-align: left;">Interpreters</td>
|
||||
<td style="text-align: left;">m4</td>
|
||||
<td style="text-align: left;">GNU implementation of the traditional Unix macro processor</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td align="left">cpio.exe</td>
|
||||
<td align="left">Utils</td>
|
||||
<td align="left">cpio</td>
|
||||
<td align="left">A program to manage archives of files</td>
|
||||
<td style="text-align: left;">cpio.exe</td>
|
||||
<td style="text-align: left;">Utils</td>
|
||||
<td style="text-align: left;">cpio</td>
|
||||
<td style="text-align: left;">A program to manage archives of files</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td align="left">gawk.exe</td>
|
||||
<td align="left">Utils</td>
|
||||
<td align="left">awk</td>
|
||||
<td align="left">Pattern-directed scanning and processing language</td>
|
||||
<td style="text-align: left;">gawk.exe</td>
|
||||
<td style="text-align: left;">Utils</td>
|
||||
<td style="text-align: left;">awk</td>
|
||||
<td style="text-align: left;">Pattern-directed scanning and processing language</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td align="left">file.exe</td>
|
||||
<td align="left">Utils</td>
|
||||
<td align="left">file</td>
|
||||
<td align="left">Determines file type using 'magic' numbers</td>
|
||||
<td style="text-align: left;">file.exe</td>
|
||||
<td style="text-align: left;">Utils</td>
|
||||
<td style="text-align: left;">file</td>
|
||||
<td style="text-align: left;">Determines file type using 'magic' numbers</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td align="left">zip.exe</td>
|
||||
<td align="left">Archive</td>
|
||||
<td align="left">zip</td>
|
||||
<td align="left">Package and compress (archive) files</td>
|
||||
<td style="text-align: left;">zip.exe</td>
|
||||
<td style="text-align: left;">Archive</td>
|
||||
<td style="text-align: left;">zip</td>
|
||||
<td style="text-align: left;">Package and compress (archive) files</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td align="left">unzip.exe</td>
|
||||
<td align="left">Archive</td>
|
||||
<td align="left">unzip</td>
|
||||
<td align="left">Extract compressed files in a ZIP archive</td>
|
||||
<td style="text-align: left;">unzip.exe</td>
|
||||
<td style="text-align: left;">Archive</td>
|
||||
<td style="text-align: left;">unzip</td>
|
||||
<td style="text-align: left;">Extract compressed files in a ZIP archive</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td align="left">free.exe</td>
|
||||
<td align="left">System</td>
|
||||
<td align="left">procps</td>
|
||||
<td align="left">Display amount of free and used memory in the system</td>
|
||||
<td style="text-align: left;">free.exe</td>
|
||||
<td style="text-align: left;">System</td>
|
||||
<td style="text-align: left;">procps</td>
|
||||
<td style="text-align: left;">Display amount of free and used memory in the system</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@ -561,14 +563,14 @@ This is caused by a missing libstdc++.a library. This is installed as part of a
|
||||
This is probably an issue with SELinux (See <a href="http://en.wikipedia.org/wiki/SELinux">SELinux on Wikipedia</a>). Parts of the VM is built without the <code>-fPIC</code> for performance reasons.</p></li>
|
||||
</ul>
|
||||
<p>To completely disable SELinux:</p>
|
||||
<ol style="list-style-type: decimal">
|
||||
<ol type="1">
|
||||
<li><code>$ su root</code></li>
|
||||
<li><code># system-config-securitylevel</code></li>
|
||||
<li><code>In the window that appears, select the SELinux tab</code></li>
|
||||
<li><code>Disable SELinux</code></li>
|
||||
</ol>
|
||||
<p>Alternatively, instead of completely disabling it you could disable just this one check.</p>
|
||||
<ol style="list-style-type: decimal">
|
||||
<ol type="1">
|
||||
<li>Select System->Administration->SELinux Management</li>
|
||||
<li>In the SELinux Management Tool which appears, select "Boolean" from the menu on the left</li>
|
||||
<li>Expand the "Memory Protection" group</li>
|
||||
@ -616,62 +618,62 @@ Try rebooting the system, or there could be some kind of issue with the disk or
|
||||
<table>
|
||||
<thead>
|
||||
<tr class="header">
|
||||
<th align="left">Base OS and Architecture</th>
|
||||
<th align="left">OS</th>
|
||||
<th align="left">C/C++ Compiler</th>
|
||||
<th align="left">Processors</th>
|
||||
<th align="left">RAM Minimum</th>
|
||||
<th align="left">DISK Needs</th>
|
||||
<th style="text-align: left;">Base OS and Architecture</th>
|
||||
<th style="text-align: left;">OS</th>
|
||||
<th style="text-align: left;">C/C++ Compiler</th>
|
||||
<th style="text-align: left;">Processors</th>
|
||||
<th style="text-align: left;">RAM Minimum</th>
|
||||
<th style="text-align: left;">DISK Needs</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="odd">
|
||||
<td align="left">Linux X86 (32-bit) and X64 (64-bit)</td>
|
||||
<td align="left">Oracle Enterprise Linux 6.4</td>
|
||||
<td align="left">gcc 4.9.2</td>
|
||||
<td align="left">2 or more</td>
|
||||
<td align="left">1 GB</td>
|
||||
<td align="left">6 GB</td>
|
||||
<td style="text-align: left;">Linux X86 (32-bit) and X64 (64-bit)</td>
|
||||
<td style="text-align: left;">Oracle Enterprise Linux 6.4</td>
|
||||
<td style="text-align: left;">gcc 4.9.2</td>
|
||||
<td style="text-align: left;">2 or more</td>
|
||||
<td style="text-align: left;">1 GB</td>
|
||||
<td style="text-align: left;">6 GB</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td align="left">Solaris SPARCV9 (64-bit)</td>
|
||||
<td align="left">Solaris 11 Update 1</td>
|
||||
<td align="left">Studio 12 Update 4 + patches</td>
|
||||
<td align="left">4 or more</td>
|
||||
<td align="left">4 GB</td>
|
||||
<td align="left">8 GB</td>
|
||||
<td style="text-align: left;">Solaris SPARCV9 (64-bit)</td>
|
||||
<td style="text-align: left;">Solaris 11 Update 1</td>
|
||||
<td style="text-align: left;">Studio 12 Update 4 + patches</td>
|
||||
<td style="text-align: left;">4 or more</td>
|
||||
<td style="text-align: left;">4 GB</td>
|
||||
<td style="text-align: left;">8 GB</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td align="left">Solaris X64 (64-bit)</td>
|
||||
<td align="left">Solaris 11 Update 1</td>
|
||||
<td align="left">Studio 12 Update 4 + patches</td>
|
||||
<td align="left">4 or more</td>
|
||||
<td align="left">4 GB</td>
|
||||
<td align="left">8 GB</td>
|
||||
<td style="text-align: left;">Solaris X64 (64-bit)</td>
|
||||
<td style="text-align: left;">Solaris 11 Update 1</td>
|
||||
<td style="text-align: left;">Studio 12 Update 4 + patches</td>
|
||||
<td style="text-align: left;">4 or more</td>
|
||||
<td style="text-align: left;">4 GB</td>
|
||||
<td style="text-align: left;">8 GB</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td align="left">Windows X86 (32-bit)</td>
|
||||
<td align="left">Windows Server 2012 R2 x64</td>
|
||||
<td align="left">Microsoft Visual Studio C++ 2013 Professional Edition</td>
|
||||
<td align="left">2 or more</td>
|
||||
<td align="left">2 GB</td>
|
||||
<td align="left">6 GB</td>
|
||||
<td style="text-align: left;">Windows X86 (32-bit)</td>
|
||||
<td style="text-align: left;">Windows Server 2012 R2 x64</td>
|
||||
<td style="text-align: left;">Microsoft Visual Studio C++ 2013 Professional Edition</td>
|
||||
<td style="text-align: left;">2 or more</td>
|
||||
<td style="text-align: left;">2 GB</td>
|
||||
<td style="text-align: left;">6 GB</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td align="left">Windows X64 (64-bit)</td>
|
||||
<td align="left">Windows Server 2012 R2 x64</td>
|
||||
<td align="left">Microsoft Visual Studio C++ 2013 Professional Edition</td>
|
||||
<td align="left">2 or more</td>
|
||||
<td align="left">2 GB</td>
|
||||
<td align="left">6 GB</td>
|
||||
<td style="text-align: left;">Windows X64 (64-bit)</td>
|
||||
<td style="text-align: left;">Windows Server 2012 R2 x64</td>
|
||||
<td style="text-align: left;">Microsoft Visual Studio C++ 2013 Professional Edition</td>
|
||||
<td style="text-align: left;">2 or more</td>
|
||||
<td style="text-align: left;">2 GB</td>
|
||||
<td style="text-align: left;">6 GB</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td align="left">Mac OS X X64 (64-bit)</td>
|
||||
<td align="left">Mac OS X 10.9 "Mavericks"</td>
|
||||
<td align="left">Xcode 6.3 or newer</td>
|
||||
<td align="left">2 or more</td>
|
||||
<td align="left">4 GB</td>
|
||||
<td align="left">6 GB</td>
|
||||
<td style="text-align: left;">Mac OS X X64 (64-bit)</td>
|
||||
<td style="text-align: left;">Mac OS X 10.9 "Mavericks"</td>
|
||||
<td style="text-align: left;">Xcode 6.3 or newer</td>
|
||||
<td style="text-align: left;">2 or more</td>
|
||||
<td style="text-align: left;">4 GB</td>
|
||||
<td style="text-align: left;">6 GB</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -1,19 +1,22 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="Content-Style-Type" content="text/css" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta charset="utf-8">
|
||||
<meta name="generator" content="pandoc">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
<title>Testing OpenJDK</title>
|
||||
<style type="text/css">code{white-space: pre;}</style>
|
||||
<link rel="stylesheet" href=" ../../jdk/make/data/docs-resources/specs/resources/jdk-default.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../jdk/make/data/docs-resources/specs/resources/jdk-default.css">
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
||||
<![endif]-->
|
||||
<style type="text/css">pre, code, tt { color: #1d6ae5; }</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<header>
|
||||
<h1 class="title">Testing OpenJDK</h1>
|
||||
</div>
|
||||
<div id="TOC">
|
||||
</header>
|
||||
<nav id="TOC">
|
||||
<ul>
|
||||
<li><a href="#using-the-run-test-framework">Using the run-test framework</a></li>
|
||||
<li><a href="#test-selection">Test selection</a><ul>
|
||||
@ -26,16 +29,18 @@
|
||||
<li><a href="#gtest-keywords">Gtest keywords</a></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
<h2 id="using-the-run-test-framework">Using the run-test framework</h2>
|
||||
<p>This new way of running tests is developer-centric. It assumes that you have built a jdk locally and want to test it. Running common test targets is simple, and more complex ad-hoc combination of tests is possible. The user interface is forgiving, and clearly report errors it cannot resolve.</p>
|
||||
<p>The main target "run-test" uses the jdk-image as the tested product. There is also an alternate target "exploded-run-test" that uses the exploded image instead. Not all tests will run successfully on the exploded image, but using this target can greatly improve rebuild times for certain workflows.</p>
|
||||
<p>Some example command-lines:</p>
|
||||
<pre><code>$ make run-test-tier1
|
||||
$ make run-test-jdk_lang JTREG="JOBS=8"
|
||||
$ make run-test TEST=jdk_lang
|
||||
$ make run-test-only TEST="gtest:LogTagSet gtest:LogTagSetDescriptions" GTEST="REPEAT=-1"
|
||||
$ make run-test TEST="hotspot/test:hotspot_gc" JTREG="JOBS=1;TIMEOUT=8;VM_OTIONS=-XshowSettings -Xlog:gc+ref=debug"
|
||||
$ make run-test TEST="jtreg:hotspot/test:hotspot_gc hotspot/test/native_sanity/JniVersion.java"</code></pre>
|
||||
$ make run-test TEST="jtreg:hotspot/test:hotspot_gc hotspot/test/native_sanity/JniVersion.java"
|
||||
$ make exploded-run-test TEST=hotspot_tier1</code></pre>
|
||||
<h2 id="test-selection">Test selection</h2>
|
||||
<p>All functionality is available using the run-test make target. In this use case, the test or tests to be executed is controlled using the <code>TEST</code> variable. To speed up subsequent test runs with no source code changes, run-test-only can be used instead, which do not depend on the source and test image build.</p>
|
||||
<p>For some common top-level tests, direct make targets have been generated. This includes all JTreg test groups, the hotspot gtest, and custom tests (if present). This means that <code>make run-test-tier1</code> is equivalent to <code>make run-test TEST="tier1"</code>, but the latter is more tab-completion friendly. For more complex test runs, the <code>run-test TEST="x"</code> solution needs to be used.</p>
|
||||
|
@ -7,6 +7,11 @@ built a jdk locally and want to test it. Running common test targets is simple,
|
||||
and more complex ad-hoc combination of tests is possible. The user interface is
|
||||
forgiving, and clearly report errors it cannot resolve.
|
||||
|
||||
The main target "run-test" uses the jdk-image as the tested product. There is
|
||||
also an alternate target "exploded-run-test" that uses the exploded image
|
||||
instead. Not all tests will run successfully on the exploded image, but using
|
||||
this target can greatly improve rebuild times for certain workflows.
|
||||
|
||||
Some example command-lines:
|
||||
|
||||
$ make run-test-tier1
|
||||
@ -15,6 +20,7 @@ Some example command-lines:
|
||||
$ make run-test-only TEST="gtest:LogTagSet gtest:LogTagSetDescriptions" GTEST="REPEAT=-1"
|
||||
$ make run-test TEST="hotspot/test:hotspot_gc" JTREG="JOBS=1;TIMEOUT=8;VM_OTIONS=-XshowSettings -Xlog:gc+ref=debug"
|
||||
$ make run-test TEST="jtreg:hotspot/test:hotspot_gc hotspot/test/native_sanity/JniVersion.java"
|
||||
$ make exploded-run-test TEST=hotspot_tier1
|
||||
|
||||
## Test selection
|
||||
|
||||
|
@ -422,3 +422,5 @@ b2218d41edef02ee8f94bb438f885b2ba79bfa08 jdk-9+169
|
||||
8a4ab3b0ab9a86df73d9a1e337134f2dbe006725 jdk-9+170
|
||||
aed5a4edc8275c1c50195503756ff92bfe0197f5 jdk-10+7
|
||||
648b0a00824eb29e71936bc3258d309a25e3b8c0 jdk-10+8
|
||||
54c6621f7b34cc6ce6c0882d047f61fe0962c257 jdk-10+9
|
||||
c62e5964cfcf144d8f72e9ba69757897785349a9 jdk-9+171
|
||||
|
@ -582,3 +582,5 @@ fbb9c802649585d19f6d7e81b4a519d44806225a jdk-9+168
|
||||
38a240fd58a287acb1963920b92ed4d9c2fd39e3 jdk-9+170
|
||||
9d4746eca95aec3e5a344bf2520745dcc1d17eed jdk-10+7
|
||||
f5ded0cf954c770deeecb80f2ba1ba6a05cd979b jdk-10+8
|
||||
233647e3d3800e76d7612014b745b37a88098f63 jdk-10+9
|
||||
d53171650a2cc6c6f699c966c533b914ca9c0602 jdk-9+171
|
||||
|
@ -303,9 +303,9 @@ class HotSpotProject(mx.NativeProject):
|
||||
out.close('link')
|
||||
|
||||
out.open('link')
|
||||
out.element('name', data='generated')
|
||||
out.element('name', data='gensrc')
|
||||
out.element('type', data='2')
|
||||
generated = join(_get_hotspot_build_dir(jvmVariant, debugLevel), 'generated')
|
||||
generated = join(_get_hotspot_build_dir(jvmVariant, debugLevel), 'gensrc')
|
||||
out.element('locationURI', data=mx.get_eclipse_project_rel_locationURI(generated, eclProjectDir))
|
||||
out.close('link')
|
||||
|
||||
@ -620,18 +620,12 @@ _jvmci_bootclasspath_prepends = []
|
||||
def _get_hotspot_build_dir(jvmVariant=None, debugLevel=None):
|
||||
"""
|
||||
Gets the directory in which a particular HotSpot configuration is built
|
||||
(e.g., <JDK_REPO_ROOT>/build/macosx-x86_64-normal-server-release/hotspot/bsd_amd64_compiler2)
|
||||
(e.g., <JDK_REPO_ROOT>/build/macosx-x86_64-normal-server-release/hotspot/variant-<variant>)
|
||||
"""
|
||||
if jvmVariant is None:
|
||||
jvmVariant = _vm.jvmVariant
|
||||
|
||||
os = mx.get_os()
|
||||
if os == 'darwin':
|
||||
os = 'bsd'
|
||||
arch = mx.get_arch()
|
||||
buildname = {'client': 'compiler1', 'server': 'compiler2'}.get(jvmVariant, jvmVariant)
|
||||
|
||||
name = '{}_{}_{}'.format(os, arch, buildname)
|
||||
name = 'variant-{}'.format(jvmVariant)
|
||||
return join(_get_jdk_build_dir(debugLevel=debugLevel), 'hotspot', name)
|
||||
|
||||
class JVMCI9JDKConfig(mx.JDKConfig):
|
||||
|
@ -4134,28 +4134,33 @@ void MacroAssembler::vabsss(XMMRegister dst, XMMRegister nds, XMMRegister src, A
|
||||
if ((dst_enc < 16) && (nds_enc < 16)) {
|
||||
vandps(dst, nds, negate_field, vector_len);
|
||||
} else if ((src_enc < 16) && (dst_enc < 16)) {
|
||||
movss(src, nds);
|
||||
evmovdqul(src, nds, Assembler::AVX_512bit);
|
||||
vandps(dst, src, negate_field, vector_len);
|
||||
} else if (src_enc < 16) {
|
||||
movss(src, nds);
|
||||
evmovdqul(src, nds, Assembler::AVX_512bit);
|
||||
vandps(src, src, negate_field, vector_len);
|
||||
movss(dst, src);
|
||||
evmovdqul(dst, src, Assembler::AVX_512bit);
|
||||
} else if (dst_enc < 16) {
|
||||
movdqu(src, xmm0);
|
||||
movss(xmm0, nds);
|
||||
evmovdqul(src, xmm0, Assembler::AVX_512bit);
|
||||
evmovdqul(xmm0, nds, Assembler::AVX_512bit);
|
||||
vandps(dst, xmm0, negate_field, vector_len);
|
||||
movdqu(xmm0, src);
|
||||
} else if (nds_enc < 16) {
|
||||
movdqu(src, xmm0);
|
||||
vandps(xmm0, nds, negate_field, vector_len);
|
||||
movss(dst, xmm0);
|
||||
movdqu(xmm0, src);
|
||||
evmovdqul(xmm0, src, Assembler::AVX_512bit);
|
||||
} else {
|
||||
movdqu(src, xmm0);
|
||||
movss(xmm0, nds);
|
||||
vandps(xmm0, xmm0, negate_field, vector_len);
|
||||
movss(dst, xmm0);
|
||||
movdqu(xmm0, src);
|
||||
if (src_enc != dst_enc) {
|
||||
evmovdqul(src, xmm0, Assembler::AVX_512bit);
|
||||
evmovdqul(xmm0, nds, Assembler::AVX_512bit);
|
||||
vandps(xmm0, xmm0, negate_field, vector_len);
|
||||
evmovdqul(dst, xmm0, Assembler::AVX_512bit);
|
||||
evmovdqul(xmm0, src, Assembler::AVX_512bit);
|
||||
} else {
|
||||
subptr(rsp, 64);
|
||||
evmovdqul(Address(rsp, 0), xmm0, Assembler::AVX_512bit);
|
||||
evmovdqul(xmm0, nds, Assembler::AVX_512bit);
|
||||
vandps(xmm0, xmm0, negate_field, vector_len);
|
||||
evmovdqul(dst, xmm0, Assembler::AVX_512bit);
|
||||
evmovdqul(xmm0, Address(rsp, 0), Assembler::AVX_512bit);
|
||||
addptr(rsp, 64);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -4166,28 +4171,33 @@ void MacroAssembler::vabssd(XMMRegister dst, XMMRegister nds, XMMRegister src, A
|
||||
if ((dst_enc < 16) && (nds_enc < 16)) {
|
||||
vandpd(dst, nds, negate_field, vector_len);
|
||||
} else if ((src_enc < 16) && (dst_enc < 16)) {
|
||||
movsd(src, nds);
|
||||
evmovdqul(src, nds, Assembler::AVX_512bit);
|
||||
vandpd(dst, src, negate_field, vector_len);
|
||||
} else if (src_enc < 16) {
|
||||
movsd(src, nds);
|
||||
evmovdqul(src, nds, Assembler::AVX_512bit);
|
||||
vandpd(src, src, negate_field, vector_len);
|
||||
movsd(dst, src);
|
||||
evmovdqul(dst, src, Assembler::AVX_512bit);
|
||||
} else if (dst_enc < 16) {
|
||||
movdqu(src, xmm0);
|
||||
movsd(xmm0, nds);
|
||||
evmovdqul(src, xmm0, Assembler::AVX_512bit);
|
||||
evmovdqul(xmm0, nds, Assembler::AVX_512bit);
|
||||
vandpd(dst, xmm0, negate_field, vector_len);
|
||||
movdqu(xmm0, src);
|
||||
} else if (nds_enc < 16) {
|
||||
movdqu(src, xmm0);
|
||||
vandpd(xmm0, nds, negate_field, vector_len);
|
||||
movsd(dst, xmm0);
|
||||
movdqu(xmm0, src);
|
||||
evmovdqul(xmm0, src, Assembler::AVX_512bit);
|
||||
} else {
|
||||
movdqu(src, xmm0);
|
||||
movsd(xmm0, nds);
|
||||
vandpd(xmm0, xmm0, negate_field, vector_len);
|
||||
movsd(dst, xmm0);
|
||||
movdqu(xmm0, src);
|
||||
if (src_enc != dst_enc) {
|
||||
evmovdqul(src, xmm0, Assembler::AVX_512bit);
|
||||
evmovdqul(xmm0, nds, Assembler::AVX_512bit);
|
||||
vandpd(xmm0, xmm0, negate_field, vector_len);
|
||||
evmovdqul(dst, xmm0, Assembler::AVX_512bit);
|
||||
evmovdqul(xmm0, src, Assembler::AVX_512bit);
|
||||
} else {
|
||||
subptr(rsp, 64);
|
||||
evmovdqul(Address(rsp, 0), xmm0, Assembler::AVX_512bit);
|
||||
evmovdqul(xmm0, nds, Assembler::AVX_512bit);
|
||||
vandpd(xmm0, xmm0, negate_field, vector_len);
|
||||
evmovdqul(dst, xmm0, Assembler::AVX_512bit);
|
||||
evmovdqul(xmm0, Address(rsp, 0), Assembler::AVX_512bit);
|
||||
addptr(rsp, 64);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -4934,6 +4944,24 @@ void MacroAssembler::punpcklbw(XMMRegister dst, XMMRegister src) {
|
||||
}
|
||||
}
|
||||
|
||||
void MacroAssembler::pshufd(XMMRegister dst, Address src, int mode) {
|
||||
if (VM_Version::supports_avx512vl()) {
|
||||
Assembler::pshufd(dst, src, mode);
|
||||
} else {
|
||||
int dst_enc = dst->encoding();
|
||||
if (dst_enc < 16) {
|
||||
Assembler::pshufd(dst, src, mode);
|
||||
} else {
|
||||
subptr(rsp, 64);
|
||||
evmovdqul(Address(rsp, 0), xmm0, Assembler::AVX_512bit);
|
||||
Assembler::pshufd(xmm0, src, mode);
|
||||
evmovdqul(dst, xmm0, Assembler::AVX_512bit);
|
||||
evmovdqul(xmm0, Address(rsp, 0), Assembler::AVX_512bit);
|
||||
addptr(rsp, 64);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// This instruction exists within macros, ergo we cannot control its input
|
||||
// when emitted through those patterns.
|
||||
void MacroAssembler::pshuflw(XMMRegister dst, XMMRegister src, int mode) {
|
||||
|
@ -1232,6 +1232,9 @@ public:
|
||||
void punpcklbw(XMMRegister dst, XMMRegister src);
|
||||
void punpcklbw(XMMRegister dst, Address src) { Assembler::punpcklbw(dst, src); }
|
||||
|
||||
void pshufd(XMMRegister dst, Address src, int mode);
|
||||
void pshufd(XMMRegister dst, XMMRegister src, int mode) { Assembler::pshufd(dst, src, mode); }
|
||||
|
||||
void pshuflw(XMMRegister dst, XMMRegister src, int mode);
|
||||
void pshuflw(XMMRegister dst, Address src, int mode) { Assembler::pshuflw(dst, src, mode); }
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2017, 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
|
||||
@ -23,6 +23,12 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Defines the implementation of the HotSpot Serviceability Agent.
|
||||
*
|
||||
* @moduleGraph
|
||||
* @since 9
|
||||
*/
|
||||
module jdk.hotspot.agent {
|
||||
requires java.datatransfer;
|
||||
requires java.desktop;
|
||||
|
@ -407,8 +407,12 @@ void ConstMethod::print_on(outputStream* st) const {
|
||||
ResourceMark rm;
|
||||
assert(is_constMethod(), "must be constMethod");
|
||||
st->print_cr("%s", internal_name());
|
||||
st->print(" - method: " INTPTR_FORMAT " ", p2i((address)method()));
|
||||
method()->print_value_on(st); st->cr();
|
||||
Method* m = method();
|
||||
st->print(" - method: " INTPTR_FORMAT " ", p2i((address)m));
|
||||
if (m != NULL) {
|
||||
m->print_value_on(st);
|
||||
}
|
||||
st->cr();
|
||||
if (has_stackmap_table()) {
|
||||
st->print(" - stackmap data: ");
|
||||
stackmap_data()->print_value_on(st);
|
||||
@ -421,7 +425,12 @@ void ConstMethod::print_on(outputStream* st) const {
|
||||
void ConstMethod::print_value_on(outputStream* st) const {
|
||||
assert(is_constMethod(), "must be constMethod");
|
||||
st->print(" const part of method " );
|
||||
method()->print_value_on(st);
|
||||
Method* m = method();
|
||||
if (m != NULL) {
|
||||
m->print_value_on(st);
|
||||
} else {
|
||||
st->print("NULL");
|
||||
}
|
||||
}
|
||||
|
||||
#if INCLUDE_SERVICES
|
||||
@ -461,7 +470,7 @@ void ConstMethod::verify_on(outputStream* st) {
|
||||
|
||||
// Verification can occur during oop construction before the method or
|
||||
// other fields have been initialized.
|
||||
guarantee(method()->is_method(), "should be method");
|
||||
guarantee(method() != NULL && method()->is_method(), "should be method");
|
||||
|
||||
address m_end = (address)((intptr_t) this + size());
|
||||
address compressed_table_start = code_end();
|
||||
|
@ -1000,7 +1000,7 @@ Node *Matcher::xform( Node *n, int max_stack ) {
|
||||
if (C->failing()) return NULL;
|
||||
if (m == NULL) { Matcher::soft_match_failure(); return NULL; }
|
||||
} else { // Nothing the matcher cares about
|
||||
if( n->is_Proj() && n->in(0)->is_Multi()) { // Projections?
|
||||
if (n->is_Proj() && n->in(0) != NULL && n->in(0)->is_Multi()) { // Projections?
|
||||
// Convert to machine-dependent projection
|
||||
m = n->in(0)->as_Multi()->match( n->as_Proj(), this );
|
||||
#ifdef ASSERT
|
||||
@ -1645,6 +1645,7 @@ MachNode *Matcher::ReduceInst( State *s, int rule, Node *&mem ) {
|
||||
|
||||
// Build the object to represent this state & prepare for recursive calls
|
||||
MachNode *mach = s->MachNodeGenerator(rule);
|
||||
guarantee(mach != NULL, "Missing MachNode");
|
||||
mach->_opnds[0] = s->MachOperGenerator(_reduceOp[rule]);
|
||||
assert( mach->_opnds[0] != NULL, "Missing result operand" );
|
||||
Node *leaf = s->_leaf;
|
||||
|
@ -1123,6 +1123,9 @@ Node* LoadNode::Identity(PhaseGVN* phase) {
|
||||
// Use _idx of address base (could be Phi node) for boxed values.
|
||||
intptr_t ignore = 0;
|
||||
Node* base = AddPNode::Ideal_base_and_offset(in(Address), phase, ignore);
|
||||
if (base == NULL) {
|
||||
return this;
|
||||
}
|
||||
this_iid = base->_idx;
|
||||
}
|
||||
const Type* this_type = bottom_type();
|
||||
@ -3947,9 +3950,10 @@ Node* InitializeNode::complete_stores(Node* rawctl, Node* rawmem, Node* rawptr,
|
||||
// if it is the last unused 4 bytes of an instance, forget about it
|
||||
intptr_t size_limit = phase->find_intptr_t_con(size_in_bytes, max_jint);
|
||||
if (zeroes_done + BytesPerLong >= size_limit) {
|
||||
assert(allocation() != NULL, "");
|
||||
if (allocation()->Opcode() == Op_Allocate) {
|
||||
Node* klass_node = allocation()->in(AllocateNode::KlassNode);
|
||||
AllocateNode* alloc = allocation();
|
||||
assert(alloc != NULL, "must be present");
|
||||
if (alloc != NULL && alloc->Opcode() == Op_Allocate) {
|
||||
Node* klass_node = alloc->in(AllocateNode::KlassNode);
|
||||
ciKlass* k = phase->type(klass_node)->is_klassptr()->klass();
|
||||
if (zeroes_done == k->layout_helper())
|
||||
zeroes_done = size_limit;
|
||||
|
@ -64,14 +64,14 @@ gc/g1/logging/TestG1LoggingFailure.java 8169634 generic-all
|
||||
runtime/CompressedOops/UseCompressedOops.java 8079353 generic-all
|
||||
# This test is disabled since it will stress NMT and timeout during normal testing
|
||||
runtime/NMT/MallocStressTest.java 8166548 generic-all
|
||||
runtime/SharedArchiveFile/BootAppendTests.java 8150683 generic-all
|
||||
runtime/SharedArchiveFile/BootAppendTests.java 8179103 generic-all
|
||||
runtime/SharedArchiveFile/DefaultUseWithClient.java 8154204 generic-all
|
||||
|
||||
#############################################################################
|
||||
|
||||
# :hotspot_serviceability
|
||||
|
||||
serviceability/jdwp/AllModulesCommandTest.java 8168478 generic-all
|
||||
serviceability/jdwp/AllModulesCommandTest.java 8170541 generic-all
|
||||
serviceability/sa/sadebugd/SADebugDTest.java 8163805 generic-all
|
||||
serviceability/jvmti/ModuleAwareAgents/ClassFileLoadHook/MAAClassFileLoadHook.java 8173936 generic-all
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
||||
|
||||
package compiler.codecache.stress;
|
||||
|
||||
import jdk.test.lib.wrappers.TimeLimitedRunner;
|
||||
import jdk.test.lib.TimeLimitedRunner;
|
||||
import jdk.test.lib.Utils;
|
||||
|
||||
public class CodeCacheStressRunner {
|
||||
|
@ -25,7 +25,7 @@ package compiler.codecache.stress;
|
||||
|
||||
import jdk.test.lib.Asserts;
|
||||
import jdk.test.lib.ByteCodeLoader;
|
||||
import jdk.test.lib.wrappers.InfiniteLoop;
|
||||
import jdk.test.lib.InfiniteLoop;
|
||||
import jdk.test.lib.Utils;
|
||||
import sun.hotspot.WhiteBox;
|
||||
|
||||
|
@ -29,7 +29,7 @@ import compiler.compilercontrol.share.method.MethodDescriptor;
|
||||
import compiler.compilercontrol.share.pool.PoolHelper;
|
||||
import compiler.compilercontrol.share.scenario.Executor;
|
||||
import jdk.test.lib.process.OutputAnalyzer;
|
||||
import jdk.test.lib.wrappers.TimeLimitedRunner;
|
||||
import jdk.test.lib.TimeLimitedRunner;
|
||||
import jdk.test.lib.Utils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -44,7 +44,7 @@
|
||||
package compiler.whitebox;
|
||||
|
||||
import jdk.test.lib.Asserts;
|
||||
import jdk.test.lib.wrappers.InfiniteLoop;
|
||||
import jdk.test.lib.InfiniteLoop;
|
||||
import sun.hotspot.WhiteBox;
|
||||
import sun.hotspot.code.BlobType;
|
||||
|
||||
|
@ -32,7 +32,6 @@ import static jdk.test.lib.Asserts.assertTrue;
|
||||
* @test
|
||||
* @summary Tests the modules-related JDWP commands
|
||||
* @library /test/lib
|
||||
* @ignore 8170541
|
||||
* @modules jdk.jdwp.agent
|
||||
* @modules java.base/jdk.internal.misc
|
||||
* @compile AllModulesCommandTestDebuggee.java
|
||||
|
@ -422,3 +422,5 @@ e78da9db6299b3fcba49300d52e2359e82fdd218 jdk-9+168
|
||||
ef9954f6896bb0b95ac62bf769f68b59a7a56ccd jdk-9+170
|
||||
cbd65760a005766610583949b3b5c9ace92e74b3 jdk-10+7
|
||||
f0adc10ed8316e6cf316e3208c5ecf6835d22bc4 jdk-10+8
|
||||
b9409a7daa6c793dd631e52fe6ef79d08a3b337a jdk-10+9
|
||||
29bbedd4cce8e14742bdb22118c057b877c02f0f jdk-9+171
|
||||
|
@ -116,11 +116,11 @@ caption {
|
||||
margin-bottom:10px;
|
||||
}
|
||||
|
||||
tr:nth-child(even) {
|
||||
tr:nth-child(even), tr:nth-child(even) th[scope=row] {
|
||||
background: #DDD;
|
||||
}
|
||||
|
||||
tr:nth-child(odd) {
|
||||
tr:nth-child(odd), tr:nth-child(odd) th[scope=row] {
|
||||
background: #FFF;
|
||||
}
|
||||
|
@ -31,18 +31,23 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.PrintWriter;
|
||||
import java.lang.module.ModuleDescriptor;
|
||||
import java.lang.module.ModuleFinder;
|
||||
import java.lang.module.ModuleReference;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Stream;
|
||||
import static java.util.stream.Collectors.*;
|
||||
|
||||
/**
|
||||
* Build tool to generate the docs bundle index page.
|
||||
@ -104,59 +109,33 @@ public class GenDocsBundlePage {
|
||||
}
|
||||
|
||||
private static final String HEADER_TITLE = "@HEADER_TITLE@";
|
||||
|
||||
|
||||
final Path outputfile;
|
||||
final String title;
|
||||
final Map<String, String> moduleGroups;
|
||||
|
||||
final Map<String, Set<ModuleDescriptor>> moduleGroups = new HashMap<>();
|
||||
GenDocsBundlePage(String title, Path outputfile) throws IOException
|
||||
{
|
||||
this.outputfile = outputfile;
|
||||
this.title = title;
|
||||
this.moduleGroups = moduleGroups();
|
||||
}
|
||||
|
||||
static Map<String, String> moduleGroups() throws IOException {
|
||||
// read module groups
|
||||
ModuleFinder finder = ModuleFinder.ofSystem();
|
||||
Map<String, String> groups = new HashMap<>();
|
||||
try (InputStream in = GenDocsBundlePage.class.getResourceAsStream(MODULE_GROUPS_PROPS)) {
|
||||
Properties props = new Properties();
|
||||
props.load(in);
|
||||
for (String key: props.stringPropertyNames()) {
|
||||
Set<String> mods = Stream.of(props.getProperty(key).split("\\s+"))
|
||||
.filter(mn -> finder.find(mn).isPresent())
|
||||
.map(String::trim)
|
||||
.collect(Collectors.toSet());
|
||||
Set<ModuleDescriptor> mods =
|
||||
Stream.of(props.getProperty(key).split("\\s+"))
|
||||
.map(String::trim)
|
||||
.flatMap(mn -> finder.find(mn).stream())
|
||||
.map(ModuleReference::descriptor)
|
||||
.collect(toSet());
|
||||
|
||||
// divide into 3 columns: Java SE, JDK, JavaFX
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(mods.stream()
|
||||
.filter(mn -> mn.startsWith("java."))
|
||||
.sorted()
|
||||
.map(GenDocsBundlePage::toHRef)
|
||||
.collect(Collectors.joining("\n")));
|
||||
sb.append("</td>\n<td>")
|
||||
.append(mods.stream()
|
||||
.filter(mn -> mn.startsWith("jdk."))
|
||||
.sorted()
|
||||
.map(GenDocsBundlePage::toHRef)
|
||||
.collect(Collectors.joining("\n")));
|
||||
sb.append("</td>\n<td>");
|
||||
if (mods.stream().anyMatch(mn -> mn.startsWith("javafx."))) {
|
||||
sb.append(mods.stream()
|
||||
.filter(mn -> mn.startsWith("javafx."))
|
||||
.sorted()
|
||||
.map(GenDocsBundlePage::toHRef)
|
||||
.collect(Collectors.joining("\n")));
|
||||
}
|
||||
String name = "@" + key.toUpperCase(Locale.ENGLISH) + "@";
|
||||
groups.put(name, sb.toString());
|
||||
}
|
||||
moduleGroups.put(name, mods);
|
||||
};
|
||||
}
|
||||
return groups;
|
||||
}
|
||||
|
||||
static String toHRef(String mn) {
|
||||
return String.format("<a href=\"api/%s-summary.html\">%s</a><br>", mn, mn);
|
||||
}
|
||||
|
||||
void run(BufferedReader reader) throws IOException {
|
||||
@ -174,13 +153,95 @@ public class GenDocsBundlePage {
|
||||
if (line.contains(HEADER_TITLE)) {
|
||||
line = line.replace(HEADER_TITLE, title);
|
||||
}
|
||||
if (line.contains("@")) {
|
||||
for (Map.Entry<String,String> e: moduleGroups.entrySet()) {
|
||||
if (line.contains(e.getKey())) {
|
||||
line = line.replace(e.getKey(), e.getValue());
|
||||
}
|
||||
int i = line.indexOf('@');
|
||||
int j = line.indexOf('@', i+1);
|
||||
if (i >= 0 && i < j) {
|
||||
String name = line.substring(i, j+1);
|
||||
if (moduleGroups.containsKey(name)) {
|
||||
line = line.replace(name, formatModuleGroup(name));
|
||||
}
|
||||
}
|
||||
return line;
|
||||
}
|
||||
|
||||
String toHRef(ModuleDescriptor md) {
|
||||
String mn = md.name();
|
||||
String formattedName;
|
||||
if (hasExportedAPIs(md)) {
|
||||
// has exported APIs
|
||||
formattedName = mn;
|
||||
} else if (!md.provides().isEmpty()) {
|
||||
// a provider
|
||||
formattedName = "<i>" + mn + "</i>";
|
||||
} else {
|
||||
// a tool
|
||||
formattedName = "<i>" + mn + "</i>";
|
||||
}
|
||||
return String.format("<a href=\"api/%s-summary.html\">%s</a>",
|
||||
mn, formattedName);
|
||||
}
|
||||
|
||||
String formatModuleGroup(String groupName) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
// organize in Java SE, JDK, JavaFX, JCP groups
|
||||
Set<ModuleDescriptor> modules = moduleGroups.get(groupName);
|
||||
Arrays.stream(ModuleGroup.values())
|
||||
.forEach(g -> {
|
||||
Set<ModuleDescriptor> mods = modules.stream()
|
||||
.filter(md -> g.predicate.test(md.name()))
|
||||
.collect(toSet());
|
||||
if (!mods.isEmpty()) {
|
||||
sb.append("<div class=" + g.cssClass + ">\n");
|
||||
// modules with exported API
|
||||
mods.stream()
|
||||
.filter(this::hasExportedAPIs)
|
||||
.sorted(Comparator.comparing(ModuleDescriptor::name))
|
||||
.map(this::toHRef)
|
||||
.forEach(m -> sb.append(m).append("\n"));
|
||||
|
||||
// tools and providers
|
||||
mods.stream()
|
||||
.filter(md -> !hasExportedAPIs(md))
|
||||
.sorted(Comparator.comparing(ModuleDescriptor::name))
|
||||
.map(this::toHRef)
|
||||
.forEach(m -> sb.append(m).append("\n"));
|
||||
sb.append("</div>");
|
||||
}
|
||||
});
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private boolean hasExportedAPIs(ModuleDescriptor md) {
|
||||
if (md.exports().stream().anyMatch(e -> !e.isQualified())) {
|
||||
return true;
|
||||
}
|
||||
// this should check if any indirect exports
|
||||
// checking requires transitive would be sufficient for JDK modules
|
||||
if (md.requires().stream()
|
||||
.map(ModuleDescriptor.Requires::modifiers)
|
||||
.anyMatch(mods -> mods.contains(ModuleDescriptor.Requires.Modifier.TRANSITIVE))) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static final Set<String> NON_JAVA_SE_MODULES =
|
||||
Set.of("java.jnlp", "java.smartcardio");
|
||||
|
||||
/**
|
||||
* CSS class names are defined in docs-bundle-page.html
|
||||
*/
|
||||
enum ModuleGroup {
|
||||
JAVA_SE("javase", mn -> mn.startsWith("java.") && !NON_JAVA_SE_MODULES.contains(mn)),
|
||||
JDK("jdk", mn -> mn.startsWith("jdk.")),
|
||||
JAVAFX("javafx", mn -> mn.startsWith("javafx.")),
|
||||
NON_JAVA_SE("jcp", NON_JAVA_SE_MODULES::contains);
|
||||
|
||||
final String cssClass;
|
||||
final Predicate<String> predicate;
|
||||
ModuleGroup(String cssClass, Predicate<String> predicate) {
|
||||
this.cssClass = cssClass;
|
||||
this.predicate = predicate;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -26,121 +26,146 @@ questions.
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;" charset="utf-8">
|
||||
<style type="text/css">
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
table {
|
||||
border: 1px solid black;
|
||||
}
|
||||
th ,td {
|
||||
border: 0px solid black;
|
||||
}
|
||||
thead th {
|
||||
background-color: #DDD;
|
||||
}
|
||||
tbody > tr:nth-child(even) {
|
||||
background-color: #EEE
|
||||
}
|
||||
tbody > tr:nth-child(odd) {
|
||||
background-color: #FFF
|
||||
}
|
||||
th, td {
|
||||
font-family: sans-serif; /* could eventually be DejaVu */
|
||||
font-size: small;
|
||||
padding: 5px 10px;
|
||||
vertical-align:top;
|
||||
}
|
||||
td a {
|
||||
text-decoration: none;
|
||||
}
|
||||
tr th {
|
||||
text-align:left;
|
||||
}
|
||||
caption {
|
||||
font-size: smaller;
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
<title>@HEADER_TITLE@</title>
|
||||
|
||||
<meta http-equiv="content-type" content="text/html;" charset="utf-8">
|
||||
<link rel="stylesheet" href="resources/jdk-default.css" type="text/css" />
|
||||
<style type="text/css">
|
||||
|
||||
table a { text-decoration: none }
|
||||
table { border: none }
|
||||
th, td { border: 2px solid white; }
|
||||
thead th { background-color: #DDD }
|
||||
tbody th { background-color: #EEE }
|
||||
|
||||
table div.javase, ul.key span.javase { background-color: #C6E7F3 }
|
||||
table div.jdk, ul.key span.jdk { background-color: #ECE1C5 }
|
||||
table div.javafx, ul.key span.javafx { background-color: #ECEDCC }
|
||||
table div.jcp, ul.key span.jcp { background-color: #E9E9E9 }
|
||||
td div { padding: 3px 5px; color: blue }
|
||||
table tbody td div a { padding: 0 .5em; margin: 0: 1em; }
|
||||
table tbody td div a:link { color: black }
|
||||
table tbody td div a:visited { color: black }
|
||||
table tbody td div a[href]:hover { color: black; text-decoration: underline }
|
||||
td { padding: 0 }
|
||||
table tbody td div a { padding: 0 .5em; margin: 0: 1em }
|
||||
|
||||
.key { font-size: smaller; }
|
||||
ul.key li { display:inline-block; padding: 0 1em }
|
||||
ul.key span {
|
||||
border: 1px solid black;
|
||||
font-family: DejaVu Sans Mono, monospace;
|
||||
}
|
||||
ul.key span:before { content: " " }
|
||||
ul.key span:after { content: " " }
|
||||
|
||||
caption {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
tr:nth-child(even), tr:nth-child(even) th[scope=row] {
|
||||
background-color: #EEE;
|
||||
}
|
||||
tr:nth-child(odd), tr:nth-child(odd) th[scope=row] {
|
||||
background-color: #EEE;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>@HEADER_TITLE@</h1>
|
||||
|
||||
<ul>
|
||||
<li><a href="api/index.html">JDK API Specification</a></li>
|
||||
<li>Java Language Specification</li>
|
||||
<li>Java Virtual Machine Specification</li>
|
||||
<li><a href="https://docs.oracle.com/javase/specs/">
|
||||
Java Language and Virtual Machine Specifications</a></li>
|
||||
<li><a href="https://www.oracle.com/pls/topic/lookup?ctx=javase9&id=tools_reference_overview">
|
||||
Tools Reference</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
<table>
|
||||
<caption>Modules</caption>
|
||||
<caption style="display:none">JDK Modules</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Group</th>
|
||||
<th scope="col">Java SE</th>
|
||||
<th scope="col">JDK</th>
|
||||
<th scope="col">JavaFX</th>
|
||||
<th scope="col">Modules</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">Foundation</th>
|
||||
<td>@CORE_MODULES@</td>
|
||||
<td>@JAVA_BASE@</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Security</th>
|
||||
<td>@SECURITY_MODULES@</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Instrumentation and<br>Management</th>
|
||||
<td>@INSTRUMENT_MGMT_MODULES@</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Integration</th>
|
||||
<th scope="row">Integration</th>
|
||||
<td>@INTEGRATION_MODULES@</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">User Interface</th>
|
||||
<td>@UI_TOOLKITS_MODULES@</td>
|
||||
<td>@UI_MODULES@</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Compiler and Scripting</th>
|
||||
<td>@COMPILER_SCRIPTING_MODULES@</td>
|
||||
<th scope="row">Compilation</th>
|
||||
<td>@COMPILER_MODULES@</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Debugging</th>
|
||||
<td>@DEBUG_MODULES@</td>
|
||||
<th scope="row">Scripting</th>
|
||||
<td>@SCRIPTING_MODULES@</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Tools and Tool APIs</th>
|
||||
<td>@TOOL_MODULES@</td>
|
||||
<th scope="row">Security</th>
|
||||
<td>@SECURITY_MODULES@</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Incubating Features</th>
|
||||
<th scope="row">Management</th>
|
||||
<td>@MANAGEMENT_MODULES@</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Instrumentation</th>
|
||||
<td>@INSTRUMENT_MODULES@</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Serviceability</th>
|
||||
<td>@SVC_MODULES@</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Packaging</th>
|
||||
<td>@PACKAGING_MODULES@</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Incubator</th>
|
||||
<td>@INCUBATOR_MODULES@</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Non-Java SE</th>
|
||||
<td>@OTHER_MODULES@</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Java EE</th>
|
||||
<td>@JAVA_EE_MODULES@</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"></th>
|
||||
<th scope="row">Outside Java SE</th>
|
||||
<th scope="row">JDK</th>
|
||||
<th scope="row">JavaFX</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Others</th>
|
||||
<td>@OTHER_MODULES@</td>
|
||||
<th scope="row">Aggregator</th>
|
||||
<td>@AGGREGATOR_MODULES@</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p class="key">Key:
|
||||
<ul class="key">
|
||||
<li><span class="javase"> </span> Java SE
|
||||
<li><span class="jdk"> </span> JDK
|
||||
<li><span class="javafx"> </span> JavaFX
|
||||
<li><span class="jcp"> </span> Non-Java SE
|
||||
<li><i>italic</i> No Exported API (e.g. a tool or provider)</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
<hr/>
|
||||
<a href="legal/cpyr.html">Copyright</a>© 1993, 2017, Oracle and/or its affiliates. All rights reserved.</p>
|
||||
<hr>
|
||||
<a href="legal/cpyr.html">Copyright</a> © 1993, 2017, Oracle and/or its affiliates. All rights reserved.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
@ -1,13 +1,8 @@
|
||||
# Module Grouping for the docs bundle page
|
||||
#
|
||||
|
||||
core_modules=\
|
||||
java.base \
|
||||
jdk.charsets \
|
||||
jdk.localedata \
|
||||
jdk.net \
|
||||
jdk.sctp \
|
||||
jdk.zipfs
|
||||
java_base=\
|
||||
java.base
|
||||
|
||||
java_ee_modules=\
|
||||
java.activation \
|
||||
@ -17,6 +12,10 @@ java.xml.bind \
|
||||
java.xml.ws \
|
||||
java.xml.ws.annotation
|
||||
|
||||
aggregator_modules=\
|
||||
java.se \
|
||||
java.se.ee
|
||||
|
||||
security_modules=\
|
||||
java.security.jgss \
|
||||
java.security.sasl \
|
||||
@ -26,18 +25,22 @@ jdk.security.jgss \
|
||||
jdk.crypto.cryptoki \
|
||||
jdk.crypto.ec \
|
||||
jdk.crypto.mscapi \
|
||||
jdk.crypto.ucrypto
|
||||
jdk.crypto.ucrypto \
|
||||
jdk.policytool
|
||||
|
||||
instrument_mgmt_modules=\
|
||||
java.instrument \
|
||||
instrument_modules=\
|
||||
java.instrument
|
||||
|
||||
management_modules=\
|
||||
java.management \
|
||||
java.management.rmi \
|
||||
jdk.jfr \
|
||||
jdk.management \
|
||||
jdk.management.agent \
|
||||
jdk.management.cmm \
|
||||
jdk.management.jfr \
|
||||
jdk.management.resource \
|
||||
jdk.snmp \
|
||||
jdk.jconsole
|
||||
|
||||
integration_modules=\
|
||||
java.logging \
|
||||
@ -47,11 +50,18 @@ java.rmi \
|
||||
java.sql \
|
||||
java.sql.rowset \
|
||||
java.xml \
|
||||
jdk.charsets \
|
||||
jdk.localedata \
|
||||
jdk.net \
|
||||
jdk.sctp \
|
||||
jdk.jsobject \
|
||||
jdk.httpserver \
|
||||
jdk.naming.dns \
|
||||
jdk.naming.rmi
|
||||
jdk.naming.rmi \
|
||||
jdk.xml.dom \
|
||||
jdk.zipfs
|
||||
|
||||
ui_toolkits_modules=\
|
||||
ui_modules=\
|
||||
java.datatransfer \
|
||||
java.desktop \
|
||||
javafx.base \
|
||||
@ -63,39 +73,40 @@ javafx.swing \
|
||||
javafx.web \
|
||||
jdk.accessibility
|
||||
|
||||
other_modules=\
|
||||
java.jnlp \
|
||||
java.smartcardio \
|
||||
jdk.jsobject \
|
||||
jdk.xml.dom
|
||||
|
||||
debug_modules=\
|
||||
jdk.jdi \
|
||||
jdk.jdwp.agent
|
||||
|
||||
tool_modules=\
|
||||
svc_modules=\
|
||||
jdk.jfr \
|
||||
jdk.attach \
|
||||
jdk.editpad \
|
||||
jdk.jartool \
|
||||
jdk.javadoc \
|
||||
jdk.jcmd \
|
||||
jdk.jconsole \
|
||||
jdk.jdeps \
|
||||
jdk.jlink \
|
||||
jdk.jshell \
|
||||
jdk.jdi \
|
||||
jdk.jdwp.agent \
|
||||
jdk.jstatd \
|
||||
jdk.hotspot.agent
|
||||
|
||||
packaging_modules=\
|
||||
jdk.jartool \
|
||||
jdk.jlink \
|
||||
jdk.pack \
|
||||
jdk.policytool \
|
||||
jdk.packager.services \
|
||||
jdk.packager.services
|
||||
|
||||
compiler_modules=\
|
||||
java.compiler \
|
||||
jdk.compiler \
|
||||
jdk.javadoc \
|
||||
jdk.jdeps \
|
||||
jdk.editpad \
|
||||
jdk.jshell \
|
||||
jdk.rmic
|
||||
|
||||
compiler_scripting_modules=\
|
||||
java.compiler \
|
||||
scripting_modules=\
|
||||
java.scripting \
|
||||
jdk.compiler \
|
||||
jdk.dynalink \
|
||||
jdk.scripting.nashorn \
|
||||
jdk.scripting.nashorn.shell
|
||||
|
||||
other_modules=\
|
||||
java.jnlp \
|
||||
java.smartcardio
|
||||
|
||||
incubator_modules=\
|
||||
jdk.incubator.httpclient
|
||||
|
||||
|
@ -56,7 +56,7 @@ public class ExtLink implements Taglet {
|
||||
|
||||
static final String TAG_NAME = "extLink";
|
||||
|
||||
static final String URL = "https://www.oracle.com/pls/topic/lookup?ctx=javase9&id=";
|
||||
static final String URL = "https://www.oracle.com/pls/topic/lookup?ctx=javase9&id=";
|
||||
|
||||
static final Pattern TAG_PATTERN = Pattern.compile("(\\s*)(?<name>\\w+)(\\s+)(?<desc>.*)");
|
||||
|
||||
|
@ -421,10 +421,8 @@ int NET_ReadV(int s, const struct iovec * vector, int count) {
|
||||
}
|
||||
|
||||
int NET_RecvFrom(int s, void *buf, int len, unsigned int flags,
|
||||
struct sockaddr *from, int *fromlen) {
|
||||
socklen_t socklen = *fromlen;
|
||||
BLOCKING_IO_RETURN_INT( s, recvfrom(s, buf, len, flags, from, &socklen) );
|
||||
*fromlen = socklen;
|
||||
struct sockaddr *from, socklen_t *fromlen) {
|
||||
BLOCKING_IO_RETURN_INT( s, recvfrom(s, buf, len, flags, from, fromlen) );
|
||||
}
|
||||
|
||||
int NET_Send(int s, void *msg, int len, unsigned int flags) {
|
||||
@ -440,10 +438,8 @@ int NET_SendTo(int s, const void *msg, int len, unsigned int
|
||||
BLOCKING_IO_RETURN_INT( s, sendto(s, msg, len, flags, to, tolen) );
|
||||
}
|
||||
|
||||
int NET_Accept(int s, struct sockaddr *addr, int *addrlen) {
|
||||
socklen_t socklen = *addrlen;
|
||||
BLOCKING_IO_RETURN_INT( s, accept(s, addr, &socklen) );
|
||||
*addrlen = socklen;
|
||||
int NET_Accept(int s, struct sockaddr *addr, socklen_t *addrlen) {
|
||||
BLOCKING_IO_RETURN_INT( s, accept(s, addr, addrlen) );
|
||||
}
|
||||
|
||||
int NET_Connect(int s, struct sockaddr *addr, int addrlen) {
|
||||
|
@ -923,6 +923,12 @@ public class File
|
||||
* java.nio.file.Files#readAttributes(Path,Class,LinkOption[])
|
||||
* Files.readAttributes} method may be used.
|
||||
*
|
||||
* @apiNote
|
||||
* While the unit of time of the return value is milliseconds,
|
||||
* the granularity of the value depends on the underlying
|
||||
* file system and may be larger. For example, some
|
||||
* file systems use time stamps in units of seconds.
|
||||
*
|
||||
* @return A <code>long</code> value representing the time the file was
|
||||
* last modified, measured in milliseconds since the epoch
|
||||
* (00:00:00 GMT, January 1, 1970), or <code>0L</code> if the
|
||||
|
@ -137,6 +137,7 @@ import sun.security.jca.*;
|
||||
* <li>{@code AES/CBC/PKCS5Padding} (128)</li>
|
||||
* <li>{@code AES/ECB/NoPadding} (128)</li>
|
||||
* <li>{@code AES/ECB/PKCS5Padding} (128)</li>
|
||||
* <li>{@code AES/GCM/NoPadding} (128)</li>
|
||||
* <li>{@code DES/CBC/NoPadding} (56)</li>
|
||||
* <li>{@code DES/CBC/PKCS5Padding} (56)</li>
|
||||
* <li>{@code DES/ECB/NoPadding} (56)</li>
|
||||
|
@ -363,10 +363,6 @@ public final class LauncherHelper {
|
||||
static void initHelpMessage(String progname) {
|
||||
outBuf = outBuf.append(getLocalizedMessage("java.launcher.opt.header",
|
||||
(progname == null) ? "java" : progname ));
|
||||
outBuf = outBuf.append(getLocalizedMessage("java.launcher.opt.datamodel",
|
||||
32));
|
||||
outBuf = outBuf.append(getLocalizedMessage("java.launcher.opt.datamodel",
|
||||
64));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -34,7 +34,6 @@ java.launcher.opt.header = Usage: {0} [options] <mainclass> [args...]\n\
|
||||
\ <module>/<mainclass> are passed as the arguments to main class.\n\n\
|
||||
\ where options include:\n\n
|
||||
|
||||
java.launcher.opt.datamodel =\ -d{0}\t Deprecated, will be removed in a future release\n
|
||||
java.launcher.opt.vmselect =\ {0}\t to select the "{1}" VM\n
|
||||
java.launcher.opt.hotspot =\ {0}\t is a synonym for the "{1}" VM [deprecated]\n
|
||||
|
||||
|
@ -456,6 +456,11 @@ jboolean JLI_AddArgsFromEnvVar(JLI_List args, const char *var_name) {
|
||||
env++;
|
||||
}
|
||||
|
||||
// Trailing space
|
||||
if (*env == '\0') {
|
||||
break;
|
||||
}
|
||||
|
||||
arg = p;
|
||||
while (*env != '\0' && !isspace(*env)) {
|
||||
if (*env == '"' || *env == '\'') {
|
||||
|
@ -36,7 +36,7 @@
|
||||
#define JNI_ERROR "Error: A JNI error has occurred, please check your installation and try again"
|
||||
#define JNI_ERROR1 "Error: can't find JNI interfaces in: %s"
|
||||
|
||||
#define ARG_INFO_ENVVAR "NOTE: Picked up the following options via %s:\n %s"
|
||||
#define ARG_INFO_ENVVAR "NOTE: Picked up %s: %s"
|
||||
#define ARG_WARN "Warning: %s option is no longer supported."
|
||||
|
||||
#define ARG_ERROR1 "Error: %s requires class path specification"
|
||||
|
@ -229,12 +229,15 @@ Java_java_io_UnixFileSystem_getLastModifiedTime(JNIEnv *env, jobject this,
|
||||
WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {
|
||||
struct stat64 sb;
|
||||
if (stat64(path, &sb) == 0) {
|
||||
#ifndef MACOSX
|
||||
rv = (jlong)sb.st_mtim.tv_sec * 1000;
|
||||
rv += (jlong)sb.st_mtim.tv_nsec / 1000000;
|
||||
#else
|
||||
#if defined(_AIX)
|
||||
rv = (jlong)sb.st_mtime * 1000;
|
||||
rv += (jlong)sb.st_mtime_n / 1000000;
|
||||
#elif defined(MACOSX)
|
||||
rv = (jlong)sb.st_mtimespec.tv_sec * 1000;
|
||||
rv += (jlong)sb.st_mtimespec.tv_nsec / 1000000;
|
||||
#else
|
||||
rv = (jlong)sb.st_mtim.tv_sec * 1000;
|
||||
rv += (jlong)sb.st_mtim.tv_nsec / 1000000;
|
||||
#endif
|
||||
}
|
||||
} END_PLATFORM_STRING(env, path);
|
||||
@ -419,14 +422,16 @@ Java_java_io_UnixFileSystem_setLastModifiedTime(JNIEnv *env, jobject this,
|
||||
struct timeval tv[2];
|
||||
|
||||
/* Preserve access time */
|
||||
#ifndef MACOSX
|
||||
tv[0].tv_sec = sb.st_atim.tv_sec;
|
||||
tv[0].tv_usec = sb.st_atim.tv_nsec / 1000;
|
||||
#else
|
||||
#if defined(_AIX)
|
||||
tv[0].tv_sec = sb.st_atime;
|
||||
tv[0].tv_usec = sb.st_atime_n / 1000;
|
||||
#elif defined(MACOSX)
|
||||
tv[0].tv_sec = sb.st_atimespec.tv_sec;
|
||||
tv[0].tv_usec = sb.st_atimespec.tv_nsec / 1000;
|
||||
#else
|
||||
tv[0].tv_sec = sb.st_atim.tv_sec;
|
||||
tv[0].tv_usec = sb.st_atim.tv_nsec / 1000;
|
||||
#endif
|
||||
|
||||
/* Change last-modified time */
|
||||
tv[1].tv_sec = time / 1000;
|
||||
tv[1].tv_usec = (time % 1000) * 1000;
|
||||
|
@ -160,7 +160,7 @@ class KrbAsRep extends KrbKdcRep {
|
||||
creds = new Credentials(
|
||||
rep.ticket,
|
||||
req.reqBody.cname,
|
||||
rep.ticket.sname,
|
||||
enc_part.sname,
|
||||
enc_part.key,
|
||||
enc_part.flags,
|
||||
enc_part.authtime,
|
||||
|
@ -88,7 +88,7 @@ public class KrbTgsRep extends KrbKdcRep {
|
||||
|
||||
this.creds = new Credentials(rep.ticket,
|
||||
rep.cname,
|
||||
rep.ticket.sname,
|
||||
enc_part.sname,
|
||||
enc_part.key,
|
||||
enc_part.flags,
|
||||
enc_part.authtime,
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -189,11 +189,6 @@ class AsyncSSLConnection extends HttpConnection
|
||||
throw new UnsupportedOperationException("Not supported.");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int readImpl(ByteBuffer buffer) throws IOException {
|
||||
throw new UnsupportedOperationException("Not supported.");
|
||||
}
|
||||
|
||||
@Override
|
||||
CompletableFuture<Void> whenReceivingResponse() {
|
||||
throw new UnsupportedOperationException("Not supported.");
|
||||
|
@ -33,7 +33,6 @@ import java.net.SocketPermission;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URLPermission;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.security.AccessControlContext;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
@ -76,9 +75,6 @@ final class Exchange<T> {
|
||||
boolean upgrading; // to HTTP/2
|
||||
final PushGroup<?,T> pushGroup;
|
||||
|
||||
// buffer for receiving response headers
|
||||
private volatile ByteBuffer rxBuffer;
|
||||
|
||||
Exchange(HttpRequestImpl request, MultiExchange<?,T> multi) {
|
||||
this.request = request;
|
||||
this.upgrading = false;
|
||||
@ -121,17 +117,6 @@ final class Exchange<T> {
|
||||
return client;
|
||||
}
|
||||
|
||||
ByteBuffer getBuffer() {
|
||||
if(rxBuffer == null) {
|
||||
synchronized (this) {
|
||||
if(rxBuffer == null) {
|
||||
rxBuffer = Utils.getExchangeBuffer();
|
||||
}
|
||||
}
|
||||
}
|
||||
return rxBuffer;
|
||||
}
|
||||
|
||||
public Response response() throws IOException, InterruptedException {
|
||||
return responseImpl(null);
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ class Http1Exchange<T> extends ExchangeImpl<T> {
|
||||
final HttpConnection connection;
|
||||
final HttpClientImpl client;
|
||||
final Executor executor;
|
||||
final ByteBuffer buffer; // used for receiving
|
||||
volatile ByteBuffer buffer; // used for receiving
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
@ -74,7 +74,7 @@ class Http1Exchange<T> extends ExchangeImpl<T> {
|
||||
this.client = exchange.client();
|
||||
this.executor = exchange.executor();
|
||||
this.operations = new LinkedList<>();
|
||||
this.buffer = exchange.getBuffer();
|
||||
this.buffer = Utils.EMPTY_BYTEBUFFER;
|
||||
if (connection != null) {
|
||||
this.connection = connection;
|
||||
} else {
|
||||
@ -157,7 +157,9 @@ class Http1Exchange<T> extends ExchangeImpl<T> {
|
||||
try {
|
||||
response = new Http1Response<>(connection, this);
|
||||
response.readHeaders();
|
||||
return response.response();
|
||||
Response r = response.response();
|
||||
buffer = response.getBuffer();
|
||||
return r;
|
||||
} catch (Throwable t) {
|
||||
connection.close();
|
||||
throw t;
|
||||
@ -213,7 +215,9 @@ class Http1Exchange<T> extends ExchangeImpl<T> {
|
||||
return MinimalFuture.supply( () -> {
|
||||
response = new Http1Response<>(connection, Http1Exchange.this);
|
||||
response.readHeaders();
|
||||
return response.response();
|
||||
Response r = response.response();
|
||||
buffer = response.getBuffer();
|
||||
return r;
|
||||
}, executor);
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -44,7 +44,7 @@ class Http1Response<T> {
|
||||
private final HttpConnection connection;
|
||||
private ResponseHeaders headers;
|
||||
private int responseCode;
|
||||
private final ByteBuffer buffer; // same buffer used for reading status line and headers
|
||||
private ByteBuffer buffer;
|
||||
private final Http1Exchange<T> exchange;
|
||||
private final boolean redirecting; // redirecting
|
||||
private boolean return2Cache; // return connection to cache when finished
|
||||
@ -96,6 +96,10 @@ class Http1Response<T> {
|
||||
return finished;
|
||||
}
|
||||
|
||||
ByteBuffer getBuffer() {
|
||||
return buffer;
|
||||
}
|
||||
|
||||
int fixupContentLen(int clen) {
|
||||
if (request.method().equalsIgnoreCase("HEAD")) {
|
||||
return 0;
|
||||
@ -194,12 +198,15 @@ class Http1Response<T> {
|
||||
static final char CR = '\r';
|
||||
static final char LF = '\n';
|
||||
|
||||
private int getBuffer() throws IOException {
|
||||
private int obtainBuffer() throws IOException {
|
||||
int n = buffer.remaining();
|
||||
|
||||
if (n == 0) {
|
||||
buffer.clear();
|
||||
return connection.read(buffer);
|
||||
buffer = connection.read();
|
||||
if (buffer == null) {
|
||||
return -1;
|
||||
}
|
||||
n = buffer.remaining();
|
||||
}
|
||||
return n;
|
||||
}
|
||||
@ -207,18 +214,17 @@ class Http1Response<T> {
|
||||
String readStatusLine() throws IOException {
|
||||
boolean cr = false;
|
||||
StringBuilder statusLine = new StringBuilder(128);
|
||||
ByteBuffer b = buffer;
|
||||
while (getBuffer() != -1) {
|
||||
byte[] buf = b.array();
|
||||
int offset = b.position();
|
||||
int len = b.limit() - offset;
|
||||
while ((obtainBuffer()) != -1) {
|
||||
byte[] buf = buffer.array();
|
||||
int offset = buffer.position();
|
||||
int len = buffer.limit() - offset;
|
||||
|
||||
for (int i = 0; i < len; i++) {
|
||||
char c = (char) buf[i+offset];
|
||||
|
||||
if (cr) {
|
||||
if (c == LF) {
|
||||
b.position(i + 1 + offset);
|
||||
buffer.position(i + 1 + offset);
|
||||
return statusLine.toString();
|
||||
} else {
|
||||
throw new IOException("invalid status line");
|
||||
@ -231,7 +237,7 @@ class Http1Response<T> {
|
||||
}
|
||||
}
|
||||
// unlikely, but possible, that multiple reads required
|
||||
b.position(b.limit());
|
||||
buffer.position(buffer.limit());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -323,12 +323,9 @@ abstract class HttpConnection implements Closeable {
|
||||
}
|
||||
}
|
||||
|
||||
final int read(ByteBuffer buffer) throws IOException {
|
||||
return readImpl(buffer);
|
||||
}
|
||||
|
||||
final ByteBuffer read() throws IOException {
|
||||
return readImpl();
|
||||
ByteBuffer b = readImpl();
|
||||
return b;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -337,9 +334,6 @@ abstract class HttpConnection implements Closeable {
|
||||
*/
|
||||
protected abstract ByteBuffer readImpl() throws IOException;
|
||||
|
||||
/** Reads as much as possible into given buffer and returns amount read. */
|
||||
protected abstract int readImpl(ByteBuffer buffer) throws IOException;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "HttpConnection: " + channel().toString();
|
||||
|
@ -311,8 +311,7 @@ class PlainHttpConnection extends HttpConnection implements AsyncConnection {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int readImpl(ByteBuffer buf) throws IOException {
|
||||
private int readImpl(ByteBuffer buf) throws IOException {
|
||||
int mark = buf.position();
|
||||
int n;
|
||||
// FIXME: this hack works in conjunction with the corresponding change
|
||||
|
@ -156,11 +156,6 @@ class PlainTunnelingConnection extends HttpConnection {
|
||||
return delegate.readImpl();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int readImpl(ByteBuffer buffer) throws IOException {
|
||||
return delegate.readImpl(buffer);
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isSecure() {
|
||||
return false;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -148,11 +148,7 @@ class ResponseContent {
|
||||
// make sure we have at least 1 byte to look at
|
||||
private void getHunk() throws IOException {
|
||||
if (chunkbuf == null || !chunkbuf.hasRemaining()) {
|
||||
if (chunkbuf == null) {
|
||||
chunkbuf = Utils.getBuffer();
|
||||
}
|
||||
chunkbuf.clear();
|
||||
connection.read(chunkbuf);
|
||||
chunkbuf = connection.read();
|
||||
}
|
||||
}
|
||||
|
||||
@ -256,7 +252,6 @@ class ResponseContent {
|
||||
|
||||
private void pushBodyFixed(ByteBuffer b) throws IOException {
|
||||
int remaining = contentLength;
|
||||
//lastBufferUsed = b;
|
||||
while (b.hasRemaining() && remaining > 0) {
|
||||
ByteBuffer buffer = Utils.getBuffer();
|
||||
int amount = Math.min(b.remaining(), remaining);
|
||||
@ -265,22 +260,14 @@ class ResponseContent {
|
||||
buffer.flip();
|
||||
dataConsumer.accept(Optional.of(buffer));
|
||||
}
|
||||
//client.returnBuffer(b);
|
||||
while (remaining > 0) {
|
||||
ByteBuffer buffer = Utils.getBuffer();
|
||||
int xx = connection.read(buffer);
|
||||
if (xx == -1)
|
||||
ByteBuffer buffer = connection.read();
|
||||
if (buffer == null)
|
||||
throw new IOException("connection closed");
|
||||
|
||||
int bytesread = buffer.remaining();
|
||||
// assume for now that pipelining not implemented
|
||||
if (bytesread > remaining) {
|
||||
System.err.println("xx = " + xx);
|
||||
System.err.println("bytesread = " + bytesread);
|
||||
System.err.println("remaining = " + remaining);
|
||||
for (int i=0; i<remaining; i++) {
|
||||
System.err.printf("%x ", buffer.get());
|
||||
}
|
||||
throw new IOException("too many bytes read");
|
||||
}
|
||||
remaining -= bytesread;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -72,7 +72,7 @@ final class ResponseHeaders implements HttpHeaders {
|
||||
|
||||
static final class InputStreamWrapper extends InputStream {
|
||||
final HttpConnection connection;
|
||||
final ByteBuffer buffer;
|
||||
ByteBuffer buffer;
|
||||
int lastRead = -1; // last byte read from the buffer
|
||||
int consumed = 0; // number of bytes consumed.
|
||||
InputStreamWrapper(HttpConnection connection, ByteBuffer buffer) {
|
||||
@ -83,9 +83,8 @@ final class ResponseHeaders implements HttpHeaders {
|
||||
@Override
|
||||
public int read() throws IOException {
|
||||
if (!buffer.hasRemaining()) {
|
||||
buffer.clear();
|
||||
int n = connection.read(buffer);
|
||||
if (n == -1) {
|
||||
buffer = connection.read();
|
||||
if (buffer == null) {
|
||||
return lastRead = -1;
|
||||
}
|
||||
}
|
||||
@ -97,6 +96,16 @@ final class ResponseHeaders implements HttpHeaders {
|
||||
}
|
||||
}
|
||||
|
||||
private static void display(Map<String, List<String>> map) {
|
||||
map.forEach((k,v) -> {
|
||||
System.out.print (k + ": ");
|
||||
for (String val : v) {
|
||||
System.out.print(val + ", ");
|
||||
}
|
||||
System.out.println("");
|
||||
});
|
||||
}
|
||||
|
||||
private Map<String, List<String>> parse(InputStreamWrapper input)
|
||||
throws IOException
|
||||
{
|
||||
@ -114,7 +123,6 @@ final class ResponseHeaders implements HttpHeaders {
|
||||
// finds is CR. This only happens if there are no headers, and
|
||||
// only one byte will be consumed from the buffer. In this case
|
||||
// the next byte MUST be LF
|
||||
//System.err.println("Last character read is: " + (byte)lastRead);
|
||||
if (input.read() != LF) {
|
||||
throw new IOException("Unexpected byte sequence when no headers: "
|
||||
+ ((int)CR) + " " + input.lastRead
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -162,10 +162,11 @@ class SSLConnection extends HttpConnection {
|
||||
|
||||
@Override
|
||||
protected ByteBuffer readImpl() throws IOException {
|
||||
ByteBuffer dst = ByteBuffer.allocate(8192);
|
||||
int n = readImpl(dst);
|
||||
WrapperResult r = sslDelegate.recvData(ByteBuffer.allocate(8192));
|
||||
// TODO: check for closure
|
||||
int n = r.result.bytesProduced();
|
||||
if (n > 0) {
|
||||
return dst;
|
||||
return r.buf;
|
||||
} else if (n == 0) {
|
||||
return Utils.EMPTY_BYTEBUFFER;
|
||||
} else {
|
||||
@ -173,19 +174,6 @@ class SSLConnection extends HttpConnection {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int readImpl(ByteBuffer buf) throws IOException {
|
||||
// TODO: need to ensure that buf is big enough for application data
|
||||
WrapperResult r = sslDelegate.recvData(buf);
|
||||
// TODO: check for closure
|
||||
String s = "Receive) ";
|
||||
//debugPrint(s, r.buf);
|
||||
if (r.result.bytesProduced() > 0) {
|
||||
assert buf == r.buf;
|
||||
}
|
||||
return r.result.bytesProduced();
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean connected() {
|
||||
return delegate.connected();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -104,9 +104,7 @@ class SSLDelegate {
|
||||
}
|
||||
SSLEngineResult result;
|
||||
|
||||
/* if passed in buffer was not big enough then the a reallocated buffer
|
||||
* is returned here */
|
||||
ByteBuffer buf;
|
||||
ByteBuffer buf; // buffer containing result data
|
||||
}
|
||||
|
||||
int app_buf_size;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -164,19 +164,10 @@ class SSLTunnelConnection extends HttpConnection {
|
||||
|
||||
@Override
|
||||
protected ByteBuffer readImpl() throws IOException {
|
||||
return sslDelegate.recvData(Utils.EMPTY_BYTEBUFFER).buf; // fix this, make the read normal
|
||||
}
|
||||
ByteBuffer buf = Utils.getBuffer();
|
||||
|
||||
@Override
|
||||
protected int readImpl(ByteBuffer buf) throws IOException {
|
||||
WrapperResult r = sslDelegate.recvData(buf);
|
||||
// TODO: check for closure
|
||||
String s = "Receive) ";
|
||||
//debugPrint(s, r.buf);
|
||||
if (r.result.bytesProduced() > 0) {
|
||||
assert buf == r.buf;
|
||||
}
|
||||
return r.result.bytesProduced();
|
||||
return r.buf;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -258,8 +258,6 @@ tools/jimage/JImageExtractTest.java 8170120 generic-
|
||||
tools/jimage/JImageListTest.java 8170120 generic-all
|
||||
tools/jimage/JImageVerifyTest.java 8170120 generic-all
|
||||
|
||||
tools/jar/multiRelease/RuntimeTest.java 8173905 generic-all
|
||||
|
||||
tools/schemagen/MultiReleaseJarTest.java 8174692 generic-all
|
||||
tools/wsgen/MultiReleaseJarTest.java 8174692 generic-all
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 7130985
|
||||
* @summary Four helper classes missing in Sun JDK
|
||||
* @library /lib/testlibrary
|
||||
* @library /lib/testlibrary /test/lib
|
||||
* @build jdk.testlibrary.*
|
||||
* @modules java.corba
|
||||
* @run main CorbaExceptionsCompileTest
|
||||
@ -35,12 +35,12 @@ import java.io.*;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.rmi.RemoteException;
|
||||
|
||||
import org.omg.CORBA.ORBPackage.InvalidName;
|
||||
import org.omg.CORBA.TypeCodePackage.BadKind;
|
||||
import org.omg.CORBA.TypeCodePackage.Bounds;
|
||||
|
||||
import jdk.testlibrary.FileUtils;
|
||||
import jdk.test.lib.util.FileUtils;
|
||||
import jdk.testlibrary.JDKToolLauncher;
|
||||
|
||||
public class CorbaExceptionsCompileTest implements CorbaExceptionsTest {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 2017, 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
|
||||
@ -20,20 +20,22 @@
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8048604
|
||||
* @library ../ /lib/testlibrary
|
||||
* @library ../ /test/lib
|
||||
* @summary This test verifies the assertion "There should be no transformation
|
||||
* on the plaintext/ciphertext in encryption/decryption mechanism" for
|
||||
* feature "NullCipher".
|
||||
* on the plaintext/ciphertext in encryption/decryption mechanism" for
|
||||
* feature "NullCipher".
|
||||
*/
|
||||
|
||||
import javax.crypto.BadPaddingException;
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.IllegalBlockSizeException;
|
||||
import javax.crypto.NullCipher;
|
||||
import javax.crypto.ShortBufferException;
|
||||
import jdk.testlibrary.RandomFactory;
|
||||
import jdk.test.lib.RandomFactory;
|
||||
|
||||
public class CipherNCFuncTest {
|
||||
public static void main(String[] args) throws ShortBufferException,
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2017, 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
|
||||
@ -21,22 +21,27 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @bug 4413434
|
||||
* @summary Verify that class loaded outside of application class loader is
|
||||
* correctly resolved during deserialization when read in by custom
|
||||
* readObject() method of a bootstrap class (in this case,
|
||||
* java.util.Vector).
|
||||
/* @test
|
||||
* @bug 4138064
|
||||
* @build SecurityTest
|
||||
* @run main/othervm/policy=java.policy SecurityTest
|
||||
*/
|
||||
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
import java.io.File;
|
||||
|
||||
public class SecurityTest {
|
||||
|
||||
public class Test {
|
||||
public static void main(String[] args) throws Exception {
|
||||
ClassLoader ldr =
|
||||
new URLClassLoader(new URL[]{ new URL("file:cb.jar") });
|
||||
Runnable r = (Runnable) Class.forName("Foo", true, ldr).newInstance();
|
||||
r.run();
|
||||
try {
|
||||
File f = File.createTempFile("foo", null);
|
||||
} catch (java.security.AccessControlException x) {
|
||||
throw x;
|
||||
} catch (SecurityException x) {
|
||||
if (x.getMessage().equals("Unable to create temporary file")) {
|
||||
return;
|
||||
}
|
||||
throw x;
|
||||
}
|
||||
throw new Exception("SecurityException not thrown");
|
||||
}
|
||||
}
|
2
jdk/test/java/io/File/createTempFile/java.policy
Normal file
2
jdk/test/java/io/File/createTempFile/java.policy
Normal file
@ -0,0 +1,2 @@
|
||||
grant {
|
||||
};
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -27,13 +27,12 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Arrays;
|
||||
import java.util.Random;
|
||||
import jdk.testlibrary.RandomFactory;
|
||||
import jdk.test.lib.RandomFactory;
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8080835
|
||||
* @library /lib/testlibrary
|
||||
* @build jdk.testlibrary.*
|
||||
* @library /test/lib
|
||||
* @run main ReadAllBytes
|
||||
* @summary Basic test for InputStream.readAllBytes
|
||||
* @key randomness
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -27,13 +27,12 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Arrays;
|
||||
import java.util.Random;
|
||||
import jdk.testlibrary.RandomFactory;
|
||||
import jdk.test.lib.RandomFactory;
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8080835
|
||||
* @library /lib/testlibrary
|
||||
* @build jdk.testlibrary.*
|
||||
* @library /test/lib
|
||||
* @run main ReadNBytes
|
||||
* @summary Basic test for InputStream.readNBytes
|
||||
* @key randomness
|
||||
|
@ -1,33 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 1998, 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.
|
||||
#
|
||||
|
||||
#
|
||||
# @bug 4088176
|
||||
# @summary Test reading an evolved class serialization into the original class
|
||||
|
||||
rm *.class tmp.ser
|
||||
javac WriteAddedField.java
|
||||
java ${TESTVMOPTS} WriteAddedField
|
||||
rm *.class
|
||||
javac ReadAddedField.java
|
||||
java ${TESTVMOPTS} ReadAddedField
|
@ -0,0 +1,107 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 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
|
||||
* @bug 4087295 4785472
|
||||
* @library /test/lib
|
||||
* @build jdk.test.lib.compiler.CompilerUtils
|
||||
* @build jdk.test.lib.process.ProcessTools
|
||||
* @build RenamePackageTest
|
||||
* @run main RenamePackageTest
|
||||
* @summary Enable resolveClass() to accommodate package renaming.
|
||||
* This fix enables one to implement a resolveClass method that maps a
|
||||
* Serialiazable class within a serialization stream to the same class
|
||||
* in a different package within the JVM runtime. See run shell script
|
||||
* for instructions on how to run this test.
|
||||
*/
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
import jdk.test.lib.compiler.CompilerUtils;
|
||||
import jdk.test.lib.process.ProcessTools;
|
||||
|
||||
public class RenamePackageTest {
|
||||
public static void main(String args[]) throws Exception {
|
||||
setup();
|
||||
|
||||
runTestSerialDriver();
|
||||
runInstallSerialDriver();
|
||||
|
||||
runInstallSerialDriver();
|
||||
runTestSerialDriver();
|
||||
}
|
||||
|
||||
private static final Path SHARE = Paths.get(System.getProperty("test.classes"), "share");
|
||||
private static final Path OCLASSES = Paths.get(System.getProperty("test.classes"), "oclasses");
|
||||
private static final Path NCLASSES = Paths.get(System.getProperty("test.classes"), "nclasses");
|
||||
|
||||
private static void setup() throws Exception {
|
||||
|
||||
boolean b = CompilerUtils.compile(Paths.get(System.getProperty("test.src"), "extension"),
|
||||
SHARE);
|
||||
assertTrue(b);
|
||||
b = CompilerUtils.compile(Paths.get(System.getProperty("test.src"), "test"),
|
||||
OCLASSES,
|
||||
"-classpath",
|
||||
SHARE.toString());
|
||||
assertTrue(b);
|
||||
b = CompilerUtils.compile(Paths.get(System.getProperty("test.src"), "install"),
|
||||
NCLASSES,
|
||||
"-classpath",
|
||||
SHARE.toString());
|
||||
assertTrue(b);
|
||||
}
|
||||
|
||||
private static void runTestSerialDriver() throws Exception {
|
||||
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
|
||||
"-classpath",
|
||||
SHARE.toString()
|
||||
+ File.pathSeparator
|
||||
+ OCLASSES.toString(),
|
||||
"test.SerialDriver", "-s");
|
||||
Process p = ProcessTools.startProcess("test SerialDriver", pb);
|
||||
p.waitFor();
|
||||
assertTrue(p.exitValue() == 0);
|
||||
}
|
||||
|
||||
private static void runInstallSerialDriver() throws Exception {
|
||||
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
|
||||
"-classpath",
|
||||
SHARE.toString()
|
||||
+ File.pathSeparator
|
||||
+ NCLASSES.toString(),
|
||||
"install.SerialDriver", "-d");
|
||||
Process p = ProcessTools.startProcess("install SerialDriver", pb);
|
||||
p.waitFor();
|
||||
assertTrue(p.exitValue() == 0);
|
||||
}
|
||||
|
||||
private static void assertTrue(boolean b) {
|
||||
if (!b) {
|
||||
throw new RuntimeException("expected true, get false");
|
||||
}
|
||||
}
|
||||
}
|
@ -1,105 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 1998, 2013, 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
|
||||
# @bug 4087295 4785472
|
||||
# @summary Enable resolveClass() to accommodate package renaming.
|
||||
# This fix enables one to implement a resolveClass method that maps a
|
||||
# Serialiazable class within a serialization stream to the same class
|
||||
# in a different package within the JVM runtime. See run shell script
|
||||
# for instructions on how to run this test.
|
||||
|
||||
|
||||
if [ "${TESTJAVA}" = "" ]
|
||||
then
|
||||
echo "TESTJAVA not set. Test cannot execute. Failed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "${COMPILEJAVA}" = "" ] ; then
|
||||
COMPILEJAVA="${TESTJAVA}"
|
||||
fi
|
||||
|
||||
|
||||
OS=`uname -s`
|
||||
# Need to determine the classpath separator and filepath separator based on the
|
||||
# operating system.
|
||||
case "$OS" in
|
||||
SunOS | Linux | Darwin | AIX )
|
||||
PS=":" ;;
|
||||
Windows* | CYGWIN* )
|
||||
PS=";" ;;
|
||||
* )
|
||||
echo "Unrecognized system!"
|
||||
exit 1 ;;
|
||||
esac
|
||||
|
||||
JAVA=${TESTJAVA}/bin/java
|
||||
JAVAC=${COMPILEJAVA}/bin/javac
|
||||
MKDIR=mkdir
|
||||
RDEL="rm -r"
|
||||
|
||||
if [ -d ${TESTCLASSES}/oclasses ]
|
||||
then
|
||||
${RDEL} ${TESTCLASSES}/oclasses
|
||||
fi
|
||||
if [ -d ${TESTCLASSES}/nclasses ]
|
||||
then
|
||||
${RDEL} ${TESTCLASSES}/nclasses
|
||||
fi
|
||||
if [ -d ${TESTCLASSES}/share ]
|
||||
then
|
||||
${RDEL} ${TESTCLASSES}/share
|
||||
fi
|
||||
if [ -f ${TESTCLASSES}/stream.ser ]
|
||||
then
|
||||
${RDEL} ${TESTCLASSES}/stream.ser
|
||||
fi
|
||||
|
||||
mkdir ${TESTCLASSES}/oclasses
|
||||
mkdir ${TESTCLASSES}/share
|
||||
mkdir ${TESTCLASSES}/nclasses
|
||||
|
||||
# Build sources
|
||||
set -e
|
||||
${JAVAC} ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d ${TESTCLASSES}/share \
|
||||
${TESTSRC}/extension/ExtendedObjectInputStream.java
|
||||
CLASSPATH=${TESTCLASSES}/share; export CLASSPATH;
|
||||
${JAVAC} ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d ${TESTCLASSES}/oclasses \
|
||||
${TESTSRC}/test/SerialDriver.java
|
||||
CLASSPATH=${TESTCLASSES}/share; export CLASSPATH;
|
||||
${JAVAC} ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d ${TESTCLASSES}/nclasses \
|
||||
${TESTSRC}/install/SerialDriver.java
|
||||
|
||||
# Run Case 1. Map test.SerialDriver within stream to install.SerialDriver.
|
||||
CLASSPATH="${TESTCLASSES}/oclasses${PS}${TESTCLASSES}/share"; export CLASSPATH;
|
||||
${JAVA} ${TESTVMOPTS} test.SerialDriver -s
|
||||
CLASSPATH="${TESTCLASSES}/nclasses${PS}${TESTCLASSES}/share"; export CLASSPATH;
|
||||
${JAVA} ${TESTVMOPTS} install.SerialDriver -d
|
||||
rm stream.ser
|
||||
|
||||
# Run Case 2. Map install.SerialDriver within stream to test.SerialDriver.
|
||||
CLASSPATH="${TESTCLASSES}/nclasses${PS}${TESTCLASSES}/share"; export CLASSPATH;
|
||||
${JAVA} ${TESTVMOPTS} install.SerialDriver -s
|
||||
CLASSPATH="${TESTCLASSES}/oclasses${PS}${TESTCLASSES}/share"; export CLASSPATH;
|
||||
${JAVA} ${TESTVMOPTS} test.SerialDriver -d
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -26,8 +26,7 @@
|
||||
* @bug 8071474
|
||||
* @summary Better failure atomicity for default read object.
|
||||
* @modules jdk.compiler
|
||||
* @library /lib/testlibrary
|
||||
* @build jdk.testlibrary.FileUtils
|
||||
* @library /test/lib
|
||||
* @compile FailureAtomicity.java SerialRef.java
|
||||
* @run main failureAtomicity.FailureAtomicity
|
||||
*/
|
||||
@ -59,7 +58,7 @@ import javax.tools.JavaFileObject;
|
||||
import javax.tools.StandardJavaFileManager;
|
||||
import javax.tools.StandardLocation;
|
||||
import javax.tools.ToolProvider;
|
||||
import jdk.testlibrary.FileUtils;
|
||||
import jdk.test.lib.util.FileUtils;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public class FailureAtomicity {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2017, 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,19 +22,31 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 4897937
|
||||
* @run main MaskSyntheticModifierTest
|
||||
* @summary Verify that the presence of the JVM_ACC_SYNTHETIC bit in the
|
||||
* modifiers of fields and methods does not affect default
|
||||
* serialVersionUID calculation.
|
||||
*/
|
||||
|
||||
import java.io.ObjectStreamClass;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
|
||||
public class MaskSyntheticModifierTest {
|
||||
public static void main(String[] args) throws Exception {
|
||||
setup();
|
||||
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
||||
long suid = ObjectStreamClass.lookup(Foo.class).getSerialVersionUID();
|
||||
if (suid != 8027844768744011556L) {
|
||||
throw new Error("incorrect serialVersionUID: " + suid);
|
||||
}
|
||||
}
|
||||
|
||||
private static void setup() throws Exception {
|
||||
Files.copy(Paths.get(System.getProperty("test.src"), "Foo.class"),
|
||||
Paths.get("Foo.class"), StandardCopyOption.REPLACE_EXISTING);
|
||||
}
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2003, 2013, 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
|
||||
# @bug 4897937
|
||||
# @summary Verify that the presence of the JVM_ACC_SYNTHETIC bit in the
|
||||
# modifiers of fields and methods does not affect default
|
||||
# serialVersionUID calculation.
|
||||
|
||||
if [ "${TESTJAVA}" = "" ]
|
||||
then
|
||||
echo "TESTJAVA not set. Test cannot execute. Failed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "${COMPILEJAVA}" = "" ] ; then
|
||||
COMPILEJAVA="${TESTJAVA}"
|
||||
fi
|
||||
|
||||
if [ "${TESTSRC}" = "" ]
|
||||
then
|
||||
TESTSRC="."
|
||||
fi
|
||||
|
||||
set -ex
|
||||
cp ${TESTSRC}/Foo.class .
|
||||
${COMPILEJAVA}/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d . ${TESTSRC}/Test.java
|
||||
${TESTJAVA}/bin/java ${TESTVMOPTS} Test
|
||||
rm -f *.class
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2002, 2017, 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,41 +22,59 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 4765255
|
||||
* @library /lib/testlibrary
|
||||
* @build JarUtils A B C D PackageAccessTest
|
||||
* @run main PackageAccessTest
|
||||
* @summary Verify proper functioning of package equality checks used to
|
||||
* determine accessibility of superclass constructor and inherited
|
||||
* writeReplace/readResolve methods.
|
||||
*/
|
||||
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.io.ObjectStreamClass;
|
||||
import java.io.InvalidClassException;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
public class Test {
|
||||
public class PackageAccessTest {
|
||||
|
||||
static Class bcl;
|
||||
static Class dcl;
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
ClassLoader ldr =
|
||||
setup();
|
||||
|
||||
try (URLClassLoader ldr =
|
||||
new URLClassLoader(new URL[]{ new URL("file:foo.jar") },
|
||||
Test.class.getClassLoader());
|
||||
bcl = Class.forName("B", true, ldr);
|
||||
dcl = Class.forName("D", true, ldr);
|
||||
PackageAccessTest.class.getClassLoader())) {
|
||||
bcl = Class.forName("B", true, ldr);
|
||||
dcl = Class.forName("D", true, ldr);
|
||||
|
||||
Object b = bcl.newInstance();
|
||||
try {
|
||||
swizzle(b);
|
||||
throw new Error("expected InvalidClassException for class B");
|
||||
} catch (InvalidClassException e) {
|
||||
System.out.println("caught " + e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (A.packagePrivateConstructorInvoked) {
|
||||
throw new Error("package private constructor of A invoked");
|
||||
}
|
||||
Object b = bcl.newInstance();
|
||||
try {
|
||||
swizzle(b);
|
||||
throw new Error("expected InvalidClassException for class B");
|
||||
} catch (InvalidClassException e) {
|
||||
System.out.println("caught " + e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (A.packagePrivateConstructorInvoked) {
|
||||
throw new Error("package private constructor of A invoked");
|
||||
}
|
||||
|
||||
Object d = dcl.newInstance();
|
||||
swizzle(d);
|
||||
Object d = dcl.newInstance();
|
||||
swizzle(d);
|
||||
}
|
||||
}
|
||||
|
||||
static void swizzle(Object obj) throws Exception {
|
||||
@ -68,6 +86,14 @@ public class Test {
|
||||
new ByteArrayInputStream(bout.toByteArray());
|
||||
new TestObjectInputStream(bin).readObject();
|
||||
}
|
||||
|
||||
static void setup() throws Exception {
|
||||
Path classes = Paths.get(System.getProperty("test.classes", ""));
|
||||
JarUtils.createJarFile(Paths.get("foo.jar"), classes,
|
||||
classes.resolve("B.class"), classes.resolve("D.class"));
|
||||
Files.delete(classes.resolve("B.class"));
|
||||
Files.delete(classes.resolve("D.class"));
|
||||
}
|
||||
}
|
||||
|
||||
class TestObjectInputStream extends ObjectInputStream {
|
||||
@ -80,9 +106,9 @@ class TestObjectInputStream extends ObjectInputStream {
|
||||
{
|
||||
String n = desc.getName();
|
||||
if (n.equals("B")) {
|
||||
return Test.bcl;
|
||||
return PackageAccessTest.bcl;
|
||||
} else if (n.equals("D")) {
|
||||
return Test.dcl;
|
||||
return PackageAccessTest.dcl;
|
||||
} else {
|
||||
return super.resolveClass(desc);
|
||||
}
|
@ -1,54 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2002, 2013, 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
|
||||
# @bug 4765255
|
||||
# @summary Verify proper functioning of package equality checks used to
|
||||
# determine accessibility of superclass constructor and inherited
|
||||
# writeReplace/readResolve methods.
|
||||
|
||||
if [ "${TESTJAVA}" = "" ]
|
||||
then
|
||||
echo "TESTJAVA not set. Test cannot execute. Failed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "${COMPILEJAVA}" = "" ] ; then
|
||||
COMPILEJAVA="${TESTJAVA}"
|
||||
fi
|
||||
|
||||
if [ "${TESTSRC}" = "" ]
|
||||
then
|
||||
TESTSRC="."
|
||||
fi
|
||||
|
||||
set -ex
|
||||
|
||||
${COMPILEJAVA}/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d . \
|
||||
${TESTSRC}/A.java ${TESTSRC}/B.java ${TESTSRC}/C.java ${TESTSRC}/D.java \
|
||||
${TESTSRC}/Test.java
|
||||
${COMPILEJAVA}/bin/jar ${TESTTOOLVMOPTS} cf foo.jar B.class D.class
|
||||
rm -f B.class D.class
|
||||
|
||||
${TESTJAVA}/bin/java ${TESTVMOPTS} Test
|
||||
rm -f *.class *.jar
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 2017, 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,21 +22,30 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 4413434
|
||||
* @library /lib/testlibrary
|
||||
* @build JarUtils SetupJar Boot
|
||||
* @run driver SetupJar
|
||||
* @run main/othervm -Xbootclasspath/a:boot.jar ConsTest
|
||||
* @summary Verify that generated java.lang.reflect implementation classes do
|
||||
* not interfere with serialization's class resolution mechanism.
|
||||
*/
|
||||
|
||||
import java.io.*;
|
||||
import java.lang.reflect.*;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.Constructor;
|
||||
|
||||
public class Test implements Serializable {
|
||||
public class ConsTest implements Serializable {
|
||||
public static void main(String[] args) throws Exception {
|
||||
Constructor cons = Boot.class.getConstructor(
|
||||
new Class[] { ObjectInputStream.class });
|
||||
ByteArrayOutputStream bout = new ByteArrayOutputStream();
|
||||
ObjectOutputStream oout = new ObjectOutputStream(bout);
|
||||
oout.writeObject(new Test());
|
||||
oout.writeObject(new ConsTest());
|
||||
oout.close();
|
||||
|
||||
for (int i = 0; i < 100; i++) {
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2017, 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
|
||||
@ -21,13 +21,14 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package testpackage;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
public class Helper {
|
||||
public class SetupJar {
|
||||
|
||||
private static final int HELPER_VERSION = 8;
|
||||
|
||||
public static int getHelperVersion() {
|
||||
return HELPER_VERSION;
|
||||
public static void main(String args[]) throws Exception {
|
||||
Path classes = Paths.get(System.getProperty("test.classes", ""));
|
||||
JarUtils.createJarFile(Paths.get("boot.jar"), classes,
|
||||
classes.resolve("Boot.class"));
|
||||
}
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2001, 2013, 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
|
||||
# @bug 4413434
|
||||
# @summary Verify that generated java.lang.reflect implementation classes do
|
||||
# not interfere with serialization's class resolution mechanism.
|
||||
|
||||
if [ "${TESTJAVA}" = "" ]
|
||||
then
|
||||
echo "TESTJAVA not set. Test cannot execute. Failed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "${COMPILEJAVA}" = "" ] ; then
|
||||
COMPILEJAVA="${TESTJAVA}"
|
||||
fi
|
||||
|
||||
if [ "${TESTSRC}" = "" ]
|
||||
then
|
||||
TESTSRC="."
|
||||
fi
|
||||
|
||||
set -ex
|
||||
|
||||
rm -f *.class *.jar
|
||||
${COMPILEJAVA}/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d . ${TESTSRC}/Boot.java
|
||||
${COMPILEJAVA}/bin/jar ${TESTTOOLVMOPTS} cf boot.jar *.class
|
||||
rm -f *.class
|
||||
${COMPILEJAVA}/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -classpath boot.jar -d . \
|
||||
${TESTSRC}/Test.java
|
||||
${TESTJAVA}/bin/java ${TESTVMOPTS} -Xbootclasspath/a:boot.jar Test
|
||||
rm -f *.class *.jar
|
@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2017, 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
|
||||
* @bug 4413434
|
||||
* @library /lib/testlibrary
|
||||
* @build JarUtils Foo
|
||||
* @run main DeserializeButtonTest
|
||||
* @summary Verify that class loaded outside of application class loader is
|
||||
* correctly resolved during deserialization when read in by custom
|
||||
* readObject() method of a bootstrap class (in this case,
|
||||
* java.util.Vector).
|
||||
*/
|
||||
|
||||
import java.net.URLClassLoader;
|
||||
import java.net.URL;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
public class DeserializeButtonTest {
|
||||
public static void main(String[] args) throws Exception {
|
||||
setup();
|
||||
|
||||
try (URLClassLoader ldr =
|
||||
new URLClassLoader(new URL[]{ new URL("file:cb.jar") })) {
|
||||
Runnable r = (Runnable) Class.forName("Foo", true, ldr).newInstance();
|
||||
r.run();
|
||||
}
|
||||
}
|
||||
|
||||
private static void setup() throws Exception {
|
||||
Path classes = Paths.get(System.getProperty("test.classes", ""));
|
||||
JarUtils.createJarFile(Paths.get("cb.jar"),
|
||||
classes,
|
||||
classes.resolve("Foo.class"),
|
||||
classes.resolve("Foo$TestElement.class"));
|
||||
}
|
||||
}
|
@ -1,54 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2001, 2013, 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
|
||||
# @bug 4413434
|
||||
# @summary Verify that class loaded outside of application class loader is
|
||||
# correctly resolved during deserialization when read in by custom
|
||||
# readObject() method of a bootstrap class (in this case,
|
||||
# java.util.Vector).
|
||||
|
||||
if [ "${TESTJAVA}" = "" ]
|
||||
then
|
||||
echo "TESTJAVA not set. Test cannot execute. Failed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "${COMPILEJAVA}" = "" ] ; then
|
||||
COMPILEJAVA="${TESTJAVA}"
|
||||
fi
|
||||
|
||||
if [ "${TESTSRC}" = "" ]
|
||||
then
|
||||
TESTSRC="."
|
||||
fi
|
||||
|
||||
set -ex
|
||||
|
||||
rm -f *.class *.jar
|
||||
${COMPILEJAVA}/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d . ${TESTSRC}/Foo.java
|
||||
${COMPILEJAVA}/bin/jar ${TESTTOOLVMOPTS} cf cb.jar *.class
|
||||
rm -f *.class
|
||||
${COMPILEJAVA}/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d . ${TESTSRC}/Test.java
|
||||
${TESTJAVA}/bin/java ${TESTVMOPTS} Test
|
||||
rm -f *.class *.jar
|
@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2017, 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
|
||||
* @bug 4035147 4785472
|
||||
* @library /test/lib
|
||||
* @build jdk.test.lib.JDKToolLauncher
|
||||
* @build jdk.test.lib.process.ProcessTools
|
||||
* @build ClasspathTest
|
||||
* @run main serialver.ClasspathTest
|
||||
* @summary Test the use of the -classpath switch in the serialver application.
|
||||
*/
|
||||
|
||||
package serialver;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import jdk.test.lib.JDKToolLauncher;
|
||||
import jdk.test.lib.process.ProcessTools;
|
||||
|
||||
public class ClasspathTest implements java.io.Serializable {
|
||||
int a;
|
||||
int b;
|
||||
|
||||
public static void main(String args[]) throws Exception {
|
||||
JDKToolLauncher serialver =
|
||||
JDKToolLauncher.create("serialver")
|
||||
.addToolArg("-classpath")
|
||||
.addToolArg(System.getProperty("test.class.path"))
|
||||
.addToolArg("serialver.ClasspathTest");
|
||||
Process p = ProcessTools.startProcess("serialver",
|
||||
new ProcessBuilder(serialver.getCommand()));
|
||||
p.waitFor();
|
||||
if (p.exitValue() != 0) {
|
||||
throw new RuntimeException("error occurs in serialver");
|
||||
}
|
||||
}
|
||||
}
|
@ -1,64 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2000, 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
|
||||
# @bug 4035147 4785472
|
||||
# @summary Test the use of the -classpath switch in the serialver application.
|
||||
# @author Naveen Sanjeeva
|
||||
#
|
||||
# @build Test
|
||||
# @run shell run.sh
|
||||
|
||||
# set a few environment variables so that the shell-script can run stand-alone
|
||||
# in the source directory
|
||||
|
||||
if [ "${TESTSRC}" = "" ] ; then
|
||||
TESTSRC="."
|
||||
fi
|
||||
if [ "${TESTCLASSES}" = "" ] ; then
|
||||
TESTCLASSES="."
|
||||
fi
|
||||
if [ "${TESTJAVA}" = "" ] ; then
|
||||
echo "TESTJAVA not set. Test cannot execute."
|
||||
echo "FAILED!!!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# set platform-dependent variables
|
||||
OS=`uname -s`
|
||||
case "$OS" in
|
||||
SunOS | Linux | Darwin | AIX )
|
||||
PS=":" ;;
|
||||
Windows* | CYGWIN* )
|
||||
PS=";" ;;
|
||||
* )
|
||||
echo "Unrecognized system!"
|
||||
exit 1 ;;
|
||||
esac
|
||||
|
||||
# the test code
|
||||
|
||||
echo "Using the classpath .${PS}${TESTCLASSES}"
|
||||
${TESTJAVA}/bin/serialver -classpath ".${PS}${TESTCLASSES}" serialver.Test
|
||||
|
||||
exit $?
|
@ -0,0 +1,63 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2017, 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
|
||||
* @bug 4312217 4785473
|
||||
* @library /test/lib
|
||||
* @build jdk.test.lib.JDKToolLauncher
|
||||
* @build jdk.test.lib.process.ProcessTools
|
||||
* @build NestedTest
|
||||
* @run main serialver.NestedTest
|
||||
* @summary To test the use of nested class specification using the '.'
|
||||
* notation instead of the '$' notation.
|
||||
*/
|
||||
|
||||
package serialver;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import jdk.test.lib.JDKToolLauncher;
|
||||
import jdk.test.lib.process.ProcessTools;
|
||||
|
||||
public class NestedTest implements Serializable {
|
||||
public static class Test1 implements Serializable {
|
||||
public static class Test2 implements Serializable{
|
||||
private static final long serialVersionUID = 100L;
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String args[]) throws Exception {
|
||||
JDKToolLauncher serialver =
|
||||
JDKToolLauncher.create("serialver")
|
||||
.addToolArg("-classpath")
|
||||
.addToolArg(System.getProperty("test.class.path"))
|
||||
.addToolArg("serialver.NestedTest.Test1.Test2");
|
||||
Process p = ProcessTools.startProcess("serialver",
|
||||
new ProcessBuilder(serialver.getCommand()));
|
||||
p.waitFor();
|
||||
if (p.exitValue() != 0) {
|
||||
throw new RuntimeException("error occurs in serialver.");
|
||||
}
|
||||
}
|
||||
}
|
@ -1,64 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2000, 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
|
||||
# @bug 4312217 4785473
|
||||
# @summary Test the use of the -classpath switch in the serialver application.
|
||||
# @author Naveen Sanjeeva
|
||||
#
|
||||
# @build Test
|
||||
# @run shell run.sh
|
||||
|
||||
# set a few environment variables so that the shell-script can run stand-alone
|
||||
# in the source directory
|
||||
|
||||
if [ "${TESTSRC}" = "" ] ; then
|
||||
TESTSRC="."
|
||||
fi
|
||||
if [ "${TESTCLASSES}" = "" ] ; then
|
||||
TESTCLASSES="."
|
||||
fi
|
||||
if [ "${TESTJAVA}" = "" ] ; then
|
||||
echo "TESTJAVA not set. Test cannot execute."
|
||||
echo "FAILED!!!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# set platform-dependent variables
|
||||
OS=`uname -s`
|
||||
case "$OS" in
|
||||
SunOS | Linux | Darwin | AIX )
|
||||
PS=":" ;;
|
||||
Windows* | CYGWIN* )
|
||||
PS=";" ;;
|
||||
* )
|
||||
echo "Unrecognized system!"
|
||||
exit 1 ;;
|
||||
esac
|
||||
|
||||
# the test code
|
||||
|
||||
echo "Using the classpath .${PS}${TESTCLASSES}"
|
||||
${TESTJAVA}/bin/serialver -classpath ".${PS}${TESTCLASSES}" 'serialver.Test.Test1.Test2'
|
||||
|
||||
exit $?
|
@ -2,7 +2,6 @@ grant {
|
||||
// "standard" properies that can be read by anyone
|
||||
permission java.io.FilePermission "-","read,write,execute";
|
||||
permission java.io.SerializablePermission "enableSubstitution";
|
||||
permission java.io.SerializablePermission "enableSubclassImplementation";
|
||||
|
||||
// Needed to get access to private writeObjectMethod and
|
||||
// to be able to call it.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1998, 2017, 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
|
||||
@ -26,23 +26,32 @@
|
||||
* @bug 4100915
|
||||
* @summary Verify that [write/read]ObjectOverride methods get called.
|
||||
* Test verifies that ALL methods to write an object can
|
||||
* be overridden. Howver, the testing for reading an object
|
||||
* be overridden. However, the testing for reading an object
|
||||
* is incomplete. Only test that readObjectOverride is called.
|
||||
* An entire protocol would need to be implemented and written
|
||||
* out before being able to test the input side of the API.
|
||||
*
|
||||
* Also, would be appropriate that this program verify
|
||||
* that if SerializablePermission "enableSubclassImplamentation"
|
||||
* that if SerializablePermission "enableSubclassImplementation"
|
||||
* is not in the security policy and security is enabled, that
|
||||
* a security excepiton is thrown when constructing the
|
||||
* a security exception is thrown when constructing the
|
||||
* ObjectOutputStream subclass.
|
||||
*
|
||||
*
|
||||
* @compile AbstractObjectInputStream.java AbstractObjectOutputStream.java XObjectInputStream.java XObjectOutputStream.java Test.java
|
||||
* @run main Test
|
||||
* @compile AbstractObjectInputStream.java AbstractObjectOutputStream.java
|
||||
* @compile XObjectInputStream.java XObjectOutputStream.java
|
||||
* @compile SubclassTest.java
|
||||
* @run main SubclassTest
|
||||
* @run main/othervm/policy=Allow.policy SubclassTest -expectSecurityException
|
||||
*/
|
||||
|
||||
import java.io.*;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.io.ObjectStreamField;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* Test if customized readObject and writeObject are called.
|
||||
@ -111,7 +120,7 @@ class A implements Serializable {
|
||||
}
|
||||
};
|
||||
|
||||
public class Test {
|
||||
public class SubclassTest {
|
||||
public static void main(String argv[])
|
||||
throws IOException, ClassNotFoundException
|
||||
{
|
||||
@ -129,10 +138,11 @@ public class Test {
|
||||
throw new Error("Assertion failure. " +
|
||||
"Expected a security exception on previous line.");
|
||||
} catch (SecurityException e) {
|
||||
if (expectSecurityException)
|
||||
if (expectSecurityException) {
|
||||
System.err.println("Caught expected security exception.");
|
||||
return;
|
||||
else
|
||||
throw e;
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
os.writeObject(new A());
|
||||
os.close();
|
@ -1,30 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 1998, 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.
|
||||
#
|
||||
|
||||
#
|
||||
# @bug 4100915
|
||||
mkdir classes
|
||||
javac -d classes *.java
|
||||
java ${TESTVMOPTS} -classpath classes -Djava.policy=Allow.policy Test
|
||||
# ENABLE next line when new method for invoking a main with a SecureClassLoader is known
|
||||
#java -classpath classes -Djava.policy=NotAllow.policy Test -expectSecurityException
|
@ -0,0 +1,121 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2017, 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
|
||||
* @bug 4325590
|
||||
* @library /lib/testlibrary
|
||||
* @build JarUtils A B
|
||||
* @run main SuperclassDataLossTest
|
||||
* @summary Verify that superclass data is not lost when incoming superclass
|
||||
* descriptor is matched with local class that is not a superclass of
|
||||
* the deserialized instance's class.
|
||||
*/
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.io.ObjectStreamClass;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.net.MalformedURLException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
|
||||
class MixedSuperclassStream extends ObjectInputStream {
|
||||
private boolean ldr12A;
|
||||
private URLClassLoader ldr1;
|
||||
private URLClassLoader ldr2;
|
||||
|
||||
MixedSuperclassStream(InputStream in, URLClassLoader ldr1,
|
||||
URLClassLoader ldr2, boolean ldr1First) throws IOException {
|
||||
super(in);
|
||||
this.ldr1 = ldr1;
|
||||
this.ldr2 = ldr2;
|
||||
this.ldr12A = ldr12A;
|
||||
}
|
||||
|
||||
protected Class resolveClass(ObjectStreamClass desc)
|
||||
throws IOException, ClassNotFoundException
|
||||
{
|
||||
// resolve A's classdesc to class != B's superclass
|
||||
String name = desc.getName();
|
||||
if (ldr12A) {
|
||||
if (name.equals("A")) {
|
||||
return Class.forName(name, true, ldr1);
|
||||
} else if (name.equals("B")) {
|
||||
return Class.forName(name, true, ldr2);
|
||||
}
|
||||
} else {
|
||||
if (name.equals("B")) {
|
||||
return Class.forName(name, true, ldr1);
|
||||
} else if (name.equals("A")) {
|
||||
return Class.forName(name, true, ldr2);
|
||||
}
|
||||
}
|
||||
return super.resolveClass(desc);
|
||||
}
|
||||
}
|
||||
|
||||
public class SuperclassDataLossTest {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
try (URLClassLoader ldr1 = new URLClassLoader(new URL[] { new URL("file:cb1.jar") });
|
||||
URLClassLoader ldr2 = new URLClassLoader(new URL[] { new URL("file:cb2.jar") })) {
|
||||
setup();
|
||||
|
||||
Runnable a = (Runnable) Class.forName("B", true, ldr1).newInstance();
|
||||
a.run();
|
||||
|
||||
ByteArrayOutputStream bout = new ByteArrayOutputStream();
|
||||
ObjectOutputStream oout = new ObjectOutputStream(bout);
|
||||
oout.writeObject(a);
|
||||
oout.close();
|
||||
|
||||
test(bout, ldr1, ldr2, true);
|
||||
test(bout, ldr1, ldr2, false);
|
||||
}
|
||||
}
|
||||
|
||||
private static void test(ByteArrayOutputStream bout, URLClassLoader ldr1,
|
||||
URLClassLoader ldr2, boolean ldr12A) throws Exception {
|
||||
ByteArrayInputStream bin =
|
||||
new ByteArrayInputStream(bout.toByteArray());
|
||||
ObjectInputStream oin = new MixedSuperclassStream(bin, ldr1, ldr2, ldr12A);
|
||||
Runnable a = (Runnable) oin.readObject();
|
||||
a.run();
|
||||
}
|
||||
|
||||
private static void setup() throws Exception {
|
||||
Path classes = Paths.get(System.getProperty("test.classes", ""));
|
||||
JarUtils.createJarFile(Paths.get("cb1.jar"), classes,
|
||||
classes.resolve("A.class"), classes.resolve("B.class"));
|
||||
Files.copy(Paths.get("cb1.jar"), Paths.get("cb2.jar"),
|
||||
StandardCopyOption.REPLACE_EXISTING);
|
||||
}
|
||||
}
|
@ -1,79 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @bug 4325590
|
||||
* @summary Verify that superclass data is not lost when incoming superclass
|
||||
* descriptor is matched with local class that is not a superclass of
|
||||
* the deserialized instance's class.
|
||||
*/
|
||||
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
|
||||
class MixedSuperclassStream extends ObjectInputStream {
|
||||
MixedSuperclassStream(InputStream in) throws IOException { super(in); }
|
||||
|
||||
protected Class resolveClass(ObjectStreamClass desc)
|
||||
throws IOException, ClassNotFoundException
|
||||
{
|
||||
// resolve A's classdesc to class != B's superclass
|
||||
String name = desc.getName();
|
||||
if (name.equals("A")) {
|
||||
return Class.forName(name, true, Test.ldr1);
|
||||
} else if (name.equals("B")) {
|
||||
return Class.forName(name, true, Test.ldr2);
|
||||
} else {
|
||||
return super.resolveClass(desc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class Test {
|
||||
|
||||
static URLClassLoader ldr1, ldr2;
|
||||
static {
|
||||
try {
|
||||
ldr1 = new URLClassLoader(new URL[] { new URL("file:cb1.jar") });
|
||||
ldr2 = new URLClassLoader(new URL[] { new URL("file:cb2.jar") });
|
||||
} catch (MalformedURLException ex) {
|
||||
throw new Error();
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
Runnable a = (Runnable) Class.forName("B", true, ldr1).newInstance();
|
||||
a.run();
|
||||
|
||||
ByteArrayOutputStream bout = new ByteArrayOutputStream();
|
||||
ObjectOutputStream oout = new ObjectOutputStream(bout);
|
||||
oout.writeObject(a);
|
||||
oout.close();
|
||||
|
||||
ByteArrayInputStream bin =
|
||||
new ByteArrayInputStream(bout.toByteArray());
|
||||
ObjectInputStream oin = new MixedSuperclassStream(bin);
|
||||
a = (Runnable) oin.readObject();
|
||||
a.run();
|
||||
}
|
||||
}
|
@ -1,56 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2000, 2013, 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
|
||||
# @bug 4325590
|
||||
# @summary Verify that superclass data is not lost when incoming superclass
|
||||
# descriptor is matched with local class that is not a superclass of
|
||||
# the deserialized instance's class.
|
||||
|
||||
if [ "${TESTJAVA}" = "" ]
|
||||
then
|
||||
echo "TESTJAVA not set. Test cannot execute. Failed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "${COMPILEJAVA}" = "" ] ; then
|
||||
COMPILEJAVA="${TESTJAVA}"
|
||||
fi
|
||||
|
||||
if [ "${TESTSRC}" = "" ]
|
||||
then
|
||||
TESTSRC="."
|
||||
fi
|
||||
|
||||
set -ex
|
||||
|
||||
${COMPILEJAVA}/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d . \
|
||||
${TESTSRC}/A.java ${TESTSRC}/B.java
|
||||
${COMPILEJAVA}/bin/jar ${TESTTOOLVMOPTS} cf cb1.jar A.class B.class
|
||||
cp cb1.jar cb2.jar
|
||||
rm -f A.class B.class
|
||||
|
||||
${COMPILEJAVA}/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d . \
|
||||
${TESTSRC}/Test.java
|
||||
${TESTJAVA}/bin/java ${TESTVMOPTS} Test
|
||||
rm -f *.class *.jar
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2017, 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,13 +22,23 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 4348213
|
||||
* @build UnnamedPackageSwitchTest pkg.A
|
||||
* @run main UnnamedPackageSwitchTest
|
||||
* @summary Verify that deserialization allows an incoming class descriptor
|
||||
* representing a class in the unnamed package to be resolved to a
|
||||
* local class with the same name in a named package, and vice-versa.
|
||||
*/
|
||||
|
||||
import java.io.*;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectStreamClass;
|
||||
import java.io.Serializable;
|
||||
|
||||
class A implements Serializable {
|
||||
private static final long serialVersionUID = 0L;
|
||||
@ -50,7 +60,7 @@ class TestObjectInputStream extends ObjectInputStream {
|
||||
}
|
||||
}
|
||||
|
||||
public class Test {
|
||||
public class UnnamedPackageSwitchTest {
|
||||
public static void main(String[] args) throws Exception {
|
||||
ByteArrayOutputStream bout = new ByteArrayOutputStream();
|
||||
ObjectOutputStream oout = new ObjectOutputStream(bout);
|
@ -1,49 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2000, 2013, 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
|
||||
# @bug 4348213
|
||||
# @summary Verify that deserialization allows an incoming class descriptor
|
||||
# representing a class in the unnamed package to be resolved to a
|
||||
# local class with the same name in a named package, and vice-versa.
|
||||
|
||||
if [ "${TESTJAVA}" = "" ]
|
||||
then
|
||||
echo "TESTJAVA not set. Test cannot execute. Failed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "${COMPILEJAVA}" = "" ] ; then
|
||||
COMPILEJAVA="${TESTJAVA}"
|
||||
fi
|
||||
|
||||
if [ "${TESTSRC}" = "" ]
|
||||
then
|
||||
TESTSRC="."
|
||||
fi
|
||||
|
||||
set -ex
|
||||
|
||||
${COMPILEJAVA}/bin/javac ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d . \
|
||||
${TESTSRC}/A.java ${TESTSRC}/Test.java
|
||||
${TESTJAVA}/bin/java ${TESTVMOPTS} Test
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -29,7 +29,7 @@ import java.nio.file.Paths;
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import jdk.testlibrary.FileUtils;
|
||||
import jdk.test.lib.util.FileUtils;
|
||||
import static jdk.testlibrary.ProcessTools.*;
|
||||
|
||||
import org.testng.annotations.BeforeClass;
|
||||
@ -40,9 +40,9 @@ import static org.testng.Assert.assertTrue;
|
||||
* @test
|
||||
* @bug 8087335
|
||||
* @summary Tests for Class.forName(Module,String)
|
||||
* @library /lib/testlibrary
|
||||
* @library /lib/testlibrary /test/lib
|
||||
* @modules jdk.compiler
|
||||
* @build TestDriver CompilerUtils jdk.testlibrary.ProcessTools jdk.testlibrary.FileUtils TestMain TestLayer
|
||||
* @build TestDriver CompilerUtils jdk.testlibrary.ProcessTools TestMain TestLayer
|
||||
* @run testng TestDriver
|
||||
*/
|
||||
|
||||
|
@ -28,7 +28,7 @@
|
||||
* @run main/othervm Assert
|
||||
* @summary Test the assertion facility
|
||||
* @author Mike McCloskey
|
||||
* @key randomness intermittent
|
||||
* @key randomness
|
||||
*/
|
||||
|
||||
import package1.*;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2017, 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
|
||||
@ -23,8 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @library /lib/testlibrary/
|
||||
* @build jdk.testlibrary.*
|
||||
* @library /test/lib
|
||||
* @run main ParseHexFloatingPoint
|
||||
* @bug 4826774 8078672
|
||||
* @summary Numerical tests for hexadecimal inputs to parse{Double, Float} (use -Dseed=X to set PRNG seed)
|
||||
@ -32,7 +31,7 @@
|
||||
* @key randomness
|
||||
*/
|
||||
|
||||
import jdk.testlibrary.RandomFactory;
|
||||
import jdk.test.lib.RandomFactory;
|
||||
|
||||
public class ParseHexFloatingPoint {
|
||||
private ParseHexFloatingPoint(){}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2017, 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
|
||||
@ -23,8 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @library /lib/testlibrary/
|
||||
* @build jdk.testlibrary.*
|
||||
* @library /test/lib
|
||||
* @run main BitTwiddle
|
||||
* @bug 4495754 8078672
|
||||
* @summary Basic test for int bit twiddling (use -Dseed=X to set PRNG seed)
|
||||
@ -33,7 +32,7 @@
|
||||
*/
|
||||
|
||||
import java.util.Random;
|
||||
import jdk.testlibrary.RandomFactory;
|
||||
import jdk.test.lib.RandomFactory;
|
||||
import static java.lang.Integer.*;
|
||||
|
||||
public class BitTwiddle {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2017, 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
|
||||
@ -23,8 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @library /lib/testlibrary/
|
||||
* @build jdk.testlibrary.*
|
||||
* @library /test/lib
|
||||
* @run main BitTwiddle
|
||||
* @bug 4495754 8078672
|
||||
* @summary Basic test for long bit twiddling (use -Dseed=X to set PRNG seed)
|
||||
@ -33,7 +32,7 @@
|
||||
*/
|
||||
|
||||
import java.util.Random;
|
||||
import jdk.testlibrary.RandomFactory;
|
||||
import jdk.test.lib.RandomFactory;
|
||||
import static java.lang.Long.*;
|
||||
|
||||
public class BitTwiddle {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2017, 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
|
||||
@ -23,8 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @library /lib/testlibrary/
|
||||
* @build jdk.testlibrary.RandomFactory
|
||||
* @library /test/lib
|
||||
* @run main CubeRootTests
|
||||
* @bug 4347132 4939441 8078672
|
||||
* @summary Tests for {Math, StrictMath}.cbrt (use -Dseed=X to set PRNG seed)
|
||||
@ -32,7 +31,7 @@
|
||||
* @key randomness
|
||||
*/
|
||||
|
||||
import jdk.testlibrary.RandomFactory;
|
||||
import jdk.test.lib.RandomFactory;
|
||||
|
||||
public class CubeRootTests {
|
||||
private CubeRootTests(){}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2017, 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
|
||||
@ -23,8 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @library /lib/testlibrary/
|
||||
* @build jdk.testlibrary.RandomFactory
|
||||
* @library /test/lib
|
||||
* @run main HypotTests
|
||||
* @bug 4851638 4939441 8078672
|
||||
* @summary Tests for {Math, StrictMath}.hypot (use -Dseed=X to set PRNG seed)
|
||||
@ -32,7 +31,7 @@
|
||||
* @key randomness
|
||||
*/
|
||||
|
||||
import jdk.testlibrary.RandomFactory;
|
||||
import jdk.test.lib.RandomFactory;
|
||||
|
||||
public class HypotTests {
|
||||
private HypotTests(){}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2017, 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
|
||||
@ -23,8 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @library /lib/testlibrary/
|
||||
* @build jdk.testlibrary.RandomFactory
|
||||
* @library /test/lib
|
||||
* @run main IeeeRecommendedTests
|
||||
* @bug 4860891 4826732 4780454 4939441 4826652 8078672
|
||||
* @summary Tests for IEEE 754[R] recommended functions and similar methods (use -Dseed=X to set PRNG seed)
|
||||
@ -32,7 +31,7 @@
|
||||
* @key randomness
|
||||
*/
|
||||
|
||||
import jdk.testlibrary.RandomFactory;
|
||||
import jdk.test.lib.RandomFactory;
|
||||
|
||||
public class IeeeRecommendedTests {
|
||||
private IeeeRecommendedTests(){}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2017, 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
|
||||
@ -23,8 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @library /lib/testlibrary/
|
||||
* @build jdk.testlibrary.RandomFactory
|
||||
* @library /test/lib
|
||||
* @run main Log1pTests
|
||||
* @bug 4851638 4939441 8078672
|
||||
* @summary Tests for {Math, StrictMath}.log1p (use -Dseed=X to set PRNG seed)
|
||||
@ -32,7 +31,7 @@
|
||||
* @key randomness
|
||||
*/
|
||||
|
||||
import jdk.testlibrary.RandomFactory;
|
||||
import jdk.test.lib.RandomFactory;
|
||||
|
||||
public class Log1pTests {
|
||||
private Log1pTests(){}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2016, 2017, 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
|
||||
@ -23,8 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @library /lib/testlibrary/
|
||||
* @build jdk.testlibrary.*
|
||||
* @library /test/lib
|
||||
* @run main MultiplicationTests
|
||||
* @bug 5100935
|
||||
* @summary Tests for multiplication methods (use -Dseed=X to set PRNG seed)
|
||||
@ -32,7 +31,7 @@
|
||||
*/
|
||||
|
||||
import java.math.BigInteger;
|
||||
import jdk.testlibrary.RandomFactory;
|
||||
import jdk.test.lib.RandomFactory;
|
||||
|
||||
public class MultiplicationTests {
|
||||
private MultiplicationTests(){}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -31,14 +31,13 @@ import java.util.Random;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import jdk.testlibrary.RandomFactory;
|
||||
import jdk.test.lib.RandomFactory;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 8140450
|
||||
* @summary Stack Walk Test (use -Dseed=X to set PRNG seed)
|
||||
* @library /lib/testlibrary
|
||||
* @build jdk.testlibrary.*
|
||||
* @library /test/lib
|
||||
* @compile StackRecorderUtil.java
|
||||
* @run main/othervm StackWalkTest
|
||||
* @run main/othervm/java.security.policy=stackwalktest.policy StackWalkTest
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2017, 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
|
||||
@ -25,8 +25,7 @@
|
||||
* @test
|
||||
* @bug 4347132 8136799
|
||||
* @key randomness
|
||||
* @library /lib/testlibrary/
|
||||
* @build jdk.testlibrary.RandomFactory
|
||||
* @library /test/lib
|
||||
* @build Tests
|
||||
* @build FdlibmTranslit
|
||||
* @build CubeRootTests
|
||||
@ -35,7 +34,7 @@
|
||||
* @author Joseph D. Darcy
|
||||
*/
|
||||
|
||||
import jdk.testlibrary.RandomFactory;
|
||||
import jdk.test.lib.RandomFactory;
|
||||
|
||||
/**
|
||||
* The tests in ../Math/CubeRootTests.java test properties that should
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -25,8 +25,7 @@
|
||||
* @test
|
||||
* @bug 8139688
|
||||
* @key randomness
|
||||
* @library /lib/testlibrary/
|
||||
* @build jdk.testlibrary.RandomFactory
|
||||
* @library /test/lib
|
||||
* @build Tests
|
||||
* @build FdlibmTranslit
|
||||
* @build ExpTests
|
||||
@ -34,7 +33,7 @@
|
||||
* @summary Tests specifically for StrictMath.exp
|
||||
*/
|
||||
|
||||
import jdk.testlibrary.RandomFactory;
|
||||
import jdk.test.lib.RandomFactory;
|
||||
|
||||
/**
|
||||
* The role of this test is to verify that the FDLIBM exp algorithm is
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2017, 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
|
||||
@ -26,8 +26,7 @@
|
||||
* @bug 4851638
|
||||
* @key randomness
|
||||
* @summary Tests for StrictMath.hypot
|
||||
* @library /lib/testlibrary/
|
||||
* @build jdk.testlibrary.RandomFactory
|
||||
* @library /test/lib
|
||||
* @build Tests
|
||||
* @build FdlibmTranslit
|
||||
* @build HypotTests
|
||||
@ -35,7 +34,7 @@
|
||||
* @author Joseph D. Darcy
|
||||
*/
|
||||
|
||||
import jdk.testlibrary.RandomFactory;
|
||||
import jdk.test.lib.RandomFactory;
|
||||
|
||||
/**
|
||||
* The tests in ../Math/HypotTests.java test properties that should
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -23,8 +23,7 @@
|
||||
|
||||
/* @test
|
||||
* @bug 8058779 8054307
|
||||
* @library /lib/testlibrary/
|
||||
* @build jdk.testlibrary.RandomFactory
|
||||
* @library /test/lib
|
||||
* @run testng LiteralReplace
|
||||
* @summary Basic tests of String.replace(CharSequence, CharSequence)
|
||||
* @key randomness
|
||||
@ -37,7 +36,7 @@ import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.Random;
|
||||
|
||||
import jdk.testlibrary.RandomFactory;
|
||||
import jdk.test.lib.RandomFactory;
|
||||
|
||||
import org.testng.annotations.Test;
|
||||
import org.testng.annotations.DataProvider;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2017, 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
|
||||
@ -21,7 +21,9 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import com.oracle.testlibrary.jsr292.Helper;
|
||||
import sun.invoke.util.Wrapper;
|
||||
import test.java.lang.invoke.lib.Helper;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.Serializable;
|
||||
import java.lang.invoke.MethodHandle;
|
||||
@ -31,13 +33,12 @@ import java.lang.invoke.WrongMethodTypeException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import sun.invoke.util.Wrapper;
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8060483 8066746
|
||||
* @key randomness
|
||||
* @library /lib/testlibrary /lib/testlibrary/jsr292
|
||||
* @library /lib/testlibrary /java/lang/invoke/common
|
||||
* @modules java.base/sun.invoke.util
|
||||
* @summary unit tests for MethodHandles.explicitCastArguments()
|
||||
* @run main ExplicitCastArgumentsTest
|
||||
@ -249,21 +250,27 @@ public class ExplicitCastArgumentsTest {
|
||||
for (Class parent : parents) {
|
||||
for (int j = 0; j < children.length; j++) {
|
||||
// Child type to parent type non-null conversion, shoud succeed
|
||||
testConversion(mode, children[j], parent, childInst[j], childInst[j], false, null);
|
||||
testConversion(mode, children[j], parent, childInst[j],
|
||||
childInst[j], false, null);
|
||||
// Child type to parent type null conversion, shoud succeed
|
||||
testConversion(mode, children[j], parent, null, null, false, null);
|
||||
testConversion(mode, children[j], parent, null,
|
||||
null, false, null);
|
||||
// Parent type to child type non-null conversion with parent
|
||||
// type instance, should fail
|
||||
testConversion(mode, parent, children[j], testSuperObj, null, true, ClassCastException.class);
|
||||
testConversion(mode, parent, children[j], testSuperObj,
|
||||
null, true, ClassCastException.class);
|
||||
// Parent type to child type non-null conversion with child
|
||||
// type instance, should succeed
|
||||
testConversion(mode, parent, children[j], childInst[j], childInst[j], false, null);
|
||||
testConversion(mode, parent, children[j], childInst[j],
|
||||
childInst[j], false, null);
|
||||
// Parent type to child type null conversion, should succeed
|
||||
testConversion(mode, parent, children[j], null, null, false, null);
|
||||
testConversion(mode, parent, children[j], null,
|
||||
null, false, null);
|
||||
}
|
||||
// Parent type to child type non-null conversion with sibling
|
||||
// type instance, should fail
|
||||
testConversion(mode, parent, testSubClass1, testObj02, null, true, ClassCastException.class);
|
||||
testConversion(mode, parent, testSubClass1, testObj02,
|
||||
null, true, ClassCastException.class);
|
||||
}
|
||||
// Sibling type non-null conversion, should fail
|
||||
testConversion(mode, testSubClass1,
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2017, 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
|
||||
@ -28,11 +28,15 @@
|
||||
* @ignore 8078602
|
||||
* @summary Test verifies that lambda forms are garbage collected
|
||||
* @author kshefov
|
||||
* @library /lib/testlibrary/jsr292 /lib/testlibrary
|
||||
* @library /lib/testlibrary /java/lang/invoke/common
|
||||
* @build TestMethods
|
||||
* @build LambdaFormTestCase
|
||||
* @build LFGarbageCollectedTest
|
||||
* @run main/othervm -Xmx64m -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+HeapDumpOnOutOfMemoryError -DHEAP_DUMP=false LFGarbageCollectedTest
|
||||
* @run main/othervm -Xmx64m
|
||||
* -XX:SoftRefLRUPolicyMSPerMB=0
|
||||
* -XX:+HeapDumpOnOutOfMemoryError
|
||||
* -DHEAP_DUMP=false
|
||||
* LFGarbageCollectedTest
|
||||
*/
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
|
@ -27,7 +27,7 @@
|
||||
* @key randomness
|
||||
* @summary Test verifies that lambda forms are cached when run with multiple threads
|
||||
* @author kshefov
|
||||
* @library /lib/testlibrary/jsr292 /lib/testlibrary
|
||||
* @library /lib/testlibrary /java/lang/invoke/common
|
||||
* @modules java.base/java.lang.invoke:open
|
||||
* java.base/java.lang.ref:open
|
||||
* java.management
|
||||
@ -38,16 +38,16 @@
|
||||
* @run main/othervm LFMultiThreadCachingTest
|
||||
*/
|
||||
|
||||
import test.java.lang.invoke.lib.CodeCacheOverflowProcessor;
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.BrokenBarrierException;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.CyclicBarrier;
|
||||
import com.oracle.testlibrary.jsr292.CodeCacheOverflowProcessor;
|
||||
|
||||
/**
|
||||
* Multiple threaded lambda forms caching test class.
|
||||
@ -57,13 +57,16 @@ public final class LFMultiThreadCachingTest extends LFCachingTestCase {
|
||||
private static final TestMethods.Kind[] KINDS;
|
||||
|
||||
static {
|
||||
EnumSet<TestMethods.Kind> set = EnumSet.complementOf(EnumSet.of(TestMethods.Kind.EXCEPT));
|
||||
EnumSet<TestMethods.Kind> set
|
||||
= EnumSet.complementOf(EnumSet.of(TestMethods.Kind.EXCEPT));
|
||||
KINDS = set.toArray(new TestMethods.Kind[set.size()]);
|
||||
if (KINDS.length < 2) {
|
||||
throw new Error("TESTBUG: KINDS.length[" + KINDS.length + "] should be at least 2");
|
||||
throw new Error("TESTBUG: KINDS.length[" + KINDS.length
|
||||
+ "] should be at least 2");
|
||||
}
|
||||
}
|
||||
private static final int CORES = Math.max(KINDS.length, Runtime.getRuntime().availableProcessors());
|
||||
private static final int CORES
|
||||
= Math.max(KINDS.length, Runtime.getRuntime().availableProcessors());
|
||||
|
||||
/**
|
||||
* Constructor a for multiple threaded lambda forms caching test case.
|
||||
@ -144,6 +147,7 @@ public final class LFMultiThreadCachingTest extends LFCachingTestCase {
|
||||
* @param args Accepts no arguments.
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
LambdaFormTestCase.runTests(LFMultiThreadCachingTest::new, EnumSet.allOf(TestMethods.class));
|
||||
LambdaFormTestCase.runTests(LFMultiThreadCachingTest::new,
|
||||
EnumSet.allOf(TestMethods.class));
|
||||
}
|
||||
}
|
||||
|
@ -27,7 +27,7 @@
|
||||
* @key randomness
|
||||
* @summary Test verifies that lambda forms are cached when run with single thread
|
||||
* @author kshefov
|
||||
* @library /lib/testlibrary/jsr292 /lib/testlibrary
|
||||
* @library /lib/testlibrary /java/lang/invoke/common
|
||||
* @modules java.base/java.lang.ref:open
|
||||
* java.base/java.lang.invoke:open
|
||||
* java.management
|
||||
@ -77,6 +77,7 @@ public final class LFSingleThreadCachingTest extends LFCachingTestCase {
|
||||
* @param args Accepts no arguments.
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
LambdaFormTestCase.runTests(LFSingleThreadCachingTest::new, EnumSet.allOf(TestMethods.class));
|
||||
LambdaFormTestCase.runTests(LFSingleThreadCachingTest::new,
|
||||
EnumSet.allOf(TestMethods.class));
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2017, 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
|
||||
@ -21,8 +21,11 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import com.oracle.testlibrary.jsr292.Helper;
|
||||
import com.oracle.testlibrary.jsr292.CodeCacheOverflowProcessor;
|
||||
import jdk.testlibrary.TimeLimitedRunner;
|
||||
import jdk.testlibrary.Utils;
|
||||
import test.java.lang.invoke.lib.CodeCacheOverflowProcessor;
|
||||
import test.java.lang.invoke.lib.Helper;
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.management.GarbageCollectorMXBean;
|
||||
import java.lang.management.ManagementFactory;
|
||||
@ -32,8 +35,6 @@ import java.lang.reflect.Method;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
import jdk.testlibrary.Utils;
|
||||
import jdk.testlibrary.TimeLimitedRunner;
|
||||
|
||||
/**
|
||||
* Lambda forms caching test case class. Contains all necessary test routines to
|
||||
@ -44,7 +45,8 @@ import jdk.testlibrary.TimeLimitedRunner;
|
||||
*/
|
||||
public abstract class LambdaFormTestCase {
|
||||
|
||||
private static final long TIMEOUT = Helper.IS_THOROUGH ? 0L : (long) (Utils.adjustTimeout(Utils.DEFAULT_TEST_TIMEOUT) * 0.9);
|
||||
private static final long TIMEOUT = Helper.IS_THOROUGH ?
|
||||
0L : (long) (Utils.adjustTimeout(Utils.DEFAULT_TEST_TIMEOUT) * 0.9);
|
||||
|
||||
/**
|
||||
* Reflection link to {@code j.l.i.MethodHandle.internalForm} method. It is
|
||||
@ -92,7 +94,8 @@ public abstract class LambdaFormTestCase {
|
||||
long failCounter;
|
||||
boolean passed;
|
||||
|
||||
TestRun(Function<TestMethods, LambdaFormTestCase> ctor, Collection<TestMethods> testMethods) {
|
||||
TestRun(Function<TestMethods, LambdaFormTestCase> ctor,
|
||||
Collection<TestMethods> testMethods) {
|
||||
this.ctor = ctor;
|
||||
this.testMethods = testMethods;
|
||||
long testCaseNum = testMethods.size();
|
||||
@ -175,10 +178,12 @@ public abstract class LambdaFormTestCase {
|
||||
* object.
|
||||
* @param testMethods list of test methods
|
||||
*/
|
||||
public static void runTests(Function<TestMethods, LambdaFormTestCase> ctor, Collection<TestMethods> testMethods) {
|
||||
public static void runTests(Function<TestMethods, LambdaFormTestCase> ctor,
|
||||
Collection<TestMethods> testMethods) {
|
||||
LambdaFormTestCase.TestRun run
|
||||
= new LambdaFormTestCase.TestRun(ctor, testMethods);
|
||||
TimeLimitedRunner runner = new TimeLimitedRunner(TIMEOUT, 4.0d, run::doIteration);
|
||||
TimeLimitedRunner runner
|
||||
= new TimeLimitedRunner(TIMEOUT, 4.0d, run::doIteration);
|
||||
try {
|
||||
runner.call();
|
||||
} catch (Exception ex) {
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user