瀏覽代碼

Stresstests: Adds more tests for "green" suite

Ask Solem 11 年之前
父節點
當前提交
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
 
 
-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.
 
 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 .app import (
-    marker, _marker, add, any_, kill, sleeping,
+    marker, _marker, add, any_, exiting, kill, sleeping,
     sleeping_ignore_limits, segfault,
 )
 from .data import BIG, SMALL
@@ -73,11 +73,14 @@ class Suite(object):
                 self.revoketermfast,
                 self.revoketermslow,
                 self.alwayskilled,
+                self.alwaysexits,
             ),
             'green': testgroup(
                 self.manyshort,
                 self.bigtasks,
                 self.smalltasks,
+                self.alwaysexits,
+                self.group_with_exit,
             ),
         }
 
@@ -159,6 +162,9 @@ class Suite(object):
     def termbysig(self):
         self._evil_groupmember(kill)
 
+    def group_with_exit(self):
+        self._evil_groupmember(exiting)
+
     def termbysegfault(self):
         self._evil_groupmember(segfault)
 
@@ -173,6 +179,10 @@ class Suite(object):
         g = group(kill.s() for _ in range(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):
         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))