Procházet zdrojové kódy

Fixes mongodb tests. Closes #1964

Ask Solem před 10 roky
rodič
revize
0ed72be050
1 změnil soubory, kde provedl 25 přidání a 25 odebrání
  1. 25 25
      celery/tests/backends/test_mongodb.py

+ 25 - 25
celery/tests/backends/test_mongodb.py

@@ -1,27 +1,28 @@
 from __future__ import absolute_import
 from __future__ import absolute_import
 
 
 import datetime
 import datetime
-import uuid
 
 
 from pickle import loads, dumps
 from pickle import loads, dumps
 
 
+from celery import uuid
 from celery import states
 from celery import states
 from celery.backends import mongodb as module
 from celery.backends import mongodb as module
 from celery.backends.mongodb import MongoBackend, Bunch, pymongo
 from celery.backends.mongodb import MongoBackend, Bunch, pymongo
 from celery.exceptions import ImproperlyConfigured
 from celery.exceptions import ImproperlyConfigured
 from celery.tests.case import (
 from celery.tests.case import (
     AppCase, MagicMock, Mock, SkipTest, ANY,
     AppCase, MagicMock, Mock, SkipTest, ANY,
-    depends_on_current_app, patch, sentinel,
+    call, depends_on_current_app, patch, sentinel,
 )
 )
 
 
 COLLECTION = 'taskmeta_celery'
 COLLECTION = 'taskmeta_celery'
-TASK_ID = str(uuid.uuid1())
+TASK_ID = uuid()
 MONGODB_HOST = 'localhost'
 MONGODB_HOST = 'localhost'
 MONGODB_PORT = 27017
 MONGODB_PORT = 27017
 MONGODB_USER = 'mongo'
 MONGODB_USER = 'mongo'
 MONGODB_PASSWORD = '1234'
 MONGODB_PASSWORD = '1234'
 MONGODB_DATABASE = 'testing'
 MONGODB_DATABASE = 'testing'
 MONGODB_COLLECTION = 'collection1'
 MONGODB_COLLECTION = 'collection1'
+MONGODB_GROUP_COLLECTION = 'group_collection1'
 
 
 
 
 class test_MongoBackend(AppCase):
 class test_MongoBackend(AppCase):
@@ -66,13 +67,6 @@ class test_MongoBackend(AppCase):
         self.app.conf.CELERY_MONGODB_BACKEND_SETTINGS = None
         self.app.conf.CELERY_MONGODB_BACKEND_SETTINGS = None
         MongoBackend(app=self.app)
         MongoBackend(app=self.app)
 
 
-    def test_restore_group_no_entry(self):
-        x = MongoBackend(app=self.app)
-        x.collection = Mock()
-        fo = x.collection.find_one = Mock()
-        fo.return_value = None
-        self.assertIsNone(x._restore_group('1f3fab'))
-
     @depends_on_current_app
     @depends_on_current_app
     def test_reduce(self):
     def test_reduce(self):
         x = MongoBackend(app=self.app)
         x = MongoBackend(app=self.app)
@@ -220,29 +214,36 @@ class test_MongoBackend(AppCase):
 
 
     @patch('celery.backends.mongodb.MongoBackend._get_database')
     @patch('celery.backends.mongodb.MongoBackend._get_database')
     def test_save_group(self, mock_get_database):
     def test_save_group(self, mock_get_database):
-        self.backend.taskmeta_collection = MONGODB_COLLECTION
+        self.backend.groupmeta_collection = MONGODB_GROUP_COLLECTION
 
 
         mock_database = MagicMock(spec=['__getitem__', '__setitem__'])
         mock_database = MagicMock(spec=['__getitem__', '__setitem__'])
         mock_collection = Mock()
         mock_collection = Mock()
 
 
         mock_get_database.return_value = mock_database
         mock_get_database.return_value = mock_database
         mock_database.__getitem__.return_value = mock_collection
         mock_database.__getitem__.return_value = mock_collection
-
+        res = [self.app.AsyncResult(i) for i in range(3)]
         ret_val = self.backend._save_group(
         ret_val = self.backend._save_group(
-            sentinel.taskset_id, sentinel.result)
-
+            sentinel.taskset_id, res,
+        )
         mock_get_database.assert_called_once_with()
         mock_get_database.assert_called_once_with()
-        mock_database.__getitem__.assert_called_once_with(MONGODB_COLLECTION)
+        mock_database.__getitem__.assert_called_once_with(
+            MONGODB_GROUP_COLLECTION,
+        )
         mock_collection.save.assert_called_once_with(ANY)
         mock_collection.save.assert_called_once_with(ANY)
-        self.assertEqual(sentinel.result, ret_val)
+        self.assertEqual(res, ret_val)
 
 
     @patch('celery.backends.mongodb.MongoBackend._get_database')
     @patch('celery.backends.mongodb.MongoBackend._get_database')
     def test_restore_group(self, mock_get_database):
     def test_restore_group(self, mock_get_database):
-        self.backend.taskmeta_collection = MONGODB_COLLECTION
+        self.backend.groupmeta_collection = MONGODB_GROUP_COLLECTION
 
 
         mock_database = MagicMock(spec=['__getitem__', '__setitem__'])
         mock_database = MagicMock(spec=['__getitem__', '__setitem__'])
         mock_collection = Mock()
         mock_collection = Mock()
-        mock_collection.find_one.return_value = MagicMock()
+        mock_collection.find_one.return_value = {
+            '_id': sentinel.taskset_id,
+            'result': [uuid(), uuid()],
+            'date_done': 1,
+        }
+        self.backend.decode.side_effect = lambda r: r
 
 
         mock_get_database.return_value = mock_database
         mock_get_database.return_value = mock_database
         mock_database.__getitem__.return_value = mock_collection
         mock_database.__getitem__.return_value = mock_collection
@@ -250,12 +251,11 @@ class test_MongoBackend(AppCase):
         ret_val = self.backend._restore_group(sentinel.taskset_id)
         ret_val = self.backend._restore_group(sentinel.taskset_id)
 
 
         mock_get_database.assert_called_once_with()
         mock_get_database.assert_called_once_with()
-        mock_database.__getitem__.assert_called_once_with(MONGODB_COLLECTION)
         mock_collection.find_one.assert_called_once_with(
         mock_collection.find_one.assert_called_once_with(
             {'_id': sentinel.taskset_id})
             {'_id': sentinel.taskset_id})
         self.assertEqual(
         self.assertEqual(
-            ['date_done', 'result', 'task_id'],
-            list(ret_val.keys()),
+            list(sorted(['date_done', 'result', 'task_id'])),
+            list(sorted(ret_val.keys())),
         )
         )
 
 
     @patch('celery.backends.mongodb.MongoBackend._get_database')
     @patch('celery.backends.mongodb.MongoBackend._get_database')
@@ -271,7 +271,6 @@ class test_MongoBackend(AppCase):
         self.backend._delete_group(sentinel.taskset_id)
         self.backend._delete_group(sentinel.taskset_id)
 
 
         mock_get_database.assert_called_once_with()
         mock_get_database.assert_called_once_with()
-        mock_database.__getitem__.assert_called_once_with(MONGODB_COLLECTION)
         mock_collection.remove.assert_called_once_with(
         mock_collection.remove.assert_called_once_with(
             {'_id': sentinel.taskset_id})
             {'_id': sentinel.taskset_id})
 
 
@@ -297,19 +296,20 @@ class test_MongoBackend(AppCase):
     def test_cleanup(self, mock_get_database):
     def test_cleanup(self, mock_get_database):
         datetime.datetime = self._reset['datetime']
         datetime.datetime = self._reset['datetime']
         self.backend.taskmeta_collection = MONGODB_COLLECTION
         self.backend.taskmeta_collection = MONGODB_COLLECTION
+        self.backend.groupmeta_collection = MONGODB_GROUP_COLLECTION
 
 
-        mock_database = MagicMock(spec=['__getitem__', '__setitem__'])
+        mock_database = Mock(spec=['__getitem__', '__setitem__'],
+                             name='MD')
         self.backend.collections = mock_collection = Mock()
         self.backend.collections = mock_collection = Mock()
 
 
         mock_get_database.return_value = mock_database
         mock_get_database.return_value = mock_database
+        mock_database.__getitem__ = Mock(name='MD.__getitem__')
         mock_database.__getitem__.return_value = mock_collection
         mock_database.__getitem__.return_value = mock_collection
 
 
         self.backend.app.now = datetime.datetime.utcnow
         self.backend.app.now = datetime.datetime.utcnow
         self.backend.cleanup()
         self.backend.cleanup()
 
 
         mock_get_database.assert_called_once_with()
         mock_get_database.assert_called_once_with()
-        mock_database.__getitem__.assert_called_once_with(
-            MONGODB_COLLECTION)
         self.assertTrue(mock_collection.remove.called)
         self.assertTrue(mock_collection.remove.called)
 
 
     def test_get_database_authfailure(self):
     def test_get_database_authfailure(self):