| 
					
				 | 
			
			
				@@ -0,0 +1,53 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from __future__ import absolute_import 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from nose import SkipTest 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from celery.concurrency.gevent import TaskPool 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from celery.tests.utils import unittest 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class GeventCase(unittest.TestCase): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def setUp(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            self.gevent = __import__("gevent") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        except ImportError: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            raise SkipTest( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                "gevent not installed, skipping related tests.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class test_TaskPool(GeventCase): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def test_grow(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pool = TaskPool(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pool.start() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.assertEqual(pool._pool.size, 10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pool.grow() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.assertEqual(pool._pool.size, 11) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def test_grow_many(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pool = TaskPool(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pool.start() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.assertEqual(pool._pool.size, 10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pool.grow(2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.assertEqual(pool._pool.size, 12) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def test_shrink(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pool = TaskPool(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pool.start() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.assertEqual(pool._pool.size, 10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pool.shrink() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.assertEqual(pool._pool.size, 9) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def test_shrink_many(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pool = TaskPool(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pool.start() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.assertEqual(pool._pool.size, 10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pool.shrink(2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.assertEqual(pool._pool.size, 8) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def test_num_processes(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pool = TaskPool(10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pool.start() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pool.apply_async(lambda x: x, (2, ), {}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.assertEqual(pool.num_processes, 1) 
			 |