def testproxy(self, Http): req = mock.Mock() req.environ = dict( HTTP_CACHE_CONTROL='cache-headers', HTTP_X_FOO='foobar', PATH_INFO='/foo/bar', QUERY_STRING='foo=bar&bar=foo', HTTP_HOST='example.com', ) req.META = req.environ mockhttp = mock.Mock() mockhttp.request.return_value = ({ 'status': '200', 'Cache-Control': 'no-cache', 'Keep-Alive': '10', }, 'bar') Http.return_value = mockhttp resp = proxy(req) req_args, req_kwargs = mockhttp.request.call_args self.assertTrue('foo/bar?foo=bar&bar=foo' in req_args[0]) self.assertEqual(req_args[1], 'GET') headers = { 'Host': 'example.com', 'X-Foo': 'foobar', 'Cache-Control': 'cache-headers' } self.assertEqual(req_kwargs['headers'], headers) self.assertEqual(resp['Cache-Control'], 'no-cache') self.assertEqual(resp.content, 'bar'.encode('utf8')) self.assertFalse(hasattr(resp, 'Keep-Alive'))
def get(self, request): response = None #should this bypass this replicates part of the irule if not self.should_bypass_cache(request): response, expired = self.get_cache(request) # send off the celery task if it's expired if expired: logger.info("sending task for %s" %request.build_absolute_uri()) self.send_task(request, response) elif response: logger.info("not sending task for %s" %request.build_absolute_uri()) else: logger.info("cache miss for %s" %request.build_absolute_uri()) # if response is still none we have to proxy if response is None: logger.info('request %s proxied' %request.build_absolute_uri()) response = proxy(request) #TODO: delete the following two lines #self.set_cache(request, response) response['X-Bettercache-Proxy'] = 'true' else: response['X-Bettercache-Proxy'] = 'false' logger.info('request %s from cache' %request.build_absolute_uri()) return response
def get(self, request): response = None #should this bypass this replicates part of the irule if not self.should_bypass_cache(request): response, expired = self.get_cache(request) # send off the celery task if it's expired if expired: logger.info("EXPIRED sending task for %s" % request.build_absolute_uri()) self.send_task(request, response) elif response: logger.debug("not sending task for %s" % request.build_absolute_uri()) else: logger.info("MISS for: %s" % request.build_absolute_uri()) # if response is still none we have to proxy if response is None: logger.debug('PROXY from: %s' % request.build_absolute_uri()) response = proxy(request) response['X-Bettercache-Proxy'] = 'true' else: response['X-Bettercache-Proxy'] = 'false' logger.info('HIT for: %s' % request.build_absolute_uri()) return response
def testproxy(self, Http): req = mock.Mock() req.environ = dict( HTTP_CACHE_CONTROL='cache-headers', HTTP_X_FOO='foobar', PATH_INFO='/foo/bar', QUERY_STRING='foo=bar&bar=foo', HTTP_HOST='example.com', ) req.META = req.environ mockhttp = mock.Mock() mockhttp.request.return_value = ({'status':'200','Cache-Control':'no-cache', 'Keep-Alive': '10', },'bar') Http.return_value = mockhttp resp = proxy(req) req_args, req_kwargs = mockhttp.request.call_args self.assertTrue('foo/bar?foo=bar&bar=foo' in req_args[0]) self.assertEqual(req_args[1], 'GET') headers = {'Host': 'example.com', 'X-Foo': 'foobar', 'Cache-Control': 'cache-headers'} self.assertEqual(req_kwargs['headers'], headers) self.assertEqual(resp['Cache-Control'], 'no-cache') self.assertEqual(resp.content, 'bar'.encode('utf8')) self.assertFalse(hasattr(resp, 'Keep-Alive'))