Development of an internal social media platform with personalised dashboards for students
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_sqlalchemy.py 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from __future__ import absolute_import
  2. from kombu import Connection
  3. from kombu.tests.case import Case, SkipTest, patch
  4. class test_sqlalchemy(Case):
  5. def setUp(self):
  6. try:
  7. import sqlalchemy # noqa
  8. except ImportError:
  9. raise SkipTest('sqlalchemy not installed')
  10. def test_url_parser(self):
  11. with patch('kombu.transport.sqlalchemy.Channel._open'):
  12. url = 'sqlalchemy+sqlite:///celerydb.sqlite'
  13. Connection(url).connect()
  14. url = 'sqla+sqlite:///celerydb.sqlite'
  15. Connection(url).connect()
  16. # Should prevent regression fixed by f187ccd
  17. url = 'sqlb+sqlite:///celerydb.sqlite'
  18. with self.assertRaises(KeyError):
  19. Connection(url).connect()
  20. def test_simple_queueing(self):
  21. conn = Connection('sqlalchemy+sqlite:///:memory:')
  22. conn.connect()
  23. channel = conn.channel()
  24. self.assertEqual(
  25. channel.queue_cls.__table__.name,
  26. 'kombu_queue'
  27. )
  28. self.assertEqual(
  29. channel.message_cls.__table__.name,
  30. 'kombu_message'
  31. )
  32. channel._put('celery', 'DATA')
  33. assert channel._get('celery') == 'DATA'
  34. def test_custom_table_names(self):
  35. raise SkipTest('causes global side effect')
  36. conn = Connection('sqlalchemy+sqlite:///:memory:', transport_options={
  37. 'queue_tablename': 'my_custom_queue',
  38. 'message_tablename': 'my_custom_message'
  39. })
  40. conn.connect()
  41. channel = conn.channel()
  42. self.assertEqual(
  43. channel.queue_cls.__table__.name,
  44. 'my_custom_queue'
  45. )
  46. self.assertEqual(
  47. channel.message_cls.__table__.name,
  48. 'my_custom_message'
  49. )
  50. channel._put('celery', 'DATA')
  51. assert channel._get('celery') == 'DATA'
  52. def test_clone(self):
  53. hostname = 'sqlite:///celerydb.sqlite'
  54. x = Connection('+'.join(['sqla', hostname]))
  55. self.assertEqual(x.uri_prefix, 'sqla')
  56. self.assertEqual(x.hostname, hostname)
  57. clone = x.clone()
  58. self.assertEqual(clone.hostname, hostname)
  59. self.assertEqual(clone.uri_prefix, 'sqla')