]> rtime.felk.cvut.cz Git - frescor/frsh.git/blob - frsh_api/tests/negotiation.c
Add loglevel option to negotiation test
[frescor/frsh.git] / frsh_api / tests / negotiation.c
1 #include <frsh.h>
2 #include <error.h>
3 #include <res_dummy.h>
4 #include <getopt.h>
5 #include <ul_logreg.h>
6
7 #define N 3
8
9 int b[N] = { 10, 20, 30 };
10
11 static struct option long_opts[] = {
12     { "loglevel", 1, 0, 'l' },
13     { 0, 0, 0, 0}
14 };
15
16 static void
17 usage(void)
18 {
19         printf("usage: fcb [ options ]\n");
20         printf("  -l, --loglevel <number>|<domain>=<number>,...\n");
21 }
22
23
24
25 int main(int argc, char *argv[])
26 {
27         int ret;
28         frsh_contract_t contract[N];
29         frsh_vres_id_t vres[N];
30         frsh_rel_time_t budget, period, deadline;
31         frsh_signal_info_t si;
32         int i;
33         char opt;
34
35         while ((opt = getopt_long(argc, argv, "l:", &long_opts[0], NULL)) != EOF) {
36                 switch (opt) {
37                         case 'l':
38                                 ul_log_domain_arg2levels(optarg);
39                                 break;
40                         case 'h':
41                         /*default:*/
42                                 usage();
43                                 exit(opt == 'h' ? 0 : 1);
44                 }
45         }
46
47         ret = frsh_init();
48         if (ret) PERROR_AND_EXIT(ret, "frsh_init");
49
50         /* Negotiate N contracts */
51         for (i=0; i<N; i++) {
52                 ret = frsh_contract_init(&contract[i]);
53                 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_init");
54
55                 ret = frsh_contract_set_resource_and_label(
56                         &contract[i],
57                         DUMMY_RESOURCE_TYPE, DUMMY_RESOURCE_ID,
58                         NULL);
59                 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_resource_and_label");
60
61                 budget = fosa_msec_to_rel_time(b[i]);
62                 period = fosa_msec_to_rel_time(100);
63                 deadline = fosa_msec_to_rel_time(50);
64                 ret = frsh_contract_set_basic_params(&contract[i],
65                                                      &budget,
66                                                      &period,
67                                                      FRSH_WT_BOUNDED,
68                                                      FRSH_CT_REGULAR);
69                 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_basic_params");
70                 
71                 ret = frsh_contract_set_timing_reqs(&contract[i],
72                                                     false, &deadline,
73                                             0, si, 0, si);
74                 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_timing_reqs");
75                 
76                 ret = frsh_contract_negotiate(&contract[i], &vres[i]);
77                 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_negotiate");
78         }
79         for (i=0; i<N; i++) {
80                 budget = fosa_msec_to_rel_time(2*b[i]);
81                 period = fosa_msec_to_rel_time(110);
82                 ret = frsh_contract_set_basic_params(&contract[i],
83                                                      &budget,
84                                                      &period,
85                                                      FRSH_WT_BOUNDED,
86                                                      FRSH_CT_REGULAR);
87                 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_basic_params reneg");
88
89                 ret = frsh_contract_renegotiate_sync(&contract[i], vres[i]);
90                 
91         }
92
93         /* Cancel N contracts */
94         for (i=0; i<N; i++) {
95                 ret = frsh_contract_cancel(vres[i]);
96                 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_cancel");
97         }
98         return 0;
99 }