Update to Django 1.1.1. I want to use a new feature for my RESTful interface prototyping (direct inclusion of URL patterns in URLconfs).
The one obstacle this presented was that Django 1.1.1 changes the DB connection object to accept DB config information in its constructor, rather than reading it from django.conf.settings on-demand. This was a problem because we change stuff in django.conf.settings on the fly to do our fancy test DB stuff -- basically, we initialize a SQLite DB once, copy it off, and then copy it between test cases, rather than clearing and reconstructing the initial DB. I did measurements and it turns out all that jazz wasn't really saving us much time at all, so I just got rid of it all. Django's testing stuff has improved and v1.1 even has some new tricks for using transactions to accomplish the above with a dramatic speedup, so we ought to look into using that in the future. Signed-off-by: Steve Howard <[email protected]> --- autotest/frontend/afe/frontend_test_utils.py 2009-12-18 02:10:21.000000000 -0800 +++ autotest/frontend/afe/frontend_test_utils.py 2009-12-18 14:32:48.000000000 -0800 @@ -6,32 +6,6 @@ from autotest_lib.client.common_lib.test_utils import mock class FrontendTestMixin(object): - _test_db_initialized = False - - def _initialize_test_db(self): - if self._test_db_initialized: - return - - temp_fd, test_db_file = tempfile.mkstemp(suffix='.frontend_test') - FrontendTestMixin._test_db_file = test_db_file - os.close(temp_fd) - - def cleanup_test_db(): - os.remove(test_db_file) - atexit.register(cleanup_test_db) - - setup_test_environment.set_test_database(test_db_file) - setup_test_environment.set_up() - FrontendTestMixin._test_db_backup = ( - setup_test_environment.backup_test_database()) - FrontendTestMixin._test_db_initialized = True - - - def _open_test_db(self): - self._initialize_test_db() - setup_test_environment.restore_test_database(self._test_db_backup) - - def _fill_in_test_data(self): """Populate the test database with some hosts and labels.""" acl_group = models.AclGroup.objects.create(name='my_acl') @@ -91,7 +65,7 @@ def _frontend_common_setup(self, fill_data=True): self.god = mock.mock_god() - self._open_test_db() + setup_test_environment.set_up() self._setup_dummy_user() if fill_data: self._fill_in_test_data() --- autotest/frontend/setup_test_environment.py 2009-12-18 14:32:48.000000000 -0800 +++ autotest/frontend/setup_test_environment.py 2009-12-18 14:32:48.000000000 -0800 @@ -14,27 +14,6 @@ from django.db import connection from autotest_lib.frontend.afe import readonly_connection -def set_test_database(database): - settings.DATABASE_NAME = database - destroy_test_database() - - -def backup_test_database(): - temp_fd, backup_path = tempfile.mkstemp(suffix='.test_db_backup') - os.close(temp_fd) - shutil.copyfile(settings.DATABASE_NAME, backup_path) - return backup_path - - -def restore_test_database(backup_path): - connection.close() - shutil.copyfile(backup_path, settings.DATABASE_NAME) - - -def cleanup_database_backup(backup_path): - os.remove(backup_path) - - def run_syncdb(verbosity=0): management.call_command('syncdb', verbosity=verbosity, interactive=False) --- autotest/scheduler/monitor_db_functional_test.py 2009-12-18 14:32:48.000000000 -0800 +++ autotest/scheduler/monitor_db_functional_test.py 2009-12-18 14:32:48.000000000 -0800 @@ -316,6 +316,7 @@ def tearDown(self): + self._database.disconnect() self._frontend_common_teardown() @@ -332,7 +333,6 @@ self._database = ( database_connection.TranslatingDatabase.get_test_database( - file_path=self._test_db_file, translators=_DB_TRANSLATORS)) self._database.connect(db_type='django') self.god.stub_with(monitor_db, '_db', self._database) --- autotest/scheduler/monitor_db_unittest.py 2009-12-18 02:24:44.000000000 -0800 +++ autotest/scheduler/monitor_db_unittest.py 2009-12-18 14:32:48.000000000 -0800 @@ -14,6 +14,7 @@ from autotest_lib.frontend.afe import models from autotest_lib.scheduler import monitor_db, drone_manager, email_manager from autotest_lib.scheduler import scheduler_config, gc_stats +from autotest_lib.scheduler import monitor_db_functional_test _DEBUG = False @@ -91,14 +92,16 @@ monitor_db.DBObject._clear_instance_cache() self._database = ( - database_connection.DatabaseConnection.get_test_database( - self._test_db_file)) - self._database.connect() + database_connection.TranslatingDatabase.get_test_database( + translators=monitor_db_functional_test._DB_TRANSLATORS)) + self._database.connect(db_type='django') self._database.debug = _DEBUG - monitor_db._db = self._database - monitor_db._drone_manager._results_dir = '/test/path' - monitor_db._drone_manager._temporary_directory = '/test/path/tmp' + self.god.stub_with(monitor_db, '_db', self._database) + self.god.stub_with(monitor_db._drone_manager, '_results_dir', + '/test/path') + self.god.stub_with(monitor_db._drone_manager, '_temporary_directory', + '/test/path/tmp') def setUp(self): --- autotest/utils/build_externals.py 2009-12-18 14:32:48.000000000 -0800 +++ autotest/utils/build_externals.py 2009-12-18 14:32:48.000000000 -0800 @@ -548,6 +548,8 @@ if self.hex_sum != checksum.hexdigest(): logging.warning('Bad checksum for %s fetched from %s.', self.name, url) + logging.warning('Got %s', checksum.hexdigest()) + logging.warning('Expected %s', self.hex_sum) os.unlink(local_path) continue logging.info('Good checksum.') @@ -638,10 +640,10 @@ class DjangoPackage(ExternalPackage): - version = '1.0.4' + version = '1.1.1' local_filename = 'Django-%s.tar.gz' % version urls = ('http://www.djangoproject.com/download/%s/tarball/' % version,) - hex_sum = 'a8b9f33adb007146b8b57f22f0f38467f0d2693a' + hex_sum = '441c54f0e90730bf4a55432b64519169b1e6ef20' _build_and_install = ExternalPackage._build_and_install_from_package _build_and_install_current_dir = ( _______________________________________________ Autotest mailing list [email protected] http://test.kernel.org/cgi-bin/mailman/listinfo/autotest
