mySQL 5.0.11 sources for tomato
[tomato.git] / release / src / router / mysql / extra / yassl / testsuite / input
blobd16cbc407501a600440df91a0ead6218f192ac16
1 // testsuite.cpp
3 #include "test.hpp"
4 #include "md5.hpp"
6 typedef unsigned char byte;
8 void taocrypt_test(void*);
9 void file_test(char*, byte*);
11 void client_test(void*);
12 void echoclient_test(void*);
14 THREAD_RETURN YASSL_API server_test(void*);
15 THREAD_RETURN YASSL_API echoserver_test(void*);
17 int main(int argc, char** argv)
19     func_args args(argc, argv);
20     func_args server_args(args);
22     // *** Crypto Test ***
23     taocrypt_test(&args);
24     assert(args.return_code == 0);
25     
26     
27     // *** Simple yaSSL client server test ***
28     THREAD_TYPE thread;
30     start_thread(server_test, &server_args, &thread);
31     client_test(&args);
33     assert(args.return_code == 0);
34     join_thread(thread);
35     assert(server_args.return_code == 0);
36     
38     // *** Echo input yaSSL client server test ***
39     start_thread(echoserver_test, &server_args, &thread);
40     func_args echo_args;
42             // setup args
43     echo_args.argc = 3;
44     echo_args.argv = new char*[echo_args.argc];
45     for (int i = 0; i < echo_args.argc; i++)
46         echo_args.argv[i] = new char[32];
47    
48     strcpy(echo_args.argv[0], "echoclient");
49     strcpy(echo_args.argv[1], "input");
50     strcpy(echo_args.argv[2], "output");
51     remove("output");
53             // make sure OK
54     echoclient_test(&echo_args);
55     assert(echo_args.return_code == 0);
58     // *** Echo quit yaSSL client server test ***
59     echo_args.argc = 2;
60     strcpy(echo_args.argv[1], "quit");
62     echoclient_test(&echo_args);
63     assert(echo_args.return_code == 0);
64     join_thread(thread);
65     assert(server_args.return_code == 0);
68             // input output compare
69     byte input[TaoCrypt::MD5::DIGEST_SIZE];
70     byte output[TaoCrypt::MD5::DIGEST_SIZE];
71     file_test("input", input);
72     file_test("output", output);
73     assert(memcmp(input, output, sizeof(input)) == 0);
75     printf("\nAll tests passed!\n");
77     // cleanup
78     for (int j = echo_args.argc; j >= 0; j--)
79         delete[] echo_args.argv[j];
80     delete[] echo_args.argv;
82     return 0;
87 void start_thread(THREAD_FUNC fun, func_args* args, THREAD_TYPE* thread)
89 #ifdef _WIN32
90     *thread = _beginthreadex(0, 0, fun, args, 0, 0);
91 #else
92     pthread_create(thread, 0, fun, args);
93 #endif
97 void join_thread(THREAD_TYPE thread)
99 #ifdef _WIN32
100     int res = WaitForSingleObject(reinterpret_cast<HANDLE>(thread), INFINITE);
101     assert(res == WAIT_OBJECT_0);
102     res = CloseHandle(reinterpret_cast<HANDLE>(thread));
103     assert(res);
104 #else
105     pthread_join(thread, 0);
106 #endif