2222#include < inttypes.h>
2323#include " ds3.h"
2424#include " ds3_net.h"
25+ #include " ds3_utils.h"
2526#include " test.h"
2627
27- struct check_ds3_test_directory_given {
28- return getenv(DS3_TEST_DIRECTORY) != NULL ;
28+ namespace utf = boost::unit_test;
29+
30+ bool check_ds3_test_directory_given () {
31+ return getenv (" DS3_TEST_DIRECTORY" ) != NULL ;
2932};
3033
31- BOOST_AUTO_TEST_CASE ( put_directory,
32- * boost::unit_test::precondition (check_ds3_test_directory_given)) {
34+ BOOST_AUTO_TEST_CASE ( put_directory) {
35+ // * boost::unit_test::precondition(check_ds3_test_directory_given)) {
3336 printf (" -----Testing PUT all objects in a directory-------\n " );
3437
3538 const char * dir_path = getenv (" DS3_TEST_DIRECTORY" );
3639 BOOST_CHECK (dir_path != NULL );
3740
3841 const char * bucket_name = " test_bulk_put_directory" ;
39-
40- ds3_request* request = NULL ;
41- ds3_master_object_list_response* bulk_response = NULL ;
42+ printf (" Putting all files in [%s] to bucket [%s]\n " , dir_path, bucket_name);
4243
4344 ds3_client* client = get_client ();
4445 int client_thread=1 ;
4546 ds3_client_register_logging (client, DS3_DEBUG, test_log, (void *)&client_thread); // Use DEBUG level logging
4647
4748 ds3_error* error = create_bucket_with_data_policy (client, bucket_name, ids.data_policy_id ->value );
4849
49- char ** objects_list;
50+ char * objects_list[ 100 ] ;
5051 uint64_t num_objs = 0 ;
5152 GDir* dir_info = g_dir_open (dir_path, 0 , NULL );
5253 for (char * current_obj = (char *)g_dir_read_name (dir_info); current_obj != NULL ; current_obj = (char *)g_dir_read_name (dir_info)) {
5354 objects_list[num_objs++] = current_obj;
55+ printf (" obj[%" PRIu64 " ][%s]\n " , num_objs, objects_list[num_objs-1 ]);
5456 }
5557
56- ds3_bulk_object_list_response* bulk_object_list = ds3_convert_object_list_from_strings ((const char **)objects_list, num_objs);
58+ ds3_bulk_object_list_response* bulk_object_list = ds3_convert_file_list_with_basepath ((const char **)objects_list, num_objs, dir_path );
5759
58- request = ds3_init_put_bulk_job_spectra_s3_request (bucket_name, bulk_object_list);
60+ ds3_request* request = ds3_init_put_bulk_job_spectra_s3_request (bucket_name, bulk_object_list);
5961 ds3_master_object_list_response* mol;
6062 error = ds3_put_bulk_job_spectra_s3_request (client, request, &mol);
6163 ds3_request_free (request);
6264 ds3_bulk_object_list_response_free (bulk_object_list);
6365 handle_error (error);
6466
67+ // Allocate cache
6568 ds3_master_object_list_response* chunks_list = ensure_available_chunks (client, mol->job_id );
6669
6770 // Use helper functions from test.cpp
68- GPtrArray* put_dir_args = new_put_chunks_threads_args (client, NULL , bucket_name, mol, chunks_list, 1 , True); // Last param indicates verbose logging in the spawned thread
71+ GPtrArray* put_dir_args = new_put_chunks_threads_args (client, NULL , dir_path, bucket_name, mol, chunks_list, 1 , True); // Last param indicates verbose logging in the spawned thread
6972
7073 // capture test start time
7174 struct timespec start_time_t , end_time_t ;
@@ -80,8 +83,9 @@ BOOST_AUTO_TEST_CASE( put_directory,
8083 // find elapsed CPU and real time
8184 clock_gettime (CLOCK_MONOTONIC, &end_time_t );
8285 elapsed_t = timespec_to_seconds (&end_time_t ) - timespec_to_seconds (&start_time_t );
83- ds3_log_message (client1 ->log , DS3_INFO, " Elapsed time[%f]" , elapsed_t );
86+ ds3_log_message (client ->log , DS3_INFO, " Elapsed time[%f]" , elapsed_t );
8487
88+ g_dir_close (dir_info);
8589 ds3_master_object_list_response_free (chunks_list);
8690 ds3_master_object_list_response_free (mol);
8791 put_chunks_threads_args_free (put_dir_args);
0 commit comments