1 /* This program benchmarks renegotiation */
10 int main(int argc, char *argv[])
13 frsh_contract_t contract[N];
14 frsh_vres_id_t vres[N];
15 frsh_rel_time_t budget, period, deadline;
16 frsh_signal_info_t si;
20 if (ret) PERROR_AND_EXIT(ret, "frsh_init");
22 /* Negotiate N contracts */
24 struct timespec t_start, t_end;
25 ret = frsh_contract_init(&contract[i]);
26 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_init");
28 ret = frsh_contract_set_resource_and_label(
30 DUMMY_RESOURCE_TYPE, DUMMY_RESOURCE_ID,
32 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_resource_and_label");
34 budget = fosa_msec_to_rel_time(10);
35 period = fosa_msec_to_rel_time(100);
36 period = fosa_msec_to_rel_time(50);
37 ret = frsh_contract_set_basic_params(&contract[i],
42 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_basic_params");
44 ret = frsh_contract_set_timing_reqs(&contract[i],
47 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_timing_reqs");
49 ret = frsh_contract_negotiate(&contract[i], &vres[i]);
50 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_negotiate");
51 clock_gettime(CLOCK_MONOTONIC, &t_start);
52 ret = frsh_contract_renegotiate_sync(&contract[i], vres[i]);
53 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_renegotiate_sync");
54 clock_gettime(CLOCK_MONOTONIC, &t_end);
55 printf("%d %g\n", i, (float)(t_end.tv_sec+1e-9*t_end.tv_nsec) - (t_start.tv_sec+1e-9*t_start.tv_nsec));
57 /* Cancel N contracts */
59 ret = frsh_contract_cancel(vres[i]);
60 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_cancel");