changeset 1334:08cd02374883 beta

Added mem_watch script. Test can also walk on file tree. Fixed some path issues
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 13 May 2011 19:08:37 +0200
parents 74aae890d33e
children 40c8d18102a9
files rhodecode/tests/mem_watch rhodecode/tests/test_crawler.py
diffstat 2 files changed, 43 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rhodecode/tests/mem_watch	Fri May 13 19:08:37 2011 +0200
@@ -0,0 +1,1 @@
+ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }'|grep paster
--- a/rhodecode/tests/test_crawler.py	Fri May 13 18:20:28 2011 +0200
+++ b/rhodecode/tests/test_crawler.py	Fri May 13 19:08:37 2011 +0200
@@ -5,7 +5,7 @@
 
     Test for crawling a project for memory usage
     
-    watch -n 1 "ps aux |grep paster"
+    watch -n1 ./rhodecode/tests/mem_watch
 
     :created_on: Apr 21, 2010
     :author: marcink
@@ -32,8 +32,12 @@
 import vcs
 import time
 
+from os.path import join as jn
+
+
 BASE_URI = 'http://127.0.0.1:5000/%s'
-PROJECT = 'rhodecode'
+PROJECT = 'CPython'
+PROJECT_PATH = jn('/', 'home', 'marcink', 'hg_repos')
 
 
 cj = cookielib.FileCookieJar('/tmp/rc_test_cookie.txt')
@@ -67,11 +71,11 @@
 
 
 def test_changeset_walk():
+    print jn(PROJECT_PATH, PROJECT)
+    total_time = 0
 
-    # test against self
-    repo = vcs.get_repo('../../../rhodecode')
+    repo = vcs.get_repo(jn(PROJECT_PATH, PROJECT))
 
-    total_time = 0
     for i in repo:
 
         raw_cs = '/'.join((PROJECT, 'changeset', i.raw_id))
@@ -88,9 +92,39 @@
     print 'average on req', total_time / float(len(repo))
 
 def test_files_walk():
-    pass
+    print jn(PROJECT_PATH, PROJECT)
+    total_time = 0
+
+    repo = vcs.get_repo(jn(PROJECT_PATH, PROJECT))
+
+    paths_ = set()
+    try:
+        tip = repo.get_changeset('tip')
+        for topnode, dirs, files in tip.walk('/'):
+            for f in files:
+                paths_.add(f.path)
+            for dir in dirs:
+                for f in files:
+                    paths_.add(f.path)
+
+    except vcs.exception.RepositoryError, e:
+        pass
+
+    for f in paths_:
+        file_path = '/'.join((PROJECT, 'files', 'tip', f))
+
+        full_uri = (BASE_URI % file_path)
+        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(len(repo))
 
 
-
-test_changelog_walk()
+#test_changelog_walk()
 #test_changeset_walk()
+test_files_walk()