< prev index next >

test/gc/arguments/TestG1ConcMarkStepDurationMillis.java

Print this page
rev 8851 : [mq]: webrev.00
rev 8852 : [mq]: webrev.01

@@ -34,47 +34,59 @@
 import java.util.*;
 import java.util.regex.*;
 
 public class TestG1ConcMarkStepDurationMillis {
 
-  static final int EXPECT_TO_PASS = 0;
-  static final int EXPECT_TO_FAIL = 1;
+  static final int PASS                = 0;
+  static final int FAIL_IMPROPER_VALUE = 1;
+  static final int FAIL_OUT_RANGE      = 2;
 
   static final String DOUBLE_1      = "1.0";
   static final String DOUBLE_MAX    = "1.79e+308";
 
-  static final String PO_DOUBLE_INF = "1.79e+309";
-  static final String DOUBLE_N_1    = "-1.0";
-  static final String NE_DOUBLE_INF = "-1.79e+309";
+  static final String DOUBLE_NEG_EXP = "1.0e-30";
+  static final String NEG_DOUBLE_1   = "-1.0";
+
+  static final String DOUBLE_INF     = "1.79e+309";
+  static final String NEG_DOUBLE_INF = "-1.79e+309";
   static final String DOUBLE_NAN    = "abe+309";
+  static final String WRONG_DOUBLE_1 = "1.79e+308e";
+  static final String WRONG_DOUBLE_2 = "1.79ee+308";
 
   public static void main(String args[]) throws Exception {
     // Pass cases
-    runG1ConcMarkStepDurationMillisTest(DOUBLE_1,      EXPECT_TO_PASS);
-    runG1ConcMarkStepDurationMillisTest(DOUBLE_MAX,    EXPECT_TO_PASS);
+    runG1ConcMarkStepDurationMillisTest(DOUBLE_1,       PASS);
+    runG1ConcMarkStepDurationMillisTest(DOUBLE_MAX,     PASS);
 
-    // Fail cases
-    runG1ConcMarkStepDurationMillisTest(PO_DOUBLE_INF, EXPECT_TO_FAIL);
-    runG1ConcMarkStepDurationMillisTest(DOUBLE_N_1,    EXPECT_TO_FAIL);
-    runG1ConcMarkStepDurationMillisTest(NE_DOUBLE_INF, EXPECT_TO_FAIL);
-    runG1ConcMarkStepDurationMillisTest(DOUBLE_NAN,    EXPECT_TO_FAIL);
+    // Fail cases: out of range
+    runG1ConcMarkStepDurationMillisTest(DOUBLE_NEG_EXP, FAIL_OUT_RANGE);
+    runG1ConcMarkStepDurationMillisTest(NEG_DOUBLE_1,   FAIL_OUT_RANGE);
+
+    // Fail cases: not double
+    runG1ConcMarkStepDurationMillisTest(DOUBLE_INF,     FAIL_IMPROPER_VALUE);
+    runG1ConcMarkStepDurationMillisTest(NEG_DOUBLE_INF, FAIL_IMPROPER_VALUE);
+    runG1ConcMarkStepDurationMillisTest(DOUBLE_NAN,     FAIL_IMPROPER_VALUE);
+    runG1ConcMarkStepDurationMillisTest(WRONG_DOUBLE_1, FAIL_IMPROPER_VALUE);
+    runG1ConcMarkStepDurationMillisTest(WRONG_DOUBLE_2, FAIL_IMPROPER_VALUE);
   }
 
   private static void runG1ConcMarkStepDurationMillisTest(String expectedValue, int expectedResult) throws Exception {
     List<String> vmOpts = new ArrayList<>();
 
     Collections.addAll(vmOpts, "-XX:+UseG1GC", "-XX:G1ConcMarkStepDurationMillis="+expectedValue, "-XX:+PrintFlagsFinal", "-version");
 
     ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(vmOpts.toArray(new String[vmOpts.size()]));
     OutputAnalyzer output = new OutputAnalyzer(pb.start());
 
-    output.shouldHaveExitValue(expectedResult);
+    output.shouldHaveExitValue(expectedResult == PASS ? 0 : 1);
     String stdout = output.getStdout();
-    if (expectedResult == 0) {
+    if (expectedResult == PASS) {
       checkG1ConcMarkStepDurationMillisConsistency(stdout, expectedValue);
-    } else {
+    } else if (expectedResult == FAIL_IMPROPER_VALUE) {
       output.shouldContain("Improperly specified VM option");
+    } else if (expectedResult == FAIL_OUT_RANGE) {
+      output.shouldContain("outside the allowed range");
     }
   }
 
   private static void checkG1ConcMarkStepDurationMillisConsistency(String output, String expectedValue) {
     double actualValue = getDoubleValue("G1ConcMarkStepDurationMillis", output);
< prev index next >