def test_wait_sync():
    mock_worker1, mock_worker2 = Mock(), Mock()
    manager = SyncManager()
    manager.workers.append(mock_worker1)
    manager.workers.append(mock_worker2)
    manager.wait_sync()
    mock_worker1.join.assert_called_once()
    mock_worker2.join.assert_called_once()
def test_finished():
    worker = Mock()
    worker.is_alive.return_value = False
    manager = SyncManager()
    manager.workers.append(worker)
    assert manager.finished

    worker.is_alive.return_value = True
    assert not manager.finished
def test_suspend_and_resume():
    manager = SyncManager()
    manager.suspend()
    assert manager.suspended

    manager.resume()
    assert not manager.suspended

    manager._suspend = Mock()
    manager._wait_resuming()
    manager._suspend.wait.assert_called_once()
Exemple #4
0
def local_to_local(
    src: str,
    dest: str,
    block_size: Union[str, int] = ByteSizes.MiB,
    workers: int = 1,
    create_dest: bool = False,
    wait: bool = False,
    dryrun: bool = False,
    on_before: Optional[Callable[..., Any]] = None,
    on_after: Optional[Callable[[Status], Any]] = None,
    monitor: Optional[Callable[[Status], Any]] = None,
    on_error: Optional[Callable[[Exception, Status], Any]] = None,
    monitoring_interval: Union[int, float] = 1,
    sync_interval: Union[int, float] = 0,
) -> Tuple[Optional[SyncManager], Status]:
    status = Status(
        workers=workers,
        block_size=_get_block_size(block_size),
        src_size=_get_size(src),
    )
    if create_dest:
        _do_create(dest, status.src_size)
    status.dest_size = _get_size(dest)
    manager = SyncManager()
    sync_options = {
        "src":
        src,
        "dest":
        dest,
        "status":
        status,
        "manager":
        manager,
        "hooks":
        Hooks(on_before=on_before,
              on_after=on_after,
              monitor=monitor,
              on_error=on_error),
        "dryrun":
        dryrun,
        "monitoring_interval":
        monitoring_interval,
        "sync_interval":
        sync_interval,
    }
    return _sync(manager, status, workers, _local_to_local, sync_options, wait)
Exemple #5
0
        workers=workers,
        block_size=_get_block_size(block_size),
        src_size=_get_size(src),
    )

    ssh = _connect_ssh(allow_load_system_host_keys, compress, **ssh_config)
    if sftp := ssh.open_sftp():
        if read_server_command is None:
            sftp.put(DEFAULT_READ_SERVER_SCRIPT_PATH, READ_SERVER_SCRIPT_NAME)
            read_server_command = f"python3 {READ_SERVER_SCRIPT_NAME}"
        if write_server_command is None:
            sftp.put(DEFAULT_WRITE_SERVER_SCRIPT_PATH,
                     WRITE_SERVER_SCRIPT_NAME)
            write_server_command = f"python3 {WRITE_SERVER_SCRIPT_NAME}"

    manager = SyncManager()
    sync_options = {
        "ssh":
        ssh,
        "src":
        src,
        "dest":
        dest,
        "status":
        status,
        "manager":
        manager,
        "create_dest":
        create_dest,
        "dryrun":
        dryrun,
def test_cancel_sync():
    manager = SyncManager()
    assert not manager.canceled

    manager.cancel_sync()
    assert manager.canceled