#include <frsh.h>
#include <error.h>
#include <res_dummy.h>
+#include <getopt.h>
+#include <ul_logreg.h>
+#include <wvtest.h>
-#define N 3
-
-int b[N] = { 10, 20, 30 };
-
-int main(int argc, char *argv[])
+WVTEST_MAIN("single negotiation and cancelation")
{
int ret;
- frsh_contract_t contract[N];
- frsh_vres_id_t vres[N];
+
+ frsh_contract_t contract, c;
+ frsh_vres_id_t vres;
frsh_rel_time_t budget, period, deadline;
- frsh_signal_info_t si;
- int i;
- ret = frsh_init();
- if (ret) PERROR_AND_EXIT(ret, "frsh_init");
+ setenv("WVTEST_DIE_FAST", "", 1);
+ ret = WVFRSH(frsh_init());
- /* Negotiate N contracts */
- for (i=0; i<N; i++) {
- ret = frsh_contract_init(&contract[i]);
- if (ret) PERROR_AND_EXIT(ret, "frsh_contract_init");
+ /* Negotiate the contract */
+ ret = WVFRSH(frsh_contract_init(&contract));
+
+ ret = WVFRSH(frsh_contract_set_resource_and_label(
+ &contract,
+ DUMMY_RESOURCE_TYPE, DUMMY_RESOURCE_ID,
+ NULL));
+
+ budget = fosa_msec_to_rel_time(10);
+ period = fosa_msec_to_rel_time(100);
+ deadline = fosa_msec_to_rel_time(50);
+ ret = WVFRSH(frsh_contract_set_basic_params(&contract,
+ &budget,
+ &period,
+ FRSH_WT_BOUNDED,
+ FRSH_CT_REGULAR));
+
+ ret = WVFRSH(frsh_contract_set_timing_reqs(&contract,
+ false, &deadline));
+
+ ret = WVFRSH(frsh_contract_negotiate(&contract, &vres));
+ WVFRSH(frsh_vres_get_contract(vres, &c));
+ WVPASS(fres_contract_get_budget(&c, &budget));
+ WVPASS(fosa_rel_time_to_msec(budget) == 10);
- ret = frsh_contract_set_resource_and_label(
- &contract[i],
- DUMMY_RESOURCE_TYPE, DUMMY_RESOURCE_ID,
- NULL);
- if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_resource_and_label");
+ /* Cancel the contract */
+ ret = WVFRSH(frsh_contract_cancel(vres));
- budget = fosa_msec_to_rel_time(b[i]);
- period = fosa_msec_to_rel_time(100);
- period = fosa_msec_to_rel_time(50);
- ret = frsh_contract_set_basic_params(&contract[i],
- &budget,
- &period,
- FRSH_WT_BOUNDED,
- FRSH_CT_REGULAR);
- if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_basic_params");
-
- ret = frsh_contract_set_timing_reqs(&contract[i],
- false, &deadline,
- 0, si, 0, si);
- if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_timing_reqs");
-
- ret = frsh_contract_negotiate(&contract[i], &vres[i]);
- if (ret) PERROR_AND_EXIT(ret, "frsh_contract_negotiate");
- }
- return 0;
+ frsh_destroy();
}