Title: [276841] trunk/Tools
Revision
276841
Author
[email protected]
Date
2021-04-30 09:26:15 -0700 (Fri, 30 Apr 2021)

Log Message

[webkitscpy] Support arguments to TaskPool setup and teardown
https://bugs.webkit.org/show_bug.cgi?id=225220
<rdar://problem/77352340>

Reviewed by Dewei Zhu.

* Scripts/libraries/webkitcorepy/setup.py: Bump version.
* Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py: Ditto.
* Scripts/libraries/webkitcorepy/webkitcorepy/task_pool.py:
(Process.main): Accept setup and teardown arguments to child processes.
(TaskPool.__init__): Pass setup and teardown arguments to child processes.
* Scripts/libraries/webkitcorepy/webkitcorepy/tests/task_pool_unittest.py:
(setup): Acception optional argument.
(teardown): Ditto.
(TaskPoolUnittest.test_setup_arguments):
(TaskPoolUnittest.test_teardown_arguments):

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (276840 => 276841)


--- trunk/Tools/ChangeLog	2021-04-30 16:02:52 UTC (rev 276840)
+++ trunk/Tools/ChangeLog	2021-04-30 16:26:15 UTC (rev 276841)
@@ -1,3 +1,22 @@
+2021-04-30  Jonathan Bedard  <[email protected]>
+
+        [webkitscpy] Support arguments to TaskPool setup and teardown
+        https://bugs.webkit.org/show_bug.cgi?id=225220
+        <rdar://problem/77352340>
+
+        Reviewed by Dewei Zhu.
+
+        * Scripts/libraries/webkitcorepy/setup.py: Bump version.
+        * Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py: Ditto.
+        * Scripts/libraries/webkitcorepy/webkitcorepy/task_pool.py:
+        (Process.main): Accept setup and teardown arguments to child processes.
+        (TaskPool.__init__): Pass setup and teardown arguments to child processes.
+        * Scripts/libraries/webkitcorepy/webkitcorepy/tests/task_pool_unittest.py:
+        (setup): Acception optional argument.
+        (teardown): Ditto.
+        (TaskPoolUnittest.test_setup_arguments):
+        (TaskPoolUnittest.test_teardown_arguments):
+
 2021-04-29  Darin Adler  <[email protected]>
 
         Extend SortedArrayMap further to work on case-folded strings, use in MIMETypeRegistry

Modified: trunk/Tools/Scripts/libraries/webkitcorepy/setup.py (276840 => 276841)


--- trunk/Tools/Scripts/libraries/webkitcorepy/setup.py	2021-04-30 16:02:52 UTC (rev 276840)
+++ trunk/Tools/Scripts/libraries/webkitcorepy/setup.py	2021-04-30 16:26:15 UTC (rev 276841)
@@ -30,7 +30,7 @@
 
 setup(
     name='webkitcorepy',
-    version='0.5.10',
+    version='0.5.11',
     description='Library containing various Python support classes and functions.',
     long_description=readme(),
     classifiers=[

Modified: trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py (276840 => 276841)


--- trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py	2021-04-30 16:02:52 UTC (rev 276840)
+++ trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py	2021-04-30 16:26:15 UTC (rev 276841)
@@ -37,7 +37,7 @@
 from webkitcorepy.task_pool import TaskPool
 from webkitcorepy.credentials import credentials
 
-version = Version(0, 5, 10)
+version = Version(0, 5, 11)
 
 from webkitcorepy.autoinstall import Package, AutoInstall
 if sys.version_info > (3, 0):

Modified: trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/task_pool.py (276840 => 276841)


--- trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/task_pool.py	2021-04-30 16:02:52 UTC (rev 276840)
+++ trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/task_pool.py	2021-04-30 16:26:15 UTC (rev 276841)
@@ -231,12 +231,18 @@
             cls.working = False
 
     @classmethod
-    def main(cls, name, setup, queue, teardown):
+    def main(cls, name, setup, setupargs, setupkwargs, queue, teardown, teardownargs, teardownkwargs):
         from tblib import pickling_support
 
         cls.name = name
         cls.working = True
 
+        setupargs = setupargs or []
+        setupkwargs = setupkwargs or {}
+
+        teardownargs = teardownargs or []
+        teardownkwargs = teardownkwargs or {}
+
         if getattr(signal, 'SIGTERM'):
             signal.signal(signal.SIGTERM, cls.handler)
 
@@ -251,7 +257,7 @@
             try:
                 pickling_support.install()
                 if setup:
-                    setup()
+                    setup(*setupargs, **setupkwargs)
 
                 while cls.working:
                     task = queue.receive()
@@ -267,7 +273,7 @@
 
             finally:
                 if teardown:
-                    teardown()
+                    teardown(*teardownargs, **teardownkwargs)
                 sys.stdout.flush()
                 sys.stderr.flush()
                 queue.send(State(State.STOPPING))
@@ -278,7 +284,11 @@
     class Exception(RuntimeError):
         pass
 
-    def __init__(self, workers=1, name=None, setup=None, teardown=None, grace_period=5, block_size=1000):
+    def __init__(
+        self, workers=1, name=None, setup=None, teardown=None, grace_period=5, block_size=1000,
+        setupargs=None, setupkwargs=None,
+        teardownargs=None, teardownkwargs=None,
+    ):
         # Ensure tblib is installed before creating child processes
         import tblib
 
@@ -293,10 +303,12 @@
 
         self.workers = [multiprocessing.Process(
             target=Process.main,
-            args=('{}/{}'.format(name, count), setup, BiDirectionalQueue(
-                outgoing=self.queue.incoming,
-                incoming=self.queue.outgoing,
-            ), teardown),
+            args=(
+                '{}/{}'.format(name, count),
+                setup, setupargs, setupkwargs,
+                BiDirectionalQueue(outgoing=self.queue.incoming, incoming=self.queue.outgoing),
+                teardown, teardownargs, teardownkwargs,
+            ),
         ) for count in range(workers)]
         self._started = 0
 

Modified: trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/task_pool_unittest.py (276840 => 276841)


--- trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/task_pool_unittest.py	2021-04-30 16:02:52 UTC (rev 276840)
+++ trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/task_pool_unittest.py	2021-04-30 16:26:15 UTC (rev 276841)
@@ -27,12 +27,12 @@
 from webkitcorepy import OutputCapture, TaskPool, log as logger
 
 
-def setup():
-    logger.warning('Setting up')
+def setup(arg='Setting up'):
+    logger.warning(arg)
 
 
-def teardown():
-    logger.warning('Tearing down')
+def teardown(arg='Tearing down'):
+    logger.warning(arg)
 
 
 def action(argument):
@@ -118,6 +118,17 @@
             ['worker/{} Setting up'.format(x) for x in range(4)],
         )
 
+    def test_setup_arguments(self):
+        with OutputCapture() as captured:
+            with TaskPool(workers=4, setup=setup, setupargs=['Setup argument']) as pool:
+                for character in self.alphabet:
+                    pool.do(action, character)
+                pool.wait()
+        self.assertEqual(
+            sorted(captured.webkitcorepy.log.getvalue().splitlines()),
+            ['worker/{} Setup argument'.format(x) for x in range(4)],
+        )
+
     def test_teardown(self):
         with OutputCapture() as captured:
             with TaskPool(workers=4, teardown=teardown) as pool:
@@ -129,6 +140,17 @@
             ['worker/{} Tearing down'.format(x) for x in range(4)],
         )
 
+    def test_teardown_arguments(self):
+        with OutputCapture() as captured:
+            with TaskPool(workers=4, teardown=teardown, teardownargs=['Teardown argument']) as pool:
+                for character in self.alphabet:
+                    pool.do(action, character)
+                pool.wait()
+        self.assertEqual(
+            sorted(captured.webkitcorepy.log.getvalue().splitlines()),
+            ['worker/{} Teardown argument'.format(x) for x in range(4)],
+        )
+
     def test_invalid_shutdown(self):
         with OutputCapture():
             with self.assertRaises(TaskPool.Exception):
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to