mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #15255 -- Ensured createcachetable honors database routers.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17114 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
39
tests/regressiontests/cache/tests.py
vendored
39
tests/regressiontests/cache/tests.py
vendored
@@ -16,6 +16,7 @@ from django.core import management
|
||||
from django.core.cache import get_cache, DEFAULT_CACHE_ALIAS
|
||||
from django.core.cache.backends.base import (CacheKeyWarning,
|
||||
InvalidCacheBackendError)
|
||||
from django.db import router
|
||||
from django.http import HttpResponse, HttpRequest, QueryDict
|
||||
from django.middleware.cache import (FetchFromCacheMiddleware,
|
||||
UpdateCacheMiddleware, CacheMiddleware)
|
||||
@@ -775,6 +776,44 @@ class DBCacheTests(unittest.TestCase, BaseCacheTests):
|
||||
self.perform_cull_test(50, 18)
|
||||
|
||||
|
||||
class DBCacheRouter(object):
|
||||
"""A router that puts the cache table on the 'other' database."""
|
||||
|
||||
def db_for_read(self, model, **hints):
|
||||
if model._meta.app_label == 'django_cache':
|
||||
return 'other'
|
||||
|
||||
def db_for_write(self, model, **hints):
|
||||
if model._meta.app_label == 'django_cache':
|
||||
return 'other'
|
||||
|
||||
def allow_syncdb(self, db, model):
|
||||
if model._meta.app_label == 'django_cache':
|
||||
return db == 'other'
|
||||
|
||||
|
||||
class CreateCacheTableForDBCacheTests(TestCase):
|
||||
multi_db = True
|
||||
|
||||
def test_createcachetable_observes_database_router(self):
|
||||
old_routers = router.routers
|
||||
try:
|
||||
router.routers = [DBCacheRouter()]
|
||||
# cache table should not be created on 'default'
|
||||
with self.assertNumQueries(0, using='default'):
|
||||
management.call_command('createcachetable', 'cache_table',
|
||||
database='default',
|
||||
verbosity=0, interactive=False)
|
||||
# cache table should be created on 'other'
|
||||
# one query is used to create the table and another one the index
|
||||
with self.assertNumQueries(2, using='other'):
|
||||
management.call_command('createcachetable', 'cache_table',
|
||||
database='other',
|
||||
verbosity=0, interactive=False)
|
||||
finally:
|
||||
router.routers = old_routers
|
||||
|
||||
|
||||
class LocMemCacheTests(unittest.TestCase, BaseCacheTests):
|
||||
backend_name = 'django.core.cache.backends.locmem.LocMemCache'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user