ソースを参照

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))