37 |
38 |
38 import java.io.ByteArrayInputStream; |
39 import java.io.ByteArrayInputStream; |
39 import java.io.ByteArrayOutputStream; |
40 import java.io.ByteArrayOutputStream; |
40 import java.io.IOException; |
41 import java.io.IOException; |
41 import java.io.InputStream; |
42 import java.io.InputStream; |
|
43 import java.util.List; |
42 import java.io.ObjectOutputStream; |
44 import java.io.ObjectOutputStream; |
43 import java.io.ObjectInputStream; |
45 import java.io.ObjectInputStream; |
44 import java.util.Arrays; |
46 import java.util.Arrays; |
|
47 import java.util.concurrent.CompletableFuture; |
|
48 import java.util.concurrent.ThreadLocalRandom; |
45 import java.util.concurrent.TimeUnit; |
49 import java.util.concurrent.TimeUnit; |
|
50 import java.util.stream.Collectors; |
|
51 import java.util.stream.IntStream; |
|
52 import jdk.test.lib.Utils; |
46 |
53 |
47 public class Basic { |
54 public class Basic { |
|
55 static final long LONG_DELAY_MS = Utils.adjustTimeout(10_000); |
|
56 |
48 private static void realMain(String[] args) throws Throwable { |
57 private static void realMain(String[] args) throws Throwable { |
49 |
58 |
50 for (TimeUnit u : TimeUnit.values()) { |
59 for (TimeUnit u : TimeUnit.values()) { |
51 System.out.println(u); |
60 System.out.println(u); |
52 check(u instanceof TimeUnit); |
61 check(u instanceof TimeUnit); |
69 equal( 60L, MINUTES.toSeconds(1)); |
78 equal( 60L, MINUTES.toSeconds(1)); |
70 equal(1000L, SECONDS.toMillis(1)); |
79 equal(1000L, SECONDS.toMillis(1)); |
71 equal(1000L, MILLISECONDS.toMicros(1)); |
80 equal(1000L, MILLISECONDS.toMicros(1)); |
72 equal(1000L, MICROSECONDS.toNanos(1)); |
81 equal(1000L, MICROSECONDS.toNanos(1)); |
73 |
82 |
74 long t0 = System.nanoTime(); |
83 //---------------------------------------------------------------- |
75 MILLISECONDS.sleep(3); /* See windows bug 6313903, might not sleep */ |
84 // TimeUnit.sleep sleeps for at least the specified time. |
76 long elapsedMillis = (System.nanoTime() - t0)/(1000L * 1000L); |
85 // TimeUnit.sleep(x, unit) for x <= 0 does not sleep at all. |
77 System.out.printf("elapsed=%d%n", elapsedMillis); |
86 //---------------------------------------------------------------- |
78 check(elapsedMillis >= 0); |
87 ThreadLocalRandom rnd = ThreadLocalRandom.current(); |
79 /* Might not sleep on windows: check(elapsedMillis >= 3); */ |
88 int maxTimeoutMillis = rnd.nextInt(1, 12); |
80 check(elapsedMillis < 1000); |
89 List<CompletableFuture<?>> workers = |
|
90 IntStream.range(-1, maxTimeoutMillis + 1) |
|
91 .mapToObj(timeoutMillis -> (Runnable) () -> { |
|
92 try { |
|
93 long startTime = System.nanoTime(); |
|
94 MILLISECONDS.sleep(timeoutMillis); |
|
95 long elapsedNanos = System.nanoTime() - startTime; |
|
96 long timeoutNanos = MILLISECONDS.toNanos(timeoutMillis); |
|
97 check(elapsedNanos >= timeoutNanos); |
|
98 } catch (InterruptedException fail) { |
|
99 throw new AssertionError(fail); |
|
100 }}) |
|
101 .map(CompletableFuture::runAsync) |
|
102 .collect(Collectors.toList()); |
|
103 |
|
104 workers.forEach(CompletableFuture<?>::join); |
81 |
105 |
82 //---------------------------------------------------------------- |
106 //---------------------------------------------------------------- |
83 // Tests for serialized form compatibility with previous release |
107 // Tests for serialized form compatibility with previous release |
84 //---------------------------------------------------------------- |
108 //---------------------------------------------------------------- |
85 byte[] serializedForm = /* Generated using tiger */ |
109 byte[] serializedForm = /* Generated using JDK 5 */ |
86 {-84, -19, 0, 5, '~', 'r', 0, 29, 'j', 'a', 'v', 'a', '.', |
110 {-84, -19, 0, 5, '~', 'r', 0, 29, 'j', 'a', 'v', 'a', '.', |
87 'u', 't', 'i', 'l', '.', 'c', 'o', 'n', 'c', 'u', 'r', 'r', 'e', |
111 'u', 't', 'i', 'l', '.', 'c', 'o', 'n', 'c', 'u', 'r', 'r', 'e', |
88 'n', 't', '.', 'T', 'i', 'm', 'e', 'U', 'n', 'i', 't', 0, 0, |
112 'n', 't', '.', 'T', 'i', 'm', 'e', 'U', 'n', 'i', 't', 0, 0, |
89 0, 0, 0, 0, 0, 0, 18, 0, 0, 'x', 'r', 0, 14, |
113 0, 0, 0, 0, 0, 0, 18, 0, 0, 'x', 'r', 0, 14, |
90 'j', 'a', 'v', 'a', '.', 'l', 'a', 'n', 'g', '.', 'E', 'n', 'u', |
114 'j', 'a', 'v', 'a', '.', 'l', 'a', 'n', 'g', '.', 'E', 'n', 'u', |