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
        )
Example #5
0
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
    }
Example #6
0
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
    }