File: io_testing_channel_test.c

package info (click to toggle)
aws-crt-python 0.20.4%2Bdfsg-1~bpo12%2B1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm-backports
  • size: 72,656 kB
  • sloc: ansic: 381,805; python: 23,008; makefile: 6,251; sh: 4,536; cpp: 699; ruby: 208; java: 77; perl: 73; javascript: 46; xml: 11
file content (51 lines) | stat: -rw-r--r-- 2,409 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/**
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0.
 */
#include <aws/testing/io_testing_channel.h>

static int s_test_io_testing_channel(struct aws_allocator *allocator, void *ctx) {
    (void)ctx;

    struct aws_testing_channel_options test_channel_options = {.clock_fn = aws_high_res_clock_get_ticks};

    struct testing_channel testing_channel;
    ASSERT_SUCCESS(testing_channel_init(&testing_channel, allocator, &test_channel_options));

    /* Install downstream handler, so the 2 handlers can pass messages to each other */
    ASSERT_SUCCESS(testing_channel_install_downstream_handler(&testing_channel, 16 * 1024));

    /* Push read message and assert that downstream handler receives it */
    struct aws_io_message *read_msg =
        aws_channel_acquire_message_from_pool(testing_channel.channel, AWS_IO_MESSAGE_APPLICATION_DATA, 64);
    ASSERT_NOT_NULL(read_msg);
    ASSERT_SUCCESS(testing_channel_push_read_message(&testing_channel, read_msg));

    struct aws_linked_list *read_queue = testing_channel_get_read_message_queue(&testing_channel);
    ASSERT_NOT_NULL(read_queue);
    ASSERT_FALSE(aws_linked_list_empty(read_queue));
    ASSERT_PTR_EQUALS(&read_msg->queueing_handle, aws_linked_list_front(read_queue));

    /* Push write message and assert that upstream handler receives it */
    struct aws_io_message *write_msg =
        aws_channel_acquire_message_from_pool(testing_channel.channel, AWS_IO_MESSAGE_APPLICATION_DATA, 64);
    ASSERT_NOT_NULL(write_msg);
    ASSERT_SUCCESS(testing_channel_push_write_message(&testing_channel, write_msg));

    struct aws_linked_list *write_queue = testing_channel_get_written_message_queue(&testing_channel);
    ASSERT_NOT_NULL(write_queue);
    ASSERT_FALSE(aws_linked_list_empty(write_queue));
    ASSERT_PTR_EQUALS(&write_msg->queueing_handle, aws_linked_list_front(write_queue));

    testing_channel_drain_queued_tasks(&testing_channel);
    /* Test window updates */
    ASSERT_SUCCESS(testing_channel_increment_read_window(&testing_channel, 12345));
    testing_channel_drain_queued_tasks(&testing_channel);
    ASSERT_UINT_EQUALS(12345, testing_channel_last_window_update(&testing_channel));

    /* Clean up */
    ASSERT_SUCCESS(testing_channel_clean_up(&testing_channel));
    return AWS_OP_SUCCESS;
}

AWS_TEST_CASE(io_testing_channel, s_test_io_testing_channel)