docbow/benchmark

58 lines
1.5 KiB
Python
Executable File

#!/usr/bin/env python
import os.path
import time
import json
import numpy
import random
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "docbow_project.settings")
from django.contrib.auth.models import User
from django.test.client import RequestFactory
from docbow_project.docbow.models import FileType
from docbow_project.docbow.views import inbox_view, outbox_view, send_file
def stat(seq):
return {
'min': min(seq),
'max': max(seq),
'mean': numpy.mean(seq),
'median': numpy.median(seq),
'std': numpy.std(seq),
}
rf = RequestFactory()
paths = [('/inbox/', inbox_view, {}), ('/outbox/', outbox_view, {})]
filetypes = list(FileType.objects.all())
random.shuffle(filetypes)
for file_type in filetypes[:10]:
paths.append(('/inbox/%s/' % file_type.id, send_file, {'file_type_id': file_type.id}))
data = []
for path, view, kwargs in paths:
get_request = rf.get(path)
get_request.session = {}
print 'Testing view', path, 'for all users:'
print
seq = []
for user in User.objects.all():
get_request.user = user
now = time.time()
response = view(get_request, **kwargs)
if hasattr(response, 'render'):
response.render()
str(response)
duration = time.time()-now
seq.append(duration*1000)
data.append(stat(seq))
data[-1]['path'] = path
with file('vix.js', 'w') as f:
f.write('''var vix =
''')
f.write(json.dumps(data, indent=4))
f.write(';')