def test_Finalize_assertReservedLength(self): entries = ( 'payload.bin', 'payload_properties.txt', 'care_map.txt', 'META-INF/com/android/metadata', ) zip_file = self._construct_zip_package(entries) property_files = StreamingPropertyFiles() with zipfile.ZipFile(zip_file, 'r') as zip_fp: # First get the raw metadata string (i.e. without padding space). raw_metadata = property_files._GetPropertyFilesString( zip_fp, reserve_space=False) raw_length = len(raw_metadata) # Now pass in the exact expected length. streaming_metadata = property_files.Finalize(zip_fp, raw_length) self.assertEqual(raw_length, len(streaming_metadata)) # Or pass in insufficient length. self.assertRaises(AssertionError, property_files.Finalize, zip_fp, raw_length - 1) # Or pass in a much larger size. streaming_metadata = property_files.Finalize( zip_fp, raw_length + 20) self.assertEqual(raw_length + 20, len(streaming_metadata)) self.assertEqual(' ' * 20, streaming_metadata[raw_length:])
def test_Compute(self): entries = ( 'payload.bin', 'payload_properties.txt', ) zip_file = self._construct_zip_package(entries) property_files = StreamingPropertyFiles() with zipfile.ZipFile(zip_file, 'r') as zip_fp: streaming_metadata = property_files.Compute(zip_fp) tokens = self._parse_streaming_metadata_string(streaming_metadata) self.assertEqual(3, len(tokens)) self._verify_entries(zip_file, tokens, entries)
def test_Verify(self): entries = ( 'payload.bin', 'payload_properties.txt', 'care_map.txt', 'META-INF/com/android/metadata', ) zip_file = self._construct_zip_package(entries) property_files = StreamingPropertyFiles() with zipfile.ZipFile(zip_file, 'r') as zip_fp: # First get the raw metadata string (i.e. without padding space). raw_metadata = property_files._GetPropertyFilesString( zip_fp, reserve_space=False) # Should pass the test if verification passes. property_files.Verify(zip_fp, raw_metadata) # Or raise on verification failure. self.assertRaises(AssertionError, property_files.Verify, zip_fp, raw_metadata + 'x')
def test_Finalize(self): entries = [ 'payload.bin', 'payload_properties.txt', 'META-INF/com/android/metadata', ] zip_file = self._construct_zip_package(entries) property_files = StreamingPropertyFiles() with zipfile.ZipFile(zip_file, 'r') as zip_fp: raw_metadata = property_files._GetPropertyFilesString( zip_fp, reserve_space=False) streaming_metadata = property_files.Finalize( zip_fp, len(raw_metadata)) tokens = self._parse_streaming_metadata_string(streaming_metadata) self.assertEqual(3, len(tokens)) # 'META-INF/com/android/metadata' will be key'd as 'metadata' in the # streaming metadata. entries[2] = 'metadata' self._verify_entries(zip_file, tokens, entries)
def test_Finalize(self): entries = [ 'payload.bin', 'payload_properties.txt', 'care_map.txt', 'compatibility.zip', 'META-INF/com/android/metadata', ] zip_file = self.construct_zip_package(entries) property_files = StreamingPropertyFiles() with zipfile.ZipFile(zip_file, 'r') as zip_fp: # pylint: disable=protected-access raw_metadata = property_files._GetPropertyFilesString( zip_fp, reserve_space=False) streaming_metadata = property_files.Finalize(zip_fp, len(raw_metadata)) tokens = self._parse_property_files_string(streaming_metadata) self.assertEqual(5, len(tokens)) # 'META-INF/com/android/metadata' will be key'd as 'metadata' in the # streaming metadata. entries[4] = 'metadata' self._verify_entries(zip_file, tokens, entries)
def test_init(self): property_files = StreamingPropertyFiles() self.assertEqual('ota-streaming-property-files', property_files.name) self.assertEqual( ( 'payload.bin', 'payload_properties.txt', ), property_files.required) self.assertEqual( ( 'care_map.txt', 'compatibility.zip', ), property_files.optional)