1 /*
   2  * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 package jdk.test.lib.jittester;
  25 
  26 import jdk.test.lib.jittester.utils.OptionResolver;
  27 import jdk.test.lib.jittester.utils.OptionResolver.Option;
  28 
  29 public class ProductionParams {
  30 
  31     public static Option<Integer> productionLimit = null;
  32     public static Option<Integer> dataMemberLimit = null;
  33     public static Option<Integer> statementLimit = null;
  34     public static Option<Integer> testStatementLimit = null;
  35     public static Option<Integer> operatorLimit = null;
  36     public static Option<Long> complexityLimit = null;
  37     public static Option<Integer> memberFunctionsLimit = null;
  38     public static Option<Integer> memberFunctionsArgLimit = null;
  39     public static Option<Integer> stringLiteralSizeLimit = null;
  40     public static Option<Integer> classesLimit = null;
  41     public static Option<Integer> implementationLimit = null;
  42     public static Option<Integer> dimensionsLimit = null;
  43     public static Option<Integer> floatingPointPrecision = null;
  44     public static Option<Integer> minCfgDepth = null;
  45     public static Option<Integer> maxCfgDepth = null;
  46     public static Option<Boolean> enableStrictFP = null;
  47     public static Option<Boolean> printComplexity = null;
  48     public static Option<Boolean> printHierarchy = null;
  49     //public static BooleanOption disableFinals = optionResolver.addBooleanOption("disable-finals", "Don\'t use finals");
  50     public static Option<Boolean> disableFinalClasses = null;
  51     public static Option<Boolean> disableFinalMethods = null;
  52     public static Option<Boolean> disableFinalVariables = null;
  53     public static Option<Boolean> disableIf = null;
  54     public static Option<Boolean> disableSwitch = null;
  55     public static Option<Boolean> disableWhile = null;
  56     public static Option<Boolean> disableDoWhile = null;
  57     public static Option<Boolean> disableFor = null;
  58     public static Option<Boolean> disableFunctions = null;
  59     public static Option<Boolean> disableVarsInBlock = null;
  60     public static Option<Boolean> disableExprInInit = null;
  61     public static Option<Boolean> disableExternalSymbols = null;
  62     public static Option<String> addExternalSymbols = null;
  63     public static Option<Boolean> disableInheritance = null;
  64     public static Option<Boolean> disableDowncasts = null;
  65     public static Option<Boolean> disableStatic = null;
  66     public static Option<Boolean> disableInterfaces = null;
  67     public static Option<Boolean> disableClasses = null;
  68     public static Option<Boolean> disableNestedBlocks = null;
  69     public static Option<Boolean> disableArrays = null;
  70     public static Option<Boolean> enableFinalizers = null;
  71     // workaraound: to reduce chance throwing ArrayIndexOutOfBoundsException
  72     public static Option<Integer> chanceExpressionIndex = null;
  73     public static Option<String> testbaseDir = null;
  74     public static Option<Integer> numberOfTests = null;
  75     public static Option<String> seed = null;
  76     public static Option<String> classesFile = null;
  77     public static Option<String> excludeMethodsFile = null;
  78 
  79     public static void register(OptionResolver optionResolver) {
  80         productionLimit = optionResolver.addIntegerOption('l', "production-limit", 100, "Limit on steps in the production of an expression");
  81         dataMemberLimit = optionResolver.addIntegerOption('v', "data-member-limit", 10, "Upper limit on data members");
  82         statementLimit = optionResolver.addIntegerOption('s', "statement-limit", 30, "Upper limit on statements in function");
  83         testStatementLimit = optionResolver.addIntegerOption('e', "test-statement-limit", 300, "Upper limit on statements in test() function");
  84         operatorLimit = optionResolver.addIntegerOption('o', "operator-limit", 50, "Upper limit on operators in a statement");
  85         complexityLimit = optionResolver.addLongOption('x', "complexity-limit", 10000000, "Upper limit on complexity");
  86         memberFunctionsLimit = optionResolver.addIntegerOption('m', "member-functions-limit", 15, "Upper limit on member functions");
  87         memberFunctionsArgLimit = optionResolver.addIntegerOption('a', "member-functions-arg-limit", 5, "Upper limit on the number of member function args");
  88         stringLiteralSizeLimit = optionResolver.addIntegerOption("string-literal-size-limit", 10, "Upper limit on the number of chars in string literal");
  89         classesLimit = optionResolver.addIntegerOption('c', "classes-limit", 12, "Upper limit on the number of classes");
  90         implementationLimit = optionResolver.addIntegerOption('i', "implementation-limit", 3, "Upper limit on a number of interfaces a class can implement");
  91         dimensionsLimit = optionResolver.addIntegerOption('d', "dimensions-limit", 3, "Upper limit on array dimensions");
  92         floatingPointPrecision = optionResolver.addIntegerOption("fp-precision", 8, "A non-negative decimal integer used to restrict the number of digits after the decimal separator");
  93         minCfgDepth = optionResolver.addIntegerOption("min-cfg-depth", 2, "A non-negative decimal integer used to restrict the lower bound of depth of control flow graph");
  94         maxCfgDepth = optionResolver.addIntegerOption("max-cfg-depth", 3, "A non-negative decimal integer used to restrict the upper bound of depth of control flow graph");
  95         enableStrictFP = optionResolver.addBooleanOption("enable-strict-fp", "Add strictfp attribute to test class");
  96         printComplexity = optionResolver.addBooleanOption("print-complexity", "Print complexity of each statement");
  97         printHierarchy = optionResolver.addBooleanOption("print-hierarchy", "Print resulting class hierarchy");
  98         //disableFinals = optionResolver.addBooleanOption("disable-finals", "Don\'t use finals");
  99         disableFinalClasses = optionResolver.addBooleanOption("disable-final-classes", "Don\'t use final classes");
 100         disableFinalMethods = optionResolver.addBooleanOption("disable-final-methods", "Don\'t use final methods");
 101         disableFinalVariables = optionResolver.addBooleanOption("disable-final-variabless", "Don\'t use final variables");
 102         disableIf = optionResolver.addBooleanOption("disable-if", "Don\'t use conditionals");
 103         disableSwitch = optionResolver.addBooleanOption("disable-switch", "Don\'t use switch");
 104         disableWhile = optionResolver.addBooleanOption("disable-while", "Don\'t use while");
 105         disableDoWhile = optionResolver.addBooleanOption("disable-do-while", "Don\'t use do-while");
 106         disableFor = optionResolver.addBooleanOption("disable-for", "Don\'t use for");
 107         disableFunctions = optionResolver.addBooleanOption("disable-functions", "Don\'t use functions");
 108         disableVarsInBlock = optionResolver.addBooleanOption("disable-vars-in-block", "Don\'t generate variables in blocks");
 109         disableExprInInit = optionResolver.addBooleanOption("disable-expr-in-init", "Don\'t use complex expressions in variable initialization");
 110         disableExternalSymbols = optionResolver.addBooleanOption("disable-external-symbols", "Don\'t use external symbols");
 111         addExternalSymbols = optionResolver.addStringOption("add-external-symbols", "all", "Add symbols for listed classes (comma-separated list)");
 112         disableInheritance = optionResolver.addBooleanOption("disable-inheritance", "Disable inheritance");
 113         disableDowncasts = optionResolver.addBooleanOption("disable-downcasts", "Disable downcasting of objects");
 114         disableStatic = optionResolver.addBooleanOption("disable-static", "Disable generation of static objects and functions");
 115         disableInterfaces = optionResolver.addBooleanOption("disable-interfaces", "Disable generation of interfaces");
 116         disableClasses = optionResolver.addBooleanOption("disable-classes", "Disable generation of classes");
 117         disableNestedBlocks = optionResolver.addBooleanOption("disable-nested-blocks", "Disable generation of nested blocks");
 118         disableArrays = optionResolver.addBooleanOption("disable-arrays", "Disable generation of arrays");
 119         enableFinalizers = optionResolver.addBooleanOption("enable-finalizers", "Enable finalizers (for stress testing)");
 120         chanceExpressionIndex = optionResolver.addIntegerOption("chance-expression-index", 0, "A non negative decimal integer used to restrict chane of generating expression in array index while creating or accessing by index");
 121         testbaseDir = optionResolver.addStringOption("testbase-dir", ".", "Testbase dir");
 122         numberOfTests = optionResolver.addIntegerOption('n', "number-of-tests", 0, "Number of test classes to generate");
 123         seed = optionResolver.addStringOption("seed", "", "Random seed");
 124         classesFile = optionResolver.addStringOption('f', "classes-file", "", "File to read classes from");
 125         excludeMethodsFile = optionResolver.addStringOption('r', "exclude-methods-file", "", "File to read excluded methods from");
 126     }
 127 }