1 /*
2 * Copyright (c) 2017, 2022, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23 package jdk.test.lib.cds;
24
25 import java.util.ArrayList;
26
27 // This class represents options used
28 // during creation of CDS archive and/or running JVM with a CDS archive
29 public class CDSOptions {
30 public String xShareMode = "on";
31 public String archiveName;
32 public ArrayList<String> prefix = new ArrayList<String>();
33 public ArrayList<String> suffix = new ArrayList<String>();
34 public boolean useSystemArchive = false;
35 public String appJar;
36 public String appJarDir;
37
38 // classes to be archived
39 public String[] classList;
40
41 // Indicate whether to append "-version" when using CDS Archive.
42 // Most of tests will use '-version'
43 public boolean useVersion = true;
44
45
46 public CDSOptions() {
47 }
48
49
50 public CDSOptions addPrefix(String... prefix) {
51 for (String s : prefix) this.prefix.add(s);
52 return this;
53 }
54
55 public CDSOptions addPrefix(String prefix[], String... extra) {
56 for (String s : prefix) this.prefix.add(s);
57 for (String s : extra) this.prefix.add(s);
58 return this;
59 }
60
61 public CDSOptions addSuffix(ArrayList<String> suffix) {
62 for (String s : suffix) this.suffix.add(s);
63 return this;
64 }
65
66 public CDSOptions addSuffix(String... suffix) {
67 for (String s : suffix) this.suffix.add(s);
68 return this;
69 }
70
71 public CDSOptions addSuffix(String suffix[], String... extra) {
72 for (String s : suffix) this.suffix.add(s);
73 for (String s : extra) this.suffix.add(s);
74 return this;
75 }
76
77 public CDSOptions setXShareMode(String mode) {
78 this.xShareMode = mode;
79 return this;
80 }
81
82
83 public CDSOptions setArchiveName(String name) {
84 this.archiveName = name;
85 return this;
86 }
87
88
89 public CDSOptions setUseVersion(boolean use) {
90 this.useVersion = use;
91 return this;
92 }
93
94 public CDSOptions setUseSystemArchive(boolean use) {
95 this.useSystemArchive = use;
96 return this;
97 }
98
99 public CDSOptions setClassList(String[] list) {
100 this.classList = list;
101 return this;
102 }
103 public CDSOptions setClassList(ArrayList<String> list) {
104 String array[] = new String[list.size()];
105 list.toArray(array);
106 this.classList = array;
107 return this;
108 }
109
110 // AppCDS methods
111 public CDSOptions setAppJar(String appJar) {
112 this.appJar = appJar;
113 return this;
114 }
115
116 public CDSOptions setAppJarDir(String appJarDir) {
117 this.appJarDir = appJarDir;
118 return this;
119 }
120
121 static ArrayList<String> disabledRuntimePrefixes = new ArrayList<>();
122
123 // Do not use the command-line option s, even if it's specified in -Dtest.cds.runtime.options
124 private static void disableRuntimePrefix(String s) {
125 disabledRuntimePrefixes.add(s);
126 }
127
128 // Do not use the command-line option "-XX:+UseEpsilonGC", even if it's specified in -Dtest.cds.runtime.options
129 public static void disableRuntimePrefixForEpsilonGC() {
130 disableRuntimePrefix("-XX:+UseEpsilonGC");
131 }
132 }