Path: blob/master/test/hotspot/jtreg/runtime/CommandLine/IgnoreUnrecognizedVMOptions.java
40942 views
/*1* Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223import jdk.test.lib.process.ProcessTools;24import jdk.test.lib.process.OutputAnalyzer;25import jdk.test.lib.Platform;2627/*28* @test29* @bug 812985530* @summary -XX:+IgnoreUnrecognizedVMOptions should work according to the spec from JDK-812985531*32* @library /test/lib33* @modules java.base/jdk.internal.misc34* java.management35* @run driver IgnoreUnrecognizedVMOptions36*/37public class IgnoreUnrecognizedVMOptions {3839private static void runJavaAndCheckExitValue(boolean shouldSucceed, String... args) throws Exception {40ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(args);41OutputAnalyzer output = new OutputAnalyzer(pb.start());42if (shouldSucceed) {43output.shouldHaveExitValue(0);44} else {45output.shouldHaveExitValue(1);46}47}4849public static void main(String[] args) throws Exception {50boolean product = !Platform.isDebugBuild();5152/*53#1.1 wrong value and non-existing flag:54exists, invalid value does not exist55-XX:MinHeapFreeRatio=notnum -XX:THIS_FLAG_DOESNT_EXIST56-IgnoreUnrecognizedVMOptions ERR ERR57+IgnoreUnrecognizedVMOptions ERR OK58*/59runJavaAndCheckExitValue(false, "-XX:-IgnoreUnrecognizedVMOptions", "-XX:MinHeapFreeRatio=notnum", "-version");60runJavaAndCheckExitValue(false, "-XX:-IgnoreUnrecognizedVMOptions", "-XX:THIS_FLAG_DOESNT_EXIST", "-version");61runJavaAndCheckExitValue(false, "-XX:+IgnoreUnrecognizedVMOptions", "-XX:MinHeapFreeRatio=notnum", "-version");62runJavaAndCheckExitValue(true, "-XX:+IgnoreUnrecognizedVMOptions", "-XX:THIS_FLAG_DOESNT_EXIST", "-version");6364/*65#1.2 normal flag with ranges:66exists, in range exists, out of range67-XX:StackRedPages=1 -XX:StackRedPages=068-IgnoreUnrecognizedVMOptions OK ERR69+IgnoreUnrecognizedVMOptions OK ERR70*/71runJavaAndCheckExitValue(true, "-XX:-IgnoreUnrecognizedVMOptions", "-XX:StackRedPages=1", "-version");72runJavaAndCheckExitValue(false, "-XX:-IgnoreUnrecognizedVMOptions", "-XX:StackRedPages=0", "-version");73runJavaAndCheckExitValue(true, "-XX:+IgnoreUnrecognizedVMOptions", "-XX:StackRedPages=1", "-version");74runJavaAndCheckExitValue(false, "-XX:+IgnoreUnrecognizedVMOptions", "-XX:StackRedPages=0", "-version");7576/*77#1.3 develop & notproduct flag on debug VM:78develop & !product_build notproduct & !product_build79-XX:+DeoptimizeALot -XX:+VerifyCodeCache80-IgnoreUnrecognizedVMOptions OK OK81+IgnoreUnrecognizedVMOptions OK OK82*/83if (!product) {84runJavaAndCheckExitValue(true, "-XX:-IgnoreUnrecognizedVMOptions", "-XX:+DeoptimizeALot", "-version");85runJavaAndCheckExitValue(true, "-XX:-IgnoreUnrecognizedVMOptions", "-XX:+VerifyCodeCache", "-version");86runJavaAndCheckExitValue(true, "-XX:+IgnoreUnrecognizedVMOptions", "-XX:+DeoptimizeALot", "-version");87runJavaAndCheckExitValue(true, "-XX:+IgnoreUnrecognizedVMOptions", "-XX:+VerifyCodeCache", "-version");88}8990/*91#1.4 develop & notproduct flag on product VM:92develop & !product_build notproduct & product_build93-XX:+DeoptimizeALot -XX:+VerifyCodeCache94-IgnoreUnrecognizedVMOptions ERR ERR95+IgnoreUnrecognizedVMOptions OK OK96*/97if (product) {98runJavaAndCheckExitValue(false, "-XX:-IgnoreUnrecognizedVMOptions", "-XX:+DeoptimizeALot", "-version");99runJavaAndCheckExitValue(false, "-XX:-IgnoreUnrecognizedVMOptions", "-XX:+VerifyCodeCache", "-version");100runJavaAndCheckExitValue(true, "-XX:+IgnoreUnrecognizedVMOptions", "-XX:+DeoptimizeALot", "-version");101runJavaAndCheckExitValue(true, "-XX:+IgnoreUnrecognizedVMOptions", "-XX:+VerifyCodeCache", "-version");102}103104105/*106#1.5 malformed develop & notproduct flag on debug VM:107develop & !product_build notproduct & !product_build108-XX:DeoptimizeALot -XX:VerifyCodeCache109-IgnoreUnrecognizedVMOptions ERR ERR110+IgnoreUnrecognizedVMOptions ERR ERR111*/112if (!product) {113runJavaAndCheckExitValue(false, "-XX:-IgnoreUnrecognizedVMOptions", "-XX:DeoptimizeALot", "-version");114runJavaAndCheckExitValue(false, "-XX:-IgnoreUnrecognizedVMOptions", "-XX:VerifyCodeCache", "-version");115runJavaAndCheckExitValue(false, "-XX:+IgnoreUnrecognizedVMOptions", "-XX:DeoptimizeALot", "-version");116runJavaAndCheckExitValue(false, "-XX:+IgnoreUnrecognizedVMOptions", "-XX:VerifyCodeCache", "-version");117}118119/*120#1.6 malformed develop & notproduct flag on product VM:121develop & !product_build notproduct & product_build122-XX:DeoptimizeALot -XX:VerifyCodeCache123-IgnoreUnrecognizedVMOptions ERR ERR124+IgnoreUnrecognizedVMOptions OK OK125*/126if (product) {127runJavaAndCheckExitValue(false, "-XX:-IgnoreUnrecognizedVMOptions", "-XX:DeoptimizeALot", "-version");128runJavaAndCheckExitValue(false, "-XX:-IgnoreUnrecognizedVMOptions", "-XX:VerifyCodeCache", "-version");129runJavaAndCheckExitValue(true, "-XX:+IgnoreUnrecognizedVMOptions", "-XX:DeoptimizeALot", "-version");130runJavaAndCheckExitValue(true, "-XX:+IgnoreUnrecognizedVMOptions", "-XX:VerifyCodeCache", "-version");131}132133/*134#1.7 locked flag:135diagnostic & locked experimental & locked136-XX:-UnlockDiagnosticVMOptions -XX:-UnlockExperimentalVMOptions137-XX:+PrintInlining -XX:+AlwaysSafeConstructors138-IgnoreUnrecognizedVMOptions ERR ERR139+IgnoreUnrecognizedVMOptions ERR ERR140*/141runJavaAndCheckExitValue(false, "-XX:-IgnoreUnrecognizedVMOptions", "-XX:-UnlockDiagnosticVMOptions", "-XX:+PrintInlining", "-version");142runJavaAndCheckExitValue(false, "-XX:-IgnoreUnrecognizedVMOptions", "-XX:-UnlockExperimentalVMOptions", "-XX:+AlwaysSafeConstructors", "-version");143runJavaAndCheckExitValue(false, "-XX:+IgnoreUnrecognizedVMOptions", "-XX:-UnlockDiagnosticVMOptions", "-XX:+PrintInlining", "-version");144runJavaAndCheckExitValue(false, "-XX:+IgnoreUnrecognizedVMOptions", "-XX:-UnlockExperimentalVMOptions", "-XX:+AlwaysSafeConstructors", "-version");145146/*147#1.8 malformed locked flag:148diagnostic & locked experimental & locked149-XX:-UnlockDiagnosticVMOptions -XX:-UnlockExperimentalVMOptions150-XX:PrintInlining -XX:AlwaysSafeConstructors151-IgnoreUnrecognizedVMOptions ERR ERR152+IgnoreUnrecognizedVMOptions ERR ERR153*/154runJavaAndCheckExitValue(false, "-XX:-IgnoreUnrecognizedVMOptions", "-XX:-UnlockDiagnosticVMOptions", "-XX:PrintInlining", "-version");155runJavaAndCheckExitValue(false, "-XX:-IgnoreUnrecognizedVMOptions", "-XX:-UnlockExperimentalVMOptions", "-XX:AlwaysSafeConstructors", "-version");156runJavaAndCheckExitValue(false, "-XX:+IgnoreUnrecognizedVMOptions", "-XX:-UnlockDiagnosticVMOptions", "-XX:PrintInlining", "-version");157runJavaAndCheckExitValue(false, "-XX:+IgnoreUnrecognizedVMOptions", "-XX:-UnlockExperimentalVMOptions", "-XX:AlwaysSafeConstructors", "-version");158159/*160#1.9 malformed unlocked flag:161diagnostic & locked experimental & locked162-XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions163-XX:PrintInlining -XX:AlwaysSafeConstructors164-IgnoreUnrecognizedVMOptions ERR ERR165+IgnoreUnrecognizedVMOptions ERR ERR166*/167runJavaAndCheckExitValue(false, "-XX:-IgnoreUnrecognizedVMOptions", "-XX:+UnlockDiagnosticVMOptions", "-XX:PrintInlining", "-version");168runJavaAndCheckExitValue(false, "-XX:-IgnoreUnrecognizedVMOptions", "-XX:+UnlockExperimentalVMOptions", "-XX:AlwaysSafeConstructors", "-version");169runJavaAndCheckExitValue(false, "-XX:+IgnoreUnrecognizedVMOptions", "-XX:+UnlockDiagnosticVMOptions", "-XX:PrintInlining", "-version");170runJavaAndCheckExitValue(false, "-XX:+IgnoreUnrecognizedVMOptions", "-XX:+UnlockExperimentalVMOptions", "-XX:AlwaysSafeConstructors", "-version");171}172}173174175