Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
b65e6829
authored
Apr 29, 2020
by
olly
Committed by
Oliver Woodman
May 01, 2020
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
DownloadManagerTest: Disambiguate between download and removal
PiperOrigin-RevId: 308997845
parent
ec34c083
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
47 additions
and
39 deletions
library/core/src/test/java/com/google/android/exoplayer2/offline/DownloadManagerTest.java
library/core/src/test/java/com/google/android/exoplayer2/offline/DownloadManagerTest.java
View file @
b65e6829
...
@@ -94,6 +94,7 @@ public class DownloadManagerTest {
...
@@ -94,6 +94,7 @@ public class DownloadManagerTest {
assertDownloading
(
ID1
);
assertDownloading
(
ID1
);
FakeDownloader
downloader
=
getDownloader
(
ID1
,
0
);
FakeDownloader
downloader
=
getDownloader
(
ID1
,
0
);
downloader
.
assertDownloadStarted
();
downloader
.
unblock
();
downloader
.
unblock
();
downloader
.
assertCompleted
();
downloader
.
assertCompleted
();
downloader
.
assertStartCount
(
1
);
downloader
.
assertStartCount
(
1
);
...
@@ -127,7 +128,7 @@ public class DownloadManagerTest {
...
@@ -127,7 +128,7 @@ public class DownloadManagerTest {
FakeDownloader
downloader
=
getDownloader
(
ID1
,
0
);
FakeDownloader
downloader
=
getDownloader
(
ID1
,
0
);
for
(
int
i
=
0
;
i
<=
MIN_RETRY_COUNT
;
i
++)
{
for
(
int
i
=
0
;
i
<=
MIN_RETRY_COUNT
;
i
++)
{
downloader
.
assertStarted
();
downloader
.
assert
Download
Started
();
downloader
.
fail
();
downloader
.
fail
();
}
}
downloader
.
assertCompleted
();
downloader
.
assertCompleted
();
...
@@ -144,10 +145,10 @@ public class DownloadManagerTest {
...
@@ -144,10 +145,10 @@ public class DownloadManagerTest {
FakeDownloader
downloader
=
getDownloader
(
ID1
,
0
);
FakeDownloader
downloader
=
getDownloader
(
ID1
,
0
);
for
(
int
i
=
0
;
i
<
MIN_RETRY_COUNT
;
i
++)
{
for
(
int
i
=
0
;
i
<
MIN_RETRY_COUNT
;
i
++)
{
downloader
.
assertStarted
();
downloader
.
assert
Download
Started
();
downloader
.
fail
();
downloader
.
fail
();
}
}
downloader
.
assertStarted
();
downloader
.
assert
Download
Started
();
downloader
.
unblock
();
downloader
.
unblock
();
downloader
.
assertCompleted
();
downloader
.
assertCompleted
();
downloader
.
assertStartCount
(
MIN_RETRY_COUNT
+
1
);
downloader
.
assertStartCount
(
MIN_RETRY_COUNT
+
1
);
...
@@ -164,11 +165,11 @@ public class DownloadManagerTest {
...
@@ -164,11 +165,11 @@ public class DownloadManagerTest {
FakeDownloader
downloader
=
getDownloader
(
ID1
,
0
);
FakeDownloader
downloader
=
getDownloader
(
ID1
,
0
);
int
tooManyRetries
=
MIN_RETRY_COUNT
+
10
;
int
tooManyRetries
=
MIN_RETRY_COUNT
+
10
;
for
(
int
i
=
0
;
i
<
tooManyRetries
;
i
++)
{
for
(
int
i
=
0
;
i
<
tooManyRetries
;
i
++)
{
downloader
.
incrementBytesDownload
ed
();
downloader
.
assertDownloadStart
ed
();
downloader
.
assertStarted
();
downloader
.
incrementBytesDownloaded
();
// Make some progress.
downloader
.
fail
();
downloader
.
fail
();
}
}
downloader
.
assertStarted
();
downloader
.
assert
Download
Started
();
downloader
.
unblock
();
downloader
.
unblock
();
downloader
.
assertCompleted
();
downloader
.
assertCompleted
();
downloader
.
assertStartCount
(
tooManyRetries
+
1
);
downloader
.
assertStartCount
(
tooManyRetries
+
1
);
...
@@ -182,13 +183,14 @@ public class DownloadManagerTest {
...
@@ -182,13 +183,14 @@ public class DownloadManagerTest {
postDownloadRequest
(
ID1
);
postDownloadRequest
(
ID1
);
FakeDownloader
downloader1
=
getDownloader
(
ID1
,
0
);
FakeDownloader
downloader1
=
getDownloader
(
ID1
,
0
);
downloader1
.
assertStarted
();
downloader1
.
assert
Download
Started
();
postRemoveRequest
(
ID1
);
postRemoveRequest
(
ID1
);
downloader1
.
assertCanceled
();
downloader1
.
assertCanceled
();
downloader1
.
assertStartCount
(
1
);
downloader1
.
assertStartCount
(
1
);
FakeDownloader
downloader2
=
getDownloader
(
ID1
,
1
);
FakeDownloader
downloader2
=
getDownloader
(
ID1
,
1
);
downloader2
.
assertRemoveStarted
();
downloader2
.
unblock
();
downloader2
.
unblock
();
downloader2
.
assertCompleted
();
downloader2
.
assertCompleted
();
...
@@ -201,7 +203,7 @@ public class DownloadManagerTest {
...
@@ -201,7 +203,7 @@ public class DownloadManagerTest {
postRemoveRequest
(
ID1
);
postRemoveRequest
(
ID1
);
FakeDownloader
downloader1
=
getDownloader
(
ID1
,
1
);
FakeDownloader
downloader1
=
getDownloader
(
ID1
,
1
);
downloader1
.
assertStarted
();
downloader1
.
assert
Remove
Started
();
postDownloadRequest
(
ID1
);
postDownloadRequest
(
ID1
);
...
@@ -209,6 +211,7 @@ public class DownloadManagerTest {
...
@@ -209,6 +211,7 @@ public class DownloadManagerTest {
downloader1
.
assertCompleted
();
downloader1
.
assertCompleted
();
FakeDownloader
downloader2
=
getDownloader
(
ID1
,
2
);
FakeDownloader
downloader2
=
getDownloader
(
ID1
,
2
);
downloader2
.
assertDownloadStarted
();
downloader2
.
unblock
();
downloader2
.
unblock
();
downloader2
.
assertCompleted
();
downloader2
.
assertCompleted
();
...
@@ -221,7 +224,7 @@ public class DownloadManagerTest {
...
@@ -221,7 +224,7 @@ public class DownloadManagerTest {
postRemoveRequest
(
ID1
);
postRemoveRequest
(
ID1
);
FakeDownloader
downloader
=
getDownloader
(
ID1
,
1
);
FakeDownloader
downloader
=
getDownloader
(
ID1
,
1
);
downloader
.
assertStarted
();
downloader
.
assert
Remove
Started
();
postRemoveRequest
(
ID1
);
postRemoveRequest
(
ID1
);
...
@@ -260,11 +263,11 @@ public class DownloadManagerTest {
...
@@ -260,11 +263,11 @@ public class DownloadManagerTest {
postDownloadRequest
(
ID1
,
streamKey2
);
postDownloadRequest
(
ID1
,
streamKey2
);
FakeDownloader
downloader1
=
getDownloader
(
ID1
,
0
);
FakeDownloader
downloader1
=
getDownloader
(
ID1
,
0
);
downloader1
.
assertStarted
();
downloader1
.
assert
Download
Started
();
downloader1
.
assertCanceled
();
downloader1
.
assertCanceled
();
FakeDownloader
downloader2
=
getDownloader
(
ID1
,
1
);
FakeDownloader
downloader2
=
getDownloader
(
ID1
,
1
);
downloader2
.
assertStarted
();
downloader2
.
assert
Download
Started
();
assertThat
(
downloader2
.
request
.
streamKeys
).
containsExactly
(
streamKey1
,
streamKey2
);
assertThat
(
downloader2
.
request
.
streamKeys
).
containsExactly
(
streamKey1
,
streamKey2
);
downloader2
.
unblock
();
downloader2
.
unblock
();
...
@@ -280,8 +283,8 @@ public class DownloadManagerTest {
...
@@ -280,8 +283,8 @@ public class DownloadManagerTest {
FakeDownloader
downloader1
=
getDownloader
(
ID1
,
0
);
FakeDownloader
downloader1
=
getDownloader
(
ID1
,
0
);
FakeDownloader
downloader2
=
getDownloader
(
ID2
,
0
);
FakeDownloader
downloader2
=
getDownloader
(
ID2
,
0
);
downloader1
.
assertStarted
();
downloader1
.
assert
Download
Started
();
downloader2
.
assertStarted
();
downloader2
.
assert
Download
Started
();
downloader1
.
unblock
();
downloader1
.
unblock
();
downloader2
.
unblock
();
downloader2
.
unblock
();
...
@@ -297,12 +300,12 @@ public class DownloadManagerTest {
...
@@ -297,12 +300,12 @@ public class DownloadManagerTest {
postDownloadRequest
(
ID2
);
postDownloadRequest
(
ID2
);
FakeDownloader
downloader1
=
getDownloader
(
ID1
,
0
);
FakeDownloader
downloader1
=
getDownloader
(
ID1
,
0
);
downloader1
.
assertStarted
();
downloader1
.
assert
Download
Started
();
assertDownloaderNotCreated
(
ID2
,
0
);
assertDownloaderNotCreated
(
ID2
,
0
);
assertQueued
(
ID2
);
assertQueued
(
ID2
);
downloader1
.
unblock
();
downloader1
.
unblock
();
FakeDownloader
downloader2
=
getDownloader
(
ID2
,
0
);
FakeDownloader
downloader2
=
getDownloader
(
ID2
,
0
);
downloader2
.
assertStarted
();
downloader2
.
assert
Download
Started
();
downloader2
.
unblock
();
downloader2
.
unblock
();
assertCompleted
(
ID1
);
assertCompleted
(
ID1
);
...
@@ -320,8 +323,8 @@ public class DownloadManagerTest {
...
@@ -320,8 +323,8 @@ public class DownloadManagerTest {
FakeDownloader
downloader1
=
getDownloader
(
ID1
,
0
);
FakeDownloader
downloader1
=
getDownloader
(
ID1
,
0
);
FakeDownloader
downloader2
=
getDownloader
(
ID2
,
0
);
FakeDownloader
downloader2
=
getDownloader
(
ID2
,
0
);
downloader1
.
assertStarted
();
downloader1
.
assert
Download
Started
();
downloader2
.
assertStarted
();
downloader2
.
assert
Remove
Started
();
downloader1
.
unblock
();
downloader1
.
unblock
();
downloader2
.
unblock
();
downloader2
.
unblock
();
...
@@ -340,13 +343,13 @@ public class DownloadManagerTest {
...
@@ -340,13 +343,13 @@ public class DownloadManagerTest {
FakeDownloader
downloader1
=
getDownloader
(
ID1
,
0
);
FakeDownloader
downloader1
=
getDownloader
(
ID1
,
0
);
FakeDownloader
downloader2
=
getDownloader
(
ID2
,
0
);
FakeDownloader
downloader2
=
getDownloader
(
ID2
,
0
);
downloader1
.
assertStarted
();
downloader1
.
assert
Download
Started
();
downloader2
.
assertStarted
();
downloader2
.
assert
Remove
Started
();
downloader2
.
unblock
();
downloader2
.
unblock
();
assertDownloaderNotCreated
(
ID2
,
1
);
assertDownloaderNotCreated
(
ID2
,
1
);
downloader1
.
unblock
();
downloader1
.
unblock
();
FakeDownloader
downloader3
=
getDownloader
(
ID2
,
1
);
FakeDownloader
downloader3
=
getDownloader
(
ID2
,
1
);
downloader3
.
assertStarted
();
downloader3
.
assert
Download
Started
();
downloader3
.
unblock
();
downloader3
.
unblock
();
assertCompleted
(
ID1
);
assertCompleted
(
ID1
);
...
@@ -395,7 +398,7 @@ public class DownloadManagerTest {
...
@@ -395,7 +398,7 @@ public class DownloadManagerTest {
// When a new remove request is added, it cancels stopped download requests with the same media.
// When a new remove request is added, it cancels stopped download requests with the same media.
postRemoveRequest
(
ID1
);
postRemoveRequest
(
ID1
);
FakeDownloader
downloader2
=
getDownloader
(
ID1
,
1
);
FakeDownloader
downloader2
=
getDownloader
(
ID1
,
1
);
downloader2
.
assertStarted
();
downloader2
.
assert
Remove
Started
();
downloader2
.
unblock
();
downloader2
.
unblock
();
assertRemoved
(
ID1
);
assertRemoved
(
ID1
);
...
@@ -406,10 +409,10 @@ public class DownloadManagerTest {
...
@@ -406,10 +409,10 @@ public class DownloadManagerTest {
postResumeDownloads
();
postResumeDownloads
();
FakeDownloader
downloader4
=
getDownloader
(
ID2
,
2
);
FakeDownloader
downloader4
=
getDownloader
(
ID2
,
2
);
downloader4
.
assertStarted
();
downloader4
.
assert
Download
Started
();
downloader4
.
unblock
();
downloader4
.
unblock
();
FakeDownloader
downloader5
=
getDownloader
(
ID3
,
0
);
FakeDownloader
downloader5
=
getDownloader
(
ID3
,
0
);
downloader5
.
assertStarted
();
downloader5
.
assert
Download
Started
();
downloader5
.
unblock
();
downloader5
.
unblock
();
downloadManagerListener
.
blockUntilIdleAndThrowAnyFailure
();
downloadManagerListener
.
blockUntilIdleAndThrowAnyFailure
();
...
@@ -428,7 +431,7 @@ public class DownloadManagerTest {
...
@@ -428,7 +431,7 @@ public class DownloadManagerTest {
postSetStopReason
(
ID1
,
Download
.
STOP_REASON_NONE
);
postSetStopReason
(
ID1
,
Download
.
STOP_REASON_NONE
);
FakeDownloader
downloader
=
getDownloader
(
ID1
,
1
);
FakeDownloader
downloader
=
getDownloader
(
ID1
,
1
);
downloader
.
assertStarted
();
downloader
.
assert
Download
Started
();
downloader
.
unblock
();
downloader
.
unblock
();
downloadManagerListener
.
blockUntilIdleAndThrowAnyFailure
();
downloadManagerListener
.
blockUntilIdleAndThrowAnyFailure
();
...
@@ -446,7 +449,7 @@ public class DownloadManagerTest {
...
@@ -446,7 +449,7 @@ public class DownloadManagerTest {
postRemoveRequest
(
ID1
);
postRemoveRequest
(
ID1
);
FakeDownloader
downloader
=
getDownloader
(
ID1
,
1
);
FakeDownloader
downloader
=
getDownloader
(
ID1
,
1
);
downloader
.
assertStarted
();
downloader
.
assert
Remove
Started
();
downloader
.
unblock
();
downloader
.
unblock
();
assertRemoving
(
ID1
);
assertRemoving
(
ID1
);
...
@@ -473,7 +476,7 @@ public class DownloadManagerTest {
...
@@ -473,7 +476,7 @@ public class DownloadManagerTest {
// New download requests can be added and they start.
// New download requests can be added and they start.
postDownloadRequest
(
ID3
);
postDownloadRequest
(
ID3
);
FakeDownloader
downloader2
=
getDownloader
(
ID3
,
0
);
FakeDownloader
downloader2
=
getDownloader
(
ID3
,
0
);
downloader2
.
assertStarted
();
downloader2
.
assert
Download
Started
();
downloader2
.
unblock
();
downloader2
.
unblock
();
downloadManagerListener
.
blockUntilIdleAndThrowAnyFailure
();
downloadManagerListener
.
blockUntilIdleAndThrowAnyFailure
();
...
@@ -732,19 +735,20 @@ public class DownloadManagerTest {
...
@@ -732,19 +735,20 @@ public class DownloadManagerTest {
private
static
final
class
FakeDownloader
implements
Downloader
{
private
static
final
class
FakeDownloader
implements
Downloader
{
private
final
DownloadRequest
request
;
private
final
DownloadRequest
request
;
private
final
ConditionVariable
started
;
private
final
ConditionVariable
downloadStarted
;
private
final
ConditionVariable
removeStarted
;
private
final
ConditionVariable
finished
;
private
final
ConditionVariable
finished
;
private
final
ConditionVariable
blocker
;
private
final
ConditionVariable
blocker
;
private
final
AtomicInteger
startCount
;
private
final
AtomicInteger
startCount
;
private
final
AtomicInteger
bytesDownloaded
;
private
final
AtomicInteger
bytesDownloaded
;
private
volatile
boolean
interrupted
;
private
volatile
boolean
canceled
;
private
volatile
boolean
canceled
;
private
volatile
boolean
enableDownloadIOException
;
private
volatile
boolean
enableDownloadIOException
;
private
FakeDownloader
(
DownloadRequest
request
)
{
private
FakeDownloader
(
DownloadRequest
request
)
{
this
.
request
=
request
;
this
.
request
=
request
;
started
=
TestUtil
.
createRobolectricConditionVariable
();
downloadStarted
=
TestUtil
.
createRobolectricConditionVariable
();
removeStarted
=
TestUtil
.
createRobolectricConditionVariable
();
finished
=
TestUtil
.
createRobolectricConditionVariable
();
finished
=
TestUtil
.
createRobolectricConditionVariable
();
blocker
=
TestUtil
.
createRobolectricConditionVariable
();
blocker
=
TestUtil
.
createRobolectricConditionVariable
();
startCount
=
new
AtomicInteger
();
startCount
=
new
AtomicInteger
();
...
@@ -754,14 +758,18 @@ public class DownloadManagerTest {
...
@@ -754,14 +758,18 @@ public class DownloadManagerTest {
@Override
@Override
public
void
cancel
()
{
public
void
cancel
()
{
canceled
=
true
;
canceled
=
true
;
blocker
.
open
();
}
}
@Override
@Override
public
void
download
(
ProgressListener
listener
)
throws
InterruptedException
,
IOException
{
public
void
download
(
ProgressListener
listener
)
throws
InterruptedException
,
IOException
{
startCount
.
incrementAndGet
();
startCount
.
incrementAndGet
();
s
tarted
.
open
();
downloadS
tarted
.
open
();
try
{
try
{
block
();
block
();
if
(
canceled
)
{
return
;
}
int
bytesDownloaded
=
this
.
bytesDownloaded
.
get
();
int
bytesDownloaded
=
this
.
bytesDownloaded
.
get
();
if
(
listener
!=
null
&&
bytesDownloaded
>
0
)
{
if
(
listener
!=
null
&&
bytesDownloaded
>
0
)
{
listener
.
onProgress
(
C
.
LENGTH_UNSET
,
bytesDownloaded
,
C
.
PERCENTAGE_UNSET
);
listener
.
onProgress
(
C
.
LENGTH_UNSET
,
bytesDownloaded
,
C
.
PERCENTAGE_UNSET
);
...
@@ -778,7 +786,7 @@ public class DownloadManagerTest {
...
@@ -778,7 +786,7 @@ public class DownloadManagerTest {
@Override
@Override
public
void
remove
()
throws
InterruptedException
{
public
void
remove
()
throws
InterruptedException
{
startCount
.
incrementAndGet
();
startCount
.
incrementAndGet
();
s
tarted
.
open
();
removeS
tarted
.
open
();
try
{
try
{
block
();
block
();
}
finally
{
}
finally
{
...
@@ -804,9 +812,14 @@ public class DownloadManagerTest {
...
@@ -804,9 +812,14 @@ public class DownloadManagerTest {
bytesDownloaded
.
incrementAndGet
();
bytesDownloaded
.
incrementAndGet
();
}
}
public
void
assertStarted
()
throws
InterruptedException
{
public
void
assertDownloadStarted
()
throws
InterruptedException
{
assertThat
(
started
.
block
(
TIMEOUT_MS
)).
isTrue
();
assertThat
(
downloadStarted
.
block
(
TIMEOUT_MS
)).
isTrue
();
started
.
close
();
downloadStarted
.
close
();
}
public
void
assertRemoveStarted
()
throws
InterruptedException
{
assertThat
(
removeStarted
.
block
(
TIMEOUT_MS
)).
isTrue
();
removeStarted
.
close
();
}
}
public
void
assertStartCount
(
int
count
)
{
public
void
assertStartCount
(
int
count
)
{
...
@@ -815,13 +828,11 @@ public class DownloadManagerTest {
...
@@ -815,13 +828,11 @@ public class DownloadManagerTest {
public
void
assertCompleted
()
throws
InterruptedException
{
public
void
assertCompleted
()
throws
InterruptedException
{
blockUntilFinished
();
blockUntilFinished
();
assertThat
(
interrupted
).
isFalse
();
assertThat
(
canceled
).
isFalse
();
assertThat
(
canceled
).
isFalse
();
}
}
public
void
assertCanceled
()
throws
InterruptedException
{
public
void
assertCanceled
()
throws
InterruptedException
{
blockUntilFinished
();
blockUntilFinished
();
assertThat
(
interrupted
).
isTrue
();
assertThat
(
canceled
).
isTrue
();
assertThat
(
canceled
).
isTrue
();
}
}
...
@@ -830,9 +841,6 @@ public class DownloadManagerTest {
...
@@ -830,9 +841,6 @@ public class DownloadManagerTest {
private
void
block
()
throws
InterruptedException
{
private
void
block
()
throws
InterruptedException
{
try
{
try
{
blocker
.
block
();
blocker
.
block
();
}
catch
(
InterruptedException
e
)
{
interrupted
=
true
;
throw
e
;
}
finally
{
}
finally
{
blocker
.
close
();
blocker
.
close
();
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment