aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/plugins/load_tester/load_tester_plugin.c
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2011-05-05 12:40:53 +0200
committerMartin Willi <martin@revosec.ch>2011-05-16 15:24:15 +0200
commitc8972da7571718d40cbf48b66f14d5003a3aea31 (patch)
tree93a451ce35dfca56d30523bc9ceec873f70e069e /src/libcharon/plugins/load_tester/load_tester_plugin.c
parent86067256762ee8660c04c9b3db45c2351dc5d5c8 (diff)
downloadstrongswan-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.c24
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(),