浏览代码

Stresstests: Adds more tests for "green" suite

Ask Solem 12 年之前
父节点
当前提交
f79a0169a3
共有 2 个文件被更改,包括 24 次插入2 次删除
  1. 13 1
      funtests/stress/README.rst
  2. 11 1
      funtests/stress/stress/suite.py

+ 13 - 1
funtests/stress/README.rst

@@ -59,7 +59,19 @@ Ideas include:
     $ celery -A stress worker -c1 --maxtasksperchild=1 -- celery.acks_late=1
     $ celery -A stress worker -c1 --maxtasksperchild=1 -- celery.acks_late=1
 
 
 
 
-It's a good idea to include the ``--purge`` argument to clear out tasks from
+8) Worker using eventlet pool.
+
+    Start the worker::
+
+        $ celery -A stress worker -c1000 -P eventlet
+
+    Then must use the `-g green` test group::
+
+        $ python -m stress -g green
+
+9) Worker using gevent pool.
+
+It's also a good idea to include the ``--purge`` argument to clear out tasks from
 previous runs.
 previous runs.
 
 
 Note that the stress client will probably hang if the test fails, so this
 Note that the stress client will probably hang if the test fails, so this

+ 11 - 1
funtests/stress/stress/suite.py

@@ -17,7 +17,7 @@ from celery.utils.text import pluralize
 from celery.utils.timeutils import humanize_seconds
 from celery.utils.timeutils import humanize_seconds
 
 
 from .app import (
 from .app import (
-    marker, _marker, add, any_, kill, sleeping,
+    marker, _marker, add, any_, exiting, kill, sleeping,
     sleeping_ignore_limits, segfault,
     sleeping_ignore_limits, segfault,
 )
 )
 from .data import BIG, SMALL
 from .data import BIG, SMALL
@@ -73,11 +73,14 @@ class Suite(object):
                 self.revoketermfast,
                 self.revoketermfast,
                 self.revoketermslow,
                 self.revoketermslow,
                 self.alwayskilled,
                 self.alwayskilled,
+                self.alwaysexits,
             ),
             ),
             'green': testgroup(
             'green': testgroup(
                 self.manyshort,
                 self.manyshort,
                 self.bigtasks,
                 self.bigtasks,
                 self.smalltasks,
                 self.smalltasks,
+                self.alwaysexits,
+                self.group_with_exit,
             ),
             ),
         }
         }
 
 
@@ -159,6 +162,9 @@ class Suite(object):
     def termbysig(self):
     def termbysig(self):
         self._evil_groupmember(kill)
         self._evil_groupmember(kill)
 
 
+    def group_with_exit(self):
+        self._evil_groupmember(exiting)
+
     def termbysegfault(self):
     def termbysegfault(self):
         self._evil_groupmember(segfault)
         self._evil_groupmember(segfault)
 
 
@@ -173,6 +179,10 @@ class Suite(object):
         g = group(kill.s() for _ in range(10))
         g = group(kill.s() for _ in range(10))
         self.join(g(), timeout=10)
         self.join(g(), timeout=10)
 
 
+    def alwaysexits(self):
+        g = group(exiting.s() for _ in range(10))
+        self.join(g(), timeout=10)
+
     def _evil_groupmember(self, evil_t, *eargs, **opts):
     def _evil_groupmember(self, evil_t, *eargs, **opts):
         g1 = group(add.s(2, 2).set(**opts), evil_t.s(*eargs).set(**opts),
         g1 = group(add.s(2, 2).set(**opts), evil_t.s(*eargs).set(**opts),
                    add.s(4, 4).set(**opts), add.s(8, 8).set(**opts))
                    add.s(4, 4).set(**opts), add.s(8, 8).set(**opts))