Mercurial > hg
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) |