Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(293)

Side by Side Diff: build/android/pylib/utils/parallelizer.py

Issue 294113003: [Android] Convert to DeviceUtils versions of WaitUntilFullyBooted and GetExternalStoragePath. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « build/android/pylib/utils/emulator.py ('k') | build/android/pylib/utils/test_environment.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """ Wrapper that allows method execution in parallel. 5 """ Wrapper that allows method execution in parallel.
6 6
7 This class wraps a list of objects of the same type, emulates their 7 This class wraps a list of objects of the same type, emulates their
8 interface, and executes any functions called on the objects in parallel 8 interface, and executes any functions called on the objects in parallel
9 in ReraiserThreads. 9 in ReraiserThreads.
10 10
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 def __getattr__(self, name): 73 def __getattr__(self, name):
74 """Emulate getting the |name| attribute of |self|. 74 """Emulate getting the |name| attribute of |self|.
75 75
76 Args: 76 Args:
77 name: The name of the attribute to retrieve. 77 name: The name of the attribute to retrieve.
78 Returns: 78 Returns:
79 A Parallelizer emulating the |name| attribute of |self|. 79 A Parallelizer emulating the |name| attribute of |self|.
80 """ 80 """
81 self.pGet(None) 81 self.pGet(None)
82 82
83 r = Parallelizer(self._orig_objs) 83 r = type(self)(self._orig_objs)
84 r._objs = [getattr(o, name) for o in self._objs] 84 r._objs = [getattr(o, name) for o in self._objs]
85 return r 85 return r
86 86
87 def __getitem__(self, index): 87 def __getitem__(self, index):
88 """Emulate getting the value of |self| at |index|. 88 """Emulate getting the value of |self| at |index|.
89 89
90 Returns: 90 Returns:
91 A Parallelizer emulating the value of |self| at |index|. 91 A Parallelizer emulating the value of |self| at |index|.
92 """ 92 """
93 self.pGet(None) 93 self.pGet(None)
94 94
95 r = Parallelizer(self._orig_objs) 95 r = type(self)(self._orig_objs)
96 r._objs = [o[index] for o in self._objs] 96 r._objs = [o[index] for o in self._objs]
97 return r 97 return r
98 98
99 def __call__(self, *args, **kwargs): 99 def __call__(self, *args, **kwargs):
100 """Emulate calling |self| with |args| and |kwargs|. 100 """Emulate calling |self| with |args| and |kwargs|.
101 101
102 Note that this call is asynchronous. Call pFinish on the return value to 102 Note that this call is asynchronous. Call pFinish on the return value to
103 block until the call finishes. 103 block until the call finishes.
104 104
105 Returns: 105 Returns:
106 A Parallelizer wrapping the ReraiserThreadGroup running the call in 106 A Parallelizer wrapping the ReraiserThreadGroup running the call in
107 parallel. 107 parallel.
108 Raises: 108 Raises:
109 AttributeError if the wrapped objects aren't callable. 109 AttributeError if the wrapped objects aren't callable.
110 """ 110 """
111 self.pGet(None) 111 self.pGet(None)
112 112
113 if not self._objs: 113 if not self._objs:
114 raise AttributeError('Nothing to call.') 114 raise AttributeError('Nothing to call.')
115 for o in self._objs: 115 for o in self._objs:
116 if not callable(o): 116 if not callable(o):
117 raise AttributeError("'%s' is not callable" % o.__name__) 117 raise AttributeError("'%s' is not callable" % o.__name__)
118 118
119 r = Parallelizer(self._orig_objs) 119 r = type(self)(self._orig_objs)
120 r._objs = reraiser_thread.ReraiserThreadGroup( 120 r._objs = reraiser_thread.ReraiserThreadGroup(
121 [reraiser_thread.ReraiserThread( 121 [reraiser_thread.ReraiserThread(
122 o, args=args, kwargs=kwargs, 122 o, args=args, kwargs=kwargs,
123 name='%s.%s' % (str(d), o.__name__)) 123 name='%s.%s' % (str(d), o.__name__))
124 for d, o in zip(self._orig_objs, self._objs)]) 124 for d, o in zip(self._orig_objs, self._objs)])
125 r._objs.StartAll() # pylint: disable=W0212 125 r._objs.StartAll() # pylint: disable=W0212
126 return r 126 return r
127 127
128 def pFinish(self, timeout): 128 def pFinish(self, timeout):
129 """Finish any outstanding asynchronous operations. 129 """Finish any outstanding asynchronous operations.
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 Returns: 187 Returns:
188 A Parallelizer emulating the value returned from calling |self| with 188 A Parallelizer emulating the value returned from calling |self| with
189 |args| and |kwargs|. 189 |args| and |kwargs|.
190 Raises: 190 Raises:
191 AttributeError if the wrapped objects aren't callable. 191 AttributeError if the wrapped objects aren't callable.
192 """ 192 """
193 r = super(SyncParallelizer, self).__call__(*args, **kwargs) 193 r = super(SyncParallelizer, self).__call__(*args, **kwargs)
194 r.pFinish(None) 194 r.pFinish(None)
195 return r 195 return r
196 196
OLDNEW
« no previous file with comments | « build/android/pylib/utils/emulator.py ('k') | build/android/pylib/utils/test_environment.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698