From 4cd2f6e831f8e8d8389051cdf1e82a5e34e68f51 Mon Sep 17 00:00:00 2001 From: Jeremy Johnson Date: Thu, 15 Aug 2013 15:44:47 +0800 Subject: [PATCH 1/5] updated requirements.txt as previous didn't work with clean virtualenv --- requirements.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 735cdde..8aa6911 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,6 @@ django==1.3.1 -pyvows==0.8.3 +pyvows coverage==3.5.1 +httplib2 +lxml +cssselect From 174bd15cb850389fdc00c94404967f7db8be6142 Mon Sep 17 00:00:00 2001 From: Jeremy Johnson Date: Thu, 15 Aug 2013 16:27:04 +0800 Subject: [PATCH 2/5] added one test to prove we default to one thread --- requirements.txt | 1 + vows/context_vows.py | 3 +++ vows/server_vows.py | 1 + 3 files changed, 5 insertions(+) diff --git a/requirements.txt b/requirements.txt index 8aa6911..57a7db9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,3 +4,4 @@ coverage==3.5.1 httplib2 lxml cssselect +cherrypy diff --git a/vows/context_vows.py b/vows/context_vows.py index e4ba9e5..e62fc75 100644 --- a/vows/context_vows.py +++ b/vows/context_vows.py @@ -57,6 +57,9 @@ class ContextTest(Vows.Context): def setup(self): self.start_server(port=8085) + + def should_default_to_one_thread(self,topic): + expect(self.server.thr.server._get_numthreads()).to_equal(1) class WithinDjangoHTTPContextTheGetUrlMethod(DjangoHTTPContext): diff --git a/vows/server_vows.py b/vows/server_vows.py index a6f2655..8b3ddbf 100644 --- a/vows/server_vows.py +++ b/vows/server_vows.py @@ -80,3 +80,4 @@ class HttpContextVows(DjangoHTTPContext): def should_be_404(self, (topic, content)): expect(topic.status).to_equal(404) + From c8f24334d06ddbfe5b5999a1f8e75233ccace3f6 Mon Sep 17 00:00:00 2001 From: Jeremy Johnson Date: Thu, 15 Aug 2013 16:33:59 +0800 Subject: [PATCH 3/5] wrote failing unit test for setting thred count on start_server --- vows/context_vows.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/vows/context_vows.py b/vows/context_vows.py index e62fc75..e74d52a 100644 --- a/vows/context_vows.py +++ b/vows/context_vows.py @@ -103,3 +103,15 @@ class ContextTest(Vows.Context): def the_get_url_method_should_return_a_well_formed_url(self, topic): expect(topic).to_equal('http://127.0.0.1:8085/') + class WithinAMultiThreadedServer(DjangoHTTPContext): + + def setup(self): + self.start_server(threads=5) + + def topic(self): + return self.server + + def should_default_to_one_thread(self,topic): + expect(topic.thr.server._get_numthreads()).to_equal(5) + + From deab81483eb636658731c84f6dbc9587ceea80d9 Mon Sep 17 00:00:00 2001 From: Jeremy Johnson Date: Thu, 15 Aug 2013 16:41:01 +0800 Subject: [PATCH 4/5] changed start_server to accept a number of threads... still defaults to 1 though --- django_pyvows/context.py | 4 ++-- django_pyvows/server.py | 10 +++++----- vows/context_vows.py | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/django_pyvows/context.py b/django_pyvows/context.py index 78af2af..cf6f96f 100644 --- a/django_pyvows/context.py +++ b/django_pyvows/context.py @@ -78,13 +78,13 @@ class DjangoContext(Vows.Context): class DjangoHTTPContext(DjangoContext): - def start_server(self, host=None, port=None, settings={}): + def start_server(self, host=None, port=None, settings={}, threads=1): if not port: port = DEFAULT_PORT if not host: host = DEFAULT_HOST self.address = (host, port) self.server = DjangoServer(host, port) - self.server.start(settings) + self.server.start(settings,threads) def __init__(self, parent): super(DjangoHTTPContext, self).__init__(parent) diff --git a/django_pyvows/server.py b/django_pyvows/server.py index 1c84cc2..2b4f0f6 100644 --- a/django_pyvows/server.py +++ b/django_pyvows/server.py @@ -16,12 +16,12 @@ from cherrypy import wsgiserver from django.core.handlers.wsgi import WSGIHandler -def run_app(host, port): +def run_app(host, port, threadCount): server = wsgiserver.CherryPyWSGIServer( - (host, port), + (host, port), WSGIHandler(), server_name='tornado-pyvows', - numthreads = 1 + numthreads = threadCount ) my_thread = current_thread() @@ -38,8 +38,8 @@ class DjangoServer(object): self.host = host self.port = port - def start(self, settings): - self.thr = Thread(target=run_app, args=(self.host, self.port)) + def start(self, settings, threadCount=1): + self.thr = Thread(target=run_app, args=(self.host, self.port, threadCount)) self.thr.daemon = True self.thr.settings = {} for k, v in settings.iteritems(): diff --git a/vows/context_vows.py b/vows/context_vows.py index e74d52a..9bd596d 100644 --- a/vows/context_vows.py +++ b/vows/context_vows.py @@ -111,7 +111,7 @@ class ContextTest(Vows.Context): def topic(self): return self.server - def should_default_to_one_thread(self,topic): + def should_allow_user_to_specify_number_of_threads(self,topic): expect(topic.thr.server._get_numthreads()).to_equal(5) From d6de1ea5c436f309a83d5c3e811d70fb42b242cb Mon Sep 17 00:00:00 2001 From: Jeremy Johnson Date: Sat, 17 Aug 2013 10:42:54 +0800 Subject: [PATCH 5/5] changed variables to use proper naming conventions --- django_pyvows/server.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/django_pyvows/server.py b/django_pyvows/server.py index 2b4f0f6..53996d9 100644 --- a/django_pyvows/server.py +++ b/django_pyvows/server.py @@ -16,12 +16,12 @@ from cherrypy import wsgiserver from django.core.handlers.wsgi import WSGIHandler -def run_app(host, port, threadCount): +def run_app(host, port, thread_count): server = wsgiserver.CherryPyWSGIServer( (host, port), WSGIHandler(), server_name='tornado-pyvows', - numthreads = threadCount + numthreads = thread_count ) my_thread = current_thread() @@ -35,11 +35,11 @@ def run_app(host, port, threadCount): class DjangoServer(object): def __init__(self, host, port): - self.host = host + self.host = host self.port = port - def start(self, settings, threadCount=1): - self.thr = Thread(target=run_app, args=(self.host, self.port, threadCount)) + def start(self, settings, thread_count=1): + self.thr = Thread(target= run_app, args=(self.host, self.port, thread_count)) self.thr.daemon = True self.thr.settings = {} for k, v in settings.iteritems():