2020#define URL_AUTHENTICATOR "http://snowflake.com/session/authenticator-request"
2121
2222void test_update_url_no_guid (void * * unused ) {
23+ SF_UNUSED (unused );
2324 char urlbuf [512 ];
2425 sf_sprintf (urlbuf , sizeof (urlbuf ), "%s" , URL_NO_GUID );
2526 RETRY_CONTEXT retry_ctx = {
@@ -36,6 +37,7 @@ void test_update_url_no_guid(void **unused) {
3637}
3738
3839void test_update_other_url_with_guid (void * * unused ) {
40+ SF_UNUSED (unused );
3941 char urlbuf [512 ];
4042 sf_sprintf (urlbuf , sizeof (urlbuf ), "%s" , URL_NON_QUERY_WITH_GUID );
4143 RETRY_CONTEXT retry_ctx = {
@@ -62,6 +64,7 @@ void test_update_other_url_with_guid(void **unused) {
6264}
6365
6466void test_update_query_url_with_retry_reason_disabled (void * * unused ) {
67+ SF_UNUSED (unused );
6568 char urlbuf [512 ];
6669 sf_sprintf (urlbuf , sizeof (urlbuf ), "%s" , URL_QUERY );
6770 RETRY_CONTEXT retry_ctx = {
@@ -138,6 +141,7 @@ void test_update_query_url_with_retry_reason_disabled(void **unused) {
138141}
139142
140143void test_update_query_url_with_retry_reason_enabled (void * * unused ) {
144+ SF_UNUSED (unused );
141145 char urlbuf [512 ];
142146 sf_sprintf (urlbuf , sizeof (urlbuf ), "%s" , URL_QUERY );
143147 RETRY_CONTEXT retry_ctx = {
@@ -205,6 +209,7 @@ void test_update_query_url_with_retry_reason_enabled(void **unused) {
205209}
206210
207211void test_new_retry_strategy (void * * unused ) {
212+ SF_UNUSED (unused );
208213 DECORRELATE_JITTER_BACKOFF djb = {
209214 SF_BACKOFF_BASE , //base
210215 SF_NEW_STRATEGY_BACKOFF_CAP //cap
@@ -218,7 +223,7 @@ void test_new_retry_strategy(void **unused) {
218223 sf_get_current_time_millis () // start time
219224 };
220225
221- uint32 error_codes [SF_MAX_RETRY ] = {429 , 503 , 403 , 408 , 400 , 538 , 525 };
226+ uint32 error_codes [SF_MAX_RETRY ] = {429 , 503 , 403 , 503 , 408 , 538 , 525 };
222227 uint32 backoff = SF_BACKOFF_BASE ;
223228 uint32 next_sleep_in_secs = 0 ;
224229 uint32 total_backoff = 0 ;
@@ -256,6 +261,7 @@ void test_new_retry_strategy(void **unused) {
256261}
257262
258263void test_retry_request_header (void * * unused ) {
264+ SF_UNUSED (unused );
259265 struct TESTCASE {
260266 const char * url ;
261267 sf_bool has_app_header ;
@@ -303,6 +309,29 @@ void test_retry_request_header(void **unused) {
303309 }
304310}
305311
312+ void test_retryable_http_code (void * * unused ) {
313+ SF_UNUSED (unused );
314+ struct TEST_CODE {
315+ uint32 code ;
316+ sf_bool retryable ;
317+ };
318+
319+ struct TEST_CODE cases [] = {
320+ { 400 , SF_BOOLEAN_FALSE },
321+ { 403 , SF_BOOLEAN_TRUE },
322+ { 404 , SF_BOOLEAN_FALSE },
323+ { 408 , SF_BOOLEAN_TRUE },
324+ { 429 , SF_BOOLEAN_TRUE },
325+ { 503 , SF_BOOLEAN_TRUE },
326+ { 600 , SF_BOOLEAN_FALSE },
327+ };
328+
329+ for (unsigned i = 0 ; i < sizeof (cases ) / sizeof (struct TEST_CODE ); i ++ )
330+ {
331+ assert_int_equal (is_retryable_http_code (cases [i ].code ), cases [i ].retryable );
332+ }
333+ }
334+
306335int main (void ) {
307336 const struct CMUnitTest tests [] = {
308337 cmocka_unit_test (test_update_url_no_guid ),
@@ -311,6 +340,7 @@ int main(void) {
311340 cmocka_unit_test (test_update_query_url_with_retry_reason_enabled ),
312341 cmocka_unit_test (test_new_retry_strategy ),
313342 cmocka_unit_test (test_retry_request_header ),
343+ cmocka_unit_test (test_retryable_http_code ),
314344 };
315345 return cmocka_run_group_tests (tests , NULL , NULL );
316346}
0 commit comments