mirror of
https://github.com/samsonjs/media.git
synced 2026-04-08 11:45:51 +00:00
DownloadManagerTest: Disambiguate between download and removal
PiperOrigin-RevId: 308997845
This commit is contained in:
parent
ec34c083f4
commit
b65e682957
1 changed files with 47 additions and 39 deletions
|
|
@ -94,6 +94,7 @@ public class DownloadManagerTest {
|
|||
assertDownloading(ID1);
|
||||
|
||||
FakeDownloader downloader = getDownloader(ID1, 0);
|
||||
downloader.assertDownloadStarted();
|
||||
downloader.unblock();
|
||||
downloader.assertCompleted();
|
||||
downloader.assertStartCount(1);
|
||||
|
|
@ -127,7 +128,7 @@ public class DownloadManagerTest {
|
|||
|
||||
FakeDownloader downloader = getDownloader(ID1, 0);
|
||||
for (int i = 0; i <= MIN_RETRY_COUNT; i++) {
|
||||
downloader.assertStarted();
|
||||
downloader.assertDownloadStarted();
|
||||
downloader.fail();
|
||||
}
|
||||
downloader.assertCompleted();
|
||||
|
|
@ -144,10 +145,10 @@ public class DownloadManagerTest {
|
|||
|
||||
FakeDownloader downloader = getDownloader(ID1, 0);
|
||||
for (int i = 0; i < MIN_RETRY_COUNT; i++) {
|
||||
downloader.assertStarted();
|
||||
downloader.assertDownloadStarted();
|
||||
downloader.fail();
|
||||
}
|
||||
downloader.assertStarted();
|
||||
downloader.assertDownloadStarted();
|
||||
downloader.unblock();
|
||||
downloader.assertCompleted();
|
||||
downloader.assertStartCount(MIN_RETRY_COUNT + 1);
|
||||
|
|
@ -164,11 +165,11 @@ public class DownloadManagerTest {
|
|||
FakeDownloader downloader = getDownloader(ID1, 0);
|
||||
int tooManyRetries = MIN_RETRY_COUNT + 10;
|
||||
for (int i = 0; i < tooManyRetries; i++) {
|
||||
downloader.incrementBytesDownloaded();
|
||||
downloader.assertStarted();
|
||||
downloader.assertDownloadStarted();
|
||||
downloader.incrementBytesDownloaded(); // Make some progress.
|
||||
downloader.fail();
|
||||
}
|
||||
downloader.assertStarted();
|
||||
downloader.assertDownloadStarted();
|
||||
downloader.unblock();
|
||||
downloader.assertCompleted();
|
||||
downloader.assertStartCount(tooManyRetries + 1);
|
||||
|
|
@ -182,13 +183,14 @@ public class DownloadManagerTest {
|
|||
postDownloadRequest(ID1);
|
||||
|
||||
FakeDownloader downloader1 = getDownloader(ID1, 0);
|
||||
downloader1.assertStarted();
|
||||
downloader1.assertDownloadStarted();
|
||||
|
||||
postRemoveRequest(ID1);
|
||||
|
||||
downloader1.assertCanceled();
|
||||
downloader1.assertStartCount(1);
|
||||
FakeDownloader downloader2 = getDownloader(ID1, 1);
|
||||
downloader2.assertRemoveStarted();
|
||||
downloader2.unblock();
|
||||
downloader2.assertCompleted();
|
||||
|
||||
|
|
@ -201,7 +203,7 @@ public class DownloadManagerTest {
|
|||
postRemoveRequest(ID1);
|
||||
|
||||
FakeDownloader downloader1 = getDownloader(ID1, 1);
|
||||
downloader1.assertStarted();
|
||||
downloader1.assertRemoveStarted();
|
||||
|
||||
postDownloadRequest(ID1);
|
||||
|
||||
|
|
@ -209,6 +211,7 @@ public class DownloadManagerTest {
|
|||
downloader1.assertCompleted();
|
||||
|
||||
FakeDownloader downloader2 = getDownloader(ID1, 2);
|
||||
downloader2.assertDownloadStarted();
|
||||
downloader2.unblock();
|
||||
downloader2.assertCompleted();
|
||||
|
||||
|
|
@ -221,7 +224,7 @@ public class DownloadManagerTest {
|
|||
postRemoveRequest(ID1);
|
||||
|
||||
FakeDownloader downloader = getDownloader(ID1, 1);
|
||||
downloader.assertStarted();
|
||||
downloader.assertRemoveStarted();
|
||||
|
||||
postRemoveRequest(ID1);
|
||||
|
||||
|
|
@ -260,11 +263,11 @@ public class DownloadManagerTest {
|
|||
postDownloadRequest(ID1, streamKey2);
|
||||
|
||||
FakeDownloader downloader1 = getDownloader(ID1, 0);
|
||||
downloader1.assertStarted();
|
||||
downloader1.assertDownloadStarted();
|
||||
downloader1.assertCanceled();
|
||||
|
||||
FakeDownloader downloader2 = getDownloader(ID1, 1);
|
||||
downloader2.assertStarted();
|
||||
downloader2.assertDownloadStarted();
|
||||
assertThat(downloader2.request.streamKeys).containsExactly(streamKey1, streamKey2);
|
||||
downloader2.unblock();
|
||||
|
||||
|
|
@ -280,8 +283,8 @@ public class DownloadManagerTest {
|
|||
|
||||
FakeDownloader downloader1 = getDownloader(ID1, 0);
|
||||
FakeDownloader downloader2 = getDownloader(ID2, 0);
|
||||
downloader1.assertStarted();
|
||||
downloader2.assertStarted();
|
||||
downloader1.assertDownloadStarted();
|
||||
downloader2.assertDownloadStarted();
|
||||
downloader1.unblock();
|
||||
downloader2.unblock();
|
||||
|
||||
|
|
@ -297,12 +300,12 @@ public class DownloadManagerTest {
|
|||
postDownloadRequest(ID2);
|
||||
|
||||
FakeDownloader downloader1 = getDownloader(ID1, 0);
|
||||
downloader1.assertStarted();
|
||||
downloader1.assertDownloadStarted();
|
||||
assertDownloaderNotCreated(ID2, 0);
|
||||
assertQueued(ID2);
|
||||
downloader1.unblock();
|
||||
FakeDownloader downloader2 = getDownloader(ID2, 0);
|
||||
downloader2.assertStarted();
|
||||
downloader2.assertDownloadStarted();
|
||||
downloader2.unblock();
|
||||
|
||||
assertCompleted(ID1);
|
||||
|
|
@ -320,8 +323,8 @@ public class DownloadManagerTest {
|
|||
|
||||
FakeDownloader downloader1 = getDownloader(ID1, 0);
|
||||
FakeDownloader downloader2 = getDownloader(ID2, 0);
|
||||
downloader1.assertStarted();
|
||||
downloader2.assertStarted();
|
||||
downloader1.assertDownloadStarted();
|
||||
downloader2.assertRemoveStarted();
|
||||
downloader1.unblock();
|
||||
downloader2.unblock();
|
||||
|
||||
|
|
@ -340,13 +343,13 @@ public class DownloadManagerTest {
|
|||
|
||||
FakeDownloader downloader1 = getDownloader(ID1, 0);
|
||||
FakeDownloader downloader2 = getDownloader(ID2, 0);
|
||||
downloader1.assertStarted();
|
||||
downloader2.assertStarted();
|
||||
downloader1.assertDownloadStarted();
|
||||
downloader2.assertRemoveStarted();
|
||||
downloader2.unblock();
|
||||
assertDownloaderNotCreated(ID2, 1);
|
||||
downloader1.unblock();
|
||||
FakeDownloader downloader3 = getDownloader(ID2, 1);
|
||||
downloader3.assertStarted();
|
||||
downloader3.assertDownloadStarted();
|
||||
downloader3.unblock();
|
||||
|
||||
assertCompleted(ID1);
|
||||
|
|
@ -395,7 +398,7 @@ public class DownloadManagerTest {
|
|||
// When a new remove request is added, it cancels stopped download requests with the same media.
|
||||
postRemoveRequest(ID1);
|
||||
FakeDownloader downloader2 = getDownloader(ID1, 1);
|
||||
downloader2.assertStarted();
|
||||
downloader2.assertRemoveStarted();
|
||||
downloader2.unblock();
|
||||
assertRemoved(ID1);
|
||||
|
||||
|
|
@ -406,10 +409,10 @@ public class DownloadManagerTest {
|
|||
postResumeDownloads();
|
||||
|
||||
FakeDownloader downloader4 = getDownloader(ID2, 2);
|
||||
downloader4.assertStarted();
|
||||
downloader4.assertDownloadStarted();
|
||||
downloader4.unblock();
|
||||
FakeDownloader downloader5 = getDownloader(ID3, 0);
|
||||
downloader5.assertStarted();
|
||||
downloader5.assertDownloadStarted();
|
||||
downloader5.unblock();
|
||||
|
||||
downloadManagerListener.blockUntilIdleAndThrowAnyFailure();
|
||||
|
|
@ -428,7 +431,7 @@ public class DownloadManagerTest {
|
|||
postSetStopReason(ID1, Download.STOP_REASON_NONE);
|
||||
|
||||
FakeDownloader downloader = getDownloader(ID1, 1);
|
||||
downloader.assertStarted();
|
||||
downloader.assertDownloadStarted();
|
||||
downloader.unblock();
|
||||
|
||||
downloadManagerListener.blockUntilIdleAndThrowAnyFailure();
|
||||
|
|
@ -446,7 +449,7 @@ public class DownloadManagerTest {
|
|||
|
||||
postRemoveRequest(ID1);
|
||||
FakeDownloader downloader = getDownloader(ID1, 1);
|
||||
downloader.assertStarted();
|
||||
downloader.assertRemoveStarted();
|
||||
downloader.unblock();
|
||||
assertRemoving(ID1);
|
||||
|
||||
|
|
@ -473,7 +476,7 @@ public class DownloadManagerTest {
|
|||
// New download requests can be added and they start.
|
||||
postDownloadRequest(ID3);
|
||||
FakeDownloader downloader2 = getDownloader(ID3, 0);
|
||||
downloader2.assertStarted();
|
||||
downloader2.assertDownloadStarted();
|
||||
downloader2.unblock();
|
||||
|
||||
downloadManagerListener.blockUntilIdleAndThrowAnyFailure();
|
||||
|
|
@ -732,19 +735,20 @@ public class DownloadManagerTest {
|
|||
private static final class FakeDownloader implements Downloader {
|
||||
|
||||
private final DownloadRequest request;
|
||||
private final ConditionVariable started;
|
||||
private final ConditionVariable downloadStarted;
|
||||
private final ConditionVariable removeStarted;
|
||||
private final ConditionVariable finished;
|
||||
private final ConditionVariable blocker;
|
||||
private final AtomicInteger startCount;
|
||||
private final AtomicInteger bytesDownloaded;
|
||||
|
||||
private volatile boolean interrupted;
|
||||
private volatile boolean canceled;
|
||||
private volatile boolean enableDownloadIOException;
|
||||
|
||||
private FakeDownloader(DownloadRequest request) {
|
||||
this.request = request;
|
||||
started = TestUtil.createRobolectricConditionVariable();
|
||||
downloadStarted = TestUtil.createRobolectricConditionVariable();
|
||||
removeStarted = TestUtil.createRobolectricConditionVariable();
|
||||
finished = TestUtil.createRobolectricConditionVariable();
|
||||
blocker = TestUtil.createRobolectricConditionVariable();
|
||||
startCount = new AtomicInteger();
|
||||
|
|
@ -754,14 +758,18 @@ public class DownloadManagerTest {
|
|||
@Override
|
||||
public void cancel() {
|
||||
canceled = true;
|
||||
blocker.open();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void download(ProgressListener listener) throws InterruptedException, IOException {
|
||||
startCount.incrementAndGet();
|
||||
started.open();
|
||||
downloadStarted.open();
|
||||
try {
|
||||
block();
|
||||
if (canceled) {
|
||||
return;
|
||||
}
|
||||
int bytesDownloaded = this.bytesDownloaded.get();
|
||||
if (listener != null && bytesDownloaded > 0) {
|
||||
listener.onProgress(C.LENGTH_UNSET, bytesDownloaded, C.PERCENTAGE_UNSET);
|
||||
|
|
@ -778,7 +786,7 @@ public class DownloadManagerTest {
|
|||
@Override
|
||||
public void remove() throws InterruptedException {
|
||||
startCount.incrementAndGet();
|
||||
started.open();
|
||||
removeStarted.open();
|
||||
try {
|
||||
block();
|
||||
} finally {
|
||||
|
|
@ -804,9 +812,14 @@ public class DownloadManagerTest {
|
|||
bytesDownloaded.incrementAndGet();
|
||||
}
|
||||
|
||||
public void assertStarted() throws InterruptedException {
|
||||
assertThat(started.block(TIMEOUT_MS)).isTrue();
|
||||
started.close();
|
||||
public void assertDownloadStarted() throws InterruptedException {
|
||||
assertThat(downloadStarted.block(TIMEOUT_MS)).isTrue();
|
||||
downloadStarted.close();
|
||||
}
|
||||
|
||||
public void assertRemoveStarted() throws InterruptedException {
|
||||
assertThat(removeStarted.block(TIMEOUT_MS)).isTrue();
|
||||
removeStarted.close();
|
||||
}
|
||||
|
||||
public void assertStartCount(int count) {
|
||||
|
|
@ -815,13 +828,11 @@ public class DownloadManagerTest {
|
|||
|
||||
public void assertCompleted() throws InterruptedException {
|
||||
blockUntilFinished();
|
||||
assertThat(interrupted).isFalse();
|
||||
assertThat(canceled).isFalse();
|
||||
}
|
||||
|
||||
public void assertCanceled() throws InterruptedException {
|
||||
blockUntilFinished();
|
||||
assertThat(interrupted).isTrue();
|
||||
assertThat(canceled).isTrue();
|
||||
}
|
||||
|
||||
|
|
@ -830,9 +841,6 @@ public class DownloadManagerTest {
|
|||
private void block() throws InterruptedException {
|
||||
try {
|
||||
blocker.block();
|
||||
} catch (InterruptedException e) {
|
||||
interrupted = true;
|
||||
throw e;
|
||||
} finally {
|
||||
blocker.close();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue