xref: /haiku/src/tests/system/network/test1.c (revision 21258e2674226d6aa732321b6f8494841895af5f)
1 #include <stdio.h>
2 #include <kernel/OS.h>
3 #include <string.h>
4 #include <sys/time.h>
5 
6 #include "sys/socket.h"
7 #include "netinet/in.h"
8 #include "arpa/inet.h"
9 #include "sys/select.h"
10 
11 #define THREADS	2
12 #define TIME	10
13 
14 int32 test_thread(void *data)
15 {
16 	int tnum = *(int*)data;
17 	int sock = 0;
18 	uint32 num = 0;
19 	bigtime_t tn;
20 
21 	printf("Thread %d, starting test...\n", tnum + 1);
22 
23 	tn = real_time_clock();
24 
25 	while (real_time_clock() - tn <= TIME) {
26 		sock = socket(AF_INET, SOCK_DGRAM , 0);
27 		if (sock < 0) {
28 			printf("Failed! Socket could not be created.\n");
29 			printf("Error was %d [%s]\n", sock, strerror(sock));
30 			printf("This was after I had created %ld socket%s\n",
31 				num, num == 1 ? "" : "s");
32 			return -1;
33 		}
34 		closesocket(sock);
35 		num++;
36 	}
37 
38 	printf( "Thread %d:\n"
39 		"       sockets created : %5ld\n"
40 		"       test time       : %5d seconds\n"
41 		"       average         : %5ld sockets/sec\n",
42 		tnum + 1, num, TIME, num / TIME);
43 }
44 
45 #define TEST_PHRASE "Hello loopback!"
46 
47 int main(int argc, char **argv)
48 {
49 	thread_id t[THREADS];
50 	int i;
51 	status_t retval;
52 
53 	for (i=0;i<THREADS;i++) {
54 		t[i] = spawn_thread(test_thread, "socket test thread",
55 			B_NORMAL_PRIORITY, &i);
56 		if (t[i] >= 0)
57 			resume_thread(t[i]);
58 	}
59 
60 	for (i=0;i<THREADS;i++) {
61 		wait_for_thread(t[i], &retval);
62 	}
63 
64 	printf("Test complete.\n");
65 
66 	return (0);
67 }
68 
69 
70