]> rtime.felk.cvut.cz Git - frescor/fna.git/blob - tests/tests_frescan/test_frescan_bwres_negotiate_in_slave_with_sc.c
added three tests that i did to correct some bugs
[frescor/fna.git] / tests / tests_frescan / test_frescan_bwres_negotiate_in_slave_with_sc.c
1 #include <stdio.h>  // perror
2 #include <stdlib.h> // exit
3 #include <unistd.h>   // sleep
4
5 #include "frsh.h"
6
7 #include "frescan.h"
8 #include "frescan_bwres.h"
9 #include "frescan_servers.h"
10
11 #define PUT_ERROR(s) {perror (s); exit (-1);}
12
13 #define NETWORK 0
14 #define LOCAL_NODE 1
15
16 extern int frescan_fna_network_bytes_to_budget
17                                     (const frsh_resource_id_t resource_id,
18                                     const size_t nbytes,
19                                     frsh_rel_time_t *budget);
20
21 int main ()
22 {
23         int ret;
24         frescan_init_params_t init_params;
25         frescan_ss_t ss_sc;
26         frsh_contract_t contract_sc;
27         frescan_server_params_t server_params;
28         bool accepted;
29         frsh_rel_time_t budget_min, budget_max, period_max, period_min;
30
31         init_params.net = NETWORK;
32         init_params.node = LOCAL_NODE;
33         init_params.tx_fp_max_prio = 10;
34         init_params.rx_num_of_channels = 10;
35         init_params.rx_channel_max_prio = NULL;
36
37         printf("Initializing FRESCAN\n");
38         ret = frescan_init(&init_params);
39         if (ret != 0) PUT_ERROR ("could not init FRESCAN");
40
41         printf("Initializing BWRES\n");
42         ret = frescan_bwres_init(NETWORK);
43         if (ret != 0) PUT_ERROR ("could not init BWRES");
44
45         printf("Create a contract with spare capacity\n");
46
47         ret = frsh_contract_init(&contract_sc);
48         if (ret != 0) PUT_ERROR ("could not init contract");
49
50         ret = frescan_fna_network_bytes_to_budget (NETWORK, 8*1, &budget_min);
51         if (ret != 0) PUT_ERROR ("could not transform bytes to budget");
52
53         ret = frescan_fna_network_bytes_to_budget (NETWORK, 8*5, &budget_max);
54         if (ret != 0) PUT_ERROR ("could not transform bytes to budget");
55
56         period_max = frsh_msec_to_rel_time(1); // 3,369 secs
57         period_min = period_max;
58
59         ret = frsh_contract_set_basic_params
60                         (&contract_sc,
61                          &budget_min,
62                          &period_max,
63                          FRSH_WT_INDETERMINATE,
64                          FRSH_CT_REGULAR);
65         if (ret != 0) PUT_ERROR ("could not set basic params");
66
67         ret = frsh_contract_set_preemption_level
68                         (&contract_sc, FRESCAN_BWRES_NEG_MSG_PRIO + 1);
69         if (ret != 0) PUT_ERROR ("could not set preemption level");
70
71         ret = frsh_contract_set_reclamation_params(&contract_sc,
72                                                    0,
73                                                    &budget_max,
74                                                    &period_min,
75                                                    FRSH_GR_CONTINUOUS,
76                                                    NULL,
77                                                    1,
78                                                    1);
79         if (ret != 0) PUT_ERROR ("could not set reclamation params");
80
81         printf("Negotiating a contract\n");
82         ret = frescan_bwres_negotiate(NETWORK, &contract_sc, &ss_sc, &accepted);
83         if (ret != 0) PUT_ERROR ("could not negotiate succesfully");
84
85         if (accepted) {
86                 printf("The contract was accepted, ss_sc:%u\n", ss_sc);
87                 ret = frescan_servers_get_data(NETWORK, &server_params, ss_sc);
88                 if (ret != 0) PUT_ERROR ("could not get servers data");
89
90                 printf("B:%u, T=(%u,%u), P:%u\n",
91                        server_params.budget,
92                        server_params.period.tv_sec,
93                        server_params.period.tv_nsec,
94                        server_params.prio);
95         } else {
96                 printf("The contract was not accepted\n");
97         }
98
99         while (1) sleep(1);
100
101         return 0;
102 }
103
104