unit.c 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. /* unit.c unit tests driver */
  2. #ifdef HAVE_CONFIG_H
  3. #include <config.h>
  4. #endif
  5. #include <cyassl/ctaocrypt/settings.h>
  6. #include <stdio.h>
  7. #include <tests/unit.h>
  8. int myoptind = 0;
  9. char* myoptarg = NULL;
  10. int unit_test(int argc, char** argv);
  11. #ifndef NO_TESTSUITE_MAIN_DRIVER
  12. int main(int argc, char** argv)
  13. {
  14. return unit_test(argc, argv);
  15. }
  16. #endif
  17. int unit_test(int argc, char** argv)
  18. {
  19. int ret;
  20. (void)argc;
  21. (void)argv;
  22. printf("starting unit tests...\n");
  23. #ifdef HAVE_CAVIUM
  24. ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID);
  25. if (ret != 0)
  26. err_sys("Cavium OpenNitroxDevice failed");
  27. #endif /* HAVE_CAVIUM */
  28. #ifndef CYASSL_TIRTOS
  29. if (CurrentDir("tests") || CurrentDir("_build"))
  30. ChangeDirBack(1);
  31. else if (CurrentDir("Debug") || CurrentDir("Release"))
  32. ChangeDirBack(3);
  33. #endif
  34. ApiTest();
  35. if ( (ret = HashTest()) != 0){
  36. printf("hash test failed with %d\n", ret);
  37. return ret;
  38. }
  39. #ifndef SINGLE_THREADED
  40. if ( (ret = SuiteTest()) != 0){
  41. printf("suite test failed with %d\n", ret);
  42. return ret;
  43. }
  44. #endif
  45. #ifdef HAVE_CAVIUM
  46. CspShutdown(CAVIUM_DEV_ID);
  47. #endif
  48. return 0;
  49. }
  50. void wait_tcp_ready(func_args* args)
  51. {
  52. #ifdef SINGLE_THREADED
  53. (void)args;
  54. #elif defined(_POSIX_THREADS) && !defined(__MINGW32__)
  55. pthread_mutex_lock(&args->signal->mutex);
  56. if (!args->signal->ready)
  57. pthread_cond_wait(&args->signal->cond, &args->signal->mutex);
  58. args->signal->ready = 0; /* reset */
  59. pthread_mutex_unlock(&args->signal->mutex);
  60. #else
  61. (void)args;
  62. #endif
  63. }
  64. void start_thread(THREAD_FUNC fun, func_args* args, THREAD_TYPE* thread)
  65. {
  66. #ifdef SINGLE_THREADED
  67. (void)fun;
  68. (void)args;
  69. (void)thread;
  70. #elif defined(_POSIX_THREADS) && !defined(__MINGW32__)
  71. pthread_create(thread, 0, fun, args);
  72. return;
  73. #elif defined (CYASSL_TIRTOS)
  74. /* Initialize the defaults and set the parameters. */
  75. Task_Params taskParams;
  76. Task_Params_init(&taskParams);
  77. taskParams.arg0 = (UArg)args;
  78. taskParams.stackSize = 65535;
  79. *thread = Task_create((Task_FuncPtr)fun, &taskParams, NULL);
  80. if (*thread == NULL) {
  81. printf("Failed to create new Task\n");
  82. }
  83. Task_yield();
  84. #else
  85. *thread = (THREAD_TYPE)_beginthreadex(0, 0, fun, args, 0, 0);
  86. #endif
  87. }
  88. void join_thread(THREAD_TYPE thread)
  89. {
  90. #ifdef SINGLE_THREADED
  91. (void)thread;
  92. #elif defined(_POSIX_THREADS) && !defined(__MINGW32__)
  93. pthread_join(thread, 0);
  94. #elif defined (CYASSL_TIRTOS)
  95. while(1) {
  96. if (Task_getMode(thread) == Task_Mode_TERMINATED) {
  97. Task_sleep(5);
  98. break;
  99. }
  100. Task_yield();
  101. }
  102. #else
  103. int res = WaitForSingleObject((HANDLE)thread, INFINITE);
  104. assert(res == WAIT_OBJECT_0);
  105. res = CloseHandle((HANDLE)thread);
  106. assert(res);
  107. #endif
  108. }
  109. void InitTcpReady(tcp_ready* ready)
  110. {
  111. ready->ready = 0;
  112. ready->port = 0;
  113. #ifdef SINGLE_THREADED
  114. #elif defined(_POSIX_THREADS) && !defined(__MINGW32__)
  115. pthread_mutex_init(&ready->mutex, 0);
  116. pthread_cond_init(&ready->cond, 0);
  117. #endif
  118. }
  119. void FreeTcpReady(tcp_ready* ready)
  120. {
  121. #ifdef SINGLE_THREADED
  122. (void)ready;
  123. #elif defined(_POSIX_THREADS) && !defined(__MINGW32__)
  124. pthread_mutex_destroy(&ready->mutex);
  125. pthread_cond_destroy(&ready->cond);
  126. #else
  127. (void)ready;
  128. #endif
  129. }