# HG changeset patch # User Marcin Kuzminski # Date 2011-05-13 15:30:54 # Node ID 3fdfecc52c32e7e13ce0cdaece64e658e5314f47 # Parent 1188920ae12cfd098bc8ad9cae4a7cc3c0b9749b added test for crawling and memory usage diff --git a/rhodecode/tests/test_crawler.py b/rhodecode/tests/test_crawler.py new file mode 100644 --- /dev/null +++ b/rhodecode/tests/test_crawler.py @@ -0,0 +1,96 @@ +# -*- coding: utf-8 -*- +""" + rhodecode.tests.test_crawer + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Test for crawling a project for memory usage + + watch -n 1 "ps aux |grep paster" + + :created_on: Apr 21, 2010 + :author: marcink + :copyright: (C) 2009-2011 Marcin Kuzminski + :license: GPLv3, see COPYING for more details. +""" +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +import cookielib +import urllib +import urllib2 +import vcs +import time + +BASE_URI = 'http://127.0.0.1:5000/%s' +PROJECT = 'rhodecode' + + +cj = cookielib.FileCookieJar('/tmp/rc_test_cookie.txt') +o = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) +o.addheaders = [ + ('User-agent', 'rhodecode-crawler'), + ('Accept-Language', 'en - us, en;q = 0.5') + ] + +urllib2.install_opener(o) + + + +def test_changelog_walk(pages=100): + total_time = 0 + for i in range(1, pages): + + page = '/'.join((PROJECT, 'changelog',)) + + full_uri = (BASE_URI % page) + '?' + urllib.urlencode({'page':i}) + s = time.time() + f = o.open(full_uri) + size = len(f.read()) + e = time.time() - s + total_time += e + print 'visited %s size:%s req:%s ms' % (full_uri, size, e) + + + print 'total_time', total_time + print 'average on req', total_time / float(pages) + + +def test_changeset_walk(): + + # test against self + repo = vcs.get_repo('../../../rhodecode') + + total_time = 0 + for i in repo: + + raw_cs = '/'.join((PROJECT, 'changeset', i.raw_id)) + + full_uri = (BASE_URI % raw_cs) + s = time.time() + f = o.open(full_uri) + size = len(f.read()) + e = time.time() - s + total_time += e + print 'visited %s\%s size:%s req:%s ms' % (full_uri, i, size, e) + + print 'total_time', total_time + print 'average on req', total_time / float(len(repo)) + +def test_files_walk(): + pass + + + +test_changelog_walk() +#test_changeset_walk()