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

Side by Side Diff: build/android/devil/android/decorators.py

Issue 1340603002: DeviceUtils: Make Install and PushChangedFiles respect instance retries / timeout (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: min->max Created 5 years, 3 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 | « no previous file | build/android/devil/android/decorators_test.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 """ 5 """
6 Function/method decorators that provide timeout and retry logic. 6 Function/method decorators that provide timeout and retry logic.
7 """ 7 """
8 8
9 import functools 9 import functools
10 import sys 10 import sys
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 """ 109 """
110 def decorator(f): 110 def decorator(f):
111 get_timeout = lambda *a, **kw: kw.get('timeout', default_timeout) 111 get_timeout = lambda *a, **kw: kw.get('timeout', default_timeout)
112 get_retries = lambda *a, **kw: kw.get('retries', default_retries) 112 get_retries = lambda *a, **kw: kw.get('retries', default_retries)
113 return _TimeoutRetryWrapper(f, get_timeout, get_retries, pass_values=True) 113 return _TimeoutRetryWrapper(f, get_timeout, get_retries, pass_values=True)
114 return decorator 114 return decorator
115 115
116 116
117 def WithTimeoutAndRetriesFromInstance( 117 def WithTimeoutAndRetriesFromInstance(
118 default_timeout_name=DEFAULT_TIMEOUT_ATTR, 118 default_timeout_name=DEFAULT_TIMEOUT_ATTR,
119 default_retries_name=DEFAULT_RETRIES_ATTR): 119 default_retries_name=DEFAULT_RETRIES_ATTR,
120 min_default_timeout=None):
120 """Returns a decorator that handles timeouts and retries. 121 """Returns a decorator that handles timeouts and retries.
121 122
122 The provided |default_timeout_name| and |default_retries_name| are used to 123 The provided |default_timeout_name| and |default_retries_name| are used to
123 get the default timeout value and the default retries value from the object 124 get the default timeout value and the default retries value from the object
124 instance if timeout and retries values are not provided. 125 instance if timeout and retries values are not provided.
125 126
126 Note that this should only be used to decorate methods, not functions. 127 Note that this should only be used to decorate methods, not functions.
127 128
128 Args: 129 Args:
129 default_timeout_name: The name of the default timeout attribute of the 130 default_timeout_name: The name of the default timeout attribute of the
130 instance. 131 instance.
131 default_retries_name: The name of the default retries attribute of the 132 default_retries_name: The name of the default retries attribute of the
132 instance. 133 instance.
134 min_timeout: Miniumum timeout to be used when using instance timeout.
133 Returns: 135 Returns:
134 The actual decorator. 136 The actual decorator.
135 """ 137 """
136 def decorator(f): 138 def decorator(f):
137 def get_timeout(inst, *_args, **kwargs): 139 def get_timeout(inst, *_args, **kwargs):
138 return kwargs.get('timeout', getattr(inst, default_timeout_name)) 140 ret = getattr(inst, default_timeout_name)
141 if min_default_timeout is not None:
142 ret = max(min_default_timeout, ret)
143 return kwargs.get('timeout', ret)
139 def get_retries(inst, *_args, **kwargs): 144 def get_retries(inst, *_args, **kwargs):
140 return kwargs.get('retries', getattr(inst, default_retries_name)) 145 return kwargs.get('retries', getattr(inst, default_retries_name))
141 return _TimeoutRetryWrapper(f, get_timeout, get_retries, pass_values=True) 146 return _TimeoutRetryWrapper(f, get_timeout, get_retries, pass_values=True)
142 return decorator 147 return decorator
143 148
OLDNEW
« no previous file with comments | « no previous file | build/android/devil/android/decorators_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698