summaryrefslogtreecommitdiffstats
path: root/tests/AndroidTests
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2009-09-16 15:10:30 -0700
committerDianne Hackborn <hackbod@google.com>2009-09-16 15:10:30 -0700
commit207700d857cbaedca6ed19af74b29eae12988644 (patch)
tree27e0f7a500f12eb4613b42fd67d5d1aed9bead80 /tests/AndroidTests
parent32c687c20d6ac3080b396787147892dc85126b33 (diff)
downloadframeworks_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.java28
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) {