world.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import logging
  2. import asyncio
  3. from aiohttp.web import Response
  4. from api_hour.plugins.aiohttp import JSON
  5. import aiohttp_jinja2
  6. from ..services import queries_number
  7. from ..services.world import get_random_record, get_random_records, update_random_records, get_fortunes
  8. from ..services import redis
  9. LOG = logging.getLogger(__name__)
  10. @asyncio.coroutine
  11. def json(request):
  12. """Test type 1: JSON serialization"""
  13. return JSON({'message': 'Hello, World!'})
  14. @asyncio.coroutine
  15. def db(request):
  16. """Test type 2: Single database query"""
  17. container = request.app.ah_container
  18. return JSON((yield from get_random_record(container)))
  19. @asyncio.coroutine
  20. def db_redis(request):
  21. """Test type 2: Single database query"""
  22. container = request.app.ah_container
  23. return JSON((yield from redis.get_random_record(container)))
  24. @asyncio.coroutine
  25. def queries(request):
  26. """Test type 3: Multiple database queries"""
  27. container = request.app.ah_container
  28. limit = queries_number(request.GET.get('queries', 1))
  29. return JSON((yield from get_random_records(container, limit)))
  30. @asyncio.coroutine
  31. def queries_redis(request):
  32. """Test type 3: Multiple database queries"""
  33. container = request.app.ah_container
  34. limit = queries_number(request.GET.get('queries', 1))
  35. return JSON((yield from redis.get_random_records(container, limit)))
  36. @asyncio.coroutine
  37. def fortunes(request):
  38. """Test type 4: Fortunes"""
  39. container = request.app.ah_container
  40. return aiohttp_jinja2.render_template('fortunes.html.j2',
  41. request,
  42. {'fortunes': (yield from get_fortunes(container))})
  43. @asyncio.coroutine
  44. def fortunes_redis(request):
  45. """Test type 4: Fortunes"""
  46. container = request.app.ah_container
  47. return aiohttp_jinja2.render_template('fortunes.html.j2',
  48. request,
  49. {'fortunes': (yield from redis.get_fortunes(container))})
  50. @asyncio.coroutine
  51. def updates(request):
  52. """Test type 5: Database updates"""
  53. container = request.app.ah_container
  54. limit = queries_number(request.GET.get('queries', 1))
  55. return JSON((yield from update_random_records(container, limit)))
  56. @asyncio.coroutine
  57. def updates_redis(request):
  58. """Test type 5: Database updates"""
  59. container = request.app.ah_container
  60. limit = queries_number(request.GET.get('queries', 1))
  61. return JSON((yield from redis.update_random_records(container, limit)))
  62. @asyncio.coroutine
  63. def plaintext(request):
  64. """Test type 6: Plaintext"""
  65. return Response(text='Hello, World!')