def divide_and_put_data(self, put_func, contents, *args, **kwargs): chunk_size = DEFAULT_MAX_CHUNK_SIZE copy_contents = copy.copy(contents) serial_id = 0 is_last = False request_id = str(uuid.uuid4()) while True: num_contents = len(copy_contents) if num_contents == 0: return try: count = num_contents / chunk_size if num_contents % chunk_size != 0: count += 1 for num in range(0, count): params = dict() if num == count-1: is_last = True if count > 1: hapcommon.insert_divide_info_to_params(params, serial_id, is_last, request_id) chunk_contents = copy_contents[0: chunk_size] put_func(chunk_contents, params, *args, **kwargs) serial_id += 1 del copy_contents[0: chunk_size] except OverCapacity: chunk_size = chunk_size * 3 / 4 continue
def test_insert_divide_info_to_params(self): expect_params = {"divideInfo": {"isLast": True, "serialId": 110, "requestId": "test_id"}} test_params = dict() hapcommon.insert_divide_info_to_params(test_params, 110, True, "test_id") self.assertEquals(test_params["divideInfo"]["isLast"], expect_params["divideInfo"]["isLast"]) self.assertEquals(test_params["divideInfo"]["serialId"], expect_params["divideInfo"]["serialId"]) self.assertEquals(test_params["divideInfo"]["requestId"], expect_params["divideInfo"]["requestId"])
def test_insert_divide_info_to_params(self): expect_params = { "divideInfo": { "isLast": True, "serialId": 110, "requestId": "test_id" } } test_params = dict() hapcommon.insert_divide_info_to_params(test_params, 110, True, "test_id") self.assertEquals(test_params["divideInfo"]["isLast"], expect_params["divideInfo"]["isLast"]) self.assertEquals(test_params["divideInfo"]["serialId"], expect_params["divideInfo"]["serialId"]) self.assertEquals(test_params["divideInfo"]["requestId"], expect_params["divideInfo"]["requestId"])
def divide_and_put_data(self, put_func, contents, put_empty_contents=False, *args, **kwargs): if put_empty_contents and len(contents) == 0: put_func([], dict(), *args, **kwargs) return chunk_size = DEFAULT_MAX_CHUNK_SIZE copy_contents = copy.copy(contents) serial_id = 0 is_last = False request_id = str(uuid.uuid4()) while True: num_contents = len(copy_contents) if num_contents == 0: return try: count = num_contents / chunk_size if num_contents % chunk_size != 0: count += 1 for num in range(0, count): params = dict() if num == count - 1: is_last = True if count > 1: hapcommon.insert_divide_info_to_params( params, serial_id, is_last, request_id) chunk_contents = copy_contents[0:chunk_size] put_func(chunk_contents, params, *args, **kwargs) serial_id += 1 del copy_contents[0:chunk_size] except OverCapacity: chunk_size = chunk_size * 3 / 4 continue