jdk
1/*
2* Copyright (c) 2019, Google Inc. All rights reserved.
3* Copyright (c) 2019, 2020, Oracle and/or its affiliates. All rights reserved.
4* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5*
6* This code is free software; you can redistribute it and/or modify it
7* under the terms of the GNU General Public License version 2 only, as
8* published by the Free Software Foundation.
9*
10* This code is distributed in the hope that it will be useful, but WITHOUT
11* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13* version 2 for more details (a copy is included in the LICENSE file that
14* accompanied this code).
15*
16* You should have received a copy of the GNU General Public License version
17* 2 along with this work; if not, write to the Free Software Foundation,
18* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19*
20* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21* or visit www.oracle.com if you need additional information or have any
22* questions.
23*/
24
25/*
26* @test
27* @summary Test with extra TLS size.
28* @modules java.base/jdk.internal.misc
29* @library /test/lib
30* @requires os.family == "linux"
31* @compile T.java
32* @run main/native TestTLS
33*/
34import jdk.test.lib.Utils;35import jdk.test.lib.process.ProcessTools;36import jdk.test.lib.process.OutputAnalyzer;37
38
39public class TestTLS {40public static void main(String args[]) throws Exception {41test01();42}43
44// Testcase 1. Run with stack size adjusted for TLS, expect success45public static void test01() throws Exception {46ProcessBuilder pb = ProcessTools.createNativeTestProcessBuilder("stack-tls", "-add_tls");47pb.environment().put("CLASSPATH", Utils.TEST_CLASS_PATH);48new OutputAnalyzer(pb.start())49.shouldHaveExitValue(0);50}51
52// Testcase 2. Run with no stack size adjustment and expect failure.53// Potential failures include StackOverflowError, thread creation failures,54// crashes, and etc. The test case can be used to demonstrate the TLS issue55// but is excluded from running in regular testing.56public static void test02() throws Exception {57ProcessBuilder pb = ProcessTools.createNativeTestProcessBuilder("stack-tls");58pb.environment().put("CLASSPATH", Utils.TEST_CLASS_PATH);59new OutputAnalyzer(pb.start())60.shouldHaveExitValue(1);61}62}
63