def test_generate_delta_happy_day(tmp_path, test_files): delta_file = tmp_path / 'delta.bin' generate_delta(test_files['orig_fw'], test_files['new_fw'], delta_file, 512, 60) print('Delta-file-size={delta} new-file-size={new}'.format( delta=len(delta_file.read_bytes()), new=len(test_files['new_fw'].read_bytes())))
def test_generate_delta_skip_size_check(tmp_path, test_files): generate_delta( test_files['orig_fw'], test_files['other_fw'], tmp_path / 'delta.bin', 512, 0 )
def test_generate_delta_no_compression(tmp_path, test_files): with pytest.raises(AssertionError): generate_delta( test_files['orig_fw'], test_files['other_fw'], tmp_path / 'delta.bin', 512, 60 )
def test_generate_delta_skip_threshold(tmp_path, test_files): with pytest.raises(AssertionError): generate_delta( test_files['orig_fw'], test_files['new_fw'], tmp_path / 'delta.bin', 512, 1 )
def data_generator(tmp_path_factory, size): tmp_path = tmp_path_factory.mktemp("data") key_file = tmp_path / 'dev.key.pem' certificate_file = tmp_path / 'dev.cert.der' dev_init.generate_credentials(key_file=key_file, certificate_file=certificate_file, do_overwrite=False, cred_valid_time=8) bsdiff_version = armbsdiff.get_version().encode('utf-8') fw_file = tmp_path / 'fw.bin' fw_data = bsdiff_version + os.urandom(size) fw_file.write_bytes(fw_data) new_fw_file = tmp_path / 'new_fw.bin' new_fw_data = fw_data + os.urandom(512) new_fw_file.write_bytes(new_fw_data) delta_file = tmp_path / 'delta.bin' delta_tool.generate_delta(orig_fw=fw_file, new_fw=new_fw_file, output_delta_file=delta_file, block_size=512, threshold=60) dev_cfg = tmp_path / 'dev.manifest_cfg.yaml' dev_init.generate_developer_config(key_file=key_file, certificate_file=certificate_file, config=dev_cfg, do_overwrite=True) api_config_path = tmp_path / 'service_cfg.json' dev_init.generate_service_config(api_key='sdsdadadadsdadasdadsadasdas', api_url=defaults.API_GW, api_config_path=api_config_path) return { 'fw_file': fw_file, 'new_fw_file': new_fw_file, 'delta_file': delta_file, 'key_file': key_file, 'certificate_file': certificate_file, 'tmp_path': tmp_path, 'dev_cfg': dev_cfg, 'api_config_path': api_config_path }
def data_generator(tmp_path_factory, size, encryption_key : bytes = None): tmp_path = tmp_path_factory.mktemp("data") key_file = tmp_path / 'dev.key.pem' certificate_file = tmp_path / 'dev.cert.der' dev_init.generate_credentials( key_file=key_file, cert_file=certificate_file, cred_valid_time=8 ) bsdiff_version = armbsdiff.get_version().encode('utf-8') fw_file = tmp_path / 'fw.bin' fw_data = bsdiff_version + os.urandom(size - len(bsdiff_version)) fw_file.write_bytes(fw_data) new_fw_file = tmp_path / 'new_fw.bin' new_fw_data = fw_data + os.urandom(512) new_fw_file.write_bytes(new_fw_data) delta_file = tmp_path / 'delta.bin' delta_tool.generate_delta( orig_fw=fw_file, new_fw=new_fw_file, output_delta_file=delta_file, block_size=512, threshold=60 ) if encryption_key: encrypted_fw_file = tmp_path / 'encrypted_fw.bin' encrypt_file(fw_file, encrypted_fw_file, encryption_key) else: encrypted_fw_file = None class_id = uuid.uuid4() vendor_id = uuid.uuid4() dev_cfg = tmp_path / 'dev.cfg.yaml' dev_init.generate_developer_config( key_file=key_file, cert_file=certificate_file, config=dev_cfg, class_id=class_id, vendor_id=vendor_id ) api_config_path = tmp_path / 'dev.cloud_cfg.yaml' dev_init.generate_service_config( access_key='sdsdadadadsdadasdadsadasdas', api_url=defaults.API_GW, api_config_path=api_config_path ) package_data = package_data_generator(tmp_path_factory,1024*512) return { 'fw_file': fw_file, 'new_fw_file': new_fw_file, 'encrypted_fw_file': encrypted_fw_file, 'delta_file': delta_file, 'key_file': key_file, 'certificate_file': certificate_file, 'tmp_path': tmp_path, 'dev_cfg': dev_cfg, 'api_config_path': api_config_path, 'package_data': package_data, 'encryption_key': encryption_key }