Skip to content

Commit 67d6d43

Browse files
committed
Port testing to wolfSSL threading interface
1 parent ae90a9b commit 67d6d43

17 files changed

Lines changed: 593 additions & 566 deletions

File tree

examples/benchmark/tls_bench.c

Lines changed: 81 additions & 95 deletions
Large diffs are not rendered by default.

examples/client/client.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1765,7 +1765,7 @@ static int client_srtp_test(WOLFSSL *ssl, func_args *args)
17651765
size_t srtp_secret_length;
17661766
byte *srtp_secret, *p;
17671767
int ret;
1768-
#ifdef HAVE_PTHREAD
1768+
#ifdef WOLFSSL_COND
17691769
srtp_test_helper *srtp_helper = args->srtp_helper;
17701770
byte *other_secret = NULL;
17711771
size_t other_size = 0;
@@ -1799,7 +1799,7 @@ static int client_srtp_test(WOLFSSL *ssl, func_args *args)
17991799
printf("%02X", *p);
18001800
printf("\n");
18011801

1802-
#ifdef HAVE_PTHREAD
1802+
#ifdef WOLFSSL_COND
18031803
if (srtp_helper != NULL) {
18041804
srtp_helper_get_ekm(srtp_helper, &other_secret, &other_size);
18051805

@@ -1815,7 +1815,7 @@ static int client_srtp_test(WOLFSSL *ssl, func_args *args)
18151815
/* we are delegated from server to free this buffer */
18161816
XFREE(other_secret, NULL, DYNAMIC_TYPE_TMP_BUFFER);
18171817
}
1818-
#endif /* HAVE_PTHREAD */
1818+
#endif /* WOLFSSL_COND */
18191819

18201820
XFREE(srtp_secret, NULL, DYNAMIC_TYPE_TMP_BUFFER);
18211821

@@ -3983,7 +3983,7 @@ THREAD_RETURN WOLFSSL_THREAD client_test(void* args)
39833983
wolfSSL_CTX_free(ctx); ctx = NULL;
39843984

39853985
((func_args*)args)->return_code = 0;
3986-
return 0;
3986+
WOLFSSL_RETURN_FROM_THREAD(0);
39873987
}
39883988

39893989
#ifdef HAVE_ALPN
@@ -4559,9 +4559,7 @@ THREAD_RETURN WOLFSSL_THREAD client_test(void* args)
45594559
(void) useVerifyCb;
45604560
(void) customVerifyCert;
45614561

4562-
#if !defined(WOLFSSL_TIRTOS)
4563-
return 0;
4564-
#endif
4562+
WOLFSSL_RETURN_FROM_THREAD(0);
45654563
}
45664564

45674565
#endif /* !NO_WOLFSSL_CLIENT */
@@ -4577,7 +4575,7 @@ THREAD_RETURN WOLFSSL_THREAD client_test(void* args)
45774575

45784576
StartTCP();
45794577

4580-
#if defined(WOLFSSL_SRTP) && defined(HAVE_PTHREAD)
4578+
#if defined(WOLFSSL_SRTP) && defined(WOLFSSL_COND)
45814579
args.srtp_helper = NULL;
45824580
#endif
45834581
args.argc = argc;

examples/echoserver/echoserver.c

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,21 @@
6767

6868
static void SignalReady(void* args, word16 port)
6969
{
70-
#if defined(NO_MAIN_DRIVER) && defined(HAVE_PTHREAD)
70+
#if defined(NO_MAIN_DRIVER) && defined(WOLFSSL_COND)
7171
/* signal ready to tcp_accept */
7272
func_args* server_args = (func_args*)args;
7373
tcp_ready* ready = server_args->signal;
74-
PTHREAD_CHECK_RET(pthread_mutex_lock(&ready->mutex));
74+
THREAD_CHECK_RET(wc_LockMutex(&ready->mutex));
7575
ready->ready = 1;
7676
ready->port = port;
77-
PTHREAD_CHECK_RET(pthread_cond_signal(&ready->cond));
78-
PTHREAD_CHECK_RET(pthread_mutex_unlock(&ready->mutex));
79-
#endif /* NO_MAIN_DRIVER && HAVE_PTHREAD */
77+
#ifdef COND_NO_REQUIRE_LOCKED_MUTEX
78+
THREAD_CHECK_RET(wc_UnLockMutex(&ready->mutex));
79+
#endif
80+
THREAD_CHECK_RET(wolfSSL_CondSignal(&ready->cond));
81+
#ifndef COND_NO_REQUIRE_LOCKED_MUTEX
82+
THREAD_CHECK_RET(wc_UnLockMutex(&ready->mutex));
83+
#endif
84+
#endif /* NO_MAIN_DRIVER && WOLFSSL_COND */
8085
(void)args;
8186
(void)port;
8287
}
@@ -525,9 +530,7 @@ THREAD_RETURN WOLFSSL_THREAD echoserver_test(void* args)
525530
wolfAsync_DevClose(&devId);
526531
#endif
527532

528-
#ifndef WOLFSSL_TIRTOS
529-
return 0;
530-
#endif
533+
WOLFSSL_RETURN_FROM_THREAD(0);
531534
}
532535

533536
#endif /* !NO_WOLFSSL_SERVER */

examples/server/server.c

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1327,7 +1327,7 @@ static int server_srtp_test(WOLFSSL *ssl, func_args *args)
13271327
size_t srtp_secret_length;
13281328
byte *srtp_secret, *p;
13291329
int ret;
1330-
#ifdef HAVE_PTHREAD
1330+
#ifdef WOLFSSL_COND
13311331
srtp_test_helper *srtp_helper = args->srtp_helper;
13321332
#else
13331333
(void)args;
@@ -1359,15 +1359,15 @@ static int server_srtp_test(WOLFSSL *ssl, func_args *args)
13591359
printf("%02X", *p);
13601360
printf("\n");
13611361

1362-
#ifdef HAVE_PTHREAD
1362+
#ifdef WOLFSSL_COND
13631363
if (srtp_helper != NULL) {
13641364
srtp_helper_set_ekm(srtp_helper, srtp_secret, srtp_secret_length);
13651365

13661366
/* client code will free srtp_secret buffer after checking for
13671367
correctness */
13681368
return 0;
13691369
}
1370-
#endif /* HAVE_PTHREAD */
1370+
#endif /* WOLFSSL_COND */
13711371

13721372
XFREE(srtp_secret, NULL, DYNAMIC_TYPE_TMP_BUFFER);
13731373
return 0;
@@ -3822,9 +3822,7 @@ THREAD_RETURN WOLFSSL_THREAD server_test(void* args)
38223822
#if defined(WOLFSSL_CALLBACKS) && defined(WOLFSSL_EARLY_DATA)
38233823
(void) earlyData;
38243824
#endif
3825-
#ifndef WOLFSSL_TIRTOS
3826-
return 0;
3827-
#endif
3825+
WOLFSSL_RETURN_FROM_THREAD(0);
38283826
}
38293827

38303828
#endif /* !NO_WOLFSSL_SERVER */
@@ -3844,7 +3842,7 @@ THREAD_RETURN WOLFSSL_THREAD server_test(void* args)
38443842
args.argv = argv;
38453843
args.signal = &ready;
38463844
args.return_code = 0;
3847-
#if defined(WOLFSSL_SRTP) && defined(HAVE_PTHREAD)
3845+
#if defined(WOLFSSL_SRTP) && defined(WOLFSSL_COND)
38483846
args.srtp_helper = NULL;
38493847
#endif
38503848
InitTcpReady(&ready);

src/crl.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ int InitCRL(WOLFSSL_CRL* crl, WOLFSSL_CERT_MANAGER* cm)
7676
crl->mfd = WOLFSSL_CRL_MFD_INIT_VAL;
7777
crl->setup = 0; /* thread setup done predicate */
7878
if (wolfSSL_CondInit(&crl->cond) != 0) {
79-
WOLFSSL_MSG("Pthread condition init failed");
79+
WOLFSSL_MSG("thread condition init failed");
8080
return BAD_COND_E;
8181
}
8282
#endif
@@ -229,14 +229,14 @@ void FreeCRL(WOLFSSL_CRL* crl, int dynamic)
229229
WOLFSSL_MSG("stopping monitor thread");
230230
if (StopMonitor(crl->mfd) == 0) {
231231
if (wolfSSL_JoinThread(crl->tid) != 0)
232-
WOLFSSL_MSG("stop monitor failed in pthread_join");
232+
WOLFSSL_MSG("stop monitor failed in wolfSSL_JoinThread");
233233
}
234234
else {
235235
WOLFSSL_MSG("stop monitor failed");
236236
}
237237
}
238238
if (wolfSSL_CondFree(&crl->cond) != 0)
239-
WOLFSSL_MSG("pthread_cond_destroy failed in FreeCRL");
239+
WOLFSSL_MSG("wolfSSL_CondFree failed in FreeCRL");
240240
#endif
241241
wc_FreeMutex(&crl->crlLock);
242242
if (dynamic) /* free self */

tests/api.c

Lines changed: 19 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -6179,10 +6179,7 @@ static THREAD_RETURN WOLFSSL_THREAD test_server_nofail(void* args)
61796179
}
61806180
if (ctx == NULL) {
61816181
/* Release the wait for TCP ready. */
6182-
PTHREAD_CHECK_RET(pthread_mutex_lock(&opts->signal->mutex));
6183-
opts->signal->ready = 1;
6184-
PTHREAD_CHECK_RET(pthread_cond_signal(&opts->signal->cond));
6185-
PTHREAD_CHECK_RET(pthread_mutex_unlock(&opts->signal->mutex));
6182+
signal_ready(opts->signal);
61866183
goto done;
61876184
}
61886185

@@ -6446,9 +6443,7 @@ static THREAD_RETURN WOLFSSL_THREAD test_server_nofail(void* args)
64466443

64476444
wolfSSL_SetLoggingPrefix(NULL);
64486445

6449-
#ifndef WOLFSSL_TIRTOS
6450-
return 0;
6451-
#endif
6446+
WOLFSSL_RETURN_FROM_THREAD(0);
64526447
}
64536448

64546449
#if defined(OPENSSL_EXTRA) && !defined(NO_SESSION_CACHE) && \
@@ -6519,32 +6514,23 @@ static THREAD_RETURN WOLFSSL_THREAD test_server_loop(void* args)
65196514
!= WOLFSSL_SUCCESS) {
65206515
/*err_sys("can't load ca file, Please run from wolfSSL home dir");*/
65216516
/* Release the wait for TCP ready. */
6522-
PTHREAD_CHECK_RET(pthread_mutex_lock(&opts->signal->mutex));
6523-
opts->signal->ready = 1;
6524-
PTHREAD_CHECK_RET(pthread_cond_signal(&opts->signal->cond));
6525-
PTHREAD_CHECK_RET(pthread_mutex_unlock(&opts->signal->mutex));
6517+
signal_ready(opts->signal);
65266518
goto done;
65276519
}
65286520
if (!sharedCtx && wolfSSL_CTX_use_certificate_file(ctx, svrCertFile,
65296521
WOLFSSL_FILETYPE_PEM) != WOLFSSL_SUCCESS) {
65306522
/*err_sys("can't load server cert chain file, "
65316523
"Please run from wolfSSL home dir");*/
65326524
/* Release the wait for TCP ready. */
6533-
PTHREAD_CHECK_RET(pthread_mutex_lock(&opts->signal->mutex));
6534-
opts->signal->ready = 1;
6535-
PTHREAD_CHECK_RET(pthread_cond_signal(&opts->signal->cond));
6536-
PTHREAD_CHECK_RET(pthread_mutex_unlock(&opts->signal->mutex));
6525+
signal_ready(opts->signal);
65376526
goto done;
65386527
}
65396528
if (!sharedCtx && wolfSSL_CTX_use_PrivateKey_file(ctx, svrKeyFile,
65406529
WOLFSSL_FILETYPE_PEM) != WOLFSSL_SUCCESS) {
65416530
/*err_sys("can't load server key file, "
65426531
"Please run from wolfSSL home dir");*/
65436532
/* Release the wait for TCP ready. */
6544-
PTHREAD_CHECK_RET(pthread_mutex_lock(&opts->signal->mutex));
6545-
opts->signal->ready = 1;
6546-
PTHREAD_CHECK_RET(pthread_cond_signal(&opts->signal->cond));
6547-
PTHREAD_CHECK_RET(pthread_mutex_unlock(&opts->signal->mutex));
6533+
signal_ready(opts->signal);
65486534
goto done;
65496535
}
65506536
/* call ctx setup callback */
@@ -6555,33 +6541,23 @@ static THREAD_RETURN WOLFSSL_THREAD test_server_loop(void* args)
65556541
while (count != loop_count) {
65566542
ssl = wolfSSL_new(ctx);
65576543
if (ssl == NULL) {
6558-
/* Release the wait for TCP ready. */
6559-
PTHREAD_CHECK_RET(pthread_mutex_lock(&opts->signal->mutex));
6560-
opts->signal->ready = 1;
6561-
PTHREAD_CHECK_RET(pthread_cond_signal(&opts->signal->cond));
6562-
PTHREAD_CHECK_RET(pthread_mutex_unlock(&opts->signal->mutex));
6544+
signal_ready(opts->signal);
65636545
goto done;
65646546
}
65656547
if (sharedCtx && wolfSSL_use_certificate_file(ssl, svrCertFile,
65666548
WOLFSSL_FILETYPE_PEM) != WOLFSSL_SUCCESS) {
65676549
/*err_sys("can't load server cert chain file, "
65686550
"Please run from wolfSSL home dir");*/
65696551
/* Release the wait for TCP ready. */
6570-
PTHREAD_CHECK_RET(pthread_mutex_lock(&opts->signal->mutex));
6571-
opts->signal->ready = 1;
6572-
PTHREAD_CHECK_RET(pthread_cond_signal(&opts->signal->cond));
6573-
PTHREAD_CHECK_RET(pthread_mutex_unlock(&opts->signal->mutex));
6552+
signal_ready(opts->signal);
65746553
goto done;
65756554
}
65766555
if (sharedCtx && wolfSSL_use_PrivateKey_file(ssl, svrKeyFile,
65776556
WOLFSSL_FILETYPE_PEM) != WOLFSSL_SUCCESS) {
65786557
/*err_sys("can't load server key file, "
65796558
"Please run from wolfSSL home dir");*/
65806559
/* Release the wait for TCP ready. */
6581-
PTHREAD_CHECK_RET(pthread_mutex_lock(&opts->signal->mutex));
6582-
opts->signal->ready = 1;
6583-
PTHREAD_CHECK_RET(pthread_cond_signal(&opts->signal->cond));
6584-
PTHREAD_CHECK_RET(pthread_mutex_unlock(&opts->signal->mutex));
6560+
signal_ready(opts->signal);
65856561
goto done;
65866562
}
65876563

@@ -6666,9 +6642,7 @@ static THREAD_RETURN WOLFSSL_THREAD test_server_loop(void* args)
66666642
wc_ecc_fp_free(); /* free per thread cache */
66676643
#endif
66686644

6669-
#ifndef WOLFSSL_TIRTOS
6670-
return 0;
6671-
#endif
6645+
WOLFSSL_RETURN_FROM_THREAD(0);
66726646
}
66736647
#endif /* defined(OPENSSL_EXTRA) && !defined(NO_SESSION_CACHE) && !defined(WOLFSSL_TLS13) */
66746648

@@ -7498,9 +7472,7 @@ static THREAD_RETURN WOLFSSL_THREAD run_wolfssl_server(void* args)
74987472
wc_ecc_fp_free(); /* free per thread cache */
74997473
#endif
75007474

7501-
#ifndef WOLFSSL_TIRTOS
7502-
return 0;
7503-
#endif
7475+
WOLFSSL_RETURN_FROM_THREAD(0);
75047476
}
75057477

75067478
/* TLS Client for API unit testing - generic */
@@ -9455,11 +9427,7 @@ static THREAD_RETURN WOLFSSL_THREAD tls_export_server(void* args)
94559427

94569428
if (wolfSSL_write(ssl, msg, sizeof(msg)) != sizeof(msg)) {
94579429
/*err_sys("SSL_write failed");*/
9458-
#ifdef WOLFSSL_TIRTOS
9459-
return;
9460-
#else
9461-
return 0;
9462-
#endif
9430+
WOLFSSL_RETURN_FROM_THREAD(0);
94639431
}
94649432

94659433
#ifdef WOLFSSL_TIRTOS
@@ -9493,9 +9461,7 @@ static THREAD_RETURN WOLFSSL_THREAD tls_export_server(void* args)
94939461
#endif
94949462
#endif
94959463

9496-
#ifndef WOLFSSL_TIRTOS
9497-
return 0;
9498-
#endif
9464+
WOLFSSL_RETURN_FROM_THREAD(0);
94999465
}
95009466

95019467

@@ -34548,7 +34514,7 @@ static THREAD_RETURN WOLFSSL_THREAD server_task_ech(void* args)
3454834514
wc_ecc_fp_free();
3454934515
#endif
3455034516

34551-
return 0;
34517+
WOLFSSL_RETURN_FROM_THREAD(0);
3455234518
}
3455334519
#endif /* HAVE_ECH && WOLFSSL_TLS13 */
3455434520

@@ -38812,7 +38778,7 @@ static THREAD_RETURN WOLFSSL_THREAD test_logging(void* args)
3881238778
/* test that the 3 errors over the max were dropped */
3881338779
AssertIntEQ(errorCount, ERROR_QUEUE_MAX);
3881438780

38815-
return 0;
38781+
WOLFSSL_RETURN_FROM_THREAD(0);
3881638782
}
3881738783
#endif
3881838784

@@ -40770,7 +40736,7 @@ static THREAD_RETURN WOLFSSL_THREAD test_wolfSSL_BIO_accept_client(void* args)
4077040736
wc_ecc_fp_free(); /* free per thread cache */
4077140737
#endif
4077240738

40773-
return 0;
40739+
WOLFSSL_RETURN_FROM_THREAD(0);
4077440740
}
4077540741
#endif
4077640742

@@ -58999,7 +58965,7 @@ static THREAD_RETURN WOLFSSL_THREAD SSL_read_test_server_thread(void* args)
5899958965
int err = 0;
5900058966

5900158967
if (!args)
59002-
return 0;
58968+
WOLFSSL_RETURN_FROM_THREAD(0);
5900358969

5900458970
((func_args*)args)->return_code = TEST_FAIL;
5900558971

@@ -59115,9 +59081,7 @@ static THREAD_RETURN WOLFSSL_THREAD SSL_read_test_server_thread(void* args)
5911559081
#if defined(HAVE_ECC) && defined(FP_ECC) && defined(HAVE_THREAD_LS)
5911659082
wc_ecc_fp_free(); /* free per thread cache */
5911759083
#endif
59118-
#ifndef WOLFSSL_TIRTOS
59119-
return 0;
59120-
#endif
59084+
WOLFSSL_RETURN_FROM_THREAD(0);
5912159085
}
5912259086
static THREAD_RETURN WOLFSSL_THREAD SSL_read_test_client_thread(void* args)
5912359087
{
@@ -59133,7 +59097,7 @@ static THREAD_RETURN WOLFSSL_THREAD SSL_read_test_client_thread(void* args)
5913359097
int ret, err;
5913459098

5913559099
if (!args)
59136-
return 0;
59100+
WOLFSSL_RETURN_FROM_THREAD(0);
5913759101

5913859102
((func_args*)args)->return_code = TEST_FAIL;
5913959103
callbacks = ((func_args*)args)->callbacks;
@@ -59192,9 +59156,7 @@ static THREAD_RETURN WOLFSSL_THREAD SSL_read_test_client_thread(void* args)
5919259156
#if defined(HAVE_ECC) && defined(FP_ECC) && defined(HAVE_THREAD_LS)
5919359157
wc_ecc_fp_free(); /* free per thread cache */
5919459158
#endif
59195-
#ifndef WOLFSSL_TIRTOS
59196-
return 0;
59197-
#endif
59159+
WOLFSSL_RETURN_FROM_THREAD(0);
5919859160
}
5919959161
#endif /* OPENSSL_EXTRA && WOLFSSL_ERROR_CODE_OPENSSL &&
5920059162
HAVE_IO_TESTS_DEPENDENCIES && !WOLFSSL_NO_TLS12 */

0 commit comments

Comments
 (0)