diff options
author | Benny Prijono <bennylp@teluu.com> | 2008-02-13 15:17:28 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2008-02-13 15:17:28 +0000 |
commit | 379f21d67f143af70c85fd9ef2af67cc87d150e3 (patch) | |
tree | 4b20c85bf30f3d7aebbd94a3ef529e7ae9f42f59 /pjlib/src/pjlib-test/ioq_perf.c | |
parent | a2ca31f0f6e30a30bf6f6e58ab423b370fbc9bb3 (diff) |
Ticket #474: option in ioqueue to control concurrency (to allow/disallow simultaneous/multiple callback calls)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1789 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjlib/src/pjlib-test/ioq_perf.c')
-rw-r--r-- | pjlib/src/pjlib-test/ioq_perf.c | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/pjlib/src/pjlib-test/ioq_perf.c b/pjlib/src/pjlib-test/ioq_perf.c index 92d4540d..e7ddf1f4 100644 --- a/pjlib/src/pjlib-test/ioq_perf.c +++ b/pjlib/src/pjlib-test/ioq_perf.c @@ -221,7 +221,8 @@ static int worker_thread(void *p) * - measure the total bytes received by all consumers during a * period of time. */ -static int perform_test(int sock_type, const char *type_name, +static int perform_test(pj_bool_t allow_concur, + int sock_type, const char *type_name, unsigned thread_cnt, unsigned sockpair_cnt, pj_size_t buffer_size, pj_size_t *p_bandwidth) @@ -260,6 +261,12 @@ static int perform_test(int sock_type, const char *type_name, return -15; } + rc = pj_ioqueue_set_default_concurrency(ioqueue, allow_concur); + if (rc != PJ_SUCCESS) { + app_perror("...error: pj_ioqueue_set_default_concurrency()", rc); + return -16; + } + /* Initialize each producer-consumer pair. */ for (i=0; i<sockpair_cnt; ++i) { pj_ssize_t bytes; @@ -437,10 +444,7 @@ static int perform_test(int sock_type, const char *type_name, return 0; } -/* - * main test entry. - */ -int ioqueue_perf_test(void) +static int ioqueue_perf_test_imp(pj_bool_t allow_concur) { enum { BUF_SIZE = 512 }; int i, rc; @@ -500,6 +504,7 @@ int ioqueue_perf_test(void) int best_index = 0; PJ_LOG(3,(THIS_FILE, " Benchmarking %s ioqueue:", pj_ioqueue_name())); + PJ_LOG(3,(THIS_FILE, " Testing with concurency=%d", allow_concur)); PJ_LOG(3,(THIS_FILE, " =======================================")); PJ_LOG(3,(THIS_FILE, " Type Threads Skt.Pairs Bandwidth")); PJ_LOG(3,(THIS_FILE, " =======================================")); @@ -508,7 +513,8 @@ int ioqueue_perf_test(void) for (i=0; i<(int)(sizeof(test_param)/sizeof(test_param[0])); ++i) { pj_size_t bandwidth; - rc = perform_test(test_param[i].type, + rc = perform_test(allow_concur, + test_param[i].type, test_param[i].type_name, test_param[i].thread_cnt, test_param[i].sockpair_cnt, @@ -537,6 +543,24 @@ int ioqueue_perf_test(void) return 0; } +/* + * main test entry. + */ +int ioqueue_perf_test(void) +{ + int rc; + + rc = ioqueue_perf_test_imp(PJ_TRUE); + if (rc != 0) + return rc; + + rc = ioqueue_perf_test_imp(PJ_FALSE); + if (rc != 0) + return rc; + + return 0; +} + #else /* To prevent warning about "translation unit is empty" * when this test is disabled. |