Update CheckTestResults to sanitize media info
Change MediaInfo media paths in test output to only use the filename so that they can be compared between test runs. Change-Id: I26bb3f5ce79a83400b8a162c61cf5b54e41f9c70
This commit is contained in:
parent
d7ddf593c5
commit
fb2dfe129c
|
@ -10,7 +10,6 @@
|
||||||
import filecmp
|
import filecmp
|
||||||
import glob
|
import glob
|
||||||
import os
|
import os
|
||||||
import platform
|
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
|
@ -43,6 +42,23 @@ class StreamDescriptor(object):
|
||||||
return self.buffer
|
return self.buffer
|
||||||
|
|
||||||
|
|
||||||
|
def _UpdateMediaInfoPaths(media_info_filepath):
|
||||||
|
# Example:
|
||||||
|
# before: media_file_name: "/tmp/tmpD1h5UC/bear-640x360-audio.mp4"
|
||||||
|
# after: media_file_name: "bear-640x360-audio.mp4"
|
||||||
|
|
||||||
|
with open(media_info_filepath, 'rb') as f:
|
||||||
|
content = f.read()
|
||||||
|
|
||||||
|
regex = 'media_file_name: "(.*)"'
|
||||||
|
for path in re.findall(regex, content):
|
||||||
|
short_path = os.path.basename(path)
|
||||||
|
content = content.replace(path, short_path)
|
||||||
|
|
||||||
|
with open(media_info_filepath, 'wb') as f:
|
||||||
|
f.write(content)
|
||||||
|
|
||||||
|
|
||||||
def _UpdateMpdTimes(mpd_filepath):
|
def _UpdateMpdTimes(mpd_filepath):
|
||||||
# Take a single pattern, and replace the first match with the
|
# Take a single pattern, and replace the first match with the
|
||||||
# given new string.
|
# given new string.
|
||||||
|
@ -378,19 +394,6 @@ class PackagerAppTest(unittest.TestCase):
|
||||||
])
|
])
|
||||||
self.fail(failure_message)
|
self.fail(failure_message)
|
||||||
|
|
||||||
# '*.media_info' outputs contain media file names, which is changing for
|
|
||||||
# every test run. These needs to be replaced for comparison.
|
|
||||||
def _DiffMediaInfoGold(self, test_output, golden_file_name):
|
|
||||||
if platform.system() == 'Windows':
|
|
||||||
test_output = test_output.replace('\\', '\\\\')
|
|
||||||
media_info_output = test_output + '.media_info'
|
|
||||||
# Replaces file name, which is changing for every test run.
|
|
||||||
with open(media_info_output, 'rb') as f:
|
|
||||||
content = f.read()
|
|
||||||
with open(media_info_output, 'wb') as f:
|
|
||||||
f.write(content.replace(test_output, 'place_holder'))
|
|
||||||
self._DiffGold(media_info_output, golden_file_name + '.media_info')
|
|
||||||
|
|
||||||
# TODO(vaage): Replace all used of this with |_CheckTestResults|.
|
# TODO(vaage): Replace all used of this with |_CheckTestResults|.
|
||||||
def _DiffLiveGold(self,
|
def _DiffLiveGold(self,
|
||||||
test_output_prefix,
|
test_output_prefix,
|
||||||
|
@ -417,6 +420,12 @@ class PackagerAppTest(unittest.TestCase):
|
||||||
for manifest in mpds:
|
for manifest in mpds:
|
||||||
_UpdateMpdTimes(manifest)
|
_UpdateMpdTimes(manifest)
|
||||||
|
|
||||||
|
# '*.media_info' outputs contain media file names, which is changing for
|
||||||
|
# every test run. These needs to be replaced for comparison.
|
||||||
|
media_infos = glob.glob(os.path.join(self.tmp_dir, '*.media_info'))
|
||||||
|
for media_info in media_infos:
|
||||||
|
_UpdateMediaInfoPaths(media_info)
|
||||||
|
|
||||||
if test_env.options.test_update_golden_files:
|
if test_env.options.test_update_golden_files:
|
||||||
self._UpdateGold(test_dir)
|
self._UpdateGold(test_dir)
|
||||||
else:
|
else:
|
||||||
|
@ -1081,10 +1090,7 @@ class PackagerFunctionalTest(PackagerAppTest):
|
||||||
self.assertPackageSuccess(
|
self.assertPackageSuccess(
|
||||||
self._GetStreams(['audio', 'video']),
|
self._GetStreams(['audio', 'video']),
|
||||||
self._GetFlags(encryption=True, output_media_info=True))
|
self._GetFlags(encryption=True, output_media_info=True))
|
||||||
self._DiffGold(self.output[0], 'bear-640x360-a-cenc-golden.mp4')
|
self._CheckTestResults('encryption-and-output-media-info')
|
||||||
self._DiffGold(self.output[1], 'bear-640x360-v-cenc-golden.mp4')
|
|
||||||
self._DiffMediaInfoGold(self.output[0], 'bear-640x360-a-cenc-golden.mp4')
|
|
||||||
self._DiffMediaInfoGold(self.output[1], 'bear-640x360-v-cenc-golden.mp4')
|
|
||||||
|
|
||||||
def testPackageHlsSingleSegmentMp4Encrypted(self):
|
def testPackageHlsSingleSegmentMp4Encrypted(self):
|
||||||
self.assertPackageSuccess(
|
self.assertPackageSuccess(
|
||||||
|
|
BIN
packager/app/test/testdata/encryption-and-output-media-info/bear-640x360-audio.mp4
vendored
Normal file
BIN
packager/app/test/testdata/encryption-and-output-media-info/bear-640x360-audio.mp4
vendored
Normal file
Binary file not shown.
|
@ -14,7 +14,7 @@ index_range {
|
||||||
begin: 967
|
begin: 967
|
||||||
end: 1034
|
end: 1034
|
||||||
}
|
}
|
||||||
media_file_name: "place_holder"
|
media_file_name: "bear-640x360-audio.mp4"
|
||||||
media_duration_seconds: 2.7631745
|
media_duration_seconds: 2.7631745
|
||||||
reference_time_scale: 44100
|
reference_time_scale: 44100
|
||||||
container_type: CONTAINER_MP4
|
container_type: CONTAINER_MP4
|
BIN
packager/app/test/testdata/encryption-and-output-media-info/bear-640x360-video.mp4
vendored
Normal file
BIN
packager/app/test/testdata/encryption-and-output-media-info/bear-640x360-video.mp4
vendored
Normal file
Binary file not shown.
|
@ -17,7 +17,7 @@ index_range {
|
||||||
begin: 1091
|
begin: 1091
|
||||||
end: 1158
|
end: 1158
|
||||||
}
|
}
|
||||||
media_file_name: "place_holder"
|
media_file_name: "bear-640x360-video.mp4"
|
||||||
media_duration_seconds: 2.7360666
|
media_duration_seconds: 2.7360666
|
||||||
reference_time_scale: 30000
|
reference_time_scale: 30000
|
||||||
container_type: CONTAINER_MP4
|
container_type: CONTAINER_MP4
|
Loading…
Reference in New Issue