diff options
author | Dianne Hackborn <hackbod@google.com> | 2009-09-16 15:10:30 -0700 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2009-09-16 15:10:30 -0700 |
commit | 207700d857cbaedca6ed19af74b29eae12988644 (patch) | |
tree | 27e0f7a500f12eb4613b42fd67d5d1aed9bead80 /tests/AndroidTests | |
parent | 32c687c20d6ac3080b396787147892dc85126b33 (diff) | |
download | frameworks_base-207700d857cbaedca6ed19af74b29eae12988644.zip frameworks_base-207700d857cbaedca6ed19af74b29eae12988644.tar.gz frameworks_base-207700d857cbaedca6ed19af74b29eae12988644.tar.bz2 |
Fix issue #2121993: com.android.unit_tests.os.HandlerThreadTest:testHandlerThread is failing
Change-Id: I5f2cc8b39d3f15782e5fbf47015be9f4fa94a65b
Diffstat (limited to 'tests/AndroidTests')
-rw-r--r-- | tests/AndroidTests/src/com/android/unit_tests/os/HandlerThreadTest.java | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/tests/AndroidTests/src/com/android/unit_tests/os/HandlerThreadTest.java b/tests/AndroidTests/src/com/android/unit_tests/os/HandlerThreadTest.java index c62f94f..f2025c6 100644 --- a/tests/AndroidTests/src/com/android/unit_tests/os/HandlerThreadTest.java +++ b/tests/AndroidTests/src/com/android/unit_tests/os/HandlerThreadTest.java @@ -36,8 +36,11 @@ public class HandlerThreadTest extends TestCase { public void testHandlerThread() throws Exception { HandlerThread th1 = new HandlerThread("HandlerThreadTest") { protected void onLooperPrepared() { - mDidSetup = true; - mLooperTid = Process.myTid(); + synchronized (HandlerThreadTest.this) { + mDidSetup = true; + mLooperTid = Process.myTid(); + HandlerThreadTest.this.notify(); + } } }; @@ -49,14 +52,23 @@ public class HandlerThreadTest extends TestCase { assertTrue(th1.isAlive()); assertNotNull(th1.getLooper()); - /* - * Since getLooper() will block until the HandlerThread is setup, we are guaranteed - * that mDidSetup and mLooperTid will have been initalized. If they have not, then - * this test should fail - */ + // The call to getLooper() internally blocks until the looper is + // available, but will call onLooperPrepared() after that. So we + // need to block here to wait for our onLooperPrepared() to complete + // and fill in the values we expect. + synchronized (this) { + while (!mDidSetup) { + try { + wait(); + } catch (InterruptedException e) { + } + } + } + + // Make sure that the process was set. + assertNotSame(-1, mLooperTid); // Make sure that the onLooperPrepared() was called on a different thread. assertNotSame(Process.myTid(), mLooperTid); - assertTrue(mDidSetup); final Handler h1 = new Handler(th1.getLooper()) { public void handleMessage(Message msg) { |