diff options
author | Steve Howard <showard@google.com> | 2010-07-26 15:25:06 -0700 |
---|---|---|
committer | Steve Howard <showard@google.com> | 2010-07-27 16:32:10 -0700 |
commit | e6a05a1aa4697440e9630d12b741b3bae321fe49 (patch) | |
tree | 56e9d9d931308141c0142e37c5c714c92de29ec7 /src/com/android/providers/downloads/RealSystemFacade.java | |
parent | 93155e1da7e89d4925e244f5afa94afb8ada7381 (diff) | |
download | android_packages_providers_DownloadProvider-e6a05a1aa4697440e9630d12b741b3bae321fe49.tar.gz android_packages_providers_DownloadProvider-e6a05a1aa4697440e9630d12b741b3bae321fe49.tar.bz2 android_packages_providers_DownloadProvider-e6a05a1aa4697440e9630d12b741b3bae321fe49.zip |
Serialize threading for download manager testing.
The download manager uses threading in a simple way -- it launches two
threads, UpdateThread and DownloadThread, and both are "fire and
forget". This is fortunate for testing, since it means we can
eliminate multithreading and simply run each thread in order, and
everything still works.
This change does just that, abstracting Thread.start() behind
SystemFacade and making FakeSystemFacade put new threads into a queue
and then run through them serially. This simplifies much of the test
code and makes it all much more predictable.
I've simplified the test code as much as possible here and moved a few
more tests over to PublicApiFunctionalTest, leaving only a minimum in
DownloadManagerFunctionalTest, which will eventually be deleted
altogether. I've also improved testing in some areas -- for example,
we can now test that running notifications get cancelled after the
download completes in a robust way.
There is one test case that checks for race conditions and requires
multithreading. I've moved this into a new ThreadingTest class, which
uses a custom FakeSystemFacade that allows multithreading. I've
extracted AbstractPublicApiTest for the newly shared code.
Change-Id: Ic1d5c76bfa9913fe053174c3d8b516790ca8b25f
Diffstat (limited to 'src/com/android/providers/downloads/RealSystemFacade.java')
-rw-r--r-- | src/com/android/providers/downloads/RealSystemFacade.java | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/com/android/providers/downloads/RealSystemFacade.java b/src/com/android/providers/downloads/RealSystemFacade.java index 1d9e64a9..adf0107a 100644 --- a/src/com/android/providers/downloads/RealSystemFacade.java +++ b/src/com/android/providers/downloads/RealSystemFacade.java @@ -87,4 +87,9 @@ class RealSystemFacade implements SystemFacade { public void cancelAllNotifications() { mNotificationManager.cancelAll(); } + + @Override + public void startThread(Thread thread) { + thread.start(); + } } |