Skip to content

Commit e89cfa0

Browse files
author
DenverM80
committed
add test for >4gb object bulk_put
1 parent 1d33daf commit e89cfa0

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

test/bulk_put.cpp

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include <glib.h>
2020
#include <sys/stat.h>
2121
#include <boost/test/unit_test.hpp>
22+
#include <inttypes.h>
2223
#include "ds3.h"
2324
#include "ds3_net.h"
2425
#include "test.h"
@@ -228,7 +229,56 @@ BOOST_AUTO_TEST_CASE( put_utf_object_name ) {
228229
ds3_request_free(request);
229230
ds3_bulk_object_list_response_free(obj_list);
230231
handle_error(error);
232+
ds3_master_object_list_response_free(bulk_response);
233+
234+
clear_bucket(client, bucket_name);
235+
free_client(client);
236+
}
237+
238+
BOOST_AUTO_TEST_CASE( put_64bit_object_sizes ) {
239+
printf("-----Testing PUT objects with 64bit object sizes in name-------\n");
240+
241+
uint64_t test_objects_size = 429496729600; // 400gb > 32bit
242+
const char* bucket_name = "test_64_bit_object_sizes_bucket";
243+
ds3_request* request = NULL;
244+
ds3_master_object_list_response* bulk_response = NULL;
245+
246+
ds3_client* client = get_client();
247+
ds3_error* error = create_bucket_with_data_policy(client, bucket_name, ids.data_policy_id->value);
248+
249+
// Create obj_list with 1 folder with UTF-8 characters
250+
ds3_bulk_object_list_response* obj_list = ds3_init_bulk_object_list();
251+
GPtrArray* ds3_bulk_object_response_array = g_ptr_array_new();
252+
253+
ds3_bulk_object_response* obj1 = g_new0(ds3_bulk_object_response, 1);
254+
obj1->name = ds3_str_init("max_size_obj_1");
255+
obj1->length = test_objects_size;
256+
g_ptr_array_add(ds3_bulk_object_response_array, obj1);
257+
ds3_bulk_object_response* obj2 = g_new0(ds3_bulk_object_response, 1);
258+
obj2->name = ds3_str_init("max_size_obj_2");
259+
obj2->length = test_objects_size;
260+
g_ptr_array_add(ds3_bulk_object_response_array, obj2);
261+
262+
obj_list->objects = (ds3_bulk_object_response**)ds3_bulk_object_response_array->pdata;
263+
obj_list->num_objects = ds3_bulk_object_response_array->len;
264+
g_ptr_array_free(ds3_bulk_object_response_array, FALSE);
265+
266+
request = ds3_init_put_bulk_job_spectra_s3_request(bucket_name, obj_list);
267+
error = ds3_put_bulk_job_spectra_s3_request(client, request, &bulk_response);
268+
ds3_request_free(request);
269+
ds3_bulk_object_list_response_free(obj_list);
270+
handle_error(error);
271+
272+
BOOST_CHECK_EQUAL(bulk_response->num_objects, 14);
231273

274+
BOOST_CHECK_EQUAL(bulk_response->objects[0]->objects[0]->length, 68719476736);
275+
BOOST_CHECK_EQUAL(bulk_response->objects[0]->objects[0]->offset, 0);
276+
277+
BOOST_CHECK_EQUAL(bulk_response->objects[13]->objects[0]->length, 17179869184);
278+
BOOST_CHECK_EQUAL(bulk_response->objects[13]->objects[0]->offset, 412316860416);
279+
280+
ds3_master_object_list_response_free(bulk_response);
232281
clear_bucket(client, bucket_name);
233282
free_client(client);
234283
}
284+

0 commit comments

Comments
 (0)