comparison pylons_app/lib/utils.py @ 491:fefffd6fd5f4 celery

Added some more tests, rewrite testing schema, to autogenerate fresh db, new index. cleaned up some codes that involves testing.
author Marcin Kuzminski <marcin@python-works.com>
date Tue, 21 Sep 2010 01:08:01 +0200
parents 460ad816820d
children fb0c3af6031b
comparison
equal deleted inserted replaced
490:74b9bed279ae 491:fefffd6fd5f4
14 # 14 #
15 # You should have received a copy of the GNU General Public License 15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software 16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18 # MA 02110-1301, USA. 18 # MA 02110-1301, USA.
19 import shutil
20 19
21 """ 20 """
22 Created on April 18, 2010 21 Created on April 18, 2010
23 Utilities for hg app 22 Utilities for hg app
24 @author: marcink 23 @author: marcink
30 from pylons_app.model.db import Repository, User, HgAppUi, HgAppSettings 29 from pylons_app.model.db import Repository, User, HgAppUi, HgAppSettings
31 from vcs.backends.base import BaseChangeset 30 from vcs.backends.base import BaseChangeset
32 from vcs.utils.lazy import LazyProperty 31 from vcs.utils.lazy import LazyProperty
33 import logging 32 import logging
34 import os 33 import os
35 from os.path import dirname as dn, join as jn 34
36 import tarfile
37 log = logging.getLogger(__name__) 35 log = logging.getLogger(__name__)
38 36
39 37
40 def get_repo_slug(request): 38 def get_repo_slug(request):
41 return request.environ['pylons.routes_dict'].get('repo_name') 39 return request.environ['pylons.routes_dict'].get('repo_name')
365 return dict.__eq__(self, other) 363 return dict.__eq__(self, other)
366 364
367 def __ne__(self, other): 365 def __ne__(self, other):
368 return not self == other 366 return not self == other
369 367
370 def make_test_env(): 368
371 """Makes a fresh database from base64+zlib dump and 369 #===============================================================================
370 # TEST FUNCTIONS
371 #===============================================================================
372 def create_test_index(repo_location, full_index):
373 """Makes default test index
374 @param repo_location:
375 @param full_index:
376 """
377 from pylons_app.lib.indexers import daemon
378 from pylons_app.lib.indexers.daemon import WhooshIndexingDaemon
379 from pylons_app.lib.indexers.pidlock import DaemonLock, LockHeld
380 from pylons_app.lib.indexers import IDX_LOCATION
381 import shutil
382
383 if os.path.exists(IDX_LOCATION):
384 shutil.rmtree(IDX_LOCATION)
385
386 try:
387 l = DaemonLock()
388 WhooshIndexingDaemon(repo_location=repo_location)\
389 .run(full_index=full_index)
390 l.release()
391 except LockHeld:
392 pass
393
394 def create_test_env(repos_test_path, config):
395 """Makes a fresh database and
372 install test repository into tmp dir 396 install test repository into tmp dir
373 """ 397 """
374 new_db_dump = """ 398 from pylons_app.lib.db_manage import DbManage
375 eJztXN1vE8sVn9nxR+wAIXDpFiiXjSAXfEOc2ElwQkVLPjYf5NNOAklUydrYG3tv1t5ldx0nuUJV\noL 399 import tarfile
376 cPrVr1X7jSfUJ96nMfK1Xty23VqlWlPlRIlahUXbXqFUL0pTNjx5614xAoKEDmJ3t2zpkzM2fO\neHe+ 400 import shutil
377 zno+PqU5qrRmWDnFkXqAB0AIbkkSAKANf8+BKprwFzI0G28ECXQ+PufFEYT+Tehz6L/oaSnK\nwcFxGP 401 from os.path import dirname as dn, join as jn, abspath
378 igFQfHjuMg4CehH7UA9Af0Y2ShWdSPLmOSg+N9x7U9eKf9PiC2nIWm4mTtri4nZ3Z9DE/5\nfOD0+RZY 402
379 VFdXFVstWHoXPOPFvDbKU3TdKCbNgp39GLZ5MPtKW5WtWKmstqFmtqVtzZRWt6NQRFjk\ngkhESJ6kbe 403 log = logging.getLogger('TestEnvCreator')
380 trim6rcFTAdcfuwqxhrNuprJLPqBnLKJhhSzWNpK1tq+aWkzXyN8wt3cjbScU0w7q2\nGqbyVSHYAXE5 404 # create logger
381 kSv15RTMtOKo2YxUikjf+SgKg4Dc/38C6Dn6Gn2FnqDH6K+Y5ODgeGfhRRD6/ST0\n+Ujo9ZLQ4yEhQi 405 log.setLevel(logging.DEBUG)
382 QUBBJCeFy4BLywHaCfCEXM+AJHOWpx39sMrux4IbzQ3gMc1XaSlpop6IoVvRxV\nLke6L4/cmx7vjedG 406 log.propagate = True
383 4qmVmXvTW5nl7PDaSmFEXR6ejC+YVrpnsNi1fn17fHldj06p6YH84tzaGKBF\n5ZWcSq66Uorn8Iih5W 407 # create console handler and set level to debug
384 /ZBolqejhl5O57mkEPqf6sOFCq3lRsu2hYaayHrTplJeJD/Uu3p7u3Er19\nS4sb26PmemQiE54vLKfn 408 ch = logging.StreamHandler()
385 I8Wx2/Nd+XurmbH4TOpupHdk25I/sYbmCgDQstK0oHLdpWGmc1U3MqR6\nbICF123RHb/QDNpIm1rFnk 409 ch.setLevel(logging.DEBUG)
386 HaJiWd0/Llpgzq41lzIJMrjMXi2/JmdyGxMDKnjs1FR9WMcduMb3TZ\nfZuZTXVs1uiS53NxY9yan4Vw 410
387 PDNICqEl3dKNlKJnDdshbYh2R7o7uwc6I1EpGr3RHbvREwn3D/T3\nd/fuBFAzaHdpUu7csi6Tw4ou94 411 # create formatter
388 zOLt3JxTNZo7g8muvV1Lg6sNj/SX4dD7srqenpfCJ6d3g5vKRM\njq/Ob3VHIXgJXaKx8PWBvoHrvfdg 412 formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
389 MzhPVDl/vgek1TWloO927tbUdsqeNzfurK5Frq+v5NbHZ1bG\nCnZxdnxxbGStmOudnwub6+rQYNxZku 413
390 Wh28Ph9Nos2C3EfblVvhJlyPjvRY+Z8f91dzUHB8fhYf/x\nv3T/PwL47v87+iX6I45ycHC8dWhFV6Br 414 # add formatter to ch
391 7ukVUQ/cYzroOYnaXZLoBGqD1TmW0IzOw/IUAJL9v6Dg\nA+jP6Ofo+yiBelFA+IvwC2EFMzmOCBJBD/ 415 ch.setFormatter(formatter)
392 huMZsJ41+MZjuqFVYKjpFUUo62oThqosyV8mpRKtg4\nUtScrJTNdCqmSeNGwZFIFqmcRTPydwIeMPwp 416
393 W2ZOyRcU/SVLLWViym1v8oDOLrbcvJGvFpbWbGVV\nV9NhvweEZCyWslRcWVnINGzNMawtiXJxaRX5kM 417 # add ch to logger
394 8D+rqq8lZFtjaX+i2vB1zoxKL0dhrPSHSmj6u3\nFCzV4cH6fbuavSTFFEJp3KCUatsdqEa4aGkOqyel 418 log.addHandler(ch)
395 y8IhwQM6BhhhrE2akSVkWfQKxKJ9jGhN8/NG\nWZCM/0H0q5r9P/Q79FvM5ODgeOtBZvLBIAkDARI2Nb 419
396 3E/h/O7wdDAAzBj+Cy8IXwpfAc/eZlat9R\noF+8eBE+bHXIgzSbIQcTyYJWiQjDCXlwQZYWBoemZKnC 420 #PART ONE create db
397 lq4GAwUtqaWliZkFeUxOSDOzC9LM4tTU\nNYmm2GqKPqEX5KWFMmtd3WLJDUUvqCyDjhKqNDQ7OyUPzh 421 log.debug('making test db')
398 DmXGJiejCxLE3Ky9JVWl2IsBdnJuKL\nMssZHpeHJymjXMjEjHS1+5oUCYWCoYjgE+WLEGj5tLpp39Px 422 dbname = config['sqlalchemy.db1.url'].split('/')[-1]
399 MzlJhjtKJytNSkYqUfRgHPlFUYQ/\nMKhZyPhm08DjMgdlUVPgSENj4DSyN1hp6u6Er8Kob3hplGEYrg 423 dbmanage = DbManage(log_sql=True, dbname=dbname, tests=True)
400 J2dxsrDLrZ6EpO6kYGlzCCdV2Y\nmJbrjVlS2G1Ohlc2aJ012TSqozuJLYpoiK0f8vjEm2Ij61MLJiP0 424 dbmanage.create_tables(override=True)
401 4g15XywapRffzpTPL166BB8k\naQeZqpXTbBv/4Gwm6nd1FpNAuqxKNuo4RsLdf1W+buQzrjSXkV1VuO 425 dbmanage.config_prompt(repos_test_path)
402 zjTgmG+vw+ceJSo5Yzmicj\nDNFE7n8BfQnQ33DAwcHxLqMFLxHEs47mkIGYrKM+xAsBMYZXBnquvLDC 426 dbmanage.create_default_user()
403 D4Wsmne0FF3/kPm/gL6m\n8//DVp6Dg+PNo3b+7wOPAHgEH8F/CFfRT9GvD1u/vbFzv8kvdnTAhxF2nW 427 dbmanage.admin_prompt()
404 GrjqPlM3YNGdxrzbGb\nSOZuLN1o9uaScc3RXCnuVYhr+lZTi2sCd+C08iz4ZsAnxjtesAapZIrUMJpv 428 dbmanage.create_permissions()
405 Bl8me7SGcfxBqtkv\ntrfDzwLU+pWdJU212fgJl93ZFGJ06qPWwNg0rWLkuuVPwxm2RfcS2YVOWrVTlm 429 dbmanage.populate_default_permissions()
406 a61o6uXimr4bJ4\npfp67r6So7MJeWJshhRcWf1ICXlUTsgzw/L87vpuj4XRrubsOjN2zCdOtjfqJNac
407 yQhLtcSOHzhj\nlKVOlsb/fwL0FAccHBzvLQJIhHRpIJAYXRPQ8R+i3wP84eDgeNfRCX3gAoRjGyk7Sc
408 78BUDPZdlJ\n0ZphSbvJZPyH6D8Afzg4ON5/HEMX4O7tD0v3/3OAPxwcHEcG1f0/hJ4A9Az9C184ODje
409 Q/gQ+WcP\nKPgEevX5IL0GyPiP0Fdl/7/D1pKDg+PNYe/3f+j4/wSP/88OWz8ODo43Ab+H3O0CKl19Qu
410 kaoPN/\nD/gcgM+FD4W7ws8OW886PNg+UTp4jlX8aJOOQR0a2XhrnVftbkrFubZM7+dkewA/zgYS9a6x
411 1erq\nXWRr0thDZLdfJ3uU7PI+rXcMfYWT6Bq33WtSrVNprGW/Y2VXUyIsdSp28sAZoyx1+kGulXqTfx
412 aq\ndrduZOxK5Ex9RxN2pZcx8So9XEozKw4D1Vdn6v0RFLdfeolM0r/U2d9buqRbvekZ/iv0IpulqrYr
413 \nl9sRo+rBEAyR+x8/ADg4OI4gyPyf3/8cHEcTJf+fpwB/ODg4jgSaoBfQ/QB+/s/BcSRR3f+H6Bng\n
414 e/8cHEcHpf1/CI+jHwEP3AToLtx8e9/9e//w8Hun6bHGDz+tvE+3uwfOxsW69+nYYw2WfjPHGtX9\n5A
415 MdfNQo9P+eS7youNdyVuJq4ot2zRsdnLgLCYYip/b7w5jKqUX51IREv4F/FJ7YBy96ja963sJS\n34yd
416 OXDGKEud/R8efZUt\n
417 """
418 newdb = open('test.db', 'wb')
419 newdb.write(new_db_dump.decode('base64').decode('zlib'))
420 newdb.close()
421
422 430
423 #PART TWO make test repo 431 #PART TWO make test repo
432 log.debug('making test vcs repo')
424 if os.path.isdir('/tmp/vcs_test'): 433 if os.path.isdir('/tmp/vcs_test'):
425 shutil.rmtree('/tmp/vcs_test') 434 shutil.rmtree('/tmp/vcs_test')
426 435
427 cur_dir = dn(dn(os.path.abspath(__file__))) 436 cur_dir = dn(dn(abspath(__file__)))
428 tar = tarfile.open(jn(cur_dir, 'tests', "vcs_test.tar.gz")) 437 tar = tarfile.open(jn(cur_dir, 'tests', "vcs_test.tar.gz"))
429 tar.extractall('/tmp') 438 tar.extractall('/tmp')
430 tar.close() 439 tar.close()
431
432
433