diff --git a/tests/tests/content/src/android/content/res/cts/ConfigTest.java b/tests/tests/content/src/android/content/res/cts/ConfigTest.java
index 60197b6..b49f156 100755
--- a/tests/tests/content/src/android/content/res/cts/ConfigTest.java
+++ b/tests/tests/content/src/android/content/res/cts/ConfigTest.java
@@ -123,6 +123,7 @@
                 case DENSITY:
                     // this is the ratio from the standard
                     mMetrics.density = (((float)value)/((float)DisplayMetrics.DENSITY_DEFAULT));
+                    mConfig.densityDpi = value;
                     break;
                 case SCREENLAYOUT:
                     mConfig.screenLayout = value;
@@ -182,6 +183,7 @@
         config.mConfig.smallestScreenWidthDp = 320;
         config.mConfig.screenWidthDp = 320;
         config.mConfig.screenHeightDp = 480;
+        config.mConfig.densityDpi = 160;
         config.mMetrics.widthPixels = 200;
         config.mMetrics.heightPixels = 320;
         config.mMetrics.density = 1;
diff --git a/tests/tests/nativemedia/sl/src/SLObjectCreationTest.cpp b/tests/tests/nativemedia/sl/src/SLObjectCreationTest.cpp
index 450b32e..804263e 100644
--- a/tests/tests/nativemedia/sl/src/SLObjectCreationTest.cpp
+++ b/tests/tests/nativemedia/sl/src/SLObjectCreationTest.cpp
@@ -277,7 +277,7 @@
     }
 
     /* Test case for creating an AudioRecorder object */
-    void AudioRecorderCreation() {
+    void AudioRecorderCreation(bool doNotRealize = false) {
         // source: IO device
         SLDataLocator_IODevice locatorIoDeviceSrc;
         locatorIoDeviceSrc.locatorType = SL_DATALOCATOR_IODEVICE;
@@ -296,8 +296,10 @@
                 &audioSource, &audioSink, 0, NULL/*iidArray*/, NULL/*required*/);
         ASSERT_TRUE(IsOk(res));
         ASSERT_TRUE(NULL != audioRecorderObj);
-        res = (*audioRecorderObj)->Realize(audioRecorderObj, SL_BOOLEAN_FALSE);
-        ASSERT_TRUE(IsOk(res));
+        if (!doNotRealize) {
+            res = (*audioRecorderObj)->Realize(audioRecorderObj, SL_BOOLEAN_FALSE);
+            ASSERT_TRUE(IsOk(res));
+        }
 
         // AudioRecorder destruction
         (*audioRecorderObj)->Destroy(audioRecorderObj);
@@ -360,7 +362,8 @@
 
 TEST_F(SLObjectCreationTest, testAudioRecorderCreation) {
     ALOGV("Test Fixture: AudioRecorderCreation");
-    AudioRecorderCreation();
+    // cannot Realize as native test cannot have necessary permission.
+    AudioRecorderCreation(true);
 }
 
 int main(int argc, char **argv) {
diff --git a/tests/tests/os/src/android/os/cts/BuildVersionTest.java b/tests/tests/os/src/android/os/cts/BuildVersionTest.java
index 8b33359..9876694 100644
--- a/tests/tests/os/src/android/os/cts/BuildVersionTest.java
+++ b/tests/tests/os/src/android/os/cts/BuildVersionTest.java
@@ -29,8 +29,8 @@
 
     private static final String LOG_TAG = "BuildVersionTest";
     private static final Set<String> EXPECTED_RELEASES =
-	    new HashSet<String>(Arrays.asList("4.1.1", "4.1.2"));
-    private static final int EXPECTED_SDK = 16;
+            new HashSet<String>(Arrays.asList("4.2"));
+    private static final int EXPECTED_SDK = 17;
 
     @SuppressWarnings("deprecation")
     public void testReleaseVersion() {
diff --git a/tests/tests/text/src/android/text/format/cts/DateUtilsTest.java b/tests/tests/text/src/android/text/format/cts/DateUtilsTest.java
index 88006af..420af25 100644
--- a/tests/tests/text/src/android/text/format/cts/DateUtilsTest.java
+++ b/tests/tests/text/src/android/text/format/cts/DateUtilsTest.java
@@ -227,16 +227,6 @@
      */
     public void test2038() {
         assertEquals("00:00, Thursday, January 1, 1970", formatFull(0L));
-
-        // these tests all fail in Honeycomb
-        assertFalse("17:31, Sunday, November 24, 1833".equals(
-                formatFull(((long) Integer.MIN_VALUE + Integer.MIN_VALUE) * 1000L)));
-        assertFalse("20:45, Friday, December 13, 1901".equals(
-                formatFull(Integer.MIN_VALUE * 1000L)));
-        assertFalse("03:14, Tuesday, January 19, 2038".equals(
-                formatFull(Integer.MAX_VALUE * 1000L)));
-        assertFalse("06:28, Sunday, February 7, 2106".equals(
-                formatFull((2L + Integer.MAX_VALUE + Integer.MAX_VALUE) * 1000L)));
     }
 
     private String formatFull(long millis) {
