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
2716ff89
authored
Dec 23, 2022
by
samrobinson
Committed by
Marc Baechinger
Jan 04, 2023
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Simplify TransformerEndToEndTest and TransformerTestRunner.
PiperOrigin-RevId: 497335605
parent
c0bbfe92
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
68 additions
and
96 deletions
library/transformer/src/test/java/com/google/android/exoplayer2/transformer/TransformerEndToEndTest.java
library/transformer/src/test/java/com/google/android/exoplayer2/transformer/TransformerTestRunner.java
library/transformer/src/test/java/com/google/android/exoplayer2/transformer/TransformerEndToEndTest.java
View file @
2716ff89
...
@@ -77,7 +77,6 @@ import java.util.concurrent.CountDownLatch;
...
@@ -77,7 +77,6 @@ import java.util.concurrent.CountDownLatch;
import
java.util.concurrent.atomic.AtomicBoolean
;
import
java.util.concurrent.atomic.AtomicBoolean
;
import
java.util.concurrent.atomic.AtomicInteger
;
import
java.util.concurrent.atomic.AtomicInteger
;
import
java.util.concurrent.atomic.AtomicReference
;
import
java.util.concurrent.atomic.AtomicReference
;
import
org.checkerframework.checker.nullness.compatqual.NullableType
;
import
org.junit.After
;
import
org.junit.After
;
import
org.junit.Before
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.Test
;
...
@@ -131,7 +130,7 @@ public final class TransformerEndToEndTest {
...
@@ -131,7 +130,7 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_VIDEO_ONLY
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_VIDEO_ONLY
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_VIDEO_ONLY
));
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_VIDEO_ONLY
));
}
}
...
@@ -143,7 +142,7 @@ public final class TransformerEndToEndTest {
...
@@ -143,7 +142,7 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_UNSUPPORTED_BY_ENCODER
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_UNSUPPORTED_BY_ENCODER
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
DumpFileAsserts
.
assertOutput
(
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_UNSUPPORTED_BY_ENCODER
));
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_UNSUPPORTED_BY_ENCODER
));
...
@@ -161,7 +160,7 @@ public final class TransformerEndToEndTest {
...
@@ -161,7 +160,7 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_UNSUPPORTED_BY_ENCODER
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_UNSUPPORTED_BY_ENCODER
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
DumpFileAsserts
.
assertOutput
(
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_UNSUPPORTED_BY_ENCODER
+
".aac"
));
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_UNSUPPORTED_BY_ENCODER
+
".aac"
));
...
@@ -173,7 +172,7 @@ public final class TransformerEndToEndTest {
...
@@ -173,7 +172,7 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_VIDEO
));
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_VIDEO
));
}
}
...
@@ -194,7 +193,7 @@ public final class TransformerEndToEndTest {
...
@@ -194,7 +193,7 @@ public final class TransformerEndToEndTest {
.
build
();
.
build
();
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
DumpFileAsserts
.
assertOutput
(
DumpFileAsserts
.
assertOutput
(
context
,
context
,
...
@@ -212,7 +211,7 @@ public final class TransformerEndToEndTest {
...
@@ -212,7 +211,7 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_WITH_SUBTITLES
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_WITH_SUBTITLES
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_WITH_SUBTITLES
));
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_WITH_SUBTITLES
));
}
}
...
@@ -225,12 +224,12 @@ public final class TransformerEndToEndTest {
...
@@ -225,12 +224,12 @@ public final class TransformerEndToEndTest {
// Transform first media item.
// Transform first media item.
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
Files
.
delete
(
Paths
.
get
(
outputPath
));
Files
.
delete
(
Paths
.
get
(
outputPath
));
// Transform second media item.
// Transform second media item.
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_VIDEO
));
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_VIDEO
));
}
}
...
@@ -253,7 +252,7 @@ public final class TransformerEndToEndTest {
...
@@ -253,7 +252,7 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
DumpFileAsserts
.
assertOutput
(
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_VIDEO
+
".noaudio"
));
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_VIDEO
+
".noaudio"
));
...
@@ -266,7 +265,7 @@ public final class TransformerEndToEndTest {
...
@@ -266,7 +265,7 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
DumpFileAsserts
.
assertOutput
(
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_VIDEO
+
".novideo"
));
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_VIDEO
+
".novideo"
));
...
@@ -281,7 +280,7 @@ public final class TransformerEndToEndTest {
...
@@ -281,7 +280,7 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
DumpFileAsserts
.
assertOutput
(
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_VIDEO
+
".silentaudio"
));
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_VIDEO
+
".silentaudio"
));
...
@@ -298,7 +297,7 @@ public final class TransformerEndToEndTest {
...
@@ -298,7 +297,7 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
DumpFileAsserts
.
assertOutput
(
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_VIDEO
+
".48000hz"
));
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_VIDEO
+
".48000hz"
));
...
@@ -318,7 +317,7 @@ public final class TransformerEndToEndTest {
...
@@ -318,7 +317,7 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
verify
(
mockListener1
).
onTransformationCompleted
(
eq
(
mediaItem
),
any
());
verify
(
mockListener1
).
onTransformationCompleted
(
eq
(
mediaItem
),
any
());
verify
(
mockListener2
).
onTransformationCompleted
(
eq
(
mediaItem
),
any
());
verify
(
mockListener2
).
onTransformationCompleted
(
eq
(
mediaItem
),
any
());
...
@@ -341,7 +340,9 @@ public final class TransformerEndToEndTest {
...
@@ -341,7 +340,9 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_UNSUPPORTED_BY_DECODER
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_UNSUPPORTED_BY_DECODER
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformationException
exception
=
TransformerTestRunner
.
runUntilError
(
transformer
);
TransformationException
exception
=
assertThrows
(
TransformationException
.
class
,
()
->
TransformerTestRunner
.
runLooper
(
transformer
));
verify
(
mockListener1
).
onTransformationError
(
eq
(
mediaItem
),
any
(),
eq
(
exception
));
verify
(
mockListener1
).
onTransformationError
(
eq
(
mediaItem
),
any
(),
eq
(
exception
));
verify
(
mockListener2
).
onTransformationError
(
eq
(
mediaItem
),
any
(),
eq
(
exception
));
verify
(
mockListener2
).
onTransformationError
(
eq
(
mediaItem
),
any
(),
eq
(
exception
));
...
@@ -366,7 +367,7 @@ public final class TransformerEndToEndTest {
...
@@ -366,7 +367,7 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_UNSUPPORTED_BY_MUXER
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_UNSUPPORTED_BY_MUXER
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
verify
(
mockListener1
)
verify
(
mockListener1
)
.
onFallbackApplied
(
mediaItem
,
originalTransformationRequest
,
fallbackTransformationRequest
);
.
onFallbackApplied
(
mediaItem
,
originalTransformationRequest
,
fallbackTransformationRequest
);
...
@@ -392,7 +393,7 @@ public final class TransformerEndToEndTest {
...
@@ -392,7 +393,7 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
transformer2
.
startTransformation
(
mediaItem
,
outputPath
);
transformer2
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer2
);
TransformerTestRunner
.
run
Looper
(
transformer2
);
verify
(
mockListener1
).
onTransformationCompleted
(
eq
(
mediaItem
),
any
());
verify
(
mockListener1
).
onTransformationCompleted
(
eq
(
mediaItem
),
any
());
verify
(
mockListener2
,
never
()).
onTransformationCompleted
(
eq
(
mediaItem
),
any
());
verify
(
mockListener2
,
never
()).
onTransformationCompleted
(
eq
(
mediaItem
),
any
());
...
@@ -409,31 +410,19 @@ public final class TransformerEndToEndTest {
...
@@ -409,31 +410,19 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_WITH_SEF_SLOW_MOTION
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_WITH_SEF_SLOW_MOTION
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_WITH_SEF_SLOW_MOTION
));
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_WITH_SEF_SLOW_MOTION
));
}
}
@Test
@Test
public
void
startTransformation_completesWithValidBitrate
()
throws
Exception
{
public
void
startTransformation_completesWithValidBitrate
()
throws
Exception
{
AtomicReference
<
@NullableType
TransformationResult
>
resultReference
=
new
AtomicReference
<>();
Transformer
transformer
=
createTransformerBuilder
(
/* enableFallback= */
false
).
build
();
Transformer
.
Listener
listener
=
new
Transformer
.
Listener
()
{
@Override
public
void
onTransformationCompleted
(
MediaItem
inputMediaItem
,
TransformationResult
transformationResult
)
{
resultReference
.
set
(
transformationResult
);
}
};
Transformer
transformer
=
createTransformerBuilder
(
/* enableFallback= */
false
).
addListener
(
listener
).
build
();
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
Transform
erTestRunner
.
runUntilCompleted
(
transformer
);
Transform
ationResult
result
=
TransformerTestRunner
.
runLooper
(
transformer
);
@Nullable
TransformationResult
result
=
resultReference
.
get
();
assertThat
(
result
).
isNotNull
();
assertThat
(
result
.
averageAudioBitrate
).
isGreaterThan
(
0
);
assertThat
(
result
.
averageAudioBitrate
).
isGreaterThan
(
0
);
assertThat
(
result
.
averageVideoBitrate
).
isGreaterThan
(
0
);
assertThat
(
result
.
averageVideoBitrate
).
isGreaterThan
(
0
);
}
}
...
@@ -452,8 +441,9 @@ public final class TransformerEndToEndTest {
...
@@ -452,8 +441,9 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_UNSUPPORTED_BY_MUXER
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_UNSUPPORTED_BY_MUXER
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformationException
exception
=
TransformerTestRunner
.
runUntilError
(
transformer
);
TransformationException
exception
=
assertThrows
(
TransformationException
.
class
,
()
->
TransformerTestRunner
.
runLooper
(
transformer
));
assertThat
(
exception
).
hasCauseThat
().
isInstanceOf
(
IllegalArgumentException
.
class
);
assertThat
(
exception
).
hasCauseThat
().
isInstanceOf
(
IllegalArgumentException
.
class
);
assertThat
(
exception
.
errorCode
)
assertThat
(
exception
.
errorCode
)
.
isEqualTo
(
TransformationException
.
ERROR_CODE_ENCODING_FORMAT_UNSUPPORTED
);
.
isEqualTo
(
TransformationException
.
ERROR_CODE_ENCODING_FORMAT_UNSUPPORTED
);
...
@@ -472,8 +462,9 @@ public final class TransformerEndToEndTest {
...
@@ -472,8 +462,9 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_UNSUPPORTED_BY_DECODER
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_UNSUPPORTED_BY_DECODER
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformationException
exception
=
TransformerTestRunner
.
runUntilError
(
transformer
);
TransformationException
exception
=
assertThrows
(
TransformationException
.
class
,
()
->
TransformerTestRunner
.
runLooper
(
transformer
));
assertThat
(
exception
).
hasCauseThat
().
isInstanceOf
(
IllegalArgumentException
.
class
);
assertThat
(
exception
).
hasCauseThat
().
isInstanceOf
(
IllegalArgumentException
.
class
);
assertThat
(
exception
.
errorCode
)
assertThat
(
exception
.
errorCode
)
.
isEqualTo
(
TransformationException
.
ERROR_CODE_DECODING_FORMAT_UNSUPPORTED
);
.
isEqualTo
(
TransformationException
.
ERROR_CODE_DECODING_FORMAT_UNSUPPORTED
);
...
@@ -485,8 +476,9 @@ public final class TransformerEndToEndTest {
...
@@ -485,8 +476,9 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
"asset:///non-existing-path.mp4"
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
"asset:///non-existing-path.mp4"
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformationException
exception
=
TransformerTestRunner
.
runUntilError
(
transformer
);
TransformationException
exception
=
assertThrows
(
TransformationException
.
class
,
()
->
TransformerTestRunner
.
runLooper
(
transformer
));
assertThat
(
exception
).
hasCauseThat
().
hasCauseThat
().
isInstanceOf
(
IOException
.
class
);
assertThat
(
exception
).
hasCauseThat
().
hasCauseThat
().
isInstanceOf
(
IOException
.
class
);
assertThat
(
exception
.
errorCode
).
isEqualTo
(
TransformationException
.
ERROR_CODE_IO_FILE_NOT_FOUND
);
assertThat
(
exception
.
errorCode
).
isEqualTo
(
TransformationException
.
ERROR_CODE_IO_FILE_NOT_FOUND
);
}
}
...
@@ -505,7 +497,7 @@ public final class TransformerEndToEndTest {
...
@@ -505,7 +497,7 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_UNSUPPORTED_BY_MUXER
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_UNSUPPORTED_BY_MUXER
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
DumpFileAsserts
.
assertOutput
(
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_UNSUPPORTED_BY_MUXER
+
".fallback"
));
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_UNSUPPORTED_BY_MUXER
+
".fallback"
));
...
@@ -526,7 +518,7 @@ public final class TransformerEndToEndTest {
...
@@ -526,7 +518,7 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_UNSUPPORTED_BY_MUXER
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_UNSUPPORTED_BY_MUXER
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
DumpFileAsserts
.
assertOutput
(
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_UNSUPPORTED_BY_MUXER
+
".fallback"
));
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_UNSUPPORTED_BY_MUXER
+
".fallback"
));
...
@@ -549,8 +541,9 @@ public final class TransformerEndToEndTest {
...
@@ -549,8 +541,9 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformationException
exception
=
TransformerTestRunner
.
runUntilError
(
transformer
);
TransformationException
exception
=
assertThrows
(
TransformationException
.
class
,
()
->
TransformerTestRunner
.
runLooper
(
transformer
));
assertThat
(
exception
).
hasCauseThat
().
isInstanceOf
(
IllegalStateException
.
class
);
assertThat
(
exception
).
hasCauseThat
().
isInstanceOf
(
IllegalStateException
.
class
);
assertThat
(
exception
.
errorCode
).
isEqualTo
(
TransformationException
.
ERROR_CODE_MUXING_FAILED
);
assertThat
(
exception
.
errorCode
).
isEqualTo
(
TransformationException
.
ERROR_CODE_MUXING_FAILED
);
}
}
...
@@ -564,7 +557,7 @@ public final class TransformerEndToEndTest {
...
@@ -564,7 +557,7 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_AUDIO_VIDEO
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_VIDEO
));
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_VIDEO
));
}
}
...
@@ -580,7 +573,7 @@ public final class TransformerEndToEndTest {
...
@@ -580,7 +573,7 @@ public final class TransformerEndToEndTest {
// This would throw if the previous transformation had not been cancelled.
// This would throw if the previous transformation had not been cancelled.
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_VIDEO
));
DumpFileAsserts
.
assertOutput
(
context
,
testMuxer
,
getDumpFileName
(
FILE_AUDIO_VIDEO
));
}
}
...
@@ -601,7 +594,7 @@ public final class TransformerEndToEndTest {
...
@@ -601,7 +594,7 @@ public final class TransformerEndToEndTest {
()
->
{
()
->
{
try
{
try
{
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
exception
.
set
(
e
);
exception
.
set
(
e
);
}
finally
{
}
finally
{
...
@@ -670,7 +663,8 @@ public final class TransformerEndToEndTest {
...
@@ -670,7 +663,8 @@ public final class TransformerEndToEndTest {
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformationException
transformationException
=
TransformationException
transformationException
=
TransformerTestRunner
.
runUntilError
(
transformer
);
assertThrows
(
TransformationException
.
class
,
()
->
TransformerTestRunner
.
runLooper
(
transformer
));
assertThat
(
transformationException
).
hasCauseThat
().
isInstanceOf
(
IllegalStateException
.
class
);
assertThat
(
transformationException
).
hasCauseThat
().
isInstanceOf
(
IllegalStateException
.
class
);
}
}
...
@@ -716,7 +710,7 @@ public final class TransformerEndToEndTest {
...
@@ -716,7 +710,7 @@ public final class TransformerEndToEndTest {
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
progressHandler
.
sendEmptyMessage
(
0
);
progressHandler
.
sendEmptyMessage
(
0
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
assertThat
(
foundInconsistentState
.
get
()).
isFalse
();
assertThat
(
foundInconsistentState
.
get
()).
isFalse
();
}
}
...
@@ -745,7 +739,7 @@ public final class TransformerEndToEndTest {
...
@@ -745,7 +739,7 @@ public final class TransformerEndToEndTest {
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
progressHandler
.
sendEmptyMessage
(
0
);
progressHandler
.
sendEmptyMessage
(
0
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
assertThat
(
progresses
).
isInOrder
();
assertThat
(
progresses
).
isInOrder
();
if
(!
progresses
.
isEmpty
())
{
if
(!
progresses
.
isEmpty
())
{
...
@@ -763,7 +757,7 @@ public final class TransformerEndToEndTest {
...
@@ -763,7 +757,7 @@ public final class TransformerEndToEndTest {
@Transformer
.
ProgressState
int
stateBeforeTransform
=
transformer
.
getProgress
(
progressHolder
);
@Transformer
.
ProgressState
int
stateBeforeTransform
=
transformer
.
getProgress
(
progressHolder
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
@Transformer
.
ProgressState
int
stateAfterTransform
=
transformer
.
getProgress
(
progressHolder
);
@Transformer
.
ProgressState
int
stateAfterTransform
=
transformer
.
getProgress
(
progressHolder
);
assertThat
(
stateBeforeTransform
).
isEqualTo
(
PROGRESS_STATE_NOT_STARTED
);
assertThat
(
stateBeforeTransform
).
isEqualTo
(
PROGRESS_STATE_NOT_STARTED
);
...
@@ -808,7 +802,7 @@ public final class TransformerEndToEndTest {
...
@@ -808,7 +802,7 @@ public final class TransformerEndToEndTest {
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
progressHandler
.
sendEmptyMessage
(
0
);
progressHandler
.
sendEmptyMessage
(
0
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
assertThat
(
foundInconsistentState
.
get
()).
isFalse
();
assertThat
(
foundInconsistentState
.
get
()).
isFalse
();
}
}
...
@@ -843,7 +837,7 @@ public final class TransformerEndToEndTest {
...
@@ -843,7 +837,7 @@ public final class TransformerEndToEndTest {
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_VIDEO_ONLY
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
ASSET_URI_PREFIX
+
FILE_VIDEO_ONLY
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
transformer
.
startTransformation
(
mediaItem
,
outputPath
);
TransformerTestRunner
.
run
UntilCompleted
(
transformer
);
TransformerTestRunner
.
run
Looper
(
transformer
);
transformer
.
cancel
();
transformer
.
cancel
();
}
}
...
...
library/transformer/src/test/java/com/google/android/exoplayer2/transformer/TransformerTestRunner.java
View file @
2716ff89
...
@@ -17,12 +17,12 @@
...
@@ -17,12 +17,12 @@
package
com
.
google
.
android
.
exoplayer2
.
transformer
;
package
com
.
google
.
android
.
exoplayer2
.
transformer
;
import
static
com
.
google
.
android
.
exoplayer2
.
robolectric
.
RobolectricUtil
.
runLooperUntil
;
import
static
com
.
google
.
android
.
exoplayer2
.
robolectric
.
RobolectricUtil
.
runLooperUntil
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
Assertions
.
checkNotNull
;
import
androidx.annotation.Nullable
;
import
com.google.android.exoplayer2.MediaItem
;
import
com.google.android.exoplayer2.MediaItem
;
import
com.google.android.exoplayer2.robolectric.RobolectricUtil
;
import
com.google.android.exoplayer2.robolectric.RobolectricUtil
;
import
java.util.Objects
;
import
java.util.concurrent.TimeoutException
;
import
java.util.concurrent.TimeoutException
;
import
java.util.concurrent.atomic.AtomicBoolean
;
import
java.util.concurrent.atomic.AtomicReference
;
import
java.util.concurrent.atomic.AtomicReference
;
import
org.checkerframework.checker.nullness.compatqual.NullableType
;
import
org.checkerframework.checker.nullness.compatqual.NullableType
;
...
@@ -32,55 +32,27 @@ public final class TransformerTestRunner {
...
@@ -32,55 +32,27 @@ public final class TransformerTestRunner {
private
TransformerTestRunner
()
{}
private
TransformerTestRunner
()
{}
/**
/**
* Runs tasks of the {@link Transformer#getApplicationLooper() transformer Looper} until the
* Runs tasks of the {@link
plain
Transformer#getApplicationLooper() transformer Looper} until the
*
current {@link Transformer transformation} complete
s.
*
{@linkplain Transformer transformation} end
s.
*
*
* @param transformer The {@link Transformer}.
* @param transformer The {@link Transformer}.
* @return The {@link TransformationResult}.
* @throws TransformationException If the transformation threw an exception.
* @throws TimeoutException If the {@link RobolectricUtil#DEFAULT_TIMEOUT_MS default timeout} is
* @throws TimeoutException If the {@link RobolectricUtil#DEFAULT_TIMEOUT_MS default timeout} is
* exceeded.
* exceeded.
* @throws IllegalStateException If the method is not called from the main thread, or if the
* @throws IllegalStateException If the method is not called from the main thread.
* transformation completes with error.
*/
*/
public
static
void
runUntilCompleted
(
Transformer
transformer
)
throws
TimeoutException
{
public
static
TransformationResult
runLooper
(
Transformer
transformer
)
@Nullable
Exception
exception
=
runUntilListenerCalled
(
transformer
);
throws
TransformationException
,
TimeoutException
{
if
(
exception
!=
null
)
{
AtomicReference
<
@NullableType
TransformationResult
>
transformationResultRef
=
throw
new
IllegalStateException
(
exception
);
}
}
/**
* Runs tasks of the {@link Transformer#getApplicationLooper() transformer Looper} until a {@link
* Transformer} error occurs.
*
* @param transformer The {@link Transformer}.
* @return The raised exception.
* @throws TimeoutException If the {@link RobolectricUtil#DEFAULT_TIMEOUT_MS default timeout} is
* exceeded.
* @throws IllegalStateException If the method is not called from the main thread, or if the
* transformation completes without error.
*/
public
static
TransformationException
runUntilError
(
Transformer
transformer
)
throws
TimeoutException
{
@Nullable
TransformationException
exception
=
runUntilListenerCalled
(
transformer
);
if
(
exception
==
null
)
{
throw
new
IllegalStateException
(
"The transformation completed without error."
);
}
return
exception
;
}
@Nullable
private
static
TransformationException
runUntilListenerCalled
(
Transformer
transformer
)
throws
TimeoutException
{
AtomicBoolean
transformationCompleted
=
new
AtomicBoolean
();
AtomicReference
<
@NullableType
TransformationException
>
transformationException
=
new
AtomicReference
<>();
new
AtomicReference
<>();
transformer
.
addListener
(
transformer
.
addListener
(
new
Transformer
.
Listener
()
{
new
Transformer
.
Listener
()
{
@Override
@Override
public
void
onTransformationCompleted
(
public
void
onTransformationCompleted
(
MediaItem
inputMediaItem
,
TransformationResult
transformationR
esult
)
{
MediaItem
inputMediaItem
,
TransformationResult
r
esult
)
{
transformation
Completed
.
set
(
true
);
transformation
ResultRef
.
set
(
result
);
}
}
@Override
@Override
...
@@ -88,13 +60,19 @@ public final class TransformerTestRunner {
...
@@ -88,13 +60,19 @@ public final class TransformerTestRunner {
MediaItem
inputMediaItem
,
MediaItem
inputMediaItem
,
TransformationResult
result
,
TransformationResult
result
,
TransformationException
exception
)
{
TransformationException
exception
)
{
transformationException
.
set
(
exception
);
if
(!
Objects
.
equals
(
result
.
transformationException
,
exception
))
{
result
=
result
.
buildUpon
().
setTransformationException
(
exception
).
build
();
}
transformationResultRef
.
set
(
result
);
}
}
});
});
runLooperUntil
(
runLooperUntil
(
transformer
.
getApplicationLooper
(),
()
->
transformationResultRef
.
get
()
!=
null
);
transformer
.
getApplicationLooper
(),
()
->
transformationCompleted
.
get
()
||
transformationException
.
get
()
!=
null
);
TransformationResult
result
=
checkNotNull
(
transformationResultRef
.
get
());
if
(
result
.
transformationException
!=
null
)
{
throw
result
.
transformationException
;
}
return
transformationException
.
get
()
;
return
result
;
}
}
}
}
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