Merge "[automerger skipped] Merge "DO NOT MERGE Fix tests which relied on Pacific/Apia DST offset. [O-MR1-CTS]" into oreo-mr1-cts-dev am: 61e0123122 -s ours" into pie-cts-dev am: 9fb91d6a1a -s ours am: b86f5c7e54 -s ours am: 559f60b0d1 -s ours am: 1dd591c76a -s ours am: 58a510bf97 -s ours
am skip reason: subject contains skip directive
Original change: https://android-review.googlesource.com/c/platform/libcore/+/1903514
Change-Id: Ic8c3d1c24d148e4194ee21178c5a3606dec4def3
diff --git a/JavaLibrary.bp b/JavaLibrary.bp
index 8b0ab3b..6731942 100644
--- a/JavaLibrary.bp
+++ b/JavaLibrary.bp
@@ -453,12 +453,13 @@
name: "core-test-rules",
visibility: [
"//art/build/sdk",
+ "//cts/tests/tests/util",
"//external/conscrypt",
"//external/conscrypt/apex/tests",
"//frameworks/base/location/tests/locationtests",
"//frameworks/base/core/tests/coretests",
"//frameworks/base/wifi/tests",
- "//cts/tests/tests/util",
+ "//packages/modules/Wifi/framework/tests",
],
hostdex: true,
srcs: [
@@ -509,6 +510,8 @@
"//libcore/benchmarks",
"//packages/apps/KeyChain/tests",
"//system/timezone/distro/core",
+ "//packages/modules/Connectivity/tests/cts/net",
+ "//packages/modules/Connectivity/tests/cts/net/api23Test",
],
hostdex: true,
srcs: ["support/src/test/java/**/*.java"],
diff --git a/harmony-tests/src/test/java/org/apache/harmony/tests/javax/net/ssl/HostnameVerifierTest.java b/harmony-tests/src/test/java/org/apache/harmony/tests/javax/net/ssl/HostnameVerifierTest.java
index 96384ad..44572ab 100644
--- a/harmony-tests/src/test/java/org/apache/harmony/tests/javax/net/ssl/HostnameVerifierTest.java
+++ b/harmony-tests/src/test/java/org/apache/harmony/tests/javax/net/ssl/HostnameVerifierTest.java
@@ -40,104 +40,6 @@
assertFalse(hv.verify("localhost", session));
}
- // copied and modified from apache http client test suite.
- public void testVerify() throws Exception {
- HostnameVerifier verifier = HttpsURLConnection.getDefaultHostnameVerifier();
- CertificateFactory cf = CertificateFactory.getInstance("X.509");
- InputStream in;
- X509Certificate x509;
- // CN=foo.com, no subjectAlt
- in = new ByteArrayInputStream(X509_FOO);
- x509 = (X509Certificate) cf.generateCertificate(in);
- mySSLSession session = new mySSLSession(new X509Certificate[] {x509});
- assertFalse(verifier.verify("foo.com", session));
- assertFalse(verifier.verify("a.foo.com", session));
- assertFalse(verifier.verify("bar.com", session));
-
- // CN=花子.co.jp, no subjectAlt
- in = new ByteArrayInputStream(X509_HANAKO);
- x509 = (X509Certificate) cf.generateCertificate(in);
- session = new mySSLSession(new X509Certificate[] {x509});
- assertFalse(verifier.verify("\u82b1\u5b50.co.jp", session));
- assertFalse(verifier.verify("a.\u82b1\u5b50.co.jp", session));
-
- // CN=foo.com, subjectAlt=bar.com
- in = new ByteArrayInputStream(X509_FOO_BAR);
- x509 = (X509Certificate) cf.generateCertificate(in);
- session = new mySSLSession(new X509Certificate[] {x509});
- assertFalse(verifier.verify("foo.com", session));
- assertFalse(verifier.verify("a.foo.com", session));
- assertTrue(verifier.verify("bar.com", session));
- assertFalse(verifier.verify("a.bar.com", session));
-
- // CN=foo.com, subjectAlt=bar.com, subjectAlt=花子.co.jp
- in = new ByteArrayInputStream(X509_FOO_BAR_HANAKO);
- x509 = (X509Certificate) cf.generateCertificate(in);
- session = new mySSLSession(new X509Certificate[] {x509});
- assertFalse(verifier.verify("foo.com", session));
- assertFalse(verifier.verify("a.foo.com", session));
- assertTrue(verifier.verify("bar.com", session));
- assertFalse(verifier.verify("a.bar.com", session));
- // The certificate has this name in the altnames section, but OkHostnameVerifier drops
- // any altnames that are improperly encoded according to RFC 5280, which requires
- // non-ASCII characters to be encoded in ASCII via Punycode.
- assertFalse(verifier.verify("\u82b1\u5b50.co.jp", session));
- assertFalse(verifier.verify("a.\u82b1\u5b50.co.jp", session));
-
- // no CN, subjectAlt=foo.com
- in = new ByteArrayInputStream(X509_NO_CNS_FOO);
- x509 = (X509Certificate) cf.generateCertificate(in);
- session = new mySSLSession(new X509Certificate[] {x509});
- assertTrue(verifier.verify("foo.com", session));
- assertFalse(verifier.verify("a.foo.com", session));
-
- // CN=foo.com, CN=bar.com, CN=花子.co.jp, no subjectAlt
- in = new ByteArrayInputStream(X509_THREE_CNS_FOO_BAR_HANAKO);
- x509 = (X509Certificate) cf.generateCertificate(in);
- session = new mySSLSession(new X509Certificate[] {x509});
- assertFalse(verifier.verify("foo.com", session));
- assertFalse(verifier.verify("a.foo.com", session));
- assertFalse(verifier.verify("bar.com", session));
- assertFalse(verifier.verify("a.bar.com", session));
- assertFalse(verifier.verify("\u82b1\u5b50.co.jp", session));
- assertFalse(verifier.verify("a.\u82b1\u5b50.co.jp", session));
-
- // CN=*.foo.com, no subjectAlt
- in = new ByteArrayInputStream(X509_WILD_FOO);
- x509 = (X509Certificate) cf.generateCertificate(in);
- session = new mySSLSession(new X509Certificate[] {x509});
- assertFalse(verifier.verify("foo.com", session));
- assertFalse(verifier.verify("www.foo.com", session));
- assertFalse(verifier.verify("\u82b1\u5b50.foo.com", session));
- assertFalse(verifier.verify("a.b.foo.com", session));
-
- // CN=*.co.jp, no subjectAlt
- in = new ByteArrayInputStream(X509_WILD_CO_JP);
- x509 = (X509Certificate) cf.generateCertificate(in);
- session = new mySSLSession(new X509Certificate[] {x509});
- assertFalse(verifier.verify("foo.co.jp", session));
- assertFalse(verifier.verify("\u82b1\u5b50.co.jp", session));
-
- // CN=*.foo.com, subjectAlt=*.bar.com, subjectAlt=花子.co.jp
- in = new ByteArrayInputStream(X509_WILD_FOO_BAR_HANAKO);
- x509 = (X509Certificate) cf.generateCertificate(in);
- session = new mySSLSession(new X509Certificate[] {x509});
- // try the foo.com variations
- assertFalse(verifier.verify("foo.com", session));
- assertFalse(verifier.verify("www.foo.com", session));
- assertFalse(verifier.verify("\u82b1\u5b50.foo.com", session));
- assertFalse(verifier.verify("a.b.foo.com", session));
- assertFalse(verifier.verify("bar.com", session));
- assertTrue(verifier.verify("www.bar.com", session));
- assertFalse(verifier.verify("a.b.bar.com", session));
- // The certificate has this name in the altnames section, but OkHostnameVerifier drops
- // any altnames that are improperly encoded according to RFC 5280, which requires
- // non-ASCII characters to be encoded in ASCII via Punycode.
- assertFalse(verifier.verify("\u82b1\u5b50.bar.com", session));
- assertFalse(verifier.verify("\u82b1\u5b50.co.jp", session));
- assertFalse(verifier.verify("a.\u82b1\u5b50.co.jp", session));
- }
-
public void testSubjectAlt() throws Exception {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
InputStream in = new ByteArrayInputStream(X509_MULTIPLE_SUBJECT_ALT);
diff --git a/luni/src/test/java/libcore/java/text/DateFormatSymbolsTest.java b/luni/src/test/java/libcore/java/text/DateFormatSymbolsTest.java
index 3ea4378..baa3344 100644
--- a/luni/src/test/java/libcore/java/text/DateFormatSymbolsTest.java
+++ b/luni/src/test/java/libcore/java/text/DateFormatSymbolsTest.java
@@ -156,21 +156,40 @@
}
// http://b/7955614
- public void test_getZoneStrings_Apia() throws Exception {
+ public void test_getZoneStrings_Apia() {
String[][] array = DateFormatSymbols.getInstance(Locale.US).getZoneStrings();
+
for (int i = 0; i < array.length; ++i) {
String[] row = array[i];
// Pacific/Apia is somewhat arbitrary; we just want a zone we have to generate
// "GMT" strings for the short names.
if (row[0].equals("Pacific/Apia")) {
+ TimeZone apiaTz = TimeZone.getTimeZone("Pacific/Apia");
assertEquals("Apia Standard Time", row[1]);
- assertEquals("GMT+13:00", row[2]);
+ assertEquals(formattedStandardTimeOffset(apiaTz), row[2]);
assertEquals("Apia Daylight Time", row[3]);
- assertEquals("GMT+14:00", row[4]);
+ assertEquals(formattedDstOffset(apiaTz), row[4]);
}
}
}
+ private static String formattedStandardTimeOffset(TimeZone tz) {
+ return formattedOffset(tz.getRawOffset());
+ }
+
+ private static String formattedDstOffset(TimeZone tz) {
+ return formattedOffset(tz.getRawOffset() + tz.getDSTSavings());
+ }
+
+ private static String formattedOffset(int offset) {
+ String pattern = "GMT%+d:%02d";
+ int millisInHour = 60 * 60 * 1_000;
+ int hours = offset / millisInHour;
+ int minutes = (offset - hours * millisInHour) / 1_000 / 60;
+
+ return String.format(pattern, hours, minutes);
+ }
+
public void test_setZoneStrings_checks_dimensions() throws Exception {
DateFormatSymbols dfs = DateFormatSymbols.getInstance();
String[][] zoneStrings = dfs.getZoneStrings();
diff --git a/luni/src/test/java/libcore/java/util/TimeZoneTest.java b/luni/src/test/java/libcore/java/util/TimeZoneTest.java
index da4a04f..818e351 100644
--- a/luni/src/test/java/libcore/java/util/TimeZoneTest.java
+++ b/luni/src/test/java/libcore/java/util/TimeZoneTest.java
@@ -319,12 +319,16 @@
}
// http://b/7955614
- public void testApia() throws Exception {
+ public void testApia() {
TimeZone tz = TimeZone.getTimeZone("Pacific/Apia");
assertEquals("Apia Daylight Time", tz.getDisplayName(true, TimeZone.LONG, Locale.US));
assertEquals("Apia Standard Time", tz.getDisplayName(false, TimeZone.LONG, Locale.US));
- assertEquals("GMT+14:00", tz.getDisplayName(true, TimeZone.SHORT, Locale.US));
- assertEquals("GMT+13:00", tz.getDisplayName(false, TimeZone.SHORT, Locale.US));
+
+ long samoaStandardTime = 1630315635000L; // 30 Aug 2021
+ long samoaDst = 1614504435000L; // 28 Feb 2021
+
+ assertEquals(13 * 60 * 60 * 1_000, tz.getOffset(samoaStandardTime));
+ assertEquals(14 * 60 * 60 * 1_000, tz.getOffset(samoaDst));
}
private static boolean isGmtString(String s) {
diff --git a/mmodules/intracoreapi/api/intra/current-api.txt b/mmodules/intracoreapi/api/intra/current-api.txt
index 5137a10..f98906f 100644
--- a/mmodules/intracoreapi/api/intra/current-api.txt
+++ b/mmodules/intracoreapi/api/intra/current-api.txt
@@ -58,7 +58,7 @@
package java.net {
public class Socket implements java.io.Closeable {
- method public java.io.FileDescriptor getFileDescriptor$();
+ method @libcore.api.IntraCoreApi public java.io.FileDescriptor getFileDescriptor$();
}
}
@@ -70,11 +70,11 @@
}
public abstract class CharsetDecoder {
- ctor protected CharsetDecoder(java.nio.charset.Charset, float, float);
+ ctor @libcore.api.IntraCoreApi protected CharsetDecoder(java.nio.charset.Charset, float, float);
}
public abstract class CharsetEncoder {
- ctor protected CharsetEncoder(java.nio.charset.Charset, float, float, byte[], boolean);
+ ctor @libcore.api.IntraCoreApi protected CharsetEncoder(java.nio.charset.Charset, float, float, byte[], boolean);
}
}
@@ -82,8 +82,8 @@
package java.security.spec {
public class ECParameterSpec implements java.security.spec.AlgorithmParameterSpec {
- method public String getCurveName();
- method public void setCurveName(String);
+ method @libcore.api.IntraCoreApi public String getCurveName();
+ method @libcore.api.IntraCoreApi public void setCurveName(String);
}
}
@@ -133,18 +133,18 @@
package sun.security.util {
- public interface DerEncoder {
- method public void derEncode(java.io.OutputStream) throws java.io.IOException;
+ @libcore.api.IntraCoreApi public interface DerEncoder {
+ method @libcore.api.IntraCoreApi public void derEncode(java.io.OutputStream) throws java.io.IOException;
}
}
package sun.security.x509 {
- public class AlgorithmId implements sun.security.util.DerEncoder java.io.Serializable {
- method public void derEncode(java.io.OutputStream) throws java.io.IOException;
- method public static sun.security.x509.AlgorithmId get(String) throws java.security.NoSuchAlgorithmException;
- method public String getName();
+ @libcore.api.IntraCoreApi public class AlgorithmId implements sun.security.util.DerEncoder java.io.Serializable {
+ method @libcore.api.IntraCoreApi public void derEncode(java.io.OutputStream) throws java.io.IOException;
+ method @libcore.api.IntraCoreApi public static sun.security.x509.AlgorithmId get(String) throws java.security.NoSuchAlgorithmException;
+ method @libcore.api.IntraCoreApi public String getName();
}
}