Skip to content
Snippets Groups Projects
Commit b7810a14 authored by Craig Tiller's avatar Craig Tiller
Browse files

Add a blocked async alloc test

parent f57c293f
No related branches found
No related tags found
No related merge requests found
......@@ -170,7 +170,7 @@ static bool bpalloc(grpc_exec_ctx *exec_ctx, grpc_buffer_pool *buffer_pool) {
bulist_pop(buffer_pool, GRPC_BULIST_AWAITING_ALLOCATION))) {
gpr_mu_lock(&buffer_user->mu);
if (buffer_user->free_pool < 0 &&
-buffer_user->free_pool < buffer_pool->free_pool) {
-buffer_user->free_pool <= buffer_pool->free_pool) {
buffer_pool->free_pool += buffer_user->free_pool;
buffer_user->free_pool = 0;
}
......
......@@ -129,6 +129,30 @@ static void test_simple_async_alloc(void) {
destroy_user(&usr);
}
static void test_async_alloc_blocked_by_size(void) {
gpr_log(GPR_INFO, "** test_async_alloc_blocked_by_size **");
grpc_buffer_pool *p = grpc_buffer_pool_create();
grpc_buffer_pool_resize(p, 1);
grpc_buffer_user usr;
grpc_buffer_user_init(&usr, p);
bool done = false;
{
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
grpc_buffer_user_alloc(&exec_ctx, &usr, 1024, set_bool(&done));
grpc_exec_ctx_finish(&exec_ctx);
GPR_ASSERT(!done);
}
grpc_buffer_pool_resize(p, 1024);
GPR_ASSERT(done);
{
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
grpc_buffer_user_free(&exec_ctx, &usr, 1024);
grpc_exec_ctx_finish(&exec_ctx);
}
grpc_buffer_pool_unref(p);
destroy_user(&usr);
}
int main(int argc, char **argv) {
grpc_test_init(argc, argv);
grpc_init();
......@@ -138,6 +162,7 @@ int main(int argc, char **argv) {
test_instant_alloc_then_free();
test_instant_alloc_free_pair();
test_simple_async_alloc();
test_async_alloc_blocked_by_size();
grpc_shutdown();
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment