Skip to content

Commit 2e21c95

Browse files
committed
Next perforemence test - adding 100 files, and checking a response time on a view afterwards.
1 parent 83a8298 commit 2e21c95

File tree

2 files changed

+46
-18
lines changed

2 files changed

+46
-18
lines changed

fixtures/breastcancer-small.txt

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2.000000 1:1000025.000000 2:5.000000 3:1.000000 4:1.000000 5:1.000000 6:2.000000 7:1.000000 8:3.000000 9:1.000000 10:1.000000
2+
2.000000 1:1002945.000000 2:5.000000 3:4.000000 4:4.000000 5:5.000000 6:7.000000 7:10.000000 8:3.000000 9:2.000000 10:1.000000

repository/tests.py

+44-18
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,15 @@
2121
from repository.models.method import Method
2222

2323
class RepositoryTest(TestCase):
24+
def remove_if_exists(self, path):
25+
try:
26+
os.remove(path)
27+
except OSError, e:
28+
# No file to be removed
29+
pass
30+
31+
32+
2433
url = {
2534
'index': '/repository/',
2635
'index_data': '/repository/data/',
@@ -36,13 +45,16 @@ class RepositoryTest(TestCase):
3645
'new_method': '/repository/method/new/',
3746
'new_data_review': '/repository/data/new/review/test/',
3847
'new_data_view': '/repository/data/view/test/',
39-
}
48+
49+
'new_data_review_generic': '/repository/data/new/review/%s/',
50+
'new_data_view_generic': '/repository/data/view/%s/',
51+
}
4052
minimal_data = {
4153
'license': '1',
4254
'name': 'test',
4355
'summary': 'summary',
4456
'tags': 'test, data',
45-
'file': open('fixtures/breastcancer.txt', 'r'),
57+
'file': open('fixtures/breastcancer-small.txt', 'r'),
4658
}
4759
data_file_name = os.path.join(MEDIA_ROOT, 'data', 'test.h5')
4860
data_file_name_src = os.path.join(MEDIA_ROOT, 'data', 'breastcancer.txt')
@@ -154,12 +166,7 @@ def test_new_data_user(self):
154166

155167
def test_new_data_user_approve(self):
156168
"""Post a new data set and approve"""
157-
158-
try:
159-
os.remove(self.data_file_name)
160-
except OSError, e:
161-
# No file to be removed
162-
pass
169+
self.remove_if_exists(self.data_file_name)
163170

164171
self.do_login()
165172
r = self.do_post('new_data', self.minimal_data, follow=True)
@@ -229,28 +236,47 @@ def test_tags_with_comma(self):
229236

230237

231238
class PerformenceTest(RepositoryTest):
232-
def add_data(self):
233-
try:
234-
os.remove(self.data_file_name)
235-
except OSError, e:
236-
# No file to be removed
237-
pass
238-
239+
def add_data(self, suffix=''):
239240
self.do_login()
240-
r = self.do_post('new_data', self.minimal_data, follow=True)
241+
data = self.minimal_data.copy()
242+
243+
data['name'] = data['name'] + suffix
244+
self.remove_if_exists(os.path.join(MEDIA_ROOT, 'data', data['name'] + ".h5"))
245+
r = self.client.post(self.url['new_data'],
246+
data,
247+
follow=True)
241248

242249
self.minimal_data['file'].seek(0)
243250
self.assertTemplateUsed(r, 'data/data_new_review.html')
244-
r = self.do_post('new_data_review', self.review_data_approve, follow=True)
251+
r = self.client.post(self.url['new_data_review_generic'] % data['name'],
252+
self.review_data_approve,
253+
follow=True)
245254
self.assertTemplateUsed(r, 'data/item_view.html')
246255

247256
def test_view_data_queries(self):
248257
from django.conf import settings
249258
from django.db import connection
250259

260+
self.remove_if_exists(self.data_file_name)
251261
settings.DEBUG = True
252262
self.add_data()
253263
connection.queries = []
254264
r = self.do_post('new_data_view', {}, follow=True)
255265
self.assertLess(len(connection.queries), 5, "More than 5 queries executed during simple data view")
256-
settings.DEBUG = False
266+
settings.DEBUG = False
267+
268+
def test_view_many_datasets(self):
269+
from django.conf import settings
270+
from django.db import connection
271+
272+
for i in xrange(1, 100):
273+
self.add_data(i.__str__())
274+
275+
import time
276+
start = time.time()
277+
settings.DEBUG = True
278+
connection.queries = []
279+
r = self.do_post('new_data_view', {}, follow=True)
280+
self.assertLess(len(connection.queries), 5, "More than 5 queries executed during simple data view")
281+
settings.DEBUG = False
282+
self.assertLess(time.time() - start, 1000, "Slow response ( > 1 sek)")

0 commit comments

Comments
 (0)