# HG changeset patch # User psandoz # Date 1376649990 -7200 # Node ID 208998c7e4dc3fdf8313333a075bfda3010054fa # Parent 2a0bfdf4c2db057e2d97dc2f1c3d7bbc54ca814d 8012940: More than 50 tests failed in Serialization/DeSerialization testing (test-mangled) Reviewed-by: ksrini diff -r 2a0bfdf4c2db -r 208998c7e4dc jdk/test/java/util/stream/bootlib/java/util/stream/LambdaTestMode.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/util/stream/bootlib/java/util/stream/LambdaTestMode.java Fri Aug 16 12:46:30 2013 +0200 @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package java.util.stream; + +/** + * Runtime modes of test execution. + */ +public enum LambdaTestMode { + /** + * Execution mode with no particular runtime constraints. + */ + NORMAL, + + /** + * Execution mode where tests are executed for testing lambda serialization + * and deserialization. + * + *

This mode may be queried by tests or data supplied by data + * providers, which cannot otherwise be assigned to the test group + * serialization-hostile, to not execute or declare + * serialization-hostile code or data. + * + *

This mode is enabled if the boolean system property + * {@code org.openjdk.java.util.stream.sand.mode} is declared with a + * {@code true} value. + */ + SERIALIZATION; + + /** + * {@code true} if tests are executed in the mode for testing lambda + * Serialization ANd Deserialization (SAND). + */ + private static final boolean IS_LAMBDA_SERIALIZATION_MODE = + Boolean.getBoolean("org.openjdk.java.util.stream.sand.mode"); + + /** + * + * @return the mode of test execution. + */ + public static LambdaTestMode getMode() { + return IS_LAMBDA_SERIALIZATION_MODE ? SERIALIZATION : NORMAL; + } + + /** + * + * @return {@code true} if normal test mode. + */ + public static boolean isNormalMode() { + return getMode() == NORMAL; + } +} diff -r 2a0bfdf4c2db -r 208998c7e4dc jdk/test/java/util/stream/bootlib/java/util/stream/StreamTestDataProvider.java --- a/jdk/test/java/util/stream/bootlib/java/util/stream/StreamTestDataProvider.java Fri Aug 16 12:29:58 2013 +0200 +++ b/jdk/test/java/util/stream/bootlib/java/util/stream/StreamTestDataProvider.java Fri Aug 16 12:46:30 2013 +0200 @@ -96,8 +96,14 @@ list.add(streamDataDescr("DelegatingStream(ArrayList):" + name, () -> new ArrayList<>(intsAsList).stream())); List aList = new ArrayList<>(intsAsList); - list.add(collectionDataDescr("ArrayList.Sublist:" + name, - (ints.length) <= 1 ? aList.subList(0, 0) : aList.subList(1, ints.length / 2))); + if (LambdaTestMode.isNormalMode()) { + // Only include sub-lists for normal test execution mode + // This data is serialization-hostile since the state of the + // deserialized sub-list will be out of sync with the + // enclosing list. + list.add(collectionDataDescr("ArrayList.Sublist:" + name, + (ints.length) <= 1 ? aList.subList(0, 0) : aList.subList(1, ints.length / 2))); + } list.add(collectionDataDescr("LinkedList:" + name, new LinkedList<>(intsAsList))); list.add(collectionDataDescr("HashSet:" + name, new HashSet<>(intsAsList))); list.add(collectionDataDescr("LinkedHashSet:" + name, new LinkedHashSet<>(intsAsList)));