Browse Source

Add couchbase dependency to CI + Python 3/PyPy fixes (#4313)

* Add couchbase dependency to CI.

* Install libcouchbase-dev.

* Remove obsolete test.

* Don't cover cffi branch.

* Ignore unused import since it monkeypatches the couchbase client.

* Use https when pulling the couchbase key.

* Install couchbase-cffi only on PyPy.

* Fix flake8 (again?)
Omer Katz 7 years ago
parent
commit
83cecb8ad1

+ 4 - 0
.travis.yml

@@ -77,6 +77,10 @@ before_install:
               sleep 10
               curl localhost:8000
           fi
+    - |
+          wget -qO - https://packages.couchbase.com/ubuntu/couchbase.key | sudo apt-key add -
+          sudo apt-add-repository -y 'deb http://packages.couchbase.com/ubuntu trusty trusty/main'
+          sudo apt-get update && sudo apt-get install -y libcouchbase-dev
 after_success:
   - .tox/$TRAVIS_PYTHON_VERSION/bin/coverage xml
   - .tox/$TRAVIS_PYTHON_VERSION/bin/codecov -e TOXENV

+ 4 - 0
celery/backends/couchbase.py

@@ -11,6 +11,10 @@ from celery.exceptions import ImproperlyConfigured
 
 from .base import KeyValueStoreBackend
 
+try:
+    import couchbase_ffi # noqa
+except ImportError:
+    pass # noqa
 try:
     from couchbase import Couchbase
     from couchbase.connection import Connection

+ 1 - 0
requirements/extras/couchbase.txt

@@ -1 +1,2 @@
 couchbase
+couchbase-cffi;platform_python_implementation=="PyPy"

+ 1 - 0
requirements/test-ci-default.txt

@@ -14,6 +14,7 @@
 -r extras/gevent.txt
 -r extras/elasticsearch.txt
 -r extras/couchdb.txt
+-r extras/couchbase.txt
 -r extras/consul.txt
 -r extras/cassandra.txt
 -r extras/dynamodb.txt

+ 0 - 13
t/unit/backends/test_couchbase.py

@@ -3,7 +3,6 @@ from __future__ import absolute_import, unicode_literals
 
 import pytest
 from case import MagicMock, Mock, patch, sentinel, skip
-from kombu.utils.encoding import str_t
 
 from celery.app import backends
 from celery.backends import couchbase as module
@@ -108,15 +107,3 @@ class test_CouchbaseBackend:
             assert x.username == 'johndoe'
             assert x.password == 'mysecret'
             assert x.port == 123
-
-    def test_correct_key_types(self):
-        keys = [
-            self.backend.get_key_for_task('task_id', bytes('key')),
-            self.backend.get_key_for_chord('group_id', bytes('key')),
-            self.backend.get_key_for_group('group_id', bytes('key')),
-            self.backend.get_key_for_task('task_id', 'key'),
-            self.backend.get_key_for_chord('group_id', 'key'),
-            self.backend.get_key_for_group('group_id', 'key'),
-        ]
-        for key in keys:
-            assert isinstance(key, str_t)