Пример #1
0
    def test_delete_blocks_with_references(self, finalize_status):
        # Create two files each consisting of 3 blocks of size 100 bytes
        file_ids = []
        for _ in range(2):
            response = self.simulate_post(self.get_files_path(self.vault_name),
                                          headers=self._hdrs)
            rel_url, querystring = relative_uri(
                self.srmock.headers_dict['Location'])
            file_ids.append(rel_url)
        block_list = self.helper_create_blocks(3, singleblocksize=True)

        offsets = [x * 100 for x in range(3)]
        data = list(zip(block_list, offsets))

        hdrs = {'content-type': 'application/x-deuce-block-list'}
        hdrs.update(self._hdrs)
        for file_id in file_ids:
            # assign blocks to file
            response = self.simulate_post(file_id + '/blocks',
                                          body=json.dumps(data),
                                          headers=hdrs)
            if finalize_status:
                # finalize file
                filelength = {'x-file-length': '300'}
                hdrs.update(filelength)
                response = self.simulate_post(file_id, headers=hdrs)

        for block in block_list:
            response = self.simulate_delete(self.get_block_path(
                self.vault_name, block),
                                            headers=self._hdrs)
            self.assertEqual(self.srmock.status, falcon.HTTP_409)
Пример #2
0
    def test_delete_blocks_with_references(self, finalize_status):
        # Create two files each consisting of 3 blocks of size 100 bytes
        file_ids = []
        for _ in range(2):
            response = self.simulate_post(self.get_files_path(self.vault_name),
                                          headers=self._hdrs)
            rel_url, querystring = relative_uri(
                self.srmock.headers_dict['Location'])
            file_ids.append(rel_url)
        block_list = self.helper_create_blocks(3, singleblocksize=True)

        offsets = [x * 100 for x in range(3)]
        data = list(zip(block_list, offsets))

        hdrs = {'content-type': 'application/x-deuce-block-list'}
        hdrs.update(self._hdrs)
        for file_id in file_ids:
            # assign blocks to file
            response = self.simulate_post(file_id + '/blocks',
                                          body=json.dumps(data), headers=hdrs)
            if finalize_status:
                # finalize file
                filelength = {'x-file-length': '300'}
                hdrs.update(filelength)
                response = self.simulate_post(file_id, headers=hdrs)

        for block in block_list:
            response = self.simulate_delete(
                self.get_block_path(self.vault_name, block),
                headers=self._hdrs)
            self.assertEqual(self.srmock.status, falcon.HTTP_409)
Пример #3
0
    def helper_get_blocks(self,
                          path,
                          marker,
                          limit,
                          assert_ret_url,
                          assert_data_len,
                          repeat=False,
                          exam_block_data=False):

        resp_block_list = []

        params = dict()

        if limit != 0:
            params['limit'] = limit

        if marker != 0:
            params['marker'] = marker

        while True:
            response = self.simulate_get(path,
                                         query_string=set_qs(path, params),
                                         headers=self._hdrs)

            next_batch = self.srmock.headers_dict.get("X-Next-Batch")
            if next_batch:
                next_batch_url, query_string = relative_uri(next_batch)
            else:
                next_batch_url = next_batch

            resp_block_list += json.loads(response[0].decode())
            self.assertIsInstance(json.loads(response[0].decode()), list)

            if not repeat:
                self.assertEqual(not next_batch_url, not assert_ret_url)
                self.assertEqual(len(resp_block_list), assert_data_len)
                for h in resp_block_list:
                    self.assertIn(h, self.block_list)
                if assert_data_len == -1 or \
                        assert_data_len == self.total_block_num:
                    for h in self.block_list:
                        self.assertIn(h, resp_block_list)
                if exam_block_data:
                    self.helper_exam_block_data(resp_block_list)
                return next_batch
            if not next_batch_url:
                break
            # TODO (TheSriram): Make finding marker more elegant
            for query in query_string.split('&'):
                if 'marker' in query:
                    current_marker = query.split('marker=')[1]
            params['marker'] = current_marker
        self.assertEqual(len(resp_block_list), assert_data_len)
        for h in resp_block_list:
            self.assertIn(h, self.block_list)
        for h in self.block_list:
            self.assertIn(h, resp_block_list)
        # By default exam blocks if fetching all blocks
        self.helper_exam_block_data(resp_block_list)
Пример #4
0
    def test_list_blocks_with_limit_marker(self):

        # Test with bad marker
        block_storage_path = self.get_storage_blocks_path(self.vault_name)
        block_marker = self.create_storage_block_id()
        marker = 'marker={0:}'.format(block_marker)

        response = self.simulate_get(self._block_storage_path,
                                     query_string=marker,
                                     headers=self._hdrs)
        self.assertEqual(self.srmock.status, falcon.HTTP_200)
        self.assertEqual(response[0].decode(), '[]')

        block_list, block_data = self.helper_create_blocks(num_blocks=40)
        storage_list = self.helper_store_blocks(self.vault_name, block_data)

        # Test with no marker
        response = self.simulate_get(self._block_storage_path,
                                     headers=self._hdrs)
        storage_ids = json.loads(response[0].decode())
        self.assertEqual(self.srmock.status, falcon.HTTP_200)

        # Test valid marker
        # Lets list from the second storage_id
        query_marker = storage_ids[0]

        marker = 'marker={0:}'.format(query_marker)
        response = self.simulate_get(self._block_storage_path,
                                     query_string=marker,
                                     headers=self._hdrs)
        responses = json.loads(response[0].decode())

        for resp in responses:
            resp_sha1, resp_uuid = resp.split('_')
            self.assertTrue(uuid.UUID(resp_uuid))
            self.assertIn(resp, storage_ids)

        # Test valid limit
        response = self.simulate_get(self._block_storage_path,
                                     query_string='limit=3',
                                     headers=self._hdrs)
        self.assertEqual(len(json.loads(response[0].decode())), 3)

        # Test valid marker with limit
        query_string = 'marker={0:}&limit={1:}'.format(query_marker, '2')
        response = self.simulate_get(self._block_storage_path,
                                     query_string=query_string,
                                     headers=self._hdrs)
        self.assertEqual(len(json.loads(response[0].decode())), 2)

        next_url, querystring = relative_uri(
            self.srmock.headers_dict['x-next-batch'])

        response = self.simulate_get(next_url,
                                     query_string=querystring,
                                     headers=self._hdrs)
        self.assertEqual(len(json.loads(response[0].decode())), 2)
Пример #5
0
    def test_list_blocks_with_limit_marker(self):

        # Test with bad marker
        block_storage_path = self.get_storage_blocks_path(self.vault_name)
        block_marker = self.create_storage_block_id()
        marker = 'marker={0:}'.format(block_marker)

        response = self.simulate_get(self._block_storage_path,
                                     query_string=marker,
                                     headers=self._hdrs)
        self.assertEqual(self.srmock.status, falcon.HTTP_200)
        self.assertEqual(response[0].decode(), '[]')

        block_list, block_data = self.helper_create_blocks(num_blocks=40)
        storage_list = self.helper_store_blocks(self.vault_name, block_data)

        # Test with no marker
        response = self.simulate_get(self._block_storage_path,
                                     headers=self._hdrs)
        storage_ids = json.loads(response[0].decode())
        self.assertEqual(self.srmock.status, falcon.HTTP_200)

        # Test valid marker
        # Lets list from the second storage_id
        query_marker = storage_ids[0]

        marker = 'marker={0:}'.format(query_marker)
        response = self.simulate_get(self._block_storage_path,
                                     query_string=marker,
                                     headers=self._hdrs)
        responses = json.loads(response[0].decode())

        for resp in responses:
            resp_sha1, resp_uuid = resp.split('_')
            self.assertTrue(uuid.UUID(resp_uuid))
            self.assertIn(resp, storage_ids)

        # Test valid limit
        response = self.simulate_get(self._block_storage_path,
                                     query_string='limit=3',
                                     headers=self._hdrs)
        self.assertEqual(len(json.loads(response[0].decode())), 3)

        # Test valid marker with limit
        query_string = 'marker={0:}&limit={1:}'.format(query_marker, '2')
        response = self.simulate_get(self._block_storage_path,
                                     query_string=query_string,
                                     headers=self._hdrs)
        self.assertEqual(len(json.loads(response[0].decode())), 2)

        next_url, querystring = relative_uri(
            self.srmock.headers_dict['x-next-batch'])

        response = self.simulate_get(next_url,
                                     query_string=querystring,
                                     headers=self._hdrs)
        self.assertEqual(len(json.loads(response[0].decode())), 2)
Пример #6
0
 def helper_create_files(self, num):
     hdrs = self._hdrs.copy()
     hdrs['x-file-length'] = '0'
     for cnt in range(0, num):
         response = self.simulate_post(self._files_path, headers=self._hdrs)
         file_path = self.srmock.headers_dict['Location']
         file_uri, querystring = relative_uri(file_path)
         response = self.simulate_post(file_uri, headers=hdrs)
         file_id = urlparse(file_path).path.split('/')[-1]
         self.file_list.append(file_id)
     return num
Пример #7
0
    def helper_get_blocks(self, path, marker, limit, assert_ret_url,
                          assert_data_len, repeat=False,
                          exam_block_data=False):

        resp_block_list = []

        params = dict()

        if limit != 0:
            params['limit'] = limit

        if marker != 0:
            params['marker'] = marker

        while True:
            response = self.simulate_get(path,
                                         query_string=set_qs(path, params),
                                         headers=self._hdrs)

            next_batch = self.srmock.headers_dict.get("X-Next-Batch")
            if next_batch:
                next_batch_url, query_string = relative_uri(next_batch)
            else:
                next_batch_url = next_batch

            resp_block_list += json.loads(response[0].decode())
            self.assertIsInstance(json.loads(response[0].decode()), list)

            if not repeat:
                self.assertEqual(not next_batch_url, not assert_ret_url)
                self.assertEqual(len(resp_block_list), assert_data_len)
                for h in resp_block_list:
                    self.assertIn(h, self.block_list)
                if assert_data_len == -1 or \
                        assert_data_len == self.total_block_num:
                    for h in self.block_list:
                        self.assertIn(h, resp_block_list)
                if exam_block_data:
                    self.helper_exam_block_data(resp_block_list)
                return next_batch
            if not next_batch_url:
                break
            # TODO (TheSriram): Make finding marker more elegant
            for query in query_string.split('&'):
                if 'marker' in query:
                    current_marker = query.split('marker=')[1]
            params['marker'] = current_marker
        self.assertEqual(len(resp_block_list), assert_data_len)
        for h in resp_block_list:
            self.assertIn(h, self.block_list)
        for h in self.block_list:
            self.assertIn(h, resp_block_list)
        # By default exam blocks if fetching all blocks
        self.helper_exam_block_data(resp_block_list)
Пример #8
0
 def helper_create_files(self, num):
     hdrs = self._hdrs.copy()
     hdrs['x-file-length'] = '0'
     for cnt in range(0, num):
         response = self.simulate_post(self._files_path, headers=self._hdrs)
         file_path = self.srmock.headers_dict['Location']
         file_uri, querystring = relative_uri(file_path)
         response = self.simulate_post(file_uri, headers=hdrs)
         file_id = urlparse(file_path).path.split('/')[-1]
         self.file_list.append(file_id)
     return num
Пример #9
0
    def helper_get_files(self, marker, limit, assert_return_url,
                         assert_data_len, repeat=False):

        resp_file_list = []

        params = dict()

        if limit is not None:
            params['limit'] = limit

        while True:
            response = self.simulate_get(self._files_path,
                                         query_string=set_qs(
                                             self._files_path,
                                             params),
                                         headers=self._hdrs)

            next_batch = self.srmock.headers_dict.get("X-Next-Batch")
            if next_batch:
                next_batch_url, query_string = relative_uri(next_batch)
            else:
                next_batch_url = next_batch

            resp_file_list += json.loads(response[0].decode())
            assert isinstance(json.loads(response[0].decode()), list)

            if not repeat:
                assert (not next_batch_url) == (not assert_return_url)
                assert len(resp_file_list) == assert_data_len
                for h in resp_file_list:
                    assert h in self.file_list
                if assert_data_len == -1 or \
                        assert_data_len == self.total_file_num:
                    for h in self.file_list:
                        assert h in resp_file_list
                return next_batch_url
            if not next_batch_url:
                break

            # TODO (TheSriram): Make finding marker more elegant
            for query in query_string.split('&'):
                if 'marker' in query:
                    current_marker = query.split('marker=')[1]
            params['marker'] = current_marker

        self.assertEqual(len(resp_file_list), assert_data_len)

        for h in resp_file_list:
            assert h in self.file_list
        for h in self.file_list:
            assert h in resp_file_list
Пример #10
0
    def helper_get_files(self, marker, limit, assert_return_url,
                         assert_data_len, repeat=False):

        resp_file_list = []

        params = dict()

        if limit is not None:
            params['limit'] = limit

        while True:
            response = self.simulate_get(self._files_path,
                                         query_string=set_qs(
                                             self._files_path,
                                             params),
                                         headers=self._hdrs)

            next_batch = self.srmock.headers_dict.get("X-Next-Batch")
            if next_batch:
                next_batch_url, query_string = relative_uri(next_batch)
            else:
                next_batch_url = next_batch

            resp_file_list += json.loads(response[0].decode())
            assert isinstance(json.loads(response[0].decode()), list)

            if not repeat:
                assert (not next_batch_url) == (not assert_return_url)
                assert len(resp_file_list) == assert_data_len
                for h in resp_file_list:
                    assert h in self.file_list
                if assert_data_len == -1 or \
                        assert_data_len == self.total_file_num:
                    for h in self.file_list:
                        assert h in resp_file_list
                return next_batch_url
            if not next_batch_url:
                break

            # TODO (TheSriram): Make finding marker more elegant
            for query in query_string.split('&'):
                if 'marker' in query:
                    current_marker = query.split('marker=')[1]
            params['marker'] = current_marker

        self.assertEqual(len(resp_file_list), assert_data_len)

        for h in resp_file_list:
            assert h in self.file_list
        for h in self.file_list:
            assert h in resp_file_list
Пример #11
0
    def test_vault_leaf(self):
        hdrs = self._hdrs
        vault_path = 'http://localhost/v1.0/vaults/'

        # Create an empty root path in the storage.
        self.helper_create_vault('vault_0', hdrs)
        self.helper_delete_vault('vault_0', hdrs)

        response = self.simulate_get('/v1.0/vaults/',
                                     headers=hdrs)
        self.assertEqual(str(response[0].decode()), str('{}'))

        # Prepare several vaults in the storage.
        for cnt in range(5):
            self.helper_create_vault('vault_{0}'.format(cnt), hdrs)

        # No limit nor marker

        response = self.simulate_get('/v1.0/vaults/',
                                     headers=hdrs)

        self.assertEqual(json.loads(response[0].decode()),
                         {"vault_3": {"url": vault_path + "vault_3"},
                          "vault_4": {"url": vault_path + "vault_4"},
                          "vault_2": {"url": vault_path + "vault_2"},
                          "vault_1": {"url": vault_path + "vault_1"},
                          "vault_0": {"url": vault_path + "vault_0"}}
                         )

        response = self.simulate_get('/v1.0/vaults/',
                                     query_string='marker=vault_0',
                                     headers=hdrs)
        self.assertEqual(json.loads(response[0].decode()),
                         {"vault_4": {"url": vault_path + "vault_4"},
                          "vault_2": {"url": vault_path + "vault_2"},
                          "vault_3": {"url": vault_path + "vault_3"},
                          "vault_0": {"url": vault_path + "vault_0"},
                          "vault_1": {"url": vault_path + "vault_1"}}
                         )

        # Only limit

        response = self.simulate_get('/v1.0/vaults/',
                                     query_string='limit=99',
                                     headers=hdrs)

        self.assertEqual(json.loads(response[0].decode()),
                         {"vault_4": {"url": vault_path + "vault_4"},
                          "vault_2": {"url": vault_path + "vault_2"},
                          "vault_3": {"url": vault_path + "vault_3"},
                          "vault_0": {"url": vault_path + "vault_0"},
                          "vault_1": {"url": vault_path + "vault_1"}}
                         )

        response = self.simulate_get('/v1.0/vaults/',
                                     query_string='limit=1',
                                     headers=hdrs)
        self.assertEqual(json.loads(response[0].decode()),
                         {"vault_0": {"url": vault_path + "vault_0"}}
                         )

        next_url = self.srmock.headers_dict["X-Next-Batch"]

        uri, querystring = relative_uri(next_url)
        new_querystring = querystring.replace('limit=1', 'limit=99')
        response = self.simulate_get(uri,
                                     query_string=new_querystring,
                                     headers=hdrs)

        self.assertEqual(json.loads(response[0].decode()),
                         {"vault_4": {"url": vault_path + "vault_4"},
                          "vault_2": {"url": vault_path + "vault_2"},
                          "vault_3": {"url": vault_path + "vault_3"},
                          "vault_1": {"url": vault_path + "vault_1"}}
                         )

        response = self.simulate_get(uri,
                                     query_string=querystring,
                                     headers=hdrs)
        self.assertEqual(json.loads(response[0].decode()),
                         {"vault_1": {"url": vault_path + "vault_1"}}
                         )

        response = self.simulate_get('/v1.0/vaults/',
                                     query_string='marker=vault_not_exists'
                                                  '&limit=99',
                                     headers=hdrs)
        self.assertEqual(str(response[0].decode()), str('{}'))

        # Cleanup
        for cnt in range(5):
            self.helper_delete_vault('vault_{0}'.format(cnt), hdrs)
Пример #12
0
    def helper_file_blocks_controller(self, file_id, hdrs):
        # Get blocks of a file.
        response = self.simulate_get(file_id + '/blocks', headers=hdrs)
        self.assertEqual(self.srmock.status, falcon.HTTP_200)
        next_batch = self.srmock.headers_dict.get("X-Next-Batch")
        if next_batch:
            next_batch_url, query_string = relative_uri(next_batch)
        else:
            next_batch_url = next_batch

        # vault does not exists
        response = self.simulate_get(self._NOT_EXIST_files_path +
                                     '/%s/blocks' % (file_id,),
                                     headers=self._hdrs)

        self.assertEqual(self.srmock.status, falcon.HTTP_404)

        # fileid does not exists
        nonexistent_fileid = self.create_file_id()
        response = self.simulate_get(self._files_path +
                                     '/%s/blocks' % (nonexistent_fileid),
                                     headers=self._hdrs)

        self.assertEqual(self.srmock.status, falcon.HTTP_404)

        # Get blocks of a file. with limit not zero

        response = self.simulate_get(file_id + '/blocks',
                                     query_string='limit=5', headers=hdrs)

        self.assertEqual(self.srmock.status, falcon.HTTP_200)

        next_batch = self.srmock.headers_dict.get("X-Next-Batch")
        if next_batch:
            next_batch_url, query_string = relative_uri(next_batch)
        else:
            next_batch_url = next_batch

        resp_block_list = []
        params = {'marker': 0}
        while True:
            response = self.simulate_get(file_id + '/blocks',
                                         query_string=set_qs(file_id, params),
                                         headers=self._hdrs)

            next_batch = self.srmock.headers_dict.get("X-Next-Batch")
            if next_batch:
                next_batch_url, query_string = relative_uri(next_batch)
            else:
                next_batch_url = next_batch
            resp_block_list += json.loads(response[0].decode())
            assert isinstance(json.loads(response[0].decode()), list)
            if not next_batch_url:
                break
            # TODO (TheSriram): Make finding marker more elegant
            for query in query_string.split('&'):
                if 'marker' in query:
                    current_marker = query.split('marker=')[1]
            params['marker'] = current_marker

        self.assertEqual(len(resp_block_list), 1.2 *
                         conf.api_configuration.default_returned_num)
Пример #13
0
    def test_vault_leaf(self):
        hdrs = self._hdrs
        vault_path = 'http://localhost/v1.0/vaults/'

        # Create an empty root path in the storage.
        self.helper_create_vault('vault_0', hdrs)
        self.helper_delete_vault('vault_0', hdrs)

        response = self.simulate_get('/v1.0/vaults/', headers=hdrs)
        self.assertEqual(str(response[0].decode()), str('{}'))

        # Prepare several vaults in the storage.
        for cnt in range(5):
            self.helper_create_vault('vault_{0}'.format(cnt), hdrs)

        # No limit nor marker

        response = self.simulate_get('/v1.0/vaults/', headers=hdrs)

        self.assertEqual(
            json.loads(response[0].decode()), {
                "vault_3": {
                    "url": vault_path + "vault_3"
                },
                "vault_4": {
                    "url": vault_path + "vault_4"
                },
                "vault_2": {
                    "url": vault_path + "vault_2"
                },
                "vault_1": {
                    "url": vault_path + "vault_1"
                },
                "vault_0": {
                    "url": vault_path + "vault_0"
                }
            })

        response = self.simulate_get('/v1.0/vaults/',
                                     query_string='marker=vault_0',
                                     headers=hdrs)
        self.assertEqual(
            json.loads(response[0].decode()), {
                "vault_4": {
                    "url": vault_path + "vault_4"
                },
                "vault_2": {
                    "url": vault_path + "vault_2"
                },
                "vault_3": {
                    "url": vault_path + "vault_3"
                },
                "vault_0": {
                    "url": vault_path + "vault_0"
                },
                "vault_1": {
                    "url": vault_path + "vault_1"
                }
            })

        # Only limit

        response = self.simulate_get('/v1.0/vaults/',
                                     query_string='limit=99',
                                     headers=hdrs)

        self.assertEqual(
            json.loads(response[0].decode()), {
                "vault_4": {
                    "url": vault_path + "vault_4"
                },
                "vault_2": {
                    "url": vault_path + "vault_2"
                },
                "vault_3": {
                    "url": vault_path + "vault_3"
                },
                "vault_0": {
                    "url": vault_path + "vault_0"
                },
                "vault_1": {
                    "url": vault_path + "vault_1"
                }
            })

        response = self.simulate_get('/v1.0/vaults/',
                                     query_string='limit=1',
                                     headers=hdrs)
        self.assertEqual(json.loads(response[0].decode()),
                         {"vault_0": {
                             "url": vault_path + "vault_0"
                         }})

        next_url = self.srmock.headers_dict["X-Next-Batch"]

        uri, querystring = relative_uri(next_url)
        new_querystring = querystring.replace('limit=1', 'limit=99')
        response = self.simulate_get(uri,
                                     query_string=new_querystring,
                                     headers=hdrs)

        self.assertEqual(
            json.loads(response[0].decode()), {
                "vault_4": {
                    "url": vault_path + "vault_4"
                },
                "vault_2": {
                    "url": vault_path + "vault_2"
                },
                "vault_3": {
                    "url": vault_path + "vault_3"
                },
                "vault_1": {
                    "url": vault_path + "vault_1"
                }
            })

        response = self.simulate_get(uri,
                                     query_string=querystring,
                                     headers=hdrs)
        self.assertEqual(json.loads(response[0].decode()),
                         {"vault_1": {
                             "url": vault_path + "vault_1"
                         }})

        response = self.simulate_get('/v1.0/vaults/',
                                     query_string='marker=vault_not_exists'
                                     '&limit=99',
                                     headers=hdrs)
        self.assertEqual(str(response[0].decode()), str('{}'))

        # Cleanup
        for cnt in range(5):
            self.helper_delete_vault('vault_{0}'.format(cnt), hdrs)
Пример #14
0
    def helper_file_blocks_controller(self, file_id, hdrs):
        # Get blocks of a file.
        response = self.simulate_get(file_id + '/blocks', headers=hdrs)
        self.assertEqual(self.srmock.status, falcon.HTTP_200)
        next_batch = self.srmock.headers_dict.get("X-Next-Batch")
        if next_batch:
            next_batch_url, query_string = relative_uri(next_batch)
        else:
            next_batch_url = next_batch

        # vault does not exists
        response = self.simulate_get(self._NOT_EXIST_files_path +
                                     '/%s/blocks' % (file_id,),
                                     headers=self._hdrs)

        self.assertEqual(self.srmock.status, falcon.HTTP_404)

        # fileid does not exists
        nonexistent_fileid = self.create_file_id()
        response = self.simulate_get(self._files_path +
                                     '/%s/blocks' % (nonexistent_fileid),
                                     headers=self._hdrs)

        self.assertEqual(self.srmock.status, falcon.HTTP_404)

        # Get blocks of a file. with limit not zero

        response = self.simulate_get(file_id + '/blocks',
                                     query_string='limit=5', headers=hdrs)

        self.assertEqual(self.srmock.status, falcon.HTTP_200)

        next_batch = self.srmock.headers_dict.get("X-Next-Batch")
        if next_batch:
            next_batch_url, query_string = relative_uri(next_batch)
        else:
            next_batch_url = next_batch

        resp_block_list = []
        params = {'marker': 0}
        while True:
            response = self.simulate_get(file_id + '/blocks',
                                         query_string=set_qs(file_id, params),
                                         headers=self._hdrs)

            next_batch = self.srmock.headers_dict.get("X-Next-Batch")
            if next_batch:
                next_batch_url, query_string = relative_uri(next_batch)
            else:
                next_batch_url = next_batch
            resp_block_list += json.loads(response[0].decode())
            assert isinstance(json.loads(response[0].decode()), list)
            if not next_batch_url:
                break
            # TODO (TheSriram): Make finding marker more elegant
            for query in query_string.split('&'):
                if 'marker' in query:
                    current_marker = query.split('marker=')[1]
            params['marker'] = current_marker

        self.assertEqual(len(resp_block_list), 1.2 *
                         conf.api_configuration.default_returned_num)