/*
 * 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. Passes with --mode activity",
  result: EXEC_FAILED,
  modes: [device],
  names: ["libcore.java.lang.OldSystemTest#test_getProperties"]
},
{
  description: "Differences between vogar and cts. EACCESS when run with vogar.
                Passes on host, passes with cts. Passes with vogar with su
                (--invoke-with \"su root\"). Does not pass after setting chmod
                777 all directories on path to socket (on device without su).",
  result: EXEC_FAILED,
  modes: [device],
  names: ["libcore.io.OsTest#testUnixDomainSockets_in_file_system"]
},
{
  description: "Issue with incorrect device time (1970)",
  result: EXEC_FAILED,
  modes: [device],
  names: ["libcore.java.util.TimeZoneTest#testDisplayNames",
          "libcore.java.util.TimeZoneTest#test_useDaylightTime_Taiwan",
          "org.apache.harmony.tests.java.util.TimeZoneTest#test_hasSameRules_Ljava_util_TimeZone"],
  bug: 20879084
},
{
  description: "Issue with incorrect device time (1970). Test assumes that DateTime.now()
                is greater then a date in 1998.",
  result: EXEC_FAILED,
  modes: [device],
  names: ["org.apache.harmony.tests.java.util.DateTest#test_Constructor"]
},
{
  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",
          "org.apache.harmony.tests.java.util.ScannerTest#test_Constructor_LReadableByteChannel"
         ]
},
{
  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, and on most modes in debug mode",
  result: EXEC_TIMEOUT,
  names: ["libcore.java.lang.SystemTest#testArrayCopyConcurrentModification"],
  bug: 19165288
},
{
  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"]
},
{
  description: "Crypto failures",
  result: EXEC_FAILED,
  names: ["libcore.javax.crypto.CipherTest#testCipher_ShortBlock_Failure",
          "libcore.javax.crypto.CipherTest#testCipher_Success"]
},
{
  description: "Flake when running with libartd.so or interpreter",
  result: EXEC_FAILED,
  bug:22106064,
  name: "libcore.java.lang.OldThreadGroupTest#test_enumerateLThreadArrayLZtest_enumerateLThreadArrayLZ"
},
{
  description: "test_xattr fails on arm64 on the buildbots only: needs investigation",
  result: EXEC_FAILED,
  modes: [device],
  names: ["libcore.io.OsTest#test_xattr"],
  bug: 22258911
},
{
  description: "fails on L builds: needs investigation",
  result: EXEC_FAILED,
  modes: [device],
  names: ["org.apache.harmony.tests.java.lang.ClassTest#test_forNameLjava_lang_String"]
},
{
  description: "TimeZoneTest.testAllDisplayNames times out, needs investigation",
  result: EXEC_TIMEOUT,
  modes: [device],
  names: ["libcore.java.util.TimeZoneTest#testAllDisplayNames"],
  bug: 22786792
}
]
