Mercurial > wikked
changeset 325:8b45c5ba5d47
Add benchmark tests.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 15 Oct 2014 08:11:14 -0700 |
parents | 5f809e691124 |
children | 52bdf765016a |
files | .hgignore benchmarks/Benchmark.conf.sample benchmarks/test_benchmark.py |
diffstat | 3 files changed, 92 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgignore Mon Oct 13 22:41:21 2014 -0700 +++ b/.hgignore Wed Oct 15 08:11:14 2014 -0700 @@ -1,5 +1,4 @@ syntax:glob -benchmarks venv node_modules wikked/static @@ -11,4 +10,8 @@ *.sublime-* MANIFEST Wikked.egg-info +benchmarks/Benchmark.conf +benchmarks/logs +benchmarks/logs-distributed +benchmarks/results
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmarks/Benchmark.conf.sample Wed Oct 15 08:11:14 2014 -0700 @@ -0,0 +1,52 @@ +# main section for the test case +[main] +title=Wikked Load Tests 1 +description=Test fetching pages randomly +url=http://localhost:5000 + +# a section for each test +[test_benchmark] +description=Access some random URLs +#username=foo +#password=bar +page_names=Main page;Sandbox;Another Sandbox +nb_times=20 + +# a section to configure the test mode +[ftest] +log_to = console file +log_path = logs/test-load1.log +result_path = results/test-load1.xml +sleep_time_min = 0 +sleep_time_max = 0 + +# a section to configure the bench mode +[bench] +cycles = 10:20:40 +duration = 10 +startup_delay = 0.01 +sleep_time = 0.01 +cycle_time = 1 +log_to = +log_path = logs/bench-load1.log +result_path = results/bench-load1.xml +sleep_time_min = 0 +sleep_time_max = 0.5 + +[distribute] +log_path = log-distributed +funkload_location=http://pypi.python.org/packages/source/f/funkload/funkload-1.16.1.tar.gz + +[workers] +hosts = foo1 foo2 + +[foo1] +host=foo's ip +username=foo +ssh_key=foo's key + +[foo2] +host=foo's ip +username=foo +ssh_key=foo's key +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/benchmarks/test_benchmark.py Wed Oct 15 08:11:14 2014 -0700 @@ -0,0 +1,36 @@ +import re +import urllib +import random +import unittest +from funkload.FunkLoadTestCase import FunkLoadTestCase + + +class Benchmark(FunkLoadTestCase): + """This test uses a configuration file Benchmark.conf.""" + def setUp(self): + self.server_url = self.conf_get('main', 'url') + + def test_simple(self): + server_url = self.server_url + if not re.match('https?://', server_url): + raise Exception("The `server_url` setting doesn't have a scheme.") + + username = self.conf_get('test_benchmark', 'username', None) + password = self.conf_get('test_benchmark', 'password', None) + if username and password: + self.post(self.server_url + "/api/user/login", + params=[['username', username], + ['password', password]], + description="Login as %s" % username) + + nb_times = self.conf_getInt('test_benchmark', 'nb_times') + names = self.conf_get('test_benchmark', 'page_names').split(';') + for i in range(nb_times): + r = random.randint(0, len(names) - 1) + url = server_url + '/api/read/' + urllib.quote(names[r]) + self.get(url, description='Getting %s' % names[r]) + + +if __name__ in ('main', '__main__'): + unittest.main() +