From ce5813a53eda0f1d1512f6c080e6c4ed95179089 Mon Sep 17 00:00:00 2001 From: Brett Smith Date: Thu, 29 May 2014 08:55:25 -0400 Subject: [PATCH] 2752: arv-put displays progress quickly after resuming. Refs #2752. --- sdk/python/arvados/commands/put.py | 9 ++++++--- sdk/python/tests/test_arv-put.py | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/sdk/python/arvados/commands/put.py b/sdk/python/arvados/commands/put.py index d67cf8494b..1ccf786114 100644 --- a/sdk/python/arvados/commands/put.py +++ b/sdk/python/arvados/commands/put.py @@ -226,7 +226,10 @@ class ArvPutCollectionWriter(arvados.ResumableCollectionWriter): def __init__(self, cache=None, reporter=None, bytes_expected=None): self.bytes_written = 0 self.cache = cache - self.report_func = reporter + if reporter is None: + self.report_progress = lambda bytes_w, bytes_e: None + else: + self.report_progress = reporter self.bytes_expected = bytes_expected super(ArvPutCollectionWriter, self).__init__() @@ -244,6 +247,7 @@ class ArvPutCollectionWriter(arvados.ResumableCollectionWriter): def preresume_hook(self): print >>sys.stderr, "arv-put: Resuming previous upload. Bypass with the --no-resume option." + self.report_progress(self.bytes_written, self.bytes_expected) def checkpoint_state(self): if self.cache is None: @@ -261,8 +265,7 @@ class ArvPutCollectionWriter(arvados.ResumableCollectionWriter): bytes_buffered = self._data_buffer_len super(ArvPutCollectionWriter, self).flush_data() self.bytes_written += (bytes_buffered - self._data_buffer_len) - if self.report_func is not None: - self.report_func(self.bytes_written, self.bytes_expected) + self.report_progress(self.bytes_written, self.bytes_expected) def expected_bytes_for(pathlist): diff --git a/sdk/python/tests/test_arv-put.py b/sdk/python/tests/test_arv-put.py index 4b7dc89e0b..9623923dad 100644 --- a/sdk/python/tests/test_arv-put.py +++ b/sdk/python/tests/test_arv-put.py @@ -263,10 +263,11 @@ class ArvadosPutCollectionWriterTest(ArvadosKeepLocalStoreTestCase): cwriter.finish_current_stream() cwriter.checkpoint_state() # Restore a writer from that state and check its progress report. + # We're also checking that progress is reported immediately after + # resuming. progression, reporter = self.make_progress_tester() new_writer = arv_put.ArvPutCollectionWriter.from_cache( self.cache, reporter, bytes_expected=4) - new_writer.flush_data() self.assertIn((4, 4), progression) -- 2.30.2