Esempio n. 1
0
 def test_cache_get_error_connect(self):
     store = Store(
         MemcacheAdapter(address=os.environ['STORE_PORT_11211_TCP_ADDR'],
                         port=8000,
                         ignore_exc=False))
     with self.assertRaises(Exception):
         store.cache_get('error_get_key', )
Esempio n. 2
0
 def setUp(self):
     self.context = {}
     self.headers = {}
     self.store = Store(MemcacheAdapter(
         address=os.environ['STORE_PORT_11211_TCP_ADDR'],
         port=os.environ['STORE_PORT_11211_TCP_PORT']
     ))
 def setUp(self):
     self.port = self.get_port()
     self.handler_url = f'http://localhost:{self.port}/method/'
     self.server = HTTPServer(('localhost', self.port), api.MainHTTPHandler)
     self.server_thread = Thread(target=self.server.serve_forever)
     self.server_thread.setDaemon(True)
     self.server_thread.start()
     self.store = Store(MemcacheAdapter(
         address=os.environ['STORE_PORT_11211_TCP_ADDR'],
         port=os.environ['STORE_PORT_11211_TCP_PORT']
     ))
Esempio n. 4
0
class MainHTTPHandler(BaseHTTPRequestHandler):
    router = {
        'method': method_handler
    }
    store = Store(MemcacheAdapter(
            address=os.environ['STORE_PORT_11211_TCP_ADDR'],
            port=os.environ['STORE_PORT_11211_TCP_PORT']
        )
    )

    def get_request_id(self, headers):
        return headers.get('HTTP_X_REQUEST_ID', uuid.uuid4().hex)

    def do_POST(self):
        response, code = {}, OK
        context = {'request_id': self.get_request_id(self.headers)}
        request = None
        try:
            data_string = self.rfile.read(int(self.headers['Content-Length']))
            request = json.loads(data_string)
        except:
            code = BAD_REQUEST

        if request:
            path = self.path.strip('/')
            logging.info('%s: %s %s' % (self.path, data_string, context['request_id']))
            if path in self.router:
                try:
                    response, code = self.router[path]({'body': request, 'headers': self.headers}, context, self.store)
                except Exception as e:
                    logging.exception('Unexpected error: %s' % e)
                    code = INTERNAL_ERROR
            else:
                code = NOT_FOUND

        self.send_response(code)
        self.send_header('Content-Type', 'application/json')
        self.end_headers()
        if code not in ERRORS:
            r = {'response': response, 'code': code}
        else:
            r = {'error': response or ERRORS.get(code, 'Unknown Error'), 'code': code}
        context.update(r)
        logging.info(context)
        self.wfile.write(json.dumps(r).encode('utf-8'))
        return
Esempio n. 5
0
 def test_get_empty_value(self, key):
     store = Store(
         MemcacheAdapter(address=os.environ['STORE_PORT_11211_TCP_ADDR'],
                         port=os.environ['STORE_PORT_11211_TCP_PORT']))
     self.assertEqual(store.get(key), None)
Esempio n. 6
0
 def test_get(self, value):
     store = Store(
         MemcacheAdapter(address=os.environ['STORE_PORT_11211_TCP_ADDR'],
                         port=os.environ['STORE_PORT_11211_TCP_PORT']))
     store.cache_set('test_get', value)
     self.assertNotEqual(store.get('test_get'), None)
Esempio n. 7
0
 def test_cache_get_error_connect_and_ignore_exc(self, key):
     store = Store(
         MemcacheAdapter(address=os.environ['STORE_PORT_11211_TCP_ADDR'],
                         port=8000))
     self.assertEqual(store.cache_get(key), None)