WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-225220-20210429173217.patch (text/plain), 7.12 KB, created by
Jonathan Bedard
on 2021-04-29 17:32:18 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Jonathan Bedard
Created:
2021-04-29 17:32:18 PDT
Size:
7.12 KB
patch
obsolete
>Index: Tools/ChangeLog >=================================================================== >--- Tools/ChangeLog (revision 276824) >+++ Tools/ChangeLog (working copy) >@@ -1,3 +1,22 @@ >+2021-04-29 Jonathan Bedard <jbedard@apple.com> >+ >+ [webkitscpy] Support arguments to TaskPool setup and teardown >+ https://bugs.webkit.org/show_bug.cgi?id=225220 >+ <rdar://problem/77352340> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * 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 <darin@apple.com> > > Extend SortedArrayMap further to work on case-folded strings, use in MIMETypeRegistry >Index: Tools/Scripts/libraries/webkitcorepy/setup.py >=================================================================== >--- Tools/Scripts/libraries/webkitcorepy/setup.py (revision 276822) >+++ Tools/Scripts/libraries/webkitcorepy/setup.py (working copy) >@@ -30,7 +30,7 @@ def readme(): > > setup( > name='webkitcorepy', >- version='0.5.10', >+ version='0.5.11', > description='Library containing various Python support classes and functions.', > long_description=readme(), > classifiers=[ >Index: Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py >=================================================================== >--- Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py (revision 276822) >+++ Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py (working copy) >@@ -37,7 +37,7 @@ from webkitcorepy.output_capture import > 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): >Index: Tools/Scripts/libraries/webkitcorepy/webkitcorepy/task_pool.py >=================================================================== >--- Tools/Scripts/libraries/webkitcorepy/webkitcorepy/task_pool.py (revision 276822) >+++ Tools/Scripts/libraries/webkitcorepy/webkitcorepy/task_pool.py (working copy) >@@ -231,12 +231,18 @@ class Process(object): > 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 @@ class Process(object): > try: > pickling_support.install() > if setup: >- setup() >+ setup(*setupargs, **setupkwargs) > > while cls.working: > task = queue.receive() >@@ -267,7 +273,7 @@ class Process(object): > > finally: > if teardown: >- teardown() >+ teardown(*teardownargs, **teardownkwargs) > sys.stdout.flush() > sys.stderr.flush() > queue.send(State(State.STOPPING)) >@@ -278,7 +284,11 @@ class TaskPool(object): > 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 @@ class TaskPool(object): > > 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 > >Index: Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/task_pool_unittest.py >=================================================================== >--- Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/task_pool_unittest.py (revision 276822) >+++ Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/task_pool_unittest.py (working copy) >@@ -27,12 +27,12 @@ import unittest > 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 @@ class TaskPoolUnittest(unittest.TestCase > ['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 @@ class TaskPoolUnittest(unittest.TestCase > ['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):
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 225220
: 427390