hotspot/test/runtime/CommandLine/VMOptionsFile/TestVMOptionsFile.java
author ddmitriev
Fri, 02 Oct 2015 09:04:10 -0700
changeset 33118 bbeea96c5b63
parent 33114 ad98b9e59ffa
child 33220 06fda2285c63
permissions -rw-r--r--
8138769: [TESTBUG] restore lost line from JDK-8137105 fix Reviewed-by: dcubed, rdurbin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
     1
/*
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
     2
 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
     4
 *
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
     7
 * published by the Free Software Foundation.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
     8
 *
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    13
 * accompanied this code).
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    14
 *
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    18
 *
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    21
 * questions.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    22
 */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    23
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    24
/*
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    25
 * @test
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    26
 * @bug 8061999
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    27
 * @summary Test "-XX:VMOptionsFile" VM option
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    28
 * @library /testlibrary
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    29
 * @modules jdk.management
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    30
 * @run main TestVMOptionsFile
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    31
 */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    32
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    33
import java.io.File;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    34
import java.io.FileWriter;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    35
import java.io.IOException;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    36
import java.nio.file.Files;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    37
import java.nio.file.Paths;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    38
import java.nio.file.Path;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    39
import java.nio.file.attribute.PosixFilePermissions;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    40
import java.nio.file.attribute.AclEntry;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    41
import java.nio.file.attribute.AclEntryPermission;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    42
import java.nio.file.attribute.AclEntryType;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    43
import java.nio.file.attribute.AclFileAttributeView;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    44
import java.nio.file.attribute.UserPrincipal;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    45
import java.nio.file.StandardCopyOption;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    46
import java.util.ArrayList;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    47
import java.util.Arrays;
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
    48
import java.util.LinkedHashSet;
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    49
import java.util.List;
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
    50
import java.util.Properties;
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    51
import java.util.Set;
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
    52
import jdk.test.lib.Asserts;
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
    53
import jdk.test.lib.DynamicVMOption;
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
    54
import jdk.test.lib.OutputAnalyzer;
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
    55
import jdk.test.lib.ProcessTools;
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    56
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    57
public class TestVMOptionsFile {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    58
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
    59
    /* Various valid VM Option files */
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    60
    private static final String VM_OPTION_FILE_EMPTY = "optionfile_empty";
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    61
    private static final String VM_OPTION_FILE_TABS_AND_SPACES = "optionfile_only_tabsandspaces";
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    62
    private static final String VM_OPTION_FILE_1 = "optionfile_1";
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    63
    private static final String VM_OPTION_FILE_2 = "optionFILE_2";
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    64
    private static final String VM_OPTION_FILE_3 = "optionfile_3";
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    65
    private static final String VM_OPTION_FILE_QUOTE = "optionfile_quote";
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
    66
    private static final String VM_OPTION_FILE_BIG = "optionfile_big";
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
    67
    private static final int REPEAT_COUNT = 512;
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    68
    /* Name of the file with flags for VM_OPTION_FILE_2 Option file */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    69
    private static final String FLAGS_FILE = "flags_file";
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    70
    /* VM Option file with a lot of options with quote on separate lines */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    71
    private static final String VM_OPTION_FILE_LOT_OF_OPTIONS_QUOTE = "optionfile_lot_of_options_quote";
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    72
    /* Number of properties defined in VM_OPTION_FILE_LOT_OF_OPTIONS_QUOTE */
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
    73
    private static final int NUM_OF_PROP_IN_FILE_LOT_OF_OPTIONS_QUOTE = 70;
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
    74
    /* VM Option file with long property */
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
    75
    private static final String VM_OPTION_FILE_WITH_LONG_PROPERTY = "optionfile_long_property";
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
    76
    private static final String LONG_PROPERTY_NAME = "veryl'" + String.format("%1536s", "").replace(' ', 'o') + "ng'name";
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
    77
    private static final String LONG_PROPERTY_VALUE = String.format("%2096s", "").replaceAll("    ", "long");
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
    78
    /* 2 VM Option files with unmatched quotes */
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
    79
    private static final String VM_OPTION_FILE_UNMATCHED_QUOTE_1 = "optionfile_unmatched_quote_1";
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
    80
    private static final String VM_OPTION_FILE_UNMATCHED_QUOTE_2 = "optionfile_unmatched_quote_2";
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    81
    /* VM Option file with bad option in it */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    82
    private static final String VM_OPTION_FILE_WITH_BAD_OPTION = "optionfile_bad_option";
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    83
    /* VM Option file with "-XX:VMOptionsFile=" option in it */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    84
    private static final String VM_OPTION_FILE_WITH_VM_OPTION_FILE = "optionfile_with_optionfile";
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    85
    /* VM Option file with "-XX:VMOptionsFile=" option in it, where file is the same option file */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    86
    private static final String VM_OPTION_FILE_WITH_SAME_VM_OPTION_FILE = "optionfile_with_same_optionfile";
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    87
    /* VM Option file without read permissions(not accessible) */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    88
    private static final String VM_OPTION_FILE_WITHOUT_READ_PERMISSIONS = "optionfile_wo_read_perm";
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    89
    /* VM Option file which does not exist */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    90
    private static final String NOT_EXISTING_FILE = "not_exist_junk2123";
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    91
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    92
    /* JAVA_TOOL_OPTIONS environment variable */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    93
    private static final String JAVA_TOOL_OPTIONS = "JAVA_TOOL_OPTIONS";
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    94
    /* _JAVA_OPTIONS environment variable */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    95
    private static final String JAVA_OPTIONS = "_JAVA_OPTIONS";
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    96
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    97
    /* Exit code for JVM, zero - for success, non-zero for failure */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    98
    private static final int JVM_SUCCESS = 0;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
    99
    private static final int JVM_FAIL_WITH_EXIT_CODE_1 = 1;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   100
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   101
    /* Current working directory */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   102
    private static final String CURRENT_DIR = System.getProperty("user.dir");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   103
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   104
    /* Source directory */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   105
    private static final String SOURCE_DIR = System.getProperty("test.src", ".");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   106
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   107
    /* VM Options which are passed to the JVM */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   108
    private static final List<String> VMParams = new ArrayList<>();
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   109
    /* Argument passed to the PrintPropertyAndOptions.main */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   110
    private static final Set<String> appParams = new LinkedHashSet<>();
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   111
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   112
    private static OutputAnalyzer output;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   113
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   114
    private static final String PRINT_PROPERTY_FORMAT = "Property %s=%s";
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   115
    private static final String PRINT_VM_OPTION_FORMAT = "Virtual Machine option %s=%s";
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   116
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   117
    /*
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   118
     * Get absoulte path to file from folder with sources
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   119
     */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   120
    private static String getAbsolutePathFromSource(String fileName) {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   121
        return SOURCE_DIR + File.separator + fileName;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   122
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   123
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   124
    /*
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   125
     * Make file non-readable by modifying its permissions.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   126
     * If file supports "posix" attributes, then modify it.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   127
     * Otherwise check for "acl" attributes.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   128
     */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   129
    private static void makeFileNonReadable(String file) throws IOException {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   130
        Path filePath = Paths.get(file);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   131
        Set<String> supportedAttr = filePath.getFileSystem().supportedFileAttributeViews();
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   132
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   133
        if (supportedAttr.contains("posix")) {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   134
            Files.setPosixFilePermissions(filePath, PosixFilePermissions.fromString("-w--w----"));
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   135
        } else if (supportedAttr.contains("acl")) {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   136
            UserPrincipal fileOwner = Files.getOwner(filePath);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   137
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   138
            AclFileAttributeView view = Files.getFileAttributeView(filePath, AclFileAttributeView.class);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   139
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   140
            AclEntry entry = AclEntry.newBuilder()
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   141
                    .setType(AclEntryType.DENY)
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   142
                    .setPrincipal(fileOwner)
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   143
                    .setPermissions(AclEntryPermission.READ_DATA)
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   144
                    .build();
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   145
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   146
            List<AclEntry> acl = view.getAcl();
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   147
            acl.add(0, entry);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   148
            view.setAcl(acl);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   149
        }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   150
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   151
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   152
    private static void copyFromSource(String fileName) throws IOException {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   153
        Files.copy(Paths.get(getAbsolutePathFromSource(fileName)),
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   154
                Paths.get(fileName), StandardCopyOption.REPLACE_EXISTING);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   155
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   156
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   157
    private static void createOptionFiles() throws IOException {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   158
        FileWriter fw = new FileWriter(VM_OPTION_FILE_WITH_VM_OPTION_FILE);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   159
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   160
        /* Create VM option file with following parameters "-XX:VMOptionFile=<absolute_path_to_the_VM_option_file> */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   161
        fw.write("-XX:VMOptionsFile=" + getAbsolutePathFromSource(VM_OPTION_FILE_1));
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   162
        fw.close();
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   163
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   164
        /* Create VM option file with following parameters "-XX:MinHeapFreeRatio=12 -XX:VMOptionFile=<absolute_path_to_the_same_VM_option_file> */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   165
        fw = new FileWriter(VM_OPTION_FILE_WITH_SAME_VM_OPTION_FILE);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   166
        fw.write("-XX:MinHeapFreeRatio=12 -XX:VMOptionsFile=" + (new File(VM_OPTION_FILE_WITH_SAME_VM_OPTION_FILE)).getCanonicalPath());
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   167
        fw.close();
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   168
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   169
        /* Create VM option file with long property */
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   170
        fw = new FileWriter(VM_OPTION_FILE_WITH_LONG_PROPERTY);
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   171
        fw.write("-D" + LONG_PROPERTY_NAME + "=" + LONG_PROPERTY_VALUE);
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   172
        fw.close();
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   173
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   174
        /* Create big VM option file */
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   175
        fw = new FileWriter(VM_OPTION_FILE_BIG);
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   176
        fw.write("-XX:MinHeapFreeRatio=17\n");
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   177
        for (int i = 0; i < REPEAT_COUNT; i++) {
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   178
            if (i == REPEAT_COUNT / 2) {
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   179
                fw.write("-XX:+PrintVMOptions ");
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   180
            }
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   181
            fw.write("-Dmy.property=value" + (i + 1) + "\n");
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   182
        }
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   183
        fw.write("-XX:MaxHeapFreeRatio=85\n");
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   184
        fw.close();
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   185
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   186
        /* Copy valid VM option file and change its permission to make it not accessible */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   187
        Files.copy(Paths.get(getAbsolutePathFromSource(VM_OPTION_FILE_1)),
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   188
                Paths.get(VM_OPTION_FILE_WITHOUT_READ_PERMISSIONS),
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   189
                StandardCopyOption.REPLACE_EXISTING);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   190
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   191
        makeFileNonReadable(VM_OPTION_FILE_WITHOUT_READ_PERMISSIONS);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   192
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   193
        /* Copy valid VM option file to perform test with relative path */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   194
        copyFromSource(VM_OPTION_FILE_2);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   195
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   196
        /* Copy flags file to the current working folder */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   197
        copyFromSource(FLAGS_FILE);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   198
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   199
        /* Create a new empty file */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   200
        new File(VM_OPTION_FILE_EMPTY).createNewFile();
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   201
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   202
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   203
    /*
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   204
     * Add parameters to the VM Parameters list
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   205
     */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   206
    private static void addVMParam(String... params) {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   207
        VMParams.addAll(Arrays.asList(params));
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   208
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   209
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   210
    /*
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   211
     * Add VM option name to the application arguments list
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   212
     */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   213
    private static void addVMOptionsToCheck(String... params) {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   214
        for (String param : params) {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   215
            appParams.add("vmoption=" + param);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   216
        }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   217
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   218
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   219
    /*
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   220
     * Add property to the VM Params list and to the application arguments list
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   221
     */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   222
    private static void addProperty(String propertyName, String propertyValue) {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   223
        addVMParam("-D" + propertyName + "=" + propertyValue);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   224
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   225
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   226
    /*
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   227
     * Add "-XX:VMOptionsfile" parameter to the VM Params list
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   228
     */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   229
    private static void addVMOptionsFile(String fileName) {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   230
        addVMParam("-XX:VMOptionsFile=" + fileName);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   231
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   232
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   233
    private static void outputShouldContain(String expectedString) {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   234
        output.shouldContain(expectedString);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   235
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   236
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   237
    private static void outputShouldNotContain(String expectedString) {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   238
        output.shouldNotContain(expectedString);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   239
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   240
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   241
    private static ProcessBuilder createProcessBuilder() throws Exception {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   242
        ProcessBuilder pb;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   243
        List<String> runJava = new ArrayList<>();
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   244
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   245
        runJava.addAll(VMParams);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   246
        runJava.add(PrintPropertyAndOptions.class.getName());
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   247
        runJava.addAll(appParams);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   248
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   249
        pb = ProcessTools.createJavaProcessBuilder(runJava.toArray(new String[0]));
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   250
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   251
        VMParams.clear();
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   252
        appParams.clear();
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   253
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   254
        return pb;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   255
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   256
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   257
    private static void runJavaCheckExitValue(ProcessBuilder pb, int expectedExitValue) throws Exception {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   258
        output = new OutputAnalyzer(pb.start());
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   259
        output.shouldHaveExitValue(expectedExitValue);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   260
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   261
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   262
    private static void runJavaCheckExitValue(int expectedExitValue) throws Exception {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   263
        runJavaCheckExitValue(createProcessBuilder(), expectedExitValue);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   264
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   265
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   266
    /*
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   267
     * Update environment variable in passed ProcessBuilder object to the passed value
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   268
     */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   269
    private static void updateEnvironment(ProcessBuilder pb, String name, String value) {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   270
        pb.environment().put(name, value);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   271
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   272
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   273
    /*
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   274
     * Check property value by examining output
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   275
     */
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   276
    private static void checkProperty(String property, String expectedValue) {
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   277
        outputShouldContain(String.format(PRINT_PROPERTY_FORMAT, property, expectedValue));
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   278
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   279
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   280
    /*
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   281
     * Check VM Option value by examining output
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   282
     */
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   283
    private static void checkVMOption(String vmOption, String expectedValue) {
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   284
        outputShouldContain(String.format(PRINT_VM_OPTION_FORMAT, vmOption, expectedValue));
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   285
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   286
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   287
    private static void testVMOptions() throws Exception {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   288
        /* Check that empty VM Option file is accepted without errors */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   289
        addVMOptionsFile(VM_OPTION_FILE_EMPTY);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   290
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   291
        runJavaCheckExitValue(JVM_SUCCESS);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   292
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   293
        /* Check that VM Option file with tabs and spaces is accepted without errors */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   294
        addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_TABS_AND_SPACES));
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   295
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   296
        runJavaCheckExitValue(JVM_SUCCESS);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   297
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   298
        /* Check that parameters are gotten from first VM Option file. Pass absolute path to the VM Option file */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   299
        addVMParam("-showversion");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   300
        addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_1));
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   301
        addVMOptionsToCheck("SurvivorRatio", "MinHeapFreeRatio");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   302
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   303
        runJavaCheckExitValue(JVM_SUCCESS);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   304
        outputShouldContain("interpreted mode");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   305
        checkProperty("optfile_1", "option_file_1");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   306
        checkVMOption("SurvivorRatio", "16");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   307
        checkVMOption("MinHeapFreeRatio", "22");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   308
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   309
        /*
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   310
         * Check that parameters are gotten from second VM Option file which also contains flags file.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   311
         * Flags file and option file contains NewRatio, but since options from VM Option file
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   312
         * are processed later NewRatio should be set to value from VM Option file
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   313
         * Pass relative path to the VM Option file in form "vmoptionfile"
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   314
         */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   315
        addVMOptionsFile(VM_OPTION_FILE_2);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   316
        addVMOptionsToCheck("UseGCOverheadLimit", "NewRatio", "MinHeapFreeRatio", "MaxFDLimit", "AlwaysPreTouch");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   317
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   318
        runJavaCheckExitValue(JVM_SUCCESS);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   319
        checkProperty("javax.net.ssl.keyStorePassword", "someVALUE123+");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   320
        checkVMOption("UseGCOverheadLimit", "true");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   321
        checkVMOption("NewRatio", "4");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   322
        checkVMOption("MinHeapFreeRatio", "3");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   323
        checkVMOption("MaxFDLimit", "true");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   324
        checkVMOption("AlwaysPreTouch", "false");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   325
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   326
        /* Check that parameters are gotten from third VM Option file which contains a mix of the options */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   327
        addVMParam("-showversion");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   328
        addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_3));
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   329
        addVMOptionsToCheck("UseGCOverheadLimit", "NewRatio");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   330
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   331
        runJavaCheckExitValue(JVM_SUCCESS);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   332
        outputShouldContain("interpreted mode");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   333
        checkProperty("other.secret.data", "qwerty");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   334
        checkProperty("property", "second");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   335
        checkVMOption("UseGCOverheadLimit", "false");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   336
        checkVMOption("NewRatio", "16");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   337
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   338
        /* Check that quotes are processed normally in VM Option file */
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   339
        addVMParam("-showversion");
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   340
        addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_QUOTE));
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   341
        addVMOptionsToCheck("ErrorFile");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   342
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   343
        runJavaCheckExitValue(JVM_SUCCESS);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   344
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   345
        outputShouldContain("interpreted mode");
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   346
        checkProperty("my.quote.single", "Property in single quote. Here a double qoute\" Add some slashes \\/");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   347
        checkProperty("my.quote.double", "Double qoute. Include single '.");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   348
        checkProperty("javax.net.ssl.trustStorePassword", "data @+NEW");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   349
        checkVMOption("ErrorFile", "./my error file");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   350
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   351
        /*
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   352
         * Verify that VM Option file accepts a file with 70 properties and with two options on separate
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   353
         * lines and properties that use quotes a lot.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   354
         */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   355
        addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_LOT_OF_OPTIONS_QUOTE));
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   356
        addVMOptionsToCheck("MinHeapFreeRatio", "MaxHeapFreeRatio");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   357
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   358
        runJavaCheckExitValue(JVM_SUCCESS);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   359
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   360
        for (int i = 1; i <= NUM_OF_PROP_IN_FILE_LOT_OF_OPTIONS_QUOTE; i++) {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   361
            checkProperty(String.format("prop%02d", i), String.format("%02d", i));
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   362
        }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   363
        checkVMOption("MinHeapFreeRatio", "7");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   364
        checkVMOption("MaxHeapFreeRatio", "96");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   365
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   366
        /*
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   367
         * Verify that VM Option file accepts a file with very long property.
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   368
         */
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   369
        addVMOptionsFile(VM_OPTION_FILE_WITH_LONG_PROPERTY);
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   370
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   371
        runJavaCheckExitValue(JVM_SUCCESS);
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   372
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   373
        checkProperty(LONG_PROPERTY_NAME.replaceAll("'", ""), LONG_PROPERTY_VALUE);
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   374
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   375
        /*
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   376
         * Verify that VM Option file accepts a big VM Option file
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   377
         */
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   378
        addVMOptionsFile(VM_OPTION_FILE_BIG);
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   379
        addVMOptionsToCheck("MinHeapFreeRatio");
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   380
        addVMOptionsToCheck("MaxHeapFreeRatio");
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   381
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   382
        runJavaCheckExitValue(JVM_SUCCESS);
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   383
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   384
        outputShouldContain("VM option '+PrintVMOptions'");
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   385
        checkProperty("my.property", "value" + REPEAT_COUNT);
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   386
        checkVMOption("MinHeapFreeRatio", "17");
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   387
        checkVMOption("MaxHeapFreeRatio", "85");
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   388
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   389
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   390
    private static ProcessBuilder prepareTestCase(int testCase) throws Exception {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   391
        ProcessBuilder pb;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   392
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   393
        Asserts.assertTrue(0 < testCase && testCase < 6, "testCase should be from 1 to 5");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   394
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   395
        addVMParam("-showversion");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   396
        addVMOptionsToCheck("MinHeapFreeRatio", "SurvivorRatio", "NewRatio");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   397
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   398
        if (testCase < 5) {
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   399
            addVMParam("-XX:Flags=flags_file", "-XX:-PrintVMOptions");
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   400
            addProperty("shared.property", "command_line_before");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   401
            addProperty("clb", "unique_command_line_before");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   402
            addVMParam("-XX:MinHeapFreeRatio=7");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   403
        }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   404
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   405
        if (testCase < 4) {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   406
            addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_1));
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   407
        }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   408
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   409
        if (testCase < 3) {
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   410
            addVMParam("-XX:MinHeapFreeRatio=9", "-XX:-PrintVMOptions");
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   411
            addProperty("shared.property", "command_line_after");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   412
            addProperty("cla", "unique_command_line_after");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   413
        }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   414
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   415
        /* Create ProcessBuilder after all setup is done to update environment variables */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   416
        pb = createProcessBuilder();
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   417
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   418
        if (testCase < 2) {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   419
            updateEnvironment(pb, JAVA_OPTIONS, "-Dshared.property=somevalue -Djo=unique_java_options "
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   420
                    + "-XX:MinHeapFreeRatio=18 -Dshared.property=java_options -XX:MinHeapFreeRatio=11 -XX:+PrintVMOptions");
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   421
        }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   422
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   423
        if (testCase < 6) {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   424
            updateEnvironment(pb, JAVA_TOOL_OPTIONS, "-Dshared.property=qwerty -Djto=unique_java_tool_options "
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   425
                    + "-XX:MinHeapFreeRatio=15 -Dshared.property=java_tool_options -XX:MinHeapFreeRatio=6 -XX:+PrintVMOptions");
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   426
        }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   427
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   428
        return pb;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   429
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   430
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   431
    private static void testVMOptionsLastArgumentsWins() throws Exception {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   432
        ProcessBuilder pb;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   433
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   434
        /*
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   435
         * "shared.property" property and "MinHeapFreeRatio" XX VM Option are defined
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   436
         * in flags file, JAVA_TOOL_OPTIONS and _JAVA_OPTIONS environment variables,
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   437
         * on command line before VM Option file, on command line after VM Option file
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   438
         * and also in VM Option file. Verify that last argument wins. Also check
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   439
         * unique properties and VM Options.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   440
         * Here is the order of options processing and last argument wins:
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   441
         *    1) Flags file
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   442
         *    2) JAVA_TOOL_OPTIONS environment variables
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   443
         *    3) Pseudo command line from launcher
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   444
         *    4) _JAVA_OPTIONS
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   445
         * In every category arguments processed from left to right and from up to down
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   446
         * and the last processed arguments wins, i.e. if argument is defined several
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   447
         * times the value of argument will be equal to the last processed argument.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   448
         *
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   449
         * "shared.property" property and "MinHeapFreeRatio" should be equal to the
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   450
         * value from _JAVA_OPTIONS environment variable
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   451
         */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   452
        pb = prepareTestCase(1);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   453
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   454
        runJavaCheckExitValue(pb, JVM_SUCCESS);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   455
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   456
        outputShouldContain("interpreted mode");
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   457
        outputShouldContain("VM option '+PrintVMOptions'");
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   458
        checkProperty("shared.property", "java_options");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   459
        checkVMOption("MinHeapFreeRatio", "11");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   460
        /* Each category defines its own properties */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   461
        checkProperty("jto", "unique_java_tool_options");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   462
        checkProperty("jo", "unique_java_options");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   463
        checkProperty("clb", "unique_command_line_before");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   464
        checkProperty("optfile_1", "option_file_1");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   465
        checkProperty("cla", "unique_command_line_after");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   466
        /* SurvivorRatio defined only in VM Option file */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   467
        checkVMOption("SurvivorRatio", "16");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   468
        /* NewRatio defined only in flags file */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   469
        checkVMOption("NewRatio", "5");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   470
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   471
        /*
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   472
         * The same as previous but without _JAVA_OPTIONS environment variable.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   473
         * "shared.property" property and "MinHeapFreeRatio" should be equal to the
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   474
         * value from pseudo command line after VM Option file
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   475
         */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   476
        pb = prepareTestCase(2);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   477
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   478
        runJavaCheckExitValue(pb, JVM_SUCCESS);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   479
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   480
        outputShouldContain("interpreted mode");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   481
        checkProperty("shared.property", "command_line_after");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   482
        checkVMOption("MinHeapFreeRatio", "9");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   483
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   484
        /*
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   485
         * The same as previous but without arguments in pseudo command line after
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   486
         * VM Option file.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   487
         * "shared.property" property and "MinHeapFreeRatio" should be equal to the
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   488
         * value from VM Option file.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   489
         */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   490
        pb = prepareTestCase(3);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   491
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   492
        runJavaCheckExitValue(pb, JVM_SUCCESS);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   493
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   494
        outputShouldContain("interpreted mode");
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   495
        outputShouldContain("VM option '+PrintVMOptions'");
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   496
        checkProperty("shared.property", "vmoptfile");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   497
        checkVMOption("MinHeapFreeRatio", "22");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   498
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   499
        /*
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   500
         * The same as previous but without arguments in VM Option file.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   501
         * "shared.property" property and "MinHeapFreeRatio" should be equal to the
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   502
         * value from pseudo command line.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   503
         */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   504
        pb = prepareTestCase(4);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   505
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   506
        runJavaCheckExitValue(pb, JVM_SUCCESS);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   507
33118
bbeea96c5b63 8138769: [TESTBUG] restore lost line from JDK-8137105 fix
ddmitriev
parents: 33114
diff changeset
   508
        outputShouldNotContain("VM option '+PrintVMOptions'");
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   509
        checkProperty("shared.property", "command_line_before");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   510
        checkVMOption("MinHeapFreeRatio", "7");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   511
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   512
        /*
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   513
         * The same as previous but without arguments from pseudo command line.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   514
         * "shared.property" property and "MinHeapFreeRatio" should be equal to the
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   515
         * value from JAVA_TOOL_OPTIONS environment variable.
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   516
         */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   517
        pb = prepareTestCase(5);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   518
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   519
        runJavaCheckExitValue(pb, JVM_SUCCESS);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   520
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   521
        outputShouldContain("VM option '+PrintVMOptions'");
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   522
        checkProperty("shared.property", "java_tool_options");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   523
        checkVMOption("MinHeapFreeRatio", "6");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   524
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   525
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   526
    private static void testVMOptionsInvalid() throws Exception {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   527
        ProcessBuilder pb;
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   528
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   529
        /* Pass directory instead of file */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   530
        addVMOptionsFile(CURRENT_DIR);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   531
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   532
        runJavaCheckExitValue(JVM_FAIL_WITH_EXIT_CODE_1);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   533
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   534
        /* Pass not existing file */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   535
        addVMOptionsFile(getAbsolutePathFromSource(NOT_EXISTING_FILE));
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   536
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   537
        runJavaCheckExitValue(JVM_FAIL_WITH_EXIT_CODE_1);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   538
        outputShouldContain("Could not open options file");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   539
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   540
        /* Pass VM option file with bad option */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   541
        addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_WITH_BAD_OPTION));
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   542
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   543
        runJavaCheckExitValue(JVM_FAIL_WITH_EXIT_CODE_1);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   544
        outputShouldContain("Unrecognized VM option");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   545
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   546
        /* Pass VM option file with same VM option file option in it */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   547
        addVMOptionsFile(VM_OPTION_FILE_WITH_SAME_VM_OPTION_FILE);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   548
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   549
        runJavaCheckExitValue(JVM_FAIL_WITH_EXIT_CODE_1);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   550
        outputShouldContain("VM options file is only supported on the command line");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   551
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   552
        /* Pass VM option file with VM option file option in it */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   553
        addVMOptionsFile(VM_OPTION_FILE_WITH_VM_OPTION_FILE);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   554
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   555
        runJavaCheckExitValue(JVM_FAIL_WITH_EXIT_CODE_1);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   556
        outputShouldContain("VM options file is only supported on the command line");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   557
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   558
        /* Pass VM option file which is not accessible (without read permissions) */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   559
        addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_WITHOUT_READ_PERMISSIONS));
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   560
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   561
        runJavaCheckExitValue(JVM_FAIL_WITH_EXIT_CODE_1);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   562
        outputShouldContain("Could not open options file");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   563
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   564
        /* Pass two VM option files */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   565
        addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_1));
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   566
        addVMOptionsFile(VM_OPTION_FILE_2);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   567
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   568
        runJavaCheckExitValue(JVM_FAIL_WITH_EXIT_CODE_1);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   569
        outputShouldContain("Only one VM Options file is supported on the command line");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   570
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   571
        /* Pass empty option file i.e. pass "-XX:VMOptionsFile=" */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   572
        addVMOptionsFile("");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   573
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   574
        runJavaCheckExitValue(JVM_FAIL_WITH_EXIT_CODE_1);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   575
        outputShouldContain("Could not open options file");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   576
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   577
        /* Pass VM option file with unmatched single quote */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   578
        addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_UNMATCHED_QUOTE_1));
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   579
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   580
        runJavaCheckExitValue(JVM_FAIL_WITH_EXIT_CODE_1);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   581
        outputShouldContain("Unmatched quote in");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   582
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   583
        /* Pass VM option file with unmatched double quote in X option */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   584
        addVMOptionsFile(getAbsolutePathFromSource(VM_OPTION_FILE_UNMATCHED_QUOTE_2));
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   585
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   586
        runJavaCheckExitValue(JVM_FAIL_WITH_EXIT_CODE_1);
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   587
        outputShouldContain("Unmatched quote in");
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   588
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   589
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   590
    public static void main(String[] args) throws Exception {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   591
        /*
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   592
         * Preparation before actual testing - create two VM Option files
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   593
         * which contains VM Option file in it and copy other files to the
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   594
         * current working folder
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   595
         */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   596
        createOptionFiles();
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   597
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   598
        testVMOptions(); /* Test VM Option file general functionality */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   599
        testVMOptionsLastArgumentsWins(); /* Verify that last argument wins */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   600
        testVMOptionsInvalid(); /* Test invalid VM Option file functionality */
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   601
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   602
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   603
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   604
    public static class PrintPropertyAndOptions {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   605
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   606
        public static void main(String[] arguments) {
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   607
            String vmOption;
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   608
            Properties properties = System.getProperties();
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   609
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   610
            for (String propertyName : properties.stringPropertyNames()) {
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   611
                System.out.println(String.format(PRINT_PROPERTY_FORMAT, propertyName, System.getProperty(propertyName, "NOT DEFINED")));
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   612
            }
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   613
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   614
            for (String arg : arguments) {
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   615
                if (arg.startsWith("vmoption=")) {
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   616
                    vmOption = arg.substring(9);
33114
ad98b9e59ffa 8137105: [TESTBUG] Add test cases for VM Options file feature with removed file size limit
dcubed
parents: 33095
diff changeset
   617
                    System.out.println(String.format(PRINT_VM_OPTION_FORMAT, vmOption, new DynamicVMOption(vmOption).getValue()));
33095
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   618
                }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   619
            }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   620
        }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   621
    }
e56c951d8735 8073331: [TESTBUG] Test for VM option file feature (VM options specified in file)
ddmitriev
parents:
diff changeset
   622
}