/*
 * This file contains expectations for ART's buildbot. The purpose of this file is
 * to temporary and quickly list failing tests and not break the bots, until the
 * libcore expectation files get properly updated. The script that uses this file
 * is art/tools/run-libcore-tests.sh.
 *
 * It is also used to enable AOSP experiments, and not mess up with CTS's expectations.
 */

[
{
  description: "Assert.java differences between vogar and junit.",
  result: EXEC_FAILED,
  modes: [host],
  name: "libcore.java.math.RunCSVTests#test_csv"
},
{
  description: "Differences between vogar and cts in user directory",
  result: EXEC_FAILED,
  modes: [device],
  name: "libcore.java.lang.SystemTest#testSystemProperties_mutable"
},
{
  description: "Differences between vogar and cts",
  result: EXEC_FAILED,
  modes: [device],
  names: ["libcore.java.lang.OldSystemTest#test_getProperties",
          "org.apache.harmony.tests.java.lang.Process2Test#test_getErrorStream",
          "org.apache.harmony.tests.java.lang.ProcessTest#test_exitValue"]
},
{
  description: "Failures needing investigation",
  result: EXEC_FAILED,
  modes: [device],
  names: ["libcore.java.util.TimeZoneTest#testDisplayNames",
          "libcore.java.util.TimeZoneTest#test_useDaylightTime_Taiwan",
          "libcore.java.util.TimeZoneTest#testAllDisplayNames",
          "libcore.io.OsTest#testUnixDomainSockets_in_file_system",
          "org.apache.harmony.luni.tests.java.net.URLConnectionTest#test_setReadTimeoutI",
          "org.apache.harmony.tests.java.util.DateTest#test_Constructor",
          "org.apache.harmony.tests.java.util.ScannerTest#test_Constructor_LReadableByteChannel",
          "org.apache.harmony.tests.java.util.TimeZoneTest#test_hasSameRules_Ljava_util_TimeZone",
          "org.apache.harmony.tests.java.text.ChoiceFormatTest#testEscapedPatternWithConsecutiveQuotes",
          "org.apache.harmony.tests.java.text.ChoiceFormatTest#testToPatternWithInfinities",
          "org.apache.harmony.tests.java.text.MessageFormatTest#test19011159"]
},
{
  description: "Failing due to a locale problem on hammerhead.",
  result: EXEC_FAILED,
  modes: [device],
  names: ["libcore.icu.DateIntervalFormatTest#test10089890",
          "libcore.icu.DateIntervalFormatTest#test10209343_when_not_this_year",
          "libcore.icu.DateIntervalFormatTest#test10560853_for_single_day_events",
          "libcore.icu.DateIntervalFormatTest#test10560853_when_time_not_displayed",
          "libcore.icu.RelativeDateTimeFormatterTest#test_getRelativeDateTimeString",
          "libcore.icu.RelativeDateTimeFormatterTest#test_getRelativeTimeSpanString",
          "libcore.icu.RelativeDateTimeFormatterTest#test_getRelativeTimeSpanStringAbbrev",
          "libcore.java.text.OldDateFormatTest#test_parseLString",
          "libcore.java.text.SimpleDateFormatTest#testDstZoneNameWithNonDstTimestamp",
          "libcore.java.text.SimpleDateFormatTest#testDstZoneWithNonDstTimestampForNonHourDstZone",
          "libcore.java.text.SimpleDateFormatTest#testNonDstZoneNameWithDstTimestamp",
          "libcore.java.text.SimpleDateFormatTest#testNonDstZoneWithDstTimestampForNonHourDstZone",
          "org.apache.harmony.tests.java.text.SimpleDateFormatTest#test_parseLjava_lang_StringLjava_text_ParsePosition"]
},
{
  description: "Failing due to missing localhost on hammerhead and volantis.",
  result: EXEC_FAILED,
  modes: [device],
  names: ["libcore.javax.crypto.CipherTest#testCipherInitWithCertificate",
          "libcore.net.NetworkSecurityPolicyTest#testCleartextTrafficPolicyWithFtpURLConnection",
          "libcore.net.NetworkSecurityPolicyTest#testCleartextTrafficPolicyWithJarFtpURLConnection",
          "libcore.net.NetworkSecurityPolicyTest#testCleartextTrafficPolicyWithLoggingSocketHandler",
          "libcore.net.NetworkSecurityPolicyTest#testCleartextTrafficPolicyWithHttpURLConnection",
          "libcore.net.NetworkSecurityPolicyTest#testCleartextTrafficPolicyWithJarHttpURLConnection",
          "org.apache.harmony.luni.tests.internal.net.www.protocol.http.HttpURLConnectionTest",
          "org.apache.harmony.luni.tests.internal.net.www.protocol.https.HttpsURLConnectionTest",
          "org.apache.harmony.luni.tests.java.net.URLConnectionTest"
         ]
},
{
  description: "Test timeouts",
  result: EXEC_TIMEOUT,
  modes: [device],
  names: ["org.apache.harmony.tests.java.util.ScannerTest#testPerformance"]
},
{
  description: "Needs the newest cat version on the device",
  result: EXEC_FAILED,
  modes: [device],
  names: ["org.apache.harmony.tests.java.lang.ProcessTest#test_getErrorStream"]
},
{
  description: "Short date format flag ignored for es_US locale.",
  result: EXEC_FAILED,
  name: "libcore.icu.DateIntervalFormatTest#test_formatDateInterval",
  bug: 18619426
},
{
  description: "Error decoding digital signature bytes.",
  result: EXEC_FAILED,
  name: "org.apache.harmony.security.tests.java.security.Signature2Test#test_verify$BII",
  bug: 18869265
},
{
  description: "Test sometimes timeouts on volantis",
  result: EXEC_TIMEOUT,
  modes_variants: [[device,X64]],
  names: ["libcore.java.lang.SystemTest#testArrayCopyConcurrentModification"],
  bug: 19165288
},
{
  description: "Bug in libcore",
  result: EXEC_FAILED,
  names: ["libcore.javax.crypto.ECDHKeyAgreementTest#testInit_withUnsupportedPrivateKeyType"],
  bug: 19730263
},
{
  description: "Needs to be run as root",
  result: EXEC_FAILED,
  modes: [host],
  names: ["libcore.io.OsTest#test_PacketSocketAddress"]
},
{
  description: "Needs kernel updates on host/device",
  result: EXEC_FAILED,
  names: ["libcore.io.OsTest#test_socketPing"]
},
{
  description: "Linker issues in chrooted environment",
  modes: [device],
  result: EXEC_FAILED,
  names: ["org.apache.harmony.tests.java.lang.ProcessManagerTest#testEnvironment"]
}
]
