19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
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 |
20 * or visit www.oracle.com if you need additional information or have any |
21 * questions. |
21 * questions. |
22 */ |
22 */ |
23 |
23 |
|
24 import static com.oracle.java.testlibrary.Asserts.assertEQ; |
|
25 import static com.oracle.java.testlibrary.Asserts.assertFalse; |
|
26 import static com.oracle.java.testlibrary.Asserts.assertTrue; |
|
27 import com.oracle.java.testlibrary.DynamicVMOption; |
|
28 |
24 /** |
29 /** |
25 * @test TestDynMaxHeapFreeRatio |
30 * @test TestDynMaxHeapFreeRatio |
26 * @bug 8028391 |
31 * @bug 8028391 |
27 * @summary Verify that MaxHeapFreeRatio flag is manageable |
32 * @summary Verify that MaxHeapFreeRatio flag is manageable |
28 * @library /testlibrary |
33 * @library /testlibrary |
31 * @run main/othervm -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=50 -XX:-UseAdaptiveSizePolicy TestDynMaxHeapFreeRatio |
36 * @run main/othervm -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=50 -XX:-UseAdaptiveSizePolicy TestDynMaxHeapFreeRatio |
32 * @run main/othervm -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=50 TestDynMaxHeapFreeRatio |
37 * @run main/othervm -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=50 TestDynMaxHeapFreeRatio |
33 * @run main/othervm -XX:MinHeapFreeRatio=51 -XX:MaxHeapFreeRatio=52 TestDynMaxHeapFreeRatio |
38 * @run main/othervm -XX:MinHeapFreeRatio=51 -XX:MaxHeapFreeRatio=52 TestDynMaxHeapFreeRatio |
34 * @run main/othervm -XX:MinHeapFreeRatio=75 -XX:MaxHeapFreeRatio=100 TestDynMaxHeapFreeRatio |
39 * @run main/othervm -XX:MinHeapFreeRatio=75 -XX:MaxHeapFreeRatio=100 TestDynMaxHeapFreeRatio |
35 */ |
40 */ |
36 import com.oracle.java.testlibrary.TestDynamicVMOption; |
41 public class TestDynMaxHeapFreeRatio { |
37 import com.oracle.java.testlibrary.DynamicVMOptionChecker; |
|
38 |
|
39 public class TestDynMaxHeapFreeRatio extends TestDynamicVMOption { |
|
40 |
|
41 public static final String MinFreeRatioFlagName = "MinHeapFreeRatio"; |
|
42 public static final String MaxFreeRatioFlagName = "MaxHeapFreeRatio"; |
|
43 |
|
44 public TestDynMaxHeapFreeRatio() { |
|
45 super(MaxFreeRatioFlagName); |
|
46 } |
|
47 |
|
48 public void test() { |
|
49 |
|
50 int minHeapFreeValue = DynamicVMOptionChecker.getIntValue(MinFreeRatioFlagName); |
|
51 System.out.println(MinFreeRatioFlagName + " = " + minHeapFreeValue); |
|
52 |
|
53 testPercentageValues(); |
|
54 |
|
55 checkInvalidValue(Integer.toString(minHeapFreeValue - 1)); |
|
56 checkValidValue(Integer.toString(minHeapFreeValue)); |
|
57 checkValidValue("100"); |
|
58 } |
|
59 |
42 |
60 public static void main(String args[]) throws Exception { |
43 public static void main(String args[]) throws Exception { |
61 new TestDynMaxHeapFreeRatio().test(); |
44 |
|
45 // low boundary value |
|
46 int minValue = DynamicVMOption.getInt("MinHeapFreeRatio"); |
|
47 System.out.println("MinHeapFreeRatio= " + minValue); |
|
48 |
|
49 String badValues[] = { |
|
50 null, |
|
51 "", |
|
52 "not a number", |
|
53 "8.5", "-0.01", |
|
54 Integer.toString(Integer.MIN_VALUE), |
|
55 Integer.toString(Integer.MAX_VALUE), |
|
56 Integer.toString(minValue - 1), |
|
57 "-1024", "-1", "101", "1997" |
|
58 }; |
|
59 |
|
60 String goodValues[] = { |
|
61 Integer.toString(minValue), |
|
62 Integer.toString(minValue + 1), |
|
63 Integer.toString((minValue + 100) / 2), |
|
64 "99", "100" |
|
65 }; |
|
66 |
|
67 DynamicVMOption option = new DynamicVMOption("MaxHeapFreeRatio"); |
|
68 |
|
69 assertTrue(option.isWriteable(), "Option " + option.name |
|
70 + " is expected to be writable"); |
|
71 |
|
72 for (String v : badValues) { |
|
73 assertFalse(option.isValidValue(v), |
|
74 "'" + v + "' is expected to be illegal for flag " + option.name); |
|
75 } |
|
76 for (String v : goodValues) { |
|
77 option.setValue(v); |
|
78 String newValue = option.getValue(); |
|
79 assertEQ(v, newValue); |
|
80 } |
62 } |
81 } |
63 |
|
64 } |
82 } |