]> rtime.felk.cvut.cz Git - frescor/fwp.git/blob - fwp/lib/core/tests/fwp_prototest/fwp_sendrecv_test1.c
Added support for contract negotiation
[frescor/fwp.git] / fwp / lib / core / tests / fwp_prototest / fwp_sendrecv_test1.c
1 /**
2  * \file fwp_sendrecv_test1.c  
3  *
4  * This a test application that:
5  * - creates two vres without negotiation
6  * - creates send and receive endpoint 
7  * - binds that endpoint to vres
8  * - sends two messages
9  * - receives messages
10  * - destroys vres
11  *
12  */
13 #define CONFIGURE_FWP_MNGT 0
14 #include "fwp_confdefs.h"
15 #include "fwp.h"
16
17 #include <errno.h>
18 #include <stdio.h>
19
20 int main()
21 {
22 //      struct sockaddr_in local_addr, rem_addr, from;
23         ssize_t len;
24         fwp_vres_d_t vres_d1, vres_d2;
25         int i;
26         struct fwp_vres_params vparam1, vparam2;
27         char msg1[] = "Hello1";
28         char msg2[] = "Hello2";
29         char buffer[30];
30         fwp_endpoint_d_t sepoint_d1, sepoint_d2, repoint_d1, repoint_d2;
31         fwp_endpoint_attr_t attr;
32         fwp_addr_t from;
33         
34         fwp_endpoint_attr_init(&attr);
35
36         vparam1.ac_id = FWP_AC_VO; 
37         vparam1.budget = 100;
38         vparam1.period.tv_sec = 2; 
39         vparam1.period.tv_nsec = 0; 
40
41         vparam2.ac_id = FWP_AC_BK; 
42         vparam2.budget = 100;
43         vparam2.period.tv_sec = 0;
44         vparam2.period.tv_nsec = 100000;
45
46         printf("Start\n");
47         fwp_init();
48         
49         printf("Create vres1, vres2\n");
50         if (fwp_vres_create(&vparam1, &vres_d1) < 0) {
51                 printf("Unable to create vres1\n");
52                 return -1;
53         }
54         printf("Vres1 created \n");
55         
56         if (fwp_vres_create(&vparam2, &vres_d2) < 0){
57                 fprintf(stderr,"Unable to create vres2\n");
58                 return -1;
59         }
60         printf("Vres2 created\n");
61         
62         /* local_addr should be handled when creating socket */
63         if (fwp_receive_endpoint_create(7777, &attr,&repoint_d1) < 0){
64                 return -1;
65         }
66         printf("Receive endpoint created\n");
67         
68         if (fwp_receive_endpoint_create(7778, &attr,&repoint_d2) < 0){
69                 return -1;
70         }
71         printf("Receive endpoint created\n");
72         
73         if (fwp_send_endpoint_create(inet_addr("127.0.0.1"), 7777, 0, 
74                                         &sepoint_d1) < 0) {
75                 return -1;
76         }
77         printf("Send endpoint 1 created\n");
78         fwp_send_endpoint_bind(sepoint_d1, vres_d1);
79         
80         if (fwp_send_endpoint_create(inet_addr("127.0.0.1"), 7778, 0, 
81                                         &sepoint_d2) < 0){
82                 return -1;
83         }
84         printf("Send endpoint 2 created\n");
85         fwp_send_endpoint_bind(sepoint_d2, vres_d2);
86         
87         fwp_send(sepoint_d1, msg1, sizeof(msg1), 0);
88         fwp_send(sepoint_d1, msg2, sizeof(msg2), 0);
89
90         for (i = 0; i < 2; i++) {
91                 if ((len = fwp_recv(repoint_d1, buffer, sizeof(buffer), &from, 
92                         0)) < 0) {
93                         perror("Error while receiving data");
94                         return -1;
95                 } 
96                         else printf("Received - %s\n", buffer);
97         }
98
99         if (fwp_vres_destroy(vres_d1) < 0) {
100                 perror("Unable to destroy vres1\n");
101                 return -1;
102         }
103         printf("Vres1 destroyed\n");
104         
105         if (fwp_vres_destroy(vres_d2) < 0){
106                 perror("Unable to destroy vres2\n");
107                 return -1;
108         }       
109         printf("Vres2 destroyed\n");
110
111         printf("Test PASSED!\n");
112         return 0;
113 }