aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/core/surface/completion_queue_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/core/surface/completion_queue_test.c')
-rw-r--r--test/core/surface/completion_queue_test.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/test/core/surface/completion_queue_test.c b/test/core/surface/completion_queue_test.c
index 0eeb5dac45..85a021da89 100644
--- a/test/core/surface/completion_queue_test.c
+++ b/test/core/surface/completion_queue_test.c
@@ -75,12 +75,14 @@ static void test_wait_empty(void) {
shutdown_and_destroy(cc);
}
-static void do_nothing_end_completion(void *arg, grpc_cq_completion *c) {}
+static void do_nothing_end_completion(void *arg, grpc_cq_completion *c,
+ grpc_call_list *call_list) {}
static void test_cq_end_op(void) {
grpc_event ev;
grpc_completion_queue *cc;
grpc_cq_completion completion;
+ grpc_call_list call_list = GRPC_CALL_LIST_INIT;
void *tag = create_test_tag();
LOG_TEST("test_cq_end_op");
@@ -88,7 +90,8 @@ static void test_cq_end_op(void) {
cc = grpc_completion_queue_create(NULL);
grpc_cq_begin_op(cc);
- grpc_cq_end_op(cc, tag, 1, do_nothing_end_completion, NULL, &completion);
+ grpc_cq_end_op(cc, tag, 1, do_nothing_end_completion, NULL, &completion,
+ &call_list);
ev = grpc_completion_queue_next(cc, gpr_inf_past(GPR_CLOCK_REALTIME), NULL);
GPR_ASSERT(ev.type == GRPC_OP_COMPLETE);
@@ -96,6 +99,7 @@ static void test_cq_end_op(void) {
GPR_ASSERT(ev.success);
shutdown_and_destroy(cc);
+ GPR_ASSERT(grpc_call_list_empty(call_list));
}
static void test_shutdown_then_next_polling(void) {
@@ -129,6 +133,7 @@ static void test_pluck(void) {
grpc_completion_queue *cc;
void *tags[128];
grpc_cq_completion completions[GPR_ARRAY_SIZE(tags)];
+ grpc_call_list call_list = GRPC_CALL_LIST_INIT;
unsigned i, j;
LOG_TEST("test_pluck");
@@ -145,7 +150,7 @@ static void test_pluck(void) {
for (i = 0; i < GPR_ARRAY_SIZE(tags); i++) {
grpc_cq_begin_op(cc);
grpc_cq_end_op(cc, tags[i], 1, do_nothing_end_completion, NULL,
- &completions[i]);
+ &completions[i], &call_list);
}
for (i = 0; i < GPR_ARRAY_SIZE(tags); i++) {
@@ -157,7 +162,7 @@ static void test_pluck(void) {
for (i = 0; i < GPR_ARRAY_SIZE(tags); i++) {
grpc_cq_begin_op(cc);
grpc_cq_end_op(cc, tags[i], 1, do_nothing_end_completion, NULL,
- &completions[i]);
+ &completions[i], &call_list);
}
for (i = 0; i < GPR_ARRAY_SIZE(tags); i++) {
@@ -167,6 +172,7 @@ static void test_pluck(void) {
}
shutdown_and_destroy(cc);
+ GPR_ASSERT(grpc_call_list_empty(call_list));
}
#define TEST_THREAD_EVENTS 10000
@@ -186,13 +192,15 @@ gpr_timespec ten_seconds_time(void) {
return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(10);
}
-static void free_completion(void *arg, grpc_cq_completion *completion) {
+static void free_completion(void *arg, grpc_cq_completion *completion,
+ grpc_call_list *call_list) {
gpr_free(completion);
}
static void producer_thread(void *arg) {
test_thread_options *opt = arg;
int i;
+ grpc_call_list call_list = GRPC_CALL_LIST_INIT;
gpr_log(GPR_INFO, "producer %d started", opt->id);
gpr_event_set(&opt->on_started, (void *)(gpr_intptr)1);
@@ -210,12 +218,14 @@ static void producer_thread(void *arg) {
gpr_log(GPR_INFO, "producer %d phase 2", opt->id);
for (i = 0; i < TEST_THREAD_EVENTS; i++) {
grpc_cq_end_op(opt->cc, (void *)(gpr_intptr)1, 1, free_completion, NULL,
- gpr_malloc(sizeof(grpc_cq_completion)));
+ gpr_malloc(sizeof(grpc_cq_completion)), &call_list);
opt->events_triggered++;
+ grpc_call_list_run(&call_list);
}
gpr_log(GPR_INFO, "producer %d phase 2 done", opt->id);
gpr_event_set(&opt->on_finished, (void *)(gpr_intptr)1);
+ GPR_ASSERT(grpc_call_list_empty(call_list));
}
static void consumer_thread(void *arg) {