2019-07-30 23:15:56 +08:00
|
|
|
import sys
|
2018-08-27 02:12:31 +08:00
|
|
|
import time
|
|
|
|
|
2019-07-30 23:15:56 +08:00
|
|
|
import pytest
|
|
|
|
|
2018-08-27 02:12:31 +08:00
|
|
|
import mmcv
|
|
|
|
|
2019-07-30 23:15:56 +08:00
|
|
|
if sys.version_info[0] == 2:
|
|
|
|
pytest.skip('skipping tests for python 2', allow_module_level=True)
|
|
|
|
|
2018-08-27 02:12:31 +08:00
|
|
|
|
|
|
|
class TestProgressBar(object):
|
|
|
|
|
|
|
|
def test_start(self, capsys):
|
|
|
|
bar_width = 20
|
|
|
|
# without total task num
|
|
|
|
prog_bar = mmcv.ProgressBar(bar_width=bar_width)
|
|
|
|
out, _ = capsys.readouterr()
|
|
|
|
assert out == 'completed: 0, elapsed: 0s'
|
|
|
|
prog_bar = mmcv.ProgressBar(bar_width=bar_width, start=False)
|
|
|
|
out, _ = capsys.readouterr()
|
|
|
|
assert out == ''
|
|
|
|
prog_bar.start()
|
|
|
|
out, _ = capsys.readouterr()
|
|
|
|
assert out == 'completed: 0, elapsed: 0s'
|
|
|
|
# with total task num
|
|
|
|
prog_bar = mmcv.ProgressBar(10, bar_width=bar_width)
|
|
|
|
out, _ = capsys.readouterr()
|
|
|
|
assert out == '[{}] 0/10, elapsed: 0s, ETA:'.format(' ' * bar_width)
|
|
|
|
prog_bar = mmcv.ProgressBar(10, bar_width=bar_width, start=False)
|
|
|
|
out, _ = capsys.readouterr()
|
|
|
|
assert out == ''
|
|
|
|
prog_bar.start()
|
|
|
|
out, _ = capsys.readouterr()
|
|
|
|
assert out == '[{}] 0/10, elapsed: 0s, ETA:'.format(' ' * bar_width)
|
|
|
|
|
|
|
|
def test_update(self, capsys):
|
|
|
|
bar_width = 20
|
|
|
|
# without total task num
|
|
|
|
prog_bar = mmcv.ProgressBar(bar_width=bar_width)
|
|
|
|
capsys.readouterr()
|
|
|
|
time.sleep(1)
|
|
|
|
prog_bar.update()
|
|
|
|
out, _ = capsys.readouterr()
|
|
|
|
assert out == 'completed: 1, elapsed: 1s, 1.0 tasks/s'
|
|
|
|
# with total task num
|
|
|
|
prog_bar = mmcv.ProgressBar(10, bar_width=bar_width)
|
|
|
|
capsys.readouterr()
|
|
|
|
time.sleep(1)
|
|
|
|
prog_bar.update()
|
|
|
|
out, _ = capsys.readouterr()
|
|
|
|
assert out == ('\r[{}] 1/10, 1.0 task/s, elapsed: 1s, ETA: 9s'.
|
|
|
|
format('>' * 2 + ' ' * 18))
|
|
|
|
|
|
|
|
|
|
|
|
def sleep_1s(num):
|
|
|
|
time.sleep(1)
|
|
|
|
return num
|
|
|
|
|
|
|
|
|
|
|
|
def test_track_progress_list(capsys):
|
|
|
|
|
|
|
|
ret = mmcv.track_progress(sleep_1s, [1, 2, 3], bar_width=3)
|
|
|
|
out, _ = capsys.readouterr()
|
|
|
|
assert out == ('[ ] 0/3, elapsed: 0s, ETA:'
|
|
|
|
'\r[> ] 1/3, 1.0 task/s, elapsed: 1s, ETA: 2s'
|
|
|
|
'\r[>> ] 2/3, 1.0 task/s, elapsed: 2s, ETA: 1s'
|
|
|
|
'\r[>>>] 3/3, 1.0 task/s, elapsed: 3s, ETA: 0s\n')
|
|
|
|
assert ret == [1, 2, 3]
|
|
|
|
|
|
|
|
|
|
|
|
def test_track_progress_iterator(capsys):
|
|
|
|
|
|
|
|
ret = mmcv.track_progress(
|
|
|
|
sleep_1s, ((i for i in [1, 2, 3]), 3), bar_width=3)
|
|
|
|
out, _ = capsys.readouterr()
|
|
|
|
assert out == ('[ ] 0/3, elapsed: 0s, ETA:'
|
|
|
|
'\r[> ] 1/3, 1.0 task/s, elapsed: 1s, ETA: 2s'
|
|
|
|
'\r[>> ] 2/3, 1.0 task/s, elapsed: 2s, ETA: 1s'
|
|
|
|
'\r[>>>] 3/3, 1.0 task/s, elapsed: 3s, ETA: 0s\n')
|
|
|
|
assert ret == [1, 2, 3]
|
|
|
|
|
|
|
|
|
|
|
|
def test_track_parallel_progress_list(capsys):
|
|
|
|
|
|
|
|
results = mmcv.track_parallel_progress(
|
|
|
|
sleep_1s, [1, 2, 3, 4], 2, bar_width=4)
|
|
|
|
out, _ = capsys.readouterr()
|
|
|
|
assert out == ('[ ] 0/4, elapsed: 0s, ETA:'
|
|
|
|
'\r[> ] 1/4, 1.0 task/s, elapsed: 1s, ETA: 3s'
|
|
|
|
'\r[>> ] 2/4, 2.0 task/s, elapsed: 1s, ETA: 1s'
|
|
|
|
'\r[>>> ] 3/4, 1.5 task/s, elapsed: 2s, ETA: 1s'
|
|
|
|
'\r[>>>>] 4/4, 2.0 task/s, elapsed: 2s, ETA: 0s\n')
|
|
|
|
assert results == [1, 2, 3, 4]
|
|
|
|
|
|
|
|
|
|
|
|
def test_track_parallel_progress_iterator(capsys):
|
|
|
|
|
|
|
|
results = mmcv.track_parallel_progress(
|
|
|
|
sleep_1s, ((i for i in [1, 2, 3, 4]), 4), 2, bar_width=4)
|
|
|
|
out, _ = capsys.readouterr()
|
|
|
|
assert out == ('[ ] 0/4, elapsed: 0s, ETA:'
|
|
|
|
'\r[> ] 1/4, 1.0 task/s, elapsed: 1s, ETA: 3s'
|
|
|
|
'\r[>> ] 2/4, 2.0 task/s, elapsed: 1s, ETA: 1s'
|
|
|
|
'\r[>>> ] 3/4, 1.5 task/s, elapsed: 2s, ETA: 1s'
|
|
|
|
'\r[>>>>] 4/4, 2.0 task/s, elapsed: 2s, ETA: 0s\n')
|
|
|
|
assert results == [1, 2, 3, 4]
|