Merge "Fix downloading from "marker" item"
This commit is contained in:
commit
ab636c1ee3
@ -883,7 +883,7 @@ class SwiftService(object):
|
||||
|
||||
@staticmethod
|
||||
def _list_container_job(conn, container, options, result_queue):
|
||||
marker = ''
|
||||
marker = options.get('marker', '')
|
||||
error = None
|
||||
try:
|
||||
while True:
|
||||
|
@ -203,7 +203,7 @@ def st_delete(parser, args, output_manager):
|
||||
output_manager.error(err.value)
|
||||
|
||||
|
||||
st_download_options = '''[--all] [--marker] [--prefix <prefix>]
|
||||
st_download_options = '''[--all] [--marker <marker>] [--prefix <prefix>]
|
||||
[--output <out_file>] [--output-dir <out_directory>]
|
||||
[--object-threads <threads>]
|
||||
[--container-threads <threads>] [--no-download]
|
||||
@ -225,7 +225,7 @@ Positional arguments:
|
||||
Optional arguments:
|
||||
-a, --all Indicates that you really want to download
|
||||
everything in the account.
|
||||
-m, --marker Marker to use when starting a container or account
|
||||
-m, --marker <marker> Marker to use when starting a container or account
|
||||
download.
|
||||
-p, --prefix <prefix> Only download items beginning with <prefix>
|
||||
-r, --remove-prefix An optional flag for --prefix <prefix>, use this
|
||||
|
@ -687,6 +687,41 @@ class TestServiceList(_TestServiceBase):
|
||||
self.assertEqual(expected_r_long, self._get_queue(mock_q))
|
||||
self.assertIsNone(self._get_queue(mock_q))
|
||||
|
||||
def test_list_container_marker(self):
|
||||
mock_q = Queue()
|
||||
mock_conn = self._get_mock_connection()
|
||||
|
||||
get_container_returns = [
|
||||
(None, [{'name': 'b'}, {'name': 'c'}]),
|
||||
(None, [])
|
||||
]
|
||||
mock_get_cont = Mock(side_effect=get_container_returns)
|
||||
mock_conn.get_container = mock_get_cont
|
||||
|
||||
expected_r = self._get_expected({
|
||||
'action': 'list_container_part',
|
||||
'container': 'test_c',
|
||||
'success': True,
|
||||
'listing': [{'name': 'b'}, {'name': 'c'}],
|
||||
'marker': 'b'
|
||||
})
|
||||
|
||||
_opts = self.opts.copy()
|
||||
_opts['marker'] = 'b'
|
||||
SwiftService._list_container_job(mock_conn, 'test_c', _opts, mock_q)
|
||||
|
||||
# This does not test if the marker is propagated, because we always
|
||||
# get the final call to the get_container with the final item 'c',
|
||||
# even if marker wasn't set. This test just makes sure the whole
|
||||
# stack works in a sane way.
|
||||
mock_kw = mock_get_cont.call_args[1]
|
||||
self.assertEqual(mock_kw['marker'], 'c')
|
||||
|
||||
# This tests that the lower levels get the marker delivered.
|
||||
self.assertEqual(expected_r, self._get_queue(mock_q))
|
||||
|
||||
self.assertIsNone(self._get_queue(mock_q))
|
||||
|
||||
def test_list_container_exception(self):
|
||||
mock_q = Queue()
|
||||
mock_conn = self._get_mock_connection()
|
||||
|
Loading…
x
Reference in New Issue
Block a user