]> rtime.felk.cvut.cz Git - frescor/fna.git/blob - tests/tests_frescan/test_frescan_bwres_cancel_in_slave.c
4b4c5e22cd0afbf604879b974e2f51f41c013732
[frescor/fna.git] / tests / tests_frescan / test_frescan_bwres_cancel_in_slave.c
1 #include <stdio.h>  // perror
2 #include <stdlib.h> // exit
3 #include <unistd.h>   // sleep
4
5 #include "frescan.h"
6 #include "frescan_bwres.h"
7 #include "frescan_servers.h"
8
9 #define ERROR(s) {perror (s); exit (-1);}
10
11 #define NETWORK 0
12 #define LOCAL_NODE 1
13
14 int main ()
15 {
16         int ret;
17         frescan_init_params_t init_params;
18         frescan_ss_t ss1, ss2, ss3;
19         frescan_contract_t contract;
20         frescan_server_params_t server_params;
21         bool accepted;
22
23         init_params.net = NETWORK;
24         init_params.node = LOCAL_NODE;
25         init_params.tx_fp_max_prio = 10;
26         init_params.rx_num_of_channels = 10;
27         init_params.rx_channel_max_prio = NULL;
28
29         printf("Initializing FRESCAN\n");
30         ret = frescan_init(&init_params);
31         if (ret != 0) ERROR ("could not init FRESCAN");
32
33         printf("Initializing BWRES\n");
34         ret = frescan_bwres_init(NETWORK);
35         if (ret != 0) ERROR ("could not init BWRES");
36
37         contract.min_values.budget = 5;
38         contract.min_values.period.tv_sec = 3;
39         contract.min_values.period.tv_nsec = 0;
40         contract.prio = 5;
41
42         printf("Negotiating a contract 1\n");
43         ret = frescan_bwres_negotiate(NETWORK, &contract, &ss1, &accepted);
44         if (ret != 0) ERROR ("could not negotiate succesfully");
45
46         if (accepted) {
47                 printf("The contract was accepted, ss:%u\n", ss1);
48                 ret = frescan_servers_get_data(NETWORK, &server_params, ss1);
49                 if (ret != 0) ERROR ("could not get servers data");
50
51                 printf("B:%u, T=(%u,%u), P:%u\n",
52                        server_params.values.budget,
53                        server_params.values.period.tv_sec,
54                        server_params.values.period.tv_nsec,
55                        server_params.prio);
56         } else {
57                 printf("The contract was not accepted\n");
58         }
59
60         contract.min_values.budget = 6;
61         contract.min_values.period.tv_sec  = 2;
62         contract.min_values.period.tv_nsec = 6;
63         contract.prio = 4;
64
65         printf("Negotiating a contract 2\n");
66         ret = frescan_bwres_negotiate(NETWORK, &contract, &ss2, &accepted);
67         if (ret != 0) ERROR ("could not negotiate");
68
69         if (accepted) {
70                 printf("The contract was accepted, ss:%u\n", ss2);
71                 ret = frescan_servers_get_data(NETWORK, &server_params, ss2);
72                 if (ret != 0) ERROR ("could not get servers data");
73
74                 printf("B:%u, T=(%u,%u), P:%u\n",
75                        server_params.values.budget,
76                        server_params.values.period.tv_sec,
77                        server_params.values.period.tv_nsec,
78                        server_params.prio);
79         } else {
80                 printf("The contract was not accepted\n");
81         }
82
83         printf("cancelling contract for ss:%u\n", ss1);
84         ret = frescan_bwres_cancel(NETWORK, ss1);
85         if (ret != 0) ERROR ("could not cancel server");
86
87         contract.min_values.budget = 1;
88         contract.min_values.period.tv_sec  = 6;
89         contract.min_values.period.tv_nsec = 666;
90         contract.prio = 3;
91
92         printf("Negotiating a contract 3\n");
93         ret = frescan_bwres_negotiate(NETWORK, &contract, &ss3, &accepted);
94         if (ret != 0) ERROR ("could not negotiate");
95
96         if (accepted) {
97                 printf("The contract was accepted, ss:%u\n", ss3);
98                 ret = frescan_servers_get_data(NETWORK, &server_params, ss3);
99                 if (ret != 0) ERROR ("could not get servers data");
100
101                 printf("B:%u, T=(%u,%u), P:%u\n",
102                        server_params.values.budget,
103                        server_params.values.period.tv_sec,
104                        server_params.values.period.tv_nsec,
105                        server_params.prio);
106         } else {
107                 printf("The contract was not accepted\n");
108         }
109
110         while (1) {
111                 sleep(1);
112         }
113
114         return 0;
115 }
116
117