Skip to content

Commit 536bf24

Browse files
author
DenverM80
committed
Add test for 2 clients to transfer 45mb x 100
1 parent 24c670d commit 536bf24

File tree

2 files changed

+67
-9
lines changed

2 files changed

+67
-9
lines changed

test/bulk_put.cpp

Lines changed: 67 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,6 @@ BOOST_AUTO_TEST_CASE( sequential_vs_parallel_xfer ) {
301301
const char* sequential_bucket_name = "test_bulk_put_sequential";
302302
const char* obj_name = "resources/ulysses_46mb.txt";
303303

304-
long start_time, end_time, elapsed_sequential, elapsed_parallel;
305304
struct timespec start_time_t, end_time_t;
306305
double elapsed_sequential_t, elapsed_parallel_t;
307306

@@ -324,7 +323,6 @@ BOOST_AUTO_TEST_CASE( sequential_vs_parallel_xfer ) {
324323
GPtrArray* put_sequential_objs_threads_array = new_put_chunks_threads_args(client, obj_name, sequential_bucket_name, mol, sequential_chunks, 1, False);
325324

326325
// capture sequential test start time
327-
start_time = clock();
328326
clock_gettime(CLOCK_MONOTONIC, &start_time_t);
329327

330328
GThread* xfer_sequential_thread = g_thread_new("sequential_objs_xfer", (GThreadFunc)put_chunks, g_ptr_array_index(put_sequential_objs_threads_array, 0));
@@ -333,10 +331,7 @@ BOOST_AUTO_TEST_CASE( sequential_vs_parallel_xfer ) {
333331
g_thread_join(xfer_sequential_thread);
334332

335333
// find elapsed CPU and real time
336-
end_time = clock();
337334
clock_gettime(CLOCK_MONOTONIC, &end_time_t);
338-
elapsed_sequential = (end_time - start_time) / CLOCKS_PER_SEC;
339-
printf(" Sequential CPU time[%ld]\n", elapsed_sequential);
340335
elapsed_sequential_t = _timespec_to_seconds(&end_time_t) - _timespec_to_seconds(&start_time_t);
341336
printf(" Sequential elapsed time[%f]\n", elapsed_sequential_t);
342337

@@ -362,7 +357,6 @@ BOOST_AUTO_TEST_CASE( sequential_vs_parallel_xfer ) {
362357
GPtrArray* put_parallel_objs_threads_array = new_put_chunks_threads_args(client, obj_name, parallel_bucket_name, mol, parallel_chunks, 4, False);
363358

364359
// capture sequential test start time
365-
start_time = clock();
366360
clock_gettime(CLOCK_MONOTONIC, &start_time_t);
367361

368362
GThread* xfer_parallel_thread_0 = g_thread_new("parallel_objs_xfer", (GThreadFunc)put_chunks, g_ptr_array_index(put_parallel_objs_threads_array, 0));
@@ -377,10 +371,7 @@ BOOST_AUTO_TEST_CASE( sequential_vs_parallel_xfer ) {
377371
g_thread_join(xfer_parallel_thread_3);
378372

379373
// find elapsed CPU and real time
380-
end_time = clock();
381374
clock_gettime(CLOCK_MONOTONIC, &end_time_t);
382-
elapsed_parallel = (end_time - start_time) / CLOCKS_PER_SEC;
383-
printf(" Parallel CPU time[%ld]\n", elapsed_parallel);
384375
elapsed_parallel_t = _timespec_to_seconds(&end_time_t) - _timespec_to_seconds(&start_time_t);
385376
printf(" Parallel elapsed time[%f]\n", elapsed_parallel_t);
386377

@@ -394,6 +385,73 @@ BOOST_AUTO_TEST_CASE( sequential_vs_parallel_xfer ) {
394385
free_client(client);
395386
}
396387

388+
BOOST_AUTO_TEST_CASE( multiple_client_xfer ) {
389+
printf("-----Testing BULK_PUT of objects from 2 clients in parallel-------\n");
390+
391+
const char* client1_bucket_name = "test_bulk_put_client1";
392+
const char* client2_bucket_name = "test_bulk_put_client2";
393+
const char* obj_name = "resources/ulysses_46mb.txt";
394+
395+
struct timespec start_time_t, end_time_t;
396+
double elapsed_t;
397+
398+
ds3_bulk_object_list_response* obj_list = create_bulk_object_list_single_file(obj_name, 100);
399+
ds3_client* client1 = get_client();
400+
ds3_client* client2 = get_client();
401+
ds3_master_object_list_response* mol1 = NULL;
402+
ds3_master_object_list_response* mol2 = NULL;
403+
ds3_request* request = NULL;
404+
405+
ds3_error* error = create_bucket_with_data_policy(client1, client1_bucket_name, ids.data_policy_id->value);
406+
handle_error(error);
407+
error = create_bucket_with_data_policy(client2, client2_bucket_name, ids.data_policy_id->value);
408+
handle_error(error);
409+
410+
request = ds3_init_put_bulk_job_spectra_s3_request(client1_bucket_name, obj_list);
411+
error = ds3_put_bulk_job_spectra_s3_request(client1, request, &mol1);
412+
ds3_request_free(request);
413+
handle_error(error);
414+
request = ds3_init_put_bulk_job_spectra_s3_request(client2_bucket_name, obj_list);
415+
error = ds3_put_bulk_job_spectra_s3_request(client2, request, &mol2);
416+
ds3_request_free(request);
417+
handle_error(error);
418+
419+
ds3_master_object_list_response* client1_chunks = ensure_available_chunks(client1, mol1->job_id);
420+
ds3_master_object_list_response* client2_chunks = ensure_available_chunks(client2, mol2->job_id);
421+
422+
GPtrArray* client1_put_objs_args = new_put_chunks_threads_args(client1, obj_name, client1_bucket_name, mol1, client1_chunks, 1, False);
423+
GPtrArray* client2_put_objs_args = new_put_chunks_threads_args(client2, obj_name, client2_bucket_name, mol2, client2_chunks, 1, False);
424+
425+
// capture sequential test start time
426+
clock_gettime(CLOCK_MONOTONIC, &start_time_t);
427+
428+
GThread* client1_xfer_thread = g_thread_new("client1_objs_xfer", (GThreadFunc)put_chunks, g_ptr_array_index(client1_put_objs_args, 0));
429+
GThread* client2_xfer_thread = g_thread_new("client2_objs_xfer", (GThreadFunc)put_chunks, g_ptr_array_index(client2_put_objs_args, 0));
430+
431+
// Block and cleanup GThreads
432+
g_thread_join(client1_xfer_thread);
433+
g_thread_join(client2_xfer_thread);
434+
435+
// find elapsed CPU and real time
436+
clock_gettime(CLOCK_MONOTONIC, &end_time_t);
437+
elapsed_t = _timespec_to_seconds(&end_time_t) - _timespec_to_seconds(&start_time_t);
438+
printf(" Elapsed time[%f]\n", elapsed_t);
439+
440+
ds3_master_object_list_response_free(client1_chunks);
441+
ds3_master_object_list_response_free(mol1);
442+
put_chunks_threads_args_free(client1_put_objs_args);
443+
clear_bucket(client1, client1_bucket_name);
444+
free_client(client1);
445+
446+
ds3_master_object_list_response_free(client2_chunks);
447+
ds3_master_object_list_response_free(mol2);
448+
put_chunks_threads_args_free(client2_put_objs_args);
449+
clear_bucket(client2, client2_bucket_name);
450+
free_client(client2);
451+
452+
ds3_bulk_object_list_response_free(obj_list);
453+
}
454+
397455
BOOST_AUTO_TEST_CASE( put_utf_object_name ) {
398456
printf("-----Testing PUT object with UTF Characters in name-------\n");
399457

test/search_tests.cpp

100755100644
File mode changed.

0 commit comments

Comments
 (0)