comparison tests/test-progress.t @ 34312:d64c2c050b54

progress: demonstrate non-linear progress has a bad ETA experience Previously, the ETA and speed assumes the progress is linear. Often, due to network or other issues, it could be fast for the most time, and suddenly slow down: [====================================================> ] \___________________________________________/\______/ very fast suddenly much slower This patch adds a test demonstrating the ETA could be way off in those cases. Differential Revision: https://phab.mercurial-scm.org/D819
author Jun Wu <quark@fb.com>
date Tue, 26 Sep 2017 12:48:15 -0700
parents a37417e30a1f
children a667f0ca1d5f
comparison
equal deleted inserted replaced
34311:1826d695ad58 34312:d64c2c050b54
190 > import time 190 > import time
191 > 191 >
192 > class mocktime(object): 192 > class mocktime(object):
193 > def __init__(self, increment): 193 > def __init__(self, increment):
194 > self.time = 0 194 > self.time = 0
195 > self.increment = increment 195 > self.increment = [int(s) for s in increment.split()]
196 > self.pos = 0
196 > def __call__(self): 197 > def __call__(self):
197 > self.time += self.increment 198 > self.time += self.increment[self.pos % len(self.increment)]
199 > self.pos += 1
198 > return self.time 200 > return self.time
199 > 201 >
200 > def uisetup(ui): 202 > def uisetup(ui):
201 > time.time = mocktime(int(os.environ.get('MOCKTIME', '11'))) 203 > time.time = mocktime(os.environ.get('MOCKTIME', '11'))
202 > EOF 204 > EOF
203 205
204 $ cp $HGRCPATH.orig $HGRCPATH 206 $ cp $HGRCPATH.orig $HGRCPATH
205 $ echo "[extensions]" >> $HGRCPATH 207 $ echo "[extensions]" >> $HGRCPATH
206 $ echo "mocktime=`pwd`/mocktime.py" >> $HGRCPATH 208 $ echo "mocktime=`pwd`/mocktime.py" >> $HGRCPATH
242 \r (no-eol) (esc) 244 \r (no-eol) (esc)
243 loop [ ] 0/4\r (no-eol) (esc) 245 loop [ ] 0/4\r (no-eol) (esc)
244 loop [=========> ] 1/4 1y18w\r (no-eol) (esc) 246 loop [=========> ] 1/4 1y18w\r (no-eol) (esc)
245 loop [===================> ] 2/4 46w03d\r (no-eol) (esc) 247 loop [===================> ] 2/4 46w03d\r (no-eol) (esc)
246 loop [=============================> ] 3/4 23w02d\r (no-eol) (esc) 248 loop [=============================> ] 3/4 23w02d\r (no-eol) (esc)
249 \r (no-eol) (esc)
250
251 Non-linear progress:
252
253 $ MOCKTIME='20 20 20 20 20 20 20 20 20 20 500 500 500 500 500 20 20 20 20 20' hg -y loop 20
254 \r (no-eol) (esc)
255 loop [=> ] 1/20 6m21s\r (no-eol) (esc)
256 loop [===> ] 2/20 6m01s\r (no-eol) (esc)
257 loop [=====> ] 3/20 5m41s\r (no-eol) (esc)
258 loop [=======> ] 4/20 5m21s\r (no-eol) (esc)
259 loop [=========> ] 5/20 5m01s\r (no-eol) (esc)
260 loop [===========> ] 6/20 4m41s\r (no-eol) (esc)
261 loop [=============> ] 7/20 4m21s\r (no-eol) (esc)
262 loop [===============> ] 8/20 4m01s\r (no-eol) (esc)
263 loop [================> ] 9/20 13m27s\r (no-eol) (esc)
264 loop [==================> ] 10/20 19m21s\r (no-eol) (esc)
265 loop [====================> ] 11/20 22m39s\r (no-eol) (esc)
266 loop [======================> ] 12/20 24m01s\r (no-eol) (esc)
267 loop [========================> ] 13/20 23m53s\r (no-eol) (esc)
268 loop [==========================> ] 14/20 19m09s\r (no-eol) (esc)
269 loop [============================> ] 15/20 15m01s\r (no-eol) (esc)
270 loop [==============================> ] 16/20 11m21s\r (no-eol) (esc)
271 loop [=================================> ] 17/20 8m04s\r (no-eol) (esc)
272 loop [===================================> ] 18/20 5m07s\r (no-eol) (esc)
273 loop [=====================================> ] 19/20 2m27s\r (no-eol) (esc)
247 \r (no-eol) (esc) 274 \r (no-eol) (esc)
248 275
249 Time estimates should not fail when there's no end point: 276 Time estimates should not fail when there's no end point:
250 $ hg -y loop -- -4 277 $ hg -y loop -- -4
251 \r (no-eol) (esc) 278 \r (no-eol) (esc)