Skip to content

Commit 5cafcef

Browse files
author
DenverM80
committed
WIP: disable all tests except put_directory; verified no memory leaks; need to tweak for multiple threads
1 parent 76871ec commit 5cafcef

File tree

4 files changed

+45
-26
lines changed

4 files changed

+45
-26
lines changed

test/CMakeLists.txt

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -64,19 +64,19 @@ else(WIN32) # POSIX
6464
endif(WIN32)
6565

6666
add_executable(ds3_c_tests
67-
bucket_tests.cpp
68-
bulk_get.cpp
69-
bulk_put.cpp
70-
checksum.cpp
71-
deletes_test.cpp
72-
get_physical_placement.cpp
73-
job_tests.cpp
74-
metadata_tests.cpp
75-
multimap_tests.cpp
76-
negative_tests.cpp
77-
search_tests.cpp
78-
service_tests.cpp
79-
connection_tests.cpp
67+
#bucket_tests.cpp
68+
#bulk_get.cpp
69+
#bulk_put.cpp
70+
#checksum.cpp
71+
#deletes_test.cpp
72+
#get_physical_placement.cpp
73+
#job_tests.cpp
74+
#metadata_tests.cpp
75+
#multimap_tests.cpp
76+
#negative_tests.cpp
77+
#search_tests.cpp
78+
#service_tests.cpp
79+
#connection_tests.cpp
8080
put_directory.cpp
8181
test.cpp)
8282

test/put_directory.cpp

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,50 +22,53 @@
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);

test/test.cpp

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,20 +469,30 @@ ds3_bulk_object_list_response* create_bulk_object_list_from_prefix_with_size(con
469469
return obj_list;
470470
}
471471

472+
/*
473+
* Provide *EITHER* src_obj_name *OR* src_dir, not both
474+
*/
472475
GPtrArray* new_put_chunks_threads_args(ds3_client* client,
473476
const char* src_obj_name,
477+
const char* src_dir,
474478
const char* dest_bucket_name,
475479
const ds3_master_object_list_response* bulk_response,
476480
ds3_master_object_list_response* available_chunks,
477481
const uint8_t num_threads,
478482
const ds3_bool verbose) {
483+
if (src_obj_name && src_dir) {
484+
printf("Error: provide new_put_chunks_threads_with_args() with either src_object_name or src_dir, not both\n");
485+
return NULL;
486+
}
487+
479488
GPtrArray* put_chunks_args_array = g_ptr_array_new();
480489

481490
for (uint8_t thread_index = 0; thread_index < num_threads; thread_index++) {
482491
put_chunks_args* put_objects_args = g_new0(put_chunks_args, 1);
483492
put_objects_args->client = client;
484493
put_objects_args->job_id = bulk_response->job_id->value;
485494
put_objects_args->src_object_name = (char*)src_obj_name;
495+
put_objects_args->src_dir = (char*)src_dir;
486496
put_objects_args->bucket_name = (char*)dest_bucket_name;
487497
put_objects_args->chunks_list = available_chunks;
488498
put_objects_args->thread_num = thread_index;
@@ -528,7 +538,10 @@ void put_chunks_from_file(void* args) {
528538
if (_args->src_object_name) {
529539
file = fopen(_args->src_object_name, "r");
530540
} else {
531-
file = fopen(object->name->value, "r");
541+
char* file_with_path = g_strconcat(_args->src_dir, object->name->value, (char*)NULL);
542+
printf(" opening file[%s]\n", file_with_path);
543+
file = fopen(file_with_path, "r");
544+
g_free(file_with_path);
532545
}
533546
if (object->offset != 0) {
534547
fseek(file, object->offset, SEEK_SET);

test/test.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ typedef struct {
9393
ds3_client* client;
9494
char* job_id;
9595
char* src_object_name;
96+
char* src_dir;
9697
char* bucket_name;
9798
ds3_master_object_list_response* chunks_list;
9899
ds3_bool verbose;
@@ -107,6 +108,7 @@ void test_log(const char* message, void* user_data);
107108
*/
108109
GPtrArray* new_put_chunks_threads_args(ds3_client* client,
109110
const char* src_obj_name,
111+
const char* src_dir,
110112
const char* dest_bucket_name,
111113
const ds3_master_object_list_response* bulk_response,
112114
ds3_master_object_list_response* available_chunks,

0 commit comments

Comments
 (0)