6935233: java/net/ServerSocket/AcceptCauseFileDescriptorLeak.java fails with modules build
Reviewed-by: alanb
This commit is contained in:
parent
7268d4595b
commit
6fb9ea7278
@ -643,9 +643,6 @@ java/net/ipv6tests/TcpTest.java generic-all
|
||||
# Linux i586, fails with unexpected output
|
||||
java/net/MulticastSocket/NoLoopbackPackets.java linux-i586
|
||||
|
||||
# Times out on windows x64, fails with samevm on solaris 11 i586
|
||||
java/net/ServerSocket/AcceptCauseFileDescriptorLeak.java generic-all
|
||||
|
||||
# Address already in use
|
||||
java/net/DatagramSocket/DatagramTimeout.java generic-all
|
||||
|
||||
|
@ -22,17 +22,16 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @summary configuring unconnected Socket before passing to implAccept can cause fd leak
|
||||
* @bug 6368984
|
||||
* @author Edward Wang
|
||||
* Test run from script, AcceptCauseFileDescriptorLeak.sh
|
||||
* author Edward Wang
|
||||
*/
|
||||
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
import java.io.IOException;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
|
||||
public class AcceptCauseFileDescriptorLeak {
|
||||
private static final int REPS = 1000;
|
||||
private static final int REPS = 2048;
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
final ServerSocket ss = new ServerSocket(0) {
|
||||
@ -60,31 +59,5 @@ public class AcceptCauseFileDescriptorLeak {
|
||||
}
|
||||
ss.close();
|
||||
t.join();
|
||||
|
||||
//
|
||||
// The threshold 20 below is a little arbitrary. The point here is that
|
||||
// the remaining open file descriptors should be constant independent
|
||||
// of REPS.
|
||||
//
|
||||
if (countOpenFD() > 20) {
|
||||
throw new RuntimeException("File descriptor leak detected.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Actually, this approach to count open file descriptors only
|
||||
* works for Solaris/Linux. On Windows platform, this method
|
||||
* will simply return zero. So the test will always be passed
|
||||
* on Windows, too.
|
||||
*/
|
||||
private static int countOpenFD() {
|
||||
File dirOfFD = new File("/proc/self/fd");
|
||||
File[] fds = dirOfFD.listFiles();
|
||||
|
||||
if (fds != null)
|
||||
return fds.length;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,48 @@
|
||||
#
|
||||
# Copyright 2010 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
# CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
# have any questions.
|
||||
#
|
||||
|
||||
# @test
|
||||
# @bug 6368984
|
||||
# @summary configuring unconnected Socket before passing to implAccept can cause fd leak
|
||||
# @build AcceptCauseFileDescriptorLeak
|
||||
# @run shell AcceptCauseFileDescriptorLeak.sh
|
||||
|
||||
OS=`uname -s`
|
||||
case "$OS" in
|
||||
Windows_* | CYGWIN* )
|
||||
echo "ulimit not on Windows"
|
||||
exit 0
|
||||
;;
|
||||
* )
|
||||
CLASSPATH=${TESTCLASSES}:${TESTSRC}
|
||||
;;
|
||||
esac
|
||||
export CLASSPATH
|
||||
|
||||
# hard limit needs to be less than 1024 for this bug
|
||||
NOFILES=`ulimit -n -H`
|
||||
if [ "$NOFILES" = "unlimited" ] || [ $NOFILES -ge 1024 ]; then
|
||||
ulimit -n 1024
|
||||
fi
|
||||
|
||||
${TESTJAVA}/bin/java AcceptCauseFileDescriptorLeak
|
Loading…
x
Reference in New Issue
Block a user