mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-18 15:49:56 +00:00
Merge "Fix failing threadpool_auto_increment test."
This commit is contained in:
@@ -921,6 +921,41 @@ end:
|
||||
return res;
|
||||
}
|
||||
|
||||
static enum ast_test_result_state wait_until_thread_state_task_pushed(struct ast_test *test,
|
||||
struct test_listener_data *tld, int num_active, int num_idle, int num_tasks)
|
||||
{
|
||||
enum ast_test_result_state res = AST_TEST_PASS;
|
||||
struct timeval start;
|
||||
struct timespec end;
|
||||
|
||||
res = wait_until_thread_state(test, tld, num_active, num_idle);
|
||||
if (res == AST_TEST_FAIL) {
|
||||
return res;
|
||||
}
|
||||
|
||||
start = ast_tvnow();
|
||||
end.tv_sec = start.tv_sec + 5;
|
||||
end.tv_nsec = start.tv_usec * 1000;
|
||||
|
||||
ast_mutex_lock(&tld->lock);
|
||||
|
||||
while (tld->num_tasks != num_tasks) {
|
||||
if (ast_cond_timedwait(&tld->cond, &tld->lock, &end) == ETIMEDOUT) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (tld->num_tasks != num_tasks) {
|
||||
ast_test_status_update(test, "Number of tasks pushed %d does not match expected %d\n",
|
||||
tld->num_tasks, num_tasks);
|
||||
res = AST_TEST_FAIL;
|
||||
}
|
||||
|
||||
ast_mutex_unlock(&tld->lock);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
AST_TEST_DEFINE(threadpool_auto_increment)
|
||||
{
|
||||
struct ast_threadpool *pool = NULL;
|
||||
@@ -1021,11 +1056,10 @@ AST_TEST_DEFINE(threadpool_auto_increment)
|
||||
goto end;
|
||||
}
|
||||
|
||||
res = wait_until_thread_state(test, tld, 0, 3);
|
||||
res = wait_until_thread_state_task_pushed(test, tld, 0, 3, 4);
|
||||
if (res == AST_TEST_FAIL) {
|
||||
goto end;
|
||||
}
|
||||
res = listener_check(test, listener, 1, 0, 4, 0, 3, 1);
|
||||
|
||||
end:
|
||||
ast_threadpool_shutdown(pool);
|
||||
|
||||
Reference in New Issue
Block a user