def nav_title(self): from balancer.mixins import PinningMixin pinned = PinningMixin.is_pinned() colours = dict() colours[True] = '#F66' colours[False] = '#6F6' colour = colours[pinned] message = 'pinned' if pinned else 'not pinned' title = _('SQL') + ' <span style="color:%s;">%s</span>' % (colour, message) return mark_safe(title)
def test_middleware(self): for middleware, vehicle in [(PinningSessionMiddleware(), 'session'), (PinningCookieMiddleware(), 'cookie')]: # The first request shouldn't pin the database middleware.process_request(self.mock_request) self.assertFalse(PinningMixin.is_pinned()) # A simulated write should, however PinningMixin.set_db_write() # The response should set the session variable and clear the locals response = middleware.process_response(self.mock_request, self.mock_response) self.assertFalse(PinningMixin.is_pinned()) self.assertFalse(PinningMixin.db_was_written()) if vehicle == 'session': self.assertTrue( self.mock_request.session.get(PINNING_KEY, False) ) else: self.assertEqual(response.cookie, PINNING_KEY) self.mock_request.COOKIES = [response.cookie] # The subsequent request should then pin the database middleware.process_request(self.mock_request) self.assertTrue(PinningMixin.is_pinned()) PinningMixin.unpin_thread() if vehicle == 'session': # After the pinning period has expired, the request should no # longer pin the thread exp = timedelta(seconds=PINNING_SECONDS - 5) self.mock_request.session[PINNING_KEY] = datetime.now() - exp middleware.process_request(self.mock_request) self.assertFalse(PinningMixin.is_pinned()) PinningMixin.unpin_thread()
def test_middleware(self): for middleware, vehicle in [(PinningSessionMiddleware(), 'session'), (PinningCookieMiddleware(), 'cookie')]: # The first request shouldn't pin the database middleware.process_request(self.mock_request) self.assertFalse(PinningMixin.is_pinned()) # A simulated write should, however PinningMixin.set_db_write() # The response should set the session variable and clear the locals response = middleware.process_response(self.mock_request, self.mock_response) self.assertFalse(PinningMixin.is_pinned()) self.assertFalse(PinningMixin.db_was_written()) if vehicle == 'session': self.assertTrue( self.mock_request.session.get(PINNING_KEY, False)) else: self.assertEqual(response.cookie, PINNING_KEY) self.mock_request.COOKIES = [response.cookie] # The subsequent request should then pin the database middleware.process_request(self.mock_request) self.assertTrue(PinningMixin.is_pinned()) PinningMixin.unpin_thread() if vehicle == 'session': # After the pinning period has expired, the request should no # longer pin the thread exp = timedelta(seconds=PINNING_SECONDS - 5) self.mock_request.session[PINNING_KEY] = datetime.now() - exp middleware.process_request(self.mock_request) self.assertFalse(PinningMixin.is_pinned()) PinningMixin.unpin_thread()