diff options
author | Martin Willi <martin@revosec.ch> | 2011-05-05 12:40:53 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2011-05-16 15:24:15 +0200 |
commit | c8972da7571718d40cbf48b66f14d5003a3aea31 (patch) | |
tree | 93a451ce35dfca56d30523bc9ceec873f70e069e /src/libcharon/plugins/load_tester/load_tester_plugin.c | |
parent | 86067256762ee8660c04c9b3db45c2351dc5d5c8 (diff) | |
download | strongswan-c8972da7571718d40cbf48b66f14d5003a3aea31.tar.bz2 strongswan-c8972da7571718d40cbf48b66f14d5003a3aea31.tar.xz |
Added a load tester strongswan.conf option to throttle initiation
Diffstat (limited to 'src/libcharon/plugins/load_tester/load_tester_plugin.c')
-rw-r--r-- | src/libcharon/plugins/load_tester/load_tester_plugin.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/libcharon/plugins/load_tester/load_tester_plugin.c b/src/libcharon/plugins/load_tester/load_tester_plugin.c index dbdf96f82..f97b4c4a9 100644 --- a/src/libcharon/plugins/load_tester/load_tester_plugin.c +++ b/src/libcharon/plugins/load_tester/load_tester_plugin.c @@ -78,6 +78,11 @@ struct private_load_tester_plugin_t { int delay; /** + * Throttle initiation if half-open IKE_SA count reached + */ + int init_limit; + + /** * mutex to lock running field */ mutex_t *mutex; @@ -113,6 +118,23 @@ static job_requeue_t do_load_test(private_load_tester_plugin_t *this) child_cfg_t *child_cfg = NULL; enumerator_t *enumerator; + if (this->init_limit) + { + while ((charon->ike_sa_manager->get_count(charon->ike_sa_manager) - + this->listener->get_established(this->listener)) > + this->init_limit) + { + if (s) + { + sleep(s); + } + if (ms) + { + usleep(ms * 1000); + } + } + } + peer_cfg = charon->backends->get_peer_cfg_by_name(charon->backends, "load-test"); if (!peer_cfg) @@ -206,6 +228,8 @@ plugin_t *load_tester_plugin_create() "charon.plugins.load-tester.iterations", 1), .initiators = lib->settings->get_int(lib->settings, "charon.plugins.load-tester.initiators", 0), + .init_limit = lib->settings->get_int(lib->settings, + "charon.plugins.load-tester.init_limit", 0), .mutex = mutex_create(MUTEX_TYPE_DEFAULT), .condvar = condvar_create(CONDVAR_TYPE_DEFAULT), .config = load_tester_config_create(), |