Skip to content

Commit 6eca625

Browse files
authored
Merge pull request #155 from DenverM80/3_2_fix_special_char_tests
Fix tests for PUT object with special chars
2 parents d477e30 + b8becbd commit 6eca625

File tree

3 files changed

+27
-18
lines changed

3 files changed

+27
-18
lines changed

src/ds3_net.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@ char* escape_url_extended(const char* url, const char** delimiters, uint32_t num
9393

9494
// Like escape_url but don't encode "/" or "+".
9595
char* escape_url_object_name(const char* url) {
96-
const char *delimiters[2]={"/","+"};
97-
return escape_url_extended(url, delimiters, 2);
96+
const char *delimiters[1]={"/"};
97+
return escape_url_extended(url, delimiters, 1);
9898
}
9999

100100
// Like escape_url but don't encode "=".

test/bulk_get.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ BOOST_AUTO_TEST_CASE( chunk_preference ) {
276276
ds3_master_object_list_response* chunk_response = NULL;
277277
bool retry_get;
278278

279-
ds3_client* client = get_client_at_loglvl(DS3_TRACE);
279+
ds3_client* client = get_client();
280280
const char* bucket_name = "test_chunk_preference_bucket";
281281

282282
printf("-----Testing Bulk GET with chunk_preference-------\n");
@@ -401,7 +401,7 @@ BOOST_AUTO_TEST_CASE( escape_urls ) {
401401
const char *delimiters[4] = {"or", "/", "@", "="};
402402
const char *strings_to_test[5] = {"some normal text", "/an/object/name", "bytes=0-255,300-400,550-800", "orqwerty/qwerty@qwerty=", "`1234567890-=~!@#$%^&*()_+[]\{}|;:,./<>?"};
403403
const char *object_name_results[5] = {"some%20normal%20text", "/an/object/name", "bytes%3D0-255%2C300-400%2C550-800", "orqwerty/qwerty%40qwerty%3D",
404-
"%601234567890-%3D~%21%40%23%24%25%5E%26%2A%28%29_+%5B%5D%7B%7D%7C%3B%3A%2C./%3C%3E%3F"};
404+
"%601234567890-%3D~%21%40%23%24%25%5E%26%2A%28%29_%2B%5B%5D%7B%7D%7C%3B%3A%2C./%3C%3E%3F"};
405405
const char *range_header_results[5] = {"some%20normal%20text", "%2Fan%2Fobject%2Fname", "bytes=0-255,300-400,550-800", "orqwerty%2Fqwerty%40qwerty=",
406406
"%601234567890-=~%21%40%23%24%25%5E%26%2A%28%29_%2B%5B%5D%7B%7D%7C%3B%3A,.%2F%3C%3E%3F"};
407407
const char *general_delimiter_results[5] = {"some%20normal%20text", "/an/object/name", "bytes=0-255%2C300-400%2C550-800", "orqwerty/qwerty@qwerty=",

test/search_tests.cpp

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include <stdio.h>
33
#include "ds3.h"
44
#include "test.h"
5+
#include <sys/stat.h>
56
#include <boost/test/unit_test.hpp>
67

78
BOOST_AUTO_TEST_CASE( get_all_objects ) {
@@ -118,31 +119,36 @@ BOOST_AUTO_TEST_CASE( get_one_objects ) {
118119
free_client(client);
119120
}
120121

121-
/* Disabling from nightly test until network timeout failure is resolved */
122-
/*
123122
BOOST_AUTO_TEST_CASE(get_objects_with_plus_query_param) {
124123
printf("-----Testing Search Object with +-------\n");
125124

126125
ds3_client* client = get_client();
127126
const char* bucket_name = "get_objects_with_plus_query_param";
128127
const char* plus_object = "Plus+Object";
128+
const char* local_file_to_put = "resources/beowulf.txt";
129+
struct stat file_info;
130+
memset(&file_info, 0, sizeof(struct stat));
131+
uint64_t file_size = 0;
129132

130133
ds3_error* bucket_error = create_bucket_with_data_policy(client, bucket_name, ids.data_policy_id->value);
131134
handle_error(bucket_error);
132135

133-
ds3_request* put_request = ds3_init_put_object_request(bucket_name, plus_object, 1024);
134-
FILE* obj_file = fopen("resources/beowulf.txt", "r");
136+
stat(local_file_to_put, &file_info);
137+
file_size = file_info.st_size;
138+
139+
ds3_request* put_request = ds3_init_put_object_request(bucket_name, plus_object, file_size);
140+
FILE* obj_file = fopen(local_file_to_put, "r");
135141

136142
ds3_error* error = ds3_put_object_request(client, put_request, obj_file, ds3_read_from_file);
137143
ds3_request_free(put_request);
138144
fclose(obj_file);
139145
handle_error(error);
140146

141-
ds3_request* get_obj_request = ds3_init_get_objects_spectra_s3_request();
147+
ds3_request* get_obj_request = ds3_init_get_objects_details_spectra_s3_request();
142148
ds3_request_set_bucket_id(get_obj_request, bucket_name);
143149
ds3_request_set_name(get_obj_request, plus_object);
144150
ds3_s3_object_list_response* objects_response = NULL;
145-
error = ds3_get_objects_spectra_s3_request(client, get_obj_request, &objects_response);
151+
error = ds3_get_objects_details_spectra_s3_request(client, get_obj_request, &objects_response);
146152
handle_error(error);
147153

148154
BOOST_CHECK_EQUAL(objects_response->num_s3_objects, 1);
@@ -155,33 +161,37 @@ BOOST_AUTO_TEST_CASE(get_objects_with_plus_query_param) {
155161
clear_bucket(client, bucket_name);
156162
free_client(client);
157163
}
158-
*/
159164

160-
/* Disabling from nightly test until network timeout failure is resolved */
161-
/*
162165
BOOST_AUTO_TEST_CASE(get_objects_with_special_chars_query_param) {
163166
printf("-----Testing Search Object with special char-------\n");
164167

165168
ds3_client* client = get_client();
166169
const char* bucket_name = "TestSpecialCharacterInObjectName";
167170
const char* special_char_object = "varsity1314/_projects/VARSITY 13-14/_versions/Varsity 13-14 (2015-10-05 1827)/_project/Trash/PCMAC HD.avb";
171+
const char* local_file_to_put = "resources/beowulf.txt";
172+
struct stat file_info;
173+
memset(&file_info, 0, sizeof(struct stat));
174+
uint64_t file_size = 0;
168175

169176
ds3_error* bucket_error = create_bucket_with_data_policy(client, bucket_name, ids.data_policy_id->value);
170177
handle_error(bucket_error);
171178

172-
ds3_request* put_request = ds3_init_put_object_request(bucket_name, special_char_object, 1024);
173-
FILE* obj_file = fopen("resources/beowulf.txt", "r");
179+
stat(local_file_to_put, &file_info);
180+
file_size = file_info.st_size;
181+
182+
ds3_request* put_request = ds3_init_put_object_request(bucket_name, special_char_object, file_size);
183+
FILE* obj_file = fopen(local_file_to_put, "r");
174184

175185
ds3_error* error = ds3_put_object_request(client, put_request, obj_file, ds3_read_from_file);
176186
ds3_request_free(put_request);
177187
fclose(obj_file);
178188
handle_error(error);
179189

180-
ds3_request* get_obj_request = ds3_init_get_objects_spectra_s3_request();
190+
ds3_request* get_obj_request = ds3_init_get_objects_details_spectra_s3_request();
181191
ds3_request_set_bucket_id(get_obj_request, bucket_name);
182192
ds3_request_set_name(get_obj_request, special_char_object);
183193
ds3_s3_object_list_response* objects_response = NULL;
184-
error = ds3_get_objects_spectra_s3_request(client, get_obj_request, &objects_response);
194+
error = ds3_get_objects_details_spectra_s3_request(client, get_obj_request, &objects_response);
185195
ds3_request_free(get_obj_request);
186196
handle_error(error);
187197

@@ -194,7 +204,6 @@ BOOST_AUTO_TEST_CASE(get_objects_with_special_chars_query_param) {
194204
clear_bucket(client, bucket_name);
195205
free_client(client);
196206
}
197-
*/
198207

199208
BOOST_AUTO_TEST_CASE( get_folder_and_objects ) {
200209
uint64_t num_objs;

0 commit comments

Comments
 (0)