Re: [spice-gtk v4 24/24] tests: file-transfer agent cancel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Acked-by: Jonathon Jongsma <jjongsma@xxxxxxxxxx>


On Thu, 2016-06-23 at 19:37 +0200, Victor Toso wrote:
> Agent only can only send error or cancel from a transfer operation
> after it was initialized. From SpiceFileTransferTask point of view,
> error and cancellation is an GError with different code so testing
> only cancel seems enough.
> ---
>  tests/file-transfer.c | 66
> +++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 66 insertions(+)
> 
> diff --git a/tests/file-transfer.c b/tests/file-transfer.c
> index 018d6ad..592100c 100644
> --- a/tests/file-transfer.c
> +++ b/tests/file-transfer.c
> @@ -228,6 +228,64 @@ test_cancel_on_read_async(Fixture *f, gconstpointer
> user_data)
>      g_main_loop_run (f->loop);
>  }
>  
> +/****************************************************************************
> ***
> + * TEST AGENT CANCEL ON READ
> +
> ******************************************************************************
> /
> +
> +static void
> +transfer_agent_cancelled_read_async_cb(GObject *source_object,
> +                                       GAsyncResult *res,
> +                                       gpointer user_data)
> +{
> +    SpiceFileTransferTask *xfer_task;
> +    gssize count;
> +    char *buffer;
> +    GError *error = NULL;
> +
> +    xfer_task = SPICE_FILE_TRANSFER_TASK(source_object);
> +    count = spice_file_transfer_task_read_finish(xfer_task, res, &buffer,
> &error);
> +    g_assert_error(error, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED);
> +    g_assert_cmpint(count, ==, -1);
> +
> +    transfer_xfer_task_on_finished(NULL, NULL, user_data);
> +}
> +
> +static void
> +transfer_on_init_async_cb_agent_cancel(GObject *obj, GAsyncResult *res,
> gpointer data)
> +{
> +    GFileInfo *info;
> +    SpiceFileTransferTask *xfer_task;
> +    GError *error = NULL;
> +    GCancellable *cancellable;
> +
> +    xfer_task = SPICE_FILE_TRANSFER_TASK(obj);
> +    info = spice_file_transfer_task_init_task_finish(xfer_task, res, &error);
> +    g_assert_no_error(error);
> +    g_assert_nonnull(info);
> +
> +    spice_file_transfer_task_read_async(xfer_task,
> transfer_agent_cancelled_read_async_cb, data);
> +
> +    error = g_error_new(SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
> +                        "transfer is cancelled by spice agent");
> +    spice_file_transfer_task_completed(xfer_task, error);
> +}
> +
> +static void
> +test_agent_cancel_on_read(Fixture *f, gconstpointer user_data)
> +{
> +    GHashTableIter iter;
> +    gpointer key, value;
> +
> +    f->xfer_task_ht = spice_file_transfer_task_create_tasks(f->files, NULL,
> G_FILE_COPY_NONE, NULL);
> +    g_hash_table_iter_init(&iter, f->xfer_task_ht);
> +    while (g_hash_table_iter_next(&iter, &key, &value)) {
> +        SpiceFileTransferTask *xfer_task = SPICE_FILE_TRANSFER_TASK(value);
> +        g_signal_connect(xfer_task, "finished",
> G_CALLBACK(transfer_xfer_task_on_finished), f);
> +        spice_file_transfer_task_init_task_async(xfer_task,
> transfer_on_init_async_cb_agent_cancel, f);
> +    }
> +    g_main_loop_run (f->loop);
> +}
> +
>  /* Tests summary:
>   *
>   * This tests are specific to SpiceFileTransferTask and how it handles the
> @@ -274,6 +332,10 @@ int main(int argc, char* argv[])
>                 Fixture, GUINT_TO_POINTER(SINGLE_FILE),
>                 f_setup, test_cancel_on_read_async, f_teardown);
>  
> +    g_test_add("/spice-file-transfer-task/single/agent/cancel",
> +               Fixture, GUINT_TO_POINTER(SINGLE_FILE),
> +               f_setup, test_agent_cancel_on_read, f_teardown);
> +
>      g_test_add("/spice-file-transfer-task/multiple/simple-transfer",
>                 Fixture, GUINT_TO_POINTER(MULTIPLE_FILES),
>                 f_setup, test_simple_transfer, f_teardown);
> @@ -286,5 +348,9 @@ int main(int argc, char* argv[])
>                 Fixture, GUINT_TO_POINTER(MULTIPLE_FILES),
>                 f_setup, test_cancel_on_read_async, f_teardown);
>  
> +    g_test_add("/spice-file-transfer-task/multiple/agent/cancel",
> +               Fixture, GUINT_TO_POINTER(MULTIPLE_FILES),
> +               f_setup, test_agent_cancel_on_read, f_teardown);
> +
>      return g_test_run();
>  }
_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]