Browse Source

Fixes mongodb tests. Closes #1964

Ask Solem 10 years ago
parent
commit
0ed72be050
1 changed files with 25 additions and 25 deletions
  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
 
 import datetime
-import uuid
 
 from pickle import loads, dumps
 
+from celery import uuid
 from celery import states
 from celery.backends import mongodb as module
 from celery.backends.mongodb import MongoBackend, Bunch, pymongo
 from celery.exceptions import ImproperlyConfigured
 from celery.tests.case import (
     AppCase, MagicMock, Mock, SkipTest, ANY,
-    depends_on_current_app, patch, sentinel,
+    call, depends_on_current_app, patch, sentinel,
 )
 
 COLLECTION = 'taskmeta_celery'
-TASK_ID = str(uuid.uuid1())
+TASK_ID = uuid()
 MONGODB_HOST = 'localhost'
 MONGODB_PORT = 27017
 MONGODB_USER = 'mongo'
 MONGODB_PASSWORD = '1234'
 MONGODB_DATABASE = 'testing'
 MONGODB_COLLECTION = 'collection1'
+MONGODB_GROUP_COLLECTION = 'group_collection1'
 
 
 class test_MongoBackend(AppCase):
@@ -66,13 +67,6 @@ class test_MongoBackend(AppCase):
         self.app.conf.CELERY_MONGODB_BACKEND_SETTINGS = None
         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
     def test_reduce(self):
         x = MongoBackend(app=self.app)
@@ -220,29 +214,36 @@ class test_MongoBackend(AppCase):
 
     @patch('celery.backends.mongodb.MongoBackend._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_collection = Mock()
 
         mock_get_database.return_value = mock_database
         mock_database.__getitem__.return_value = mock_collection
-
+        res = [self.app.AsyncResult(i) for i in range(3)]
         ret_val = self.backend._save_group(
-            sentinel.taskset_id, sentinel.result)
-
+            sentinel.taskset_id, res,
+        )
         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)
-        self.assertEqual(sentinel.result, ret_val)
+        self.assertEqual(res, ret_val)
 
     @patch('celery.backends.mongodb.MongoBackend._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_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_database.__getitem__.return_value = mock_collection
@@ -250,12 +251,11 @@ class test_MongoBackend(AppCase):
         ret_val = self.backend._restore_group(sentinel.taskset_id)
 
         mock_get_database.assert_called_once_with()
-        mock_database.__getitem__.assert_called_once_with(MONGODB_COLLECTION)
         mock_collection.find_one.assert_called_once_with(
             {'_id': sentinel.taskset_id})
         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')
@@ -271,7 +271,6 @@ class test_MongoBackend(AppCase):
         self.backend._delete_group(sentinel.taskset_id)
 
         mock_get_database.assert_called_once_with()
-        mock_database.__getitem__.assert_called_once_with(MONGODB_COLLECTION)
         mock_collection.remove.assert_called_once_with(
             {'_id': sentinel.taskset_id})
 
@@ -297,19 +296,20 @@ class test_MongoBackend(AppCase):
     def test_cleanup(self, mock_get_database):
         datetime.datetime = self._reset['datetime']
         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()
 
         mock_get_database.return_value = mock_database
+        mock_database.__getitem__ = Mock(name='MD.__getitem__')
         mock_database.__getitem__.return_value = mock_collection
 
         self.backend.app.now = datetime.datetime.utcnow
         self.backend.cleanup()
 
         mock_get_database.assert_called_once_with()
-        mock_database.__getitem__.assert_called_once_with(
-            MONGODB_COLLECTION)
         self.assertTrue(mock_collection.remove.called)
 
     def test_get_database_authfailure(self):