/hg/release/icedtea7-forest-2.5/jdk: 8 new changesets
andrew at icedtea.classpath.org
andrew at icedtea.classpath.org
Fri Jul 17 23:47:17 UTC 2015
changeset a1834394c688 in /hg/release/icedtea7-forest-2.5/jdk
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.5/jdk?cmd=changeset;node=a1834394c688
author: andrew
date: Tue Jul 07 16:05:01 2015 +0100
S8081315, PR2405: Avoid giflib interlacing workaround with giflib 5.0.0 on
Summary: Sync with version of splashscreen_gif.c in OpenJDK 8 post-8081315.
changeset 95bbd38a7741 in /hg/release/icedtea7-forest-2.5/jdk
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.5/jdk?cmd=changeset;node=95bbd38a7741
author: andrew
date: Tue Jul 07 16:11:07 2015 +0100
8039921, PR2421: SHA1WithDSA with key > 1024 bits not working
Summary: Removed the key size limits for all SHAXXXWithDSA signatures
Reviewed-by: weijun
changeset 0b646f5aec62 in /hg/release/icedtea7-forest-2.5/jdk
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.5/jdk?cmd=changeset;node=0b646f5aec62
author: andrew
date: Tue Jul 07 18:26:59 2015 +0100
PR2458: Policy JAR files should be timestamped with the date of the policy file they hold
Summary: Retain timestamps across copies, touch the final JAR file with the date and use last policy change date (2007/12/01)
changeset 54ec28da5d3d in /hg/release/icedtea7-forest-2.5/jdk
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.5/jdk?cmd=changeset;node=54ec28da5d3d
author: omajid
date: Thu Apr 23 13:48:02 2015 -0400
8074761, PR2470: Empty optional parameters of LDAP query are not interpreted as empty
Reviewed-by: vinnie
Contributed-by: Stanislav Baiduzhyi <sbaiduzh at redhat.com>
changeset 07df3718391c in /hg/release/icedtea7-forest-2.5/jdk
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.5/jdk?cmd=changeset;node=07df3718391c
author: robm
date: Tue Jan 27 17:46:54 2015 +0000
8065238, PR2478: javax.naming.NamingException after upgrade to JDK 8
Reviewed-by: vinnie
changeset 42b2e3e712ca in /hg/release/icedtea7-forest-2.5/jdk
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.5/jdk?cmd=changeset;node=42b2e3e712ca
author: andrew
date: Tue Jul 07 20:05:59 2015 +0100
PR2482, RH489586, RH1236619: OpenJDK can't handle spaces in zone names in /etc/sysconfig/clock
Summary: Replace ' ' with '_' in zone name, as RHEL tools do.
changeset cb913465f11d in /hg/release/icedtea7-forest-2.5/jdk
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.5/jdk?cmd=changeset;node=cb913465f11d
author: andrew
date: Fri Jul 17 20:04:59 2015 +0100
Bump to icedtea-2.5.6pre02
changeset 5ae5406c6f79 in /hg/release/icedtea7-forest-2.5/jdk
details: http://icedtea.classpath.org/hg/release/icedtea7-forest-2.5/jdk?cmd=changeset;node=5ae5406c6f79
author: andrew
date: Sat Jul 18 00:45:28 2015 +0100
Added tag icedtea-2.5.6pre02 for changeset cb913465f11d
diffstat:
.hgtags | 1 +
make/javax/crypto/Makefile | 23 +-
make/jdk_generic_profile.sh | 2 +-
src/share/classes/com/sun/jndi/ldap/Connection.java | 8 +-
src/share/classes/com/sun/jndi/ldap/LdapURL.java | 64 +-
src/share/classes/sun/security/provider/DSA.java | 22 +-
src/share/native/sun/awt/splashscreen/splashscreen_gif.c | 24 +-
src/solaris/native/java/util/TimeZone_md.c | 88 +-
test/com/sun/jndi/ldap/LdapTimeoutTest.java | 531 +++++++++++---
test/com/sun/jndi/ldap/LdapURLOptionalFields.java | 62 +
test/sun/security/provider/DSA/TestDSA2.java | 4 +-
11 files changed, 569 insertions(+), 260 deletions(-)
diffs (truncated from 1127 to 500 lines):
diff -r f4a43a71c2ba -r 5ae5406c6f79 .hgtags
--- a/.hgtags Mon Jul 06 11:59:12 2015 +0100
+++ b/.hgtags Sat Jul 18 00:45:28 2015 +0100
@@ -559,3 +559,4 @@
fbace7bbfb811c902795fdee441aff90b6f8e13f icedtea-2.5.5pre02
fb9961d8dfda7df558b15feb6010ecd9f3ebfc89 icedtea-2.5.5
c9edd4f4aee1ee6c1dbde18343c8c6cafbfe6ede icedtea-2.5.6pre01
+cb913465f11de2f67d0d91b1d9d236e76122ff8c icedtea-2.5.6pre02
diff -r f4a43a71c2ba -r 5ae5406c6f79 make/javax/crypto/Makefile
--- a/make/javax/crypto/Makefile Mon Jul 06 11:59:12 2015 +0100
+++ b/make/javax/crypto/Makefile Sat Jul 18 00:45:28 2015 +0100
@@ -274,23 +274,25 @@
policy/unlimited/default_US_export.policy \
$(TEMPDIR_UNLIMITED)/META-INF/MANIFEST.MF
$(prep-target)
- $(CP) policy/unlimited/default_US_export.policy \
+ $(CP) -p policy/unlimited/default_US_export.policy \
$(TEMPDIR_UNLIMITED)
$(TOUCH) -r $(TEMPDIR_UNLIMITED)/META-INF \
$(TEMPDIR_UNLIMITED)/default_US_export.policy
( $(CD) $(TEMPDIR_UNLIMITED) && $(ZIPEXE) -Xr $@ META-INF \
default_US_export.policy )
+ $(TOUCH) -r $(TEMPDIR_UNLIMITED)/META-INF $@
$(UNSIGNED_POLICY_BUILDDIR)/unlimited/local_policy.jar: \
policy/unlimited/default_local.policy \
$(TEMPDIR_UNLIMITED)/META-INF/MANIFEST.MF
$(prep-target)
- $(CP) policy/unlimited/default_local.policy \
+ $(CP) -p policy/unlimited/default_local.policy \
$(TEMPDIR_UNLIMITED)
$(TOUCH) -r $(TEMPDIR_UNLIMITED)/META-INF \
$(TEMPDIR_UNLIMITED)/default_local.policy
( $(CD) $(TEMPDIR_UNLIMITED) && $(ZIPEXE) -Xr $@ META-INF \
default_local.policy )
+ $(TOUCH) -r $(TEMPDIR_UNLIMITED)/META-INF $@
$(TEMPDIR_UNLIMITED)/META-INF/MANIFEST.MF: \
policy/unlimited/UNLIMITED
@@ -300,7 +302,7 @@
$(TEMPDIR_UNLIMITED)/META-INF/MANIFEST.MF
$(CAT) policy/unlimited/UNLIMITED >> \
$(TEMPDIR_UNLIMITED)/META-INF/MANIFEST.MF
- $(TOUCH) -t 198001010000 $(TEMPDIR_UNLIMITED)/META-INF
+ $(TOUCH) -t 200712010000 $(TEMPDIR_UNLIMITED)/META-INF
$(TOUCH) -r $(TEMPDIR_UNLIMITED)/META-INF \
$(TEMPDIR_UNLIMITED)/META-INF/MANIFEST.MF
@@ -316,16 +318,17 @@
$(UNSIGNED_POLICY_BUILDDIR)/limited/US_export_policy.jar: \
$(UNSIGNED_POLICY_BUILDDIR)/unlimited/US_export_policy.jar
- $(install-file)
+ $(prep-target)
+ $(CP) -p $< $@
$(UNSIGNED_POLICY_BUILDDIR)/limited/local_policy.jar: \
policy/limited/default_local.policy \
policy/limited/exempt_local.policy \
$(TEMPDIR_LIMITED)/META-INF/MANIFEST.MF
$(prep-target)
- $(CP) policy/limited/default_local.policy \
+ $(CP) -p policy/limited/default_local.policy \
$(TEMPDIR_LIMITED)
- $(CP) policy/limited/exempt_local.policy \
+ $(CP) -p policy/limited/exempt_local.policy \
$(TEMPDIR_LIMITED)
$(TOUCH) -r $(TEMPDIR_LIMITED)/META-INF \
$(TEMPDIR_LIMITED)/default_local.policy
@@ -333,6 +336,7 @@
$(TEMPDIR_LIMITED)/exempt_local.policy
( $(CD) $(TEMPDIR_UNLIMITED) && $(ZIPEXE) -Xr $@ META-INF \
default_local.policy exempt_local.policy )
+ $(TOUCH) -r $(TEMPDIR_UNLIMITED)/META-INF $@
$(TEMPDIR_LIMITED)/META-INF/MANIFEST.MF: \
policy/limited/LIMITED
@@ -342,9 +346,10 @@
$(TEMPDIR_LIMITED)/META-INF/MANIFEST.MF
$(CAT) policy/limited/LIMITED >> \
$(TEMPDIR_LIMITED)/META-INF/MANIFEST.MF
- $(TOUCH) -t 198001010000 $(TEMPDIR_LIMITED)/META-INF
+ $(TOUCH) -t 200712010000 $(TEMPDIR_LIMITED)/META-INF
$(TOUCH) -r $(TEMPDIR_LIMITED)/META-INF \
$(TEMPDIR_LIMITED)/META-INF/MANIFEST.MF
+ $(TOUCH) -r $(TEMPDIR_UNLIMITED)/META-INF $@
UNSIGNED_POLICY_FILES = \
$(UNSIGNED_POLICY_BUILDDIR)/unlimited/US_export_policy.jar \
@@ -470,7 +475,7 @@
$(RM) \
$(POLICY_DESTDIR)/US_export_policy.jar \
$(POLICY_DESTDIR)/local_policy.jar
- $(CP) $^ $(POLICY_DESTDIR)
+ $(CP) -p $^ $(POLICY_DESTDIR)
install-limited: install-limited-jars
ifndef OPENJDK
@@ -484,7 +489,7 @@
$(RM) \
$(POLICY_DESTDIR)/US_export_policy.jar \
$(POLICY_DESTDIR)/local_policy.jar
- $(CP) $^ $(POLICY_DESTDIR)
+ $(CP) -p $^ $(POLICY_DESTDIR)
install-unlimited: install-unlimited-jars
ifndef OPENJDK
diff -r f4a43a71c2ba -r 5ae5406c6f79 make/jdk_generic_profile.sh
--- a/make/jdk_generic_profile.sh Mon Jul 06 11:59:12 2015 +0100
+++ b/make/jdk_generic_profile.sh Sat Jul 18 00:45:28 2015 +0100
@@ -625,7 +625,7 @@
# IcedTea versioning
export ICEDTEA_NAME="IcedTea"
-export PACKAGE_VERSION="2.5.5"
+export PACKAGE_VERSION="2.5.6pre02"
export DERIVATIVE_ID="${ICEDTEA_NAME} ${PACKAGE_VERSION}"
echo "Building ${DERIVATIVE_ID}"
diff -r f4a43a71c2ba -r 5ae5406c6f79 src/share/classes/com/sun/jndi/ldap/Connection.java
--- a/src/share/classes/com/sun/jndi/ldap/Connection.java Mon Jul 06 11:59:12 2015 +0100
+++ b/src/share/classes/com/sun/jndi/ldap/Connection.java Sat Jul 18 00:45:28 2015 +0100
@@ -460,14 +460,16 @@
rber = ldr.getReplyBer();
if (rber == null) {
if (readTimeout > 0) { // Socket read timeout is specified
-
// will be woken up before readTimeout only if reply is
// available
ldr.wait(readTimeout);
+ waited = true;
} else {
- ldr.wait(15 * 1000); // 15 second timeout
+ // no timeout is set so we wait infinitely until
+ // a response is received
+ // http://docs.oracle.com/javase/8/docs/technotes/guides/jndi/jndi-ldap.html#PROP
+ ldr.wait();
}
- waited = true;
} else {
break;
}
diff -r f4a43a71c2ba -r 5ae5406c6f79 src/share/classes/com/sun/jndi/ldap/LdapURL.java
--- a/src/share/classes/com/sun/jndi/ldap/LdapURL.java Mon Jul 06 11:59:12 2015 +0100
+++ b/src/share/classes/com/sun/jndi/ldap/LdapURL.java Sat Jul 18 00:45:28 2015 +0100
@@ -26,9 +26,6 @@
package com.sun.jndi.ldap;
import javax.naming.*;
-import javax.naming.directory.*;
-import javax.naming.spi.*;
-import java.net.URL;
import java.net.MalformedURLException;
import java.io.UnsupportedEncodingException;
import java.util.StringTokenizer;
@@ -211,43 +208,52 @@
// query begins with a '?' or is null
- if (query == null) {
+ if (query == null || query.length() < 2) {
return;
}
- int qmark2 = query.indexOf('?', 1);
+ int currentIndex = 1;
+ int nextQmark;
+ int endIndex;
- if (qmark2 < 0) {
- attributes = query.substring(1);
+ // attributes:
+ nextQmark = query.indexOf('?', currentIndex);
+ endIndex = nextQmark == -1 ? query.length() : nextQmark;
+ if (endIndex - currentIndex > 0) {
+ attributes = query.substring(currentIndex, endIndex);
+ }
+ currentIndex = endIndex + 1;
+ if (currentIndex >= query.length()) {
return;
- } else if (qmark2 != 1) {
- attributes = query.substring(1, qmark2);
}
- int qmark3 = query.indexOf('?', qmark2 + 1);
-
- if (qmark3 < 0) {
- scope = query.substring(qmark2 + 1);
+ // scope:
+ nextQmark = query.indexOf('?', currentIndex);
+ endIndex = nextQmark == -1 ? query.length() : nextQmark;
+ if (endIndex - currentIndex > 0) {
+ scope = query.substring(currentIndex, endIndex);
+ }
+ currentIndex = endIndex + 1;
+ if (currentIndex >= query.length()) {
return;
- } else if (qmark3 != qmark2 + 1) {
- scope = query.substring(qmark2 + 1, qmark3);
}
- int qmark4 = query.indexOf('?', qmark3 + 1);
+ // filter:
+ nextQmark = query.indexOf('?', currentIndex);
+ endIndex = nextQmark == -1 ? query.length() : nextQmark;
+ if (endIndex - currentIndex > 0) {
+ filter = query.substring(currentIndex, endIndex);
+ filter = UrlUtil.decode(filter, "UTF8");
+ }
+ currentIndex = endIndex + 1;
+ if (currentIndex >= query.length()) {
+ return;
+ }
- if (qmark4 < 0) {
- filter = query.substring(qmark3 + 1);
- } else {
- if (qmark4 != qmark3 + 1) {
- filter = query.substring(qmark3 + 1, qmark4);
- }
- extensions = query.substring(qmark4 + 1);
- if (extensions.length() > 0) {
- extensions = UrlUtil.decode(extensions, "UTF8");
- }
- }
- if (filter != null && filter.length() > 0) {
- filter = UrlUtil.decode(filter, "UTF8");
+ // extensions:
+ if (query.length() - currentIndex > 0) {
+ extensions = query.substring(currentIndex);
+ extensions = UrlUtil.decode(extensions, "UTF8");
}
}
diff -r f4a43a71c2ba -r 5ae5406c6f79 src/share/classes/sun/security/provider/DSA.java
--- a/src/share/classes/sun/security/provider/DSA.java Mon Jul 06 11:59:12 2015 +0100
+++ b/src/share/classes/sun/security/provider/DSA.java Sat Jul 18 00:45:28 2015 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -117,7 +117,6 @@
if (params == null) {
throw new InvalidKeyException("DSA private key lacks parameters");
}
- checkKey(params);
this.params = params;
this.presetX = priv.getX();
@@ -149,7 +148,6 @@
if (params == null) {
throw new InvalidKeyException("DSA public key lacks parameters");
}
- checkKey(params);
this.params = params;
this.presetY = pub.getY();
@@ -291,16 +289,6 @@
return null;
}
- protected void checkKey(DSAParams params) throws InvalidKeyException {
- // FIPS186-3 states in sec4.2 that a hash function which provides
- // a lower security strength than the (L, N) pair ordinarily should
- // not be used.
- int valueN = params.getQ().bitLength();
- if (valueN > md.getDigestLength()*8) {
- throw new InvalidKeyException("Key is too strong for this signature algorithm");
- }
- }
-
private BigInteger generateR(BigInteger p, BigInteger q, BigInteger g,
BigInteger k) {
BigInteger temp = g.modPow(k, p);
@@ -480,14 +468,6 @@
}
}
- @Override
- protected void checkKey(DSAParams params) throws InvalidKeyException {
- int valueL = params.getP().bitLength();
- if (valueL > 1024) {
- throw new InvalidKeyException("Key is too long for this algorithm");
- }
- }
-
/*
* Please read bug report 4044247 for an alternative, faster,
* NON-FIPS approved method to generate K
diff -r f4a43a71c2ba -r 5ae5406c6f79 src/share/native/sun/awt/splashscreen/splashscreen_gif.c
--- a/src/share/native/sun/awt/splashscreen/splashscreen_gif.c Mon Jul 06 11:59:12 2015 +0100
+++ b/src/share/native/sun/awt/splashscreen/splashscreen_gif.c Sat Jul 18 00:45:28 2015 +0100
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -213,16 +213,16 @@
byte_t *pSrc = image->RasterBits;
ImageFormat srcFormat;
ImageRect srcRect, dstRect;
- int pass, npass;
+ int pass = 4, npass = 5;
+#if GIFLIB_MAJOR < 5
+ /* Interlaced gif support is broken in giflib < 5
+ so we need to work around this */
if (desc->Interlace) {
pass = 0;
npass = 4;
}
- else {
- pass = 4;
- npass = 5;
- }
+#endif
srcFormat.colorMap = colorMapBuf;
srcFormat.depthBytes = 1;
@@ -311,8 +311,9 @@
free(pOldBitmapBits);
#if GIFLIB_MAJOR > 5 || (GIFLIB_MAJOR == 5 && GIFLIB_MINOR >= 1)
- if (DGifCloseFile(gif, NULL) == GIF_ERROR)
+ if (DGifCloseFile(gif, NULL) == GIF_ERROR) {
return 0;
+ }
#else
DGifCloseFile(gif);
#endif
@@ -324,17 +325,12 @@
SplashDecodeGifStream(Splash * splash, SplashStream * stream)
{
#if GIFLIB_MAJOR >= 5
- int error = 0;
- GifFileType *gif = DGifOpen((void *) stream, SplashStreamGifInputFunc, &error);
-
- if (error)
- return 0;
+ GifFileType *gif = DGifOpen((void *) stream, SplashStreamGifInputFunc, NULL);
#else
GifFileType *gif = DGifOpen((void *) stream, SplashStreamGifInputFunc);
+#endif
if (!gif)
return 0;
-#endif
-
return SplashDecodeGif(splash, gif);
}
diff -r f4a43a71c2ba -r 5ae5406c6f79 src/solaris/native/java/util/TimeZone_md.c
--- a/src/solaris/native/java/util/TimeZone_md.c Mon Jul 06 11:59:12 2015 +0100
+++ b/src/solaris/native/java/util/TimeZone_md.c Sat Jul 18 00:45:28 2015 +0100
@@ -53,7 +53,6 @@
static const char *ETC_TIMEZONE_FILE = "/etc/timezone";
-static const char *REDHAT_RELEASE_FILE = "/etc/redhat-release";
static const char *SYSCONFIG_CLOCK_FILE = "/etc/sysconfig/clock";
static const char *ZONEINFO_DIR = "/usr/share/zoneinfo";
static const char *DEFAULT_ZONEINFO_FILE = "/etc/localtime";
@@ -260,55 +259,50 @@
/*
* Next, try the ZONE entry in /etc/sysconfig/clock.
*/
- if ((fp = fopen(REDHAT_RELEASE_FILE, "r")) != NULL) {
- char id[7];
-
- /* Avoid this file on Fedora as may be buggy; RH489586 */
- if (fgets(id, sizeof (id), fp) != NULL &&
- strncmp(id, "Fedora", 6) != 0) {
- (void) fclose(fp);
- if ((fp = fopen(SYSCONFIG_CLOCK_FILE, "r")) != NULL) {
- char line[256];
-
- while (fgets(line, sizeof(line), fp) != NULL) {
- char *p = line;
- char *s;
-
- SKIP_SPACE(p);
- if (*p != 'Z') {
- continue;
- }
- if (strncmp(p, "ZONE=\"", 6) == 0) {
- p += 6;
- } else {
- /*
- * In case we need to parse it token by token.
- */
- if (strncmp(p, "ZONE", 4) != 0) {
- continue;
- }
- p += 4;
- SKIP_SPACE(p);
- if (*p++ != '=') {
- break;
- }
- SKIP_SPACE(p);
- if (*p++ != '"') {
- break;
- }
- }
- for (s = p; *s && *s != '"'; s++)
- ;
- if (*s != '"') {
- /* this ZONE entry is broken. */
- break;
- }
- *s = '\0';
- tz = strdup(p);
- break;
+ if ((fp = fopen(SYSCONFIG_CLOCK_FILE, "r")) != NULL) {
+ char line[256];
+
+ while (fgets(line, sizeof(line), fp) != NULL) {
+ char *p = line;
+ char *s;
+
+ SKIP_SPACE(p);
+ if (*p != 'Z') {
+ continue;
+ }
+ if (strncmp(p, "ZONE=\"", 6) == 0) {
+ p += 6;
+ } else {
+ /*
+ * In case we need to parse it token by token.
+ */
+ if (strncmp(p, "ZONE", 4) != 0) {
+ continue;
+ }
+ p += 4;
+ SKIP_SPACE(p);
+ if (*p++ != '=') {
+ break;
+ }
+ SKIP_SPACE(p);
+ if (*p++ != '"') {
+ break;
}
}
+ for (s = p; *s && *s != '"'; s++) {
+ /* Old files may contain spaces; RH489586 */
+ if (*s == ' ')
+ *s = '_';
+ }
+ if (*s != '"') {
+ /* this ZONE entry is broken. */
+ break;
+ }
+ *s = '\0';
+ tz = strdup(p);
+ break;
}
+
if (fp != NULL) {
(void) fclose(fp);
fp = NULL;
diff -r f4a43a71c2ba -r 5ae5406c6f79 test/com/sun/jndi/ldap/LdapTimeoutTest.java
--- a/test/com/sun/jndi/ldap/LdapTimeoutTest.java Mon Jul 06 11:59:12 2015 +0100
+++ b/test/com/sun/jndi/ldap/LdapTimeoutTest.java Sat Jul 18 00:45:28 2015 +0100
@@ -23,6 +23,7 @@
/**
* @test
+ * @run main/othervm LdapTimeoutTest
* @bug 7094377 8000487 6176036 7056489
* @summary Timeout tests for ldap
*/
@@ -33,141 +34,56 @@
import java.io.*;
import javax.naming.*;
import javax.naming.directory.*;
+import java.util.List;
import java.util.Hashtable;
+import java.util.ArrayList;
import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeoutException;
import java.util.concurrent.TimeUnit;
-public class LdapTimeoutTest {
- private static final ScheduledExecutorService pool =
- Executors.newScheduledThreadPool(1);
- static volatile int passed = 0, failed = 0;
- static void pass() {passed++;}
- static void fail() {failed++; Thread.dumpStack();}
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static java.util.concurrent.TimeUnit.NANOSECONDS;
More information about the distro-pkg-dev
mailing list