Skip to content

Commit 55a810d

Browse files
committed
Make fire_requests.py multithreaded.
This is much more evil
1 parent 20e9694 commit 55a810d

File tree

2 files changed

+40
-3
lines changed

2 files changed

+40
-3
lines changed

contrib/load-tester/fire_requests.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@
1010
import sys
1111
import random
1212

13+
import argparse
14+
import functools
15+
16+
17+
from multiprocessing import Pool
18+
1319
from httplib import HTTPConnection
1420

1521
PORT = "2060"
@@ -18,6 +24,9 @@
1824
def main(targetIF, prefix, maxI):
1925
target = get_ip_address(targetIF)
2026
for i in xrange(int(maxI)):
27+
main_single(target, prefix, i)
28+
29+
def main_single(target, prefix, i):
2130
source = get_ip_address(prefix + str(i))
2231
# source_address requires python 2.7
2332
# urllib2 does not nicely expose source_address, so use
@@ -64,5 +73,22 @@ def get_ip_address(ifname):
6473
)[20:24])
6574

6675
if __name__ == "__main__":
76+
77+
parser = argparse.ArgumentParser(description='Hammer a wifidog instance with requests')
78+
parser.add_argument('--target-interface', required=True,
79+
help='Interface where Wifidog is listening')
80+
parser.add_argument('--source-interface-prefix', required=True,
81+
help='Prefix of the virtual interfaces from which Wifidog is exercised.')
82+
parser.add_argument('--source-interface-count', required=True,
83+
help='Number of virtual interfaces, where interface is prefix+index')
84+
parser.add_argument('--process-count', required=True,
85+
help='How many processes to run')
86+
87+
args = parser.parse_args()
88+
89+
target = get_ip_address(args.target_interface)
90+
p = Pool(int(args.process_count))
91+
partial = functools.partial(main_single, target, args.source_interface_prefix)
6792
while True:
68-
main(sys.argv[1], sys.argv[2], sys.argv[3])
93+
p.map(partial, list(xrange(int(args.source_interface_count))))
94+

contrib/load-tester/run.sh

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
# echo "core.%e.%p" > /proc/sys/kernel/core_pattern
55
# http://stackoverflow.com/a/18368068
66

7+
echo "core.%e.%p" > /proc/sys/kernel/core_pattern
78
ulimit -c unlimited
8-
ulimit -a
99

1010
COUNT=40
1111
echo "Make sure to configure GatewayInterface in wifidog_mock.conf"
@@ -27,7 +27,18 @@ IF=`grep GatewayInterface wifidog-mock.conf | cut -f 2 -d ' '`
2727
echo "Waiting for wifidog to come up"
2828

2929
sleep 10
30-
./fire_requests.py $IF mac $COUNT
30+
31+
usage: fire_requests.py [-h] --target-interface TARGET_INTERFACE
32+
--source-interface-prefix SOURCE_INTERFACE_PREFIX
33+
--source-interface-count SOURCE_INTERFACE_COUNT
34+
--process-count PROCESS_COUNT
35+
36+
37+
./fire_requests.py \
38+
--target-interface $IF \
39+
--source-interface-prefix mac \
40+
--source-interface-count $COUNT \
41+
--process-count 3
3142

3243
#./generate_interfaces.sh stop
3344

0 commit comments

Comments
 (0)