Copyright (c) 2017, 2022, 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.


The tests located under this directory run tests from the Java Concurrency
Stress test suite[1] (a.k.a. jcstress). This suite aims to verify the
correctness of concurrency support in the JDK.

All the tests are run through the test driver class -- JcstressRunner, which
downloads the specified build of org.openjdk.jcstress:jcstress-tests-all,
spawns a new JVM to run one jcstress test and checks that it finishes
successfully.

When the used version of org.openjdk.jcstress:jcstress-tests-all needs to be
changed, one should make corresponding changes to the artifact description in
JcstressRunner and rerun applications.jcstress.TestGenerator.

The */Test.java files should never be modified directly, because they are
generated by TestGenerator and therefore all required changes must be made in
that class.

[1] https://wiki.openjdk.org/display/CodeTools/jcstress

