changeset 66:d7f7a93800e4

Rewire the grading levels: introduce ACCEPTABLE_SPEC, remove REQUIRED, renames.
author shade
date Thu, 28 Nov 2013 19:10:32 +0400
parents 08da99c27fa4
children 39ce92f75ef3
files harness/src/main/java/org/openjdk/jcstress/infra/grading/HTMLReportPrinter.java harness/src/main/java/org/openjdk/jcstress/infra/grading/TestGrading.java harness/src/main/resources/xsd/descriptions/test-descriptions.xsd tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomic-integer-array.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomic-integer-updater.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomic-integer.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomic-long-array.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomic-long-updater.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomic-long.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomicity-buffers.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomicity-crosscache.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomicity-primitive-plain.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomicity-primitive-reflect.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomicity-primitive-tear.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/causality.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/fences.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/initArrays.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/initObjects.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/initialization.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/interrupts.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/locks-stamped.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/locks.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/scratch.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/singletons.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/tearing-buffers.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/tearing.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/volatiles-iriw.xml tests-custom/src/main/resources/org/openjdk/jcstress/desc/volatiles.xml tests-custom/src/main/scratch/completable/future-completable.xml
diffstat 29 files changed, 130 insertions(+), 99 deletions(-) [+]
line wrap: on
line diff
--- a/harness/src/main/java/org/openjdk/jcstress/infra/grading/HTMLReportPrinter.java	Thu Nov 28 13:40:59 2013 +0400
+++ b/harness/src/main/java/org/openjdk/jcstress/infra/grading/HTMLReportPrinter.java	Thu Nov 28 19:10:32 2013 +0400
@@ -140,7 +140,8 @@
                 "   .failedProgress { background-color: #FF0000; color: #FFFFFF; text-align: center; font-weight: bold; }\n" +
                 "   .passed { color: #00AA00; text-align: center; font-weight: bold; }\n" +
                 "   .failed { color: #FF0000; text-align: center; font-weight: bold; }\n" +
-                "   .special{ color: #0000FF; text-align: center; font-weight: bold; }\n" +
+                "   .interesting { color: #0000FF; text-align: center; font-weight: bold; }\n" +
+                "   .spec { color: #AAAA00; text-align: center; font-weight: bold; }\n" +
                 "   .endResult { font-size: 48pt; text-align: center; font-weight: bold; }\n" +
                 " </style>\n" +
                 "</head>\n" +
@@ -286,6 +287,7 @@
                 "   <td><b>" + pack + "</b></td>\n" +
                 "   <td>&nbsp;</td>\n" +
                 "   <td>&nbsp;</td>\n" +
+                "   <td>&nbsp;</td>\n" +
                 "   <td></td>" +
                 "</tr>");
     }
@@ -307,10 +309,15 @@
                 output.println("<td class=\"failed\">FAILED</td>");
             }
 
-            if (grading.isSpecial) {
-                output.println("<td class=\"special\">INTERESTING</td>");
+            if (grading.hasInteresting) {
+                output.println("<td class=\"interesting\">INTERESTING</td>");
             } else {
-                output.println("<td class=\"special\"></td>");
+                output.println("<td class=\"interesting\"></td>");
+            }
+            if (grading.hasSpec) {
+                output.println("<td class=\"spec\">SPEC</td>");
+            } else {
+                output.println("<td class=\"spec\"></td>");
             }
         } else {
             output.println("<td class=\"failed\">MISSING DESCRIPTION</td>");
@@ -486,15 +493,13 @@
 
     public Color selectColor(ExpectType type, boolean isZero) {
         switch (type) {
-            case REQUIRED:
-                return isZero ? Color.RED : Color.GREEN;
             case ACCEPTABLE:
                 return isZero ? Color.LIGHT_GRAY : Color.GREEN;
             case FORBIDDEN:
                 return isZero ? Color.LIGHT_GRAY : Color.RED;
-            case KNOWN_ACCEPTABLE:
+            case ACCEPTABLE_INTERESTING:
                 return isZero ? Color.LIGHT_GRAY : Color.CYAN;
-            case KNOWN_FORBIDDEN:
+            case ACCEPTABLE_SPEC:
                 return isZero ? Color.LIGHT_GRAY : Color.YELLOW;
             case UNKNOWN:
                 return Color.RED;
--- a/harness/src/main/java/org/openjdk/jcstress/infra/grading/TestGrading.java	Thu Nov 28 13:40:59 2013 +0400
+++ b/harness/src/main/java/org/openjdk/jcstress/infra/grading/TestGrading.java	Thu Nov 28 19:10:32 2013 +0400
@@ -39,7 +39,8 @@
  */
 public class TestGrading {
     public boolean isPassed;
-    public boolean isSpecial;
+    public boolean hasInteresting;
+    public boolean hasSpec;
     public final List<String> failureMessages;
 
     public TestGrading(TestResult r, Test test) {
@@ -47,13 +48,15 @@
 
         if (test == null) {
             isPassed = false;
-            isSpecial = false;
+            hasInteresting = false;
+            hasSpec = false;
             failureMessages.add("No test.");
             return;
         }
 
         isPassed = true;
-        isSpecial = false;
+        hasInteresting = false;
+        hasSpec = false;
 
         List<State> unmatchedStates = new ArrayList<State>();
         unmatchedStates.addAll(r.getStates());
@@ -63,7 +66,8 @@
             for (State s : r.getStates()) {
                 if (c.getMatch().contains(s.getId())) {
                     isPassed &= passed(c.getExpect(), s.getCount());
-                    isSpecial |= special(c.getExpect(), s.getCount());
+                    hasInteresting |= hasInteresting(c.getExpect(), s.getCount());
+                    hasSpec |= hasSpec(c.getExpect(), s.getCount());
                     failureMessages.add(failureMessage(s.getId(), c.getExpect(), s.getCount()));
                     matched = true;
                     unmatchedStates.remove(s);
@@ -72,14 +76,16 @@
 
             if (!matched) {
                 isPassed &= passed(c.getExpect(), 0);
-                isSpecial |= special(c.getExpect(), 0);
+                hasInteresting |= hasInteresting(c.getExpect(), 0);
+                hasSpec |= hasSpec(c.getExpect(), 0);
                 failureMessages.add(failureMessage("N/A", c.getExpect(), 0));
             }
         }
 
         for (State s : unmatchedStates) {
             isPassed &= passed(test.getUnmatched().getExpect(), s.getCount());
-            isSpecial |= special(test.getUnmatched().getExpect(), s.getCount());
+            hasInteresting |= hasInteresting(test.getUnmatched().getExpect(), s.getCount());
+            hasSpec |= hasSpec(test.getUnmatched().getExpect(), s.getCount());
             failureMessages.add(failureMessage(s.getId(), test.getUnmatched().getExpect(), s.getCount()));
         }
     }
@@ -90,13 +96,11 @@
         } else {
             switch (expect) {
                 case ACCEPTABLE:
-                case KNOWN_ACCEPTABLE:
+                case ACCEPTABLE_INTERESTING:
+                case ACCEPTABLE_SPEC:
                     return null;
                 case FORBIDDEN:
-                case KNOWN_FORBIDDEN:
                     return "Observed forbidden state: " + id;
-                case REQUIRED:
-                    return "Have not observed required state" + id;
                 case UNKNOWN:
                     return "Missing description";
                 default:
@@ -108,12 +112,25 @@
     public static boolean passed(ExpectType expect, long count) {
         switch (expect) {
             case ACCEPTABLE:
-            case KNOWN_ACCEPTABLE:
+            case ACCEPTABLE_INTERESTING:
+            case ACCEPTABLE_SPEC:
                 return true;
             case FORBIDDEN:
-            case KNOWN_FORBIDDEN:
                 return count == 0;
-            case REQUIRED:
+            case UNKNOWN:
+                return false;
+            default:
+                throw new IllegalStateException("No grading for expect type = " + expect);
+        }
+    }
+
+    private static boolean hasInteresting(ExpectType expect, long count) {
+        switch (expect) {
+            case ACCEPTABLE:
+            case ACCEPTABLE_SPEC:
+            case FORBIDDEN:
+                return false;
+            case ACCEPTABLE_INTERESTING:
                 return count != 0;
             case UNKNOWN:
                 return false;
@@ -122,16 +139,14 @@
         }
     }
 
-    public static boolean special(ExpectType expect, long count) {
+    private static boolean hasSpec(ExpectType expect, long count) {
         switch (expect) {
             case ACCEPTABLE:
-            case REQUIRED:
+            case ACCEPTABLE_INTERESTING:
             case FORBIDDEN:
                 return false;
-            case KNOWN_ACCEPTABLE:
+            case ACCEPTABLE_SPEC:
                 return count != 0;
-            case KNOWN_FORBIDDEN:
-                return count == 0;
             case UNKNOWN:
                 return false;
             default:
--- a/harness/src/main/resources/xsd/descriptions/test-descriptions.xsd	Thu Nov 28 13:40:59 2013 +0400
+++ b/harness/src/main/resources/xsd/descriptions/test-descriptions.xsd	Thu Nov 28 19:10:32 2013 +0400
@@ -31,11 +31,22 @@
 
     <xsd:simpleType name="expectType">
         <xsd:restriction base="xsd:string">
-            <xsd:enumeration value="REQUIRED"/>
+            <!-- Acceptable by spec, acceptable by common sense -->
             <xsd:enumeration value="ACCEPTABLE"/>
+
+            <!-- Acceptable by spec, acceptable by common sense, still interesting -->
+            <xsd:enumeration value="ACCEPTABLE_INTERESTING"/>
+
+            <!--
+                Acceptable by spec, forbidden by common sense;
+                Some implementations avoid these behaviors, even though formally allowed.
+            -->
+            <xsd:enumeration value="ACCEPTABLE_SPEC"/>
+
+            <!-- Forbidden by spec -->
             <xsd:enumeration value="FORBIDDEN"/>
-            <xsd:enumeration value="KNOWN_ACCEPTABLE"/>
-            <xsd:enumeration value="KNOWN_FORBIDDEN"/>
+
+            <!-- Synthetic unknown -->
             <xsd:enumeration value="UNKNOWN"/>
         </xsd:restriction>
     </xsd:simpleType>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomic-integer-array.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomic-integer-array.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -60,7 +60,7 @@
         </description>
         <case>
             <match>[0, 128, 128]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>
                 Seeing all updates intact.
             </description>
@@ -1090,7 +1090,7 @@
         </case>
         <case>
             <match>[1, 10]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>Tx[fail] -> Tx[fail]</description>
         </case>
         <case>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomic-integer-updater.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomic-integer-updater.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -1043,7 +1043,7 @@
         </case>
         <case>
             <match>[1, 10]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>Tx[fail] -> Tx[fail]</description>
         </case>
         <case>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomic-integer.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomic-integer.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -1080,7 +1080,7 @@
         </case>
         <case>
             <match>[1, 10]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>Tx[fail] -> Tx[fail]</description>
         </case>
         <case>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomic-long-array.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomic-long-array.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -60,7 +60,7 @@
         </description>
         <case>
             <match>[0, 128, 128]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>
                 Seeing all updates intact.
             </description>
@@ -1090,7 +1090,7 @@
         </case>
         <case>
             <match>[1, 10]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>Tx[fail] -> Tx[fail]</description>
         </case>
         <case>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomic-long-updater.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomic-long-updater.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -1043,7 +1043,7 @@
         </case>
         <case>
             <match>[1, 10]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>Tx[fail] -> Tx[fail]</description>
         </case>
         <case>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomic-long.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomic-long.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -1080,7 +1080,7 @@
         </case>
         <case>
             <match>[1, 10]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>Tx[fail] -> Tx[fail]</description>
         </case>
         <case>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomicity-buffers.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomicity-buffers.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -40,7 +40,7 @@
             <description>Seeing the default value, this is valid under race.</description>
         </case>
         <unmatched>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_SPEC</expect>
             <description>All other cases are unexpected, but legal.</description>
             <refs>
                 <url>http://cs.oswego.edu/pipermail/concurrency-interest/2012-December/010390.html</url>
@@ -63,7 +63,7 @@
             <description>Seeing the default value, this is valid under race.</description>
         </case>
         <unmatched>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_SPEC</expect>
             <description>All other cases are unexpected, but legal.</description>
             <refs>
                 <url>http://cs.oswego.edu/pipermail/concurrency-interest/2012-December/010390.html</url>
@@ -86,7 +86,7 @@
             <description>Seeing the default value, this is valid under race.</description>
         </case>
         <unmatched>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_SPEC</expect>
             <description>All other cases are unexpected, but legal.</description>
             <refs>
                 <url>http://cs.oswego.edu/pipermail/concurrency-interest/2012-December/010390.html</url>
@@ -109,7 +109,7 @@
             <description>Seeing the default value, this is valid under race.</description>
         </case>
         <unmatched>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_SPEC</expect>
             <description>All other cases are unexpected, but legal.</description>
             <refs>
                 <url>http://cs.oswego.edu/pipermail/concurrency-interest/2012-December/010390.html</url>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomicity-crosscache.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomicity-crosscache.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -64,7 +64,7 @@
             Tests if Unsafe breaks the atomicity while doing cross cache-line reads/writes.
         </description>
         <unmatched>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_SPEC</expect>
             <description>All other cases are unexpected, but legal.</description>
             <refs>
                 <url>http://cs.oswego.edu/pipermail/concurrency-interest/2012-December/010390.html</url>
@@ -78,7 +78,7 @@
             Tests if Unsafe breaks the atomicity while doing cross cache-line reads/writes.
         </description>
         <unmatched>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_SPEC</expect>
             <description>All other cases are unexpected, but legal.</description>
             <refs>
                 <url>http://cs.oswego.edu/pipermail/concurrency-interest/2012-December/010390.html</url>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomicity-primitive-plain.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomicity-primitive-plain.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -159,7 +159,7 @@
             </description>
         </case>
         <unmatched>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_SPEC</expect>
             <description>
                 Seeing the torn value. This is specifically allowed by JLS.
                 This is not a surprising behavior on some 32-bit systems which do not have full-width 64-bit instructions.
@@ -333,7 +333,7 @@
         <case>
             <match>[4294967295]</match>
             <match>[-4294967296]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_SPEC</expect>
             <description>
                 Seeing the torn value. This is specifically allowed by JLS.
                 This is not a surprising behavior on some 32-bit systems which do not have full-width 64-bit instructions.
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomicity-primitive-reflect.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomicity-primitive-reflect.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -159,7 +159,7 @@
             </description>
         </case>
         <unmatched>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_SPEC</expect>
             <description>
                 Seeing the torn value. This is specifically allowed by JLS.
                 This is not a surprising behavior on some 32-bit systems which do not have full-width 64-bit instructions.
@@ -333,7 +333,7 @@
         <case>
             <match>[4294967295]</match>
             <match>[-4294967296]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_SPEC</expect>
             <description>
                 Seeing the torn value. This is specifically allowed by JLS.
                 This is not a surprising behavior on some 32-bit systems which do not have full-width 64-bit instructions.
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomicity-primitive-tear.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomicity-primitive-tear.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -49,7 +49,7 @@
         <case>
             <match>[0, 0, 0, 0, -1, -1, -1, -1]</match>
             <match>[-1, -1, -1, -1, 0, 0, 0, 0]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_SPEC</expect>
             <description>
                 Seeing the torn value. This is specifically allowed by JLS.
                 This is not a surprising behavior on some 32-bit systems which do not have full-width 64-bit instructions.
@@ -229,7 +229,7 @@
         <case>
             <match>[0, 0, 0, 0, -1, -1, -1, -1]</match>
             <match>[-1, -1, -1, -1, 0, 0, 0, 0]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_SPEC</expect>
             <description>
                 Seeing the torn value. This is specifically allowed by JLS.
                 This is not a surprising behavior on some 32-bit systems which do not have full-width 64-bit instructions.
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/causality.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/causality.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -32,7 +32,7 @@
         <case>
             <match>[0, 1]</match>
             <match>[1, 0]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>
                 There is the race on the field. Second read can still read the default value.
             </description>
@@ -58,7 +58,7 @@
         <case>
             <match>[0.0, 1.0]</match>
             <match>[1.0, 0.0]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>
                 There is the race on the field. Second read can still read the default value.
             </description>
@@ -84,7 +84,7 @@
         <case>
             <match>[A, B]</match>
             <match>[B, A]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>
                 There is the race on the field. Second read can still read the default value.
             </description>
@@ -110,7 +110,7 @@
         <case>
             <match>[true, false]</match>
             <match>[false, true]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>
                 There is the race on the field. Second read can still read the default value.
             </description>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/fences.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/fences.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -137,7 +137,7 @@
         </case>
         <case>
             <match>[0, 0]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>
                 Acceptable without sequential consistency enforced.
             </description>
@@ -246,7 +246,7 @@
         <case>
             <match>[1, 0]</match>
             <match>[1, 1]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>
                 Without fence or volatile can read the default or old value for $x after $y is observed.
             </description>
@@ -317,7 +317,7 @@
         </case>
         <case>
             <match>[1, 0]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>
                 Reads the default value for field $x after publication.
             </description>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/initArrays.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/initArrays.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -98,7 +98,7 @@
     <template name="allZeroesBoolean">
         <case>
             <match>[false, false, false, false]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>
                 Seeing the completely initialized array, and all elements are with default values.
             </description>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/initObjects.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/initObjects.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -98,7 +98,7 @@
     <template name="allZeroesBoolean">
         <case>
             <match>[false, false, false, false]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>
                 Seeing the completely initialized objects, and all elements are with default values.
             </description>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/initialization.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/initialization.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -91,7 +91,7 @@
             </description>
         </case>
         <unmatched>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_SPEC</expect>
             <description>
                 Seeing the torn value. This is specifically allowed by JLS.
                 This is not a surprising behavior on some 32-bit systems which do not have full-width 64-bit instructions.
@@ -203,7 +203,7 @@
             </description>
         </case>
         <unmatched>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_SPEC</expect>
             <description>
                 Seeing the torn value. This is specifically allowed by JLS.
                 This is not a surprising behavior on some 32-bit systems which do not have full-width 64-bit instructions.
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/interrupts.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/interrupts.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -272,12 +272,12 @@
         </description>
         <case>
             <match>TERMINATED</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>The thread had successfully terminated, this might mean compiler is not aggressively optimizing.</description>
         </case>
         <case>
             <match>STALE</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>Thread had failed to respond, this is acceptable behavior under JMM</description>
         </case>
         <unmatched>
@@ -293,12 +293,12 @@
         </description>
         <case>
             <match>TERMINATED</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>The thread had successfully terminated, this might mean compiler is not aggressively optimizing.</description>
         </case>
         <case>
             <match>STALE</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>Thread had failed to respond, this is acceptable behavior under JMM</description>
         </case>
         <unmatched>
@@ -377,12 +377,12 @@
         </description>
         <case>
             <match>TERMINATED</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>The thread had successfully terminated</description>
         </case>
         <case>
             <match>STALE</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>Thread had failed to respond; this is allowed behavior under Lock API.</description>
         </case>
         <unmatched>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/locks-stamped.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/locks-stamped.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -300,7 +300,7 @@
         </description>
         <case>
             <match>[1, 1]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>
                 Both optimistic reads have successfully validated.
             </description>
@@ -409,7 +409,7 @@
         </description>
         <case>
             <match>[1, 1]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>
                 Both threads have acquired read locks; both have successfully converted to optimistic.
             </description>
@@ -429,7 +429,7 @@
         </description>
         <case>
             <match>[1, 1]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>
                 Both threads have acquired read locks; both have successfully converted to optimistic/read.
             </description>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/locks.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/locks.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -48,7 +48,7 @@
         </case>
         <case>
             <match>[1, 0]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>
                 The write to $b is observed, but write to $a is not. This is the counter-intuitive behavior,
                 but the coding pattern is incorrect: alone "sync" barrier is not enough to get the proper
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/scratch.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/scratch.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -77,7 +77,7 @@
         <description>Generated test</description>
         <case>
             <match>TERMINATED</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>Default value</description>
         </case>
         <unmatched>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/singletons.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/singletons.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -54,7 +54,7 @@
             </description>
         </case>
         <unmatched>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>
                 This should be under-uninitialized case. This is a correct JMM behavior.
             </description>
@@ -65,7 +65,7 @@
         <description>Tests the broken DCL-style singleton.</description>
         <case>
             <match>[1]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>
                 The reference field in singleton is null.
                 This is the violation of singleton contract, but legal JMM behavior.
@@ -73,7 +73,7 @@
         </case>
         <case>
             <match>[0]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>
                 Singleton return the null instance. This is counter-intuitive, but there is the race on $instance,
                 and second read in the return can indeed return the null reference.
@@ -85,7 +85,7 @@
         <description>Tests the broken DCL-style singleton.</description>
         <case>
             <match>[1]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>
                 The reference field in singleton is null.
                 This is the violation of singleton contract, but legal JMM behavior.
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/tearing-buffers.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/tearing-buffers.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -33,7 +33,7 @@
         </description>
         <case>
             <match>[0, 128, 128]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>
                 Seeing all updates intact.
             </description>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/tearing.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/tearing.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -33,7 +33,7 @@
         </description>
         <case>
             <match>[-1431655766, 1431655765]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>
                 Seeing both updates intact.
             </description>
@@ -53,7 +53,7 @@
         </description>
         <case>
             <match>[0, 128, 128]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>
                 Seeing all updates intact.
             </description>
@@ -73,7 +73,7 @@
         </description>
         <case>
             <match>[0, 128, 128]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>
                 Seeing all updates intact.
             </description>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/volatiles-iriw.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/volatiles-iriw.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -39,7 +39,7 @@
         </case>
         <case>
             <match>[1, 0, 0, 1]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>Threads see the updates in the inconsistent order</description>
         </case>
         <unmatched>
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/volatiles.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/volatiles.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -140,7 +140,7 @@
         </description>
         <case>
             <match>[1, 1]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>
                 Each thread sees the same value, regardless of the update. One update is lost.
             </description>
--- a/tests-custom/src/main/scratch/completable/future-completable.xml	Thu Nov 28 13:40:59 2013 +0400
+++ b/tests-custom/src/main/scratch/completable/future-completable.xml	Thu Nov 28 19:10:32 2013 +0400
@@ -31,12 +31,12 @@
         <description>Tests if CompletableFuture is racy.</description>
         <case>
             <match>[0, 43, 1, 43]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>T2 had claimed the Future. T1 reads the consistent value</description>
         </case>
         <case>
             <match>[1, 42, 0, 42]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>T1 had claimed the Future. T2 reads the consistent value</description>
         </case>
         <unmatched>
@@ -52,12 +52,12 @@
         <description>Tests if CompletableFuture is racy.</description>
         <case>
             <match>[0, -2, 1, -2]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>T2 had claimed the Future. T1 reads the consistent exception</description>
         </case>
         <case>
             <match>[1, 42, 0, 42]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>T1 had claimed the Future. T2 reads the consistent value</description>
         </case>
         <unmatched>
@@ -73,12 +73,12 @@
         <description>Tests if CompletableFuture is racy.</description>
         <case>
             <match>[0, -2, 1, -2]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>T2 had claimed the Future. T1 reads the consistent exception</description>
         </case>
         <case>
             <match>[1, -1, 0, -1]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>T1 had claimed the Future. T2 reads the consistent exception</description>
         </case>
         <unmatched>
@@ -103,7 +103,7 @@
         <description>Tests if CompletableFuture is racy.</description>
         <case>
             <match>[42]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>Observing the consistent value.</description>
         </case>
         <unmatched>
@@ -122,7 +122,7 @@
         </case>
         <case>
             <match>[42]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>Observing the consistent value.</description>
         </case>
         <unmatched>
@@ -136,7 +136,7 @@
         <description>Tests if CompletableFuture is racy.</description>
         <case>
             <match>[42]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>Observing the consistent value.</description>
         </case>
         <unmatched>
@@ -155,7 +155,7 @@
         </case>
         <case>
             <match>[42]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>Observing the consistent value.</description>
         </case>
         <unmatched>
@@ -169,7 +169,7 @@
         <description>Tests if CompletableFuture is racy.</description>
         <case>
             <match>[-1]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>Observing the correct exception.</description>
         </case>
         <unmatched>
@@ -188,7 +188,7 @@
         </case>
         <case>
             <match>[-1]</match>
-            <expect>REQUIRED</expect>
+            <expect>ACCEPTABLE</expect>
             <description>Observing the correct exception.</description>
         </case>
         <unmatched>
@@ -207,7 +207,7 @@
         </case>
         <case>
             <match>[1, -1, 1, 43]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>T1 observes it's exception; T2 observes the forced value.</description>
         </case>
         <case>
@@ -231,7 +231,7 @@
         </case>
         <case>
             <match>[1, -1, 1, 43]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>T1 observes it's exception; T2 observes the forced value.</description>
         </case>
         <case>
@@ -255,7 +255,7 @@
         </case>
         <case>
             <match>[1, 42, 1, 43]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>T1 observes it's completed value; T2 observes the forced value.</description>
         </case>
         <case>
@@ -279,7 +279,7 @@
         </case>
         <case>
             <match>[1, 42, 1, 43]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>T1 observes it's completed value; T2 observes the forced value.</description>
         </case>
         <case>
@@ -303,7 +303,7 @@
         </case>
         <case>
             <match>[1, 42, 1, 43]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>T1 observes it's completed value; T2 observes the forced value.</description>
         </case>
         <case>
@@ -327,7 +327,7 @@
         </case>
         <case>
             <match>[1, 42, 1, 43]</match>
-            <expect>KNOWN_ACCEPTABLE</expect>
+            <expect>ACCEPTABLE_INTERESTING</expect>
             <description>T1 observes it's completed value; T2 observes the forced value.</description>
         </case>
         <case>