#include <ul_logreg.h>
#include <wvtest.h>
-#define N 3
-
-int b[N] = { 10, 20, 30 };
-
-// TODO: Allow specifying loglevel in evironment
-
-// static struct option long_opts[] = {
-// { "loglevel", 1, 0, 'l' },
-// { 0, 0, 0, 0}
-// };
-
-// static void
-// usage(void)
-// {
-// printf("usage: negotiation [ options ]\n");
-// printf(" -l, --loglevel <number>|<domain>=<number>,...\n");
-// }
-
-int ret;
-frsh_contract_t contract[N], c;
-frsh_vres_id_t vres[N];
-frsh_rel_time_t budget, period, deadline;
-int i;
-
-WVTEST_MAIN("basic negotiation")
+WVTEST_MAIN("single negotiation and cancelation")
{
-// char opt;
+ int ret;
-// while ((opt = getopt_long(argc, argv, "l:", &long_opts[0], NULL)) != EOF) {
-// switch (opt) {
-// case 'l':
-// break;
-// case 'h':
-// /\*default:*\/
-// usage();
-// exit(opt == 'h' ? 0 : 1);
-// }
-// }
+ frsh_contract_t contract, c;
+ frsh_vres_id_t vres;
+ frsh_rel_time_t budget, period, deadline;
setenv("WVTEST_DIE_FAST", "", 1);
ret = WVFRSH(frsh_init());
- /* Negotiate N contracts */
- for (i=0; i<N; i++) {
- ret = WVFRSH(frsh_contract_init(&contract[i]));
-
- ret = WVFRSH(frsh_contract_set_resource_and_label(
- &contract[i],
- DUMMY_RESOURCE_TYPE, DUMMY_RESOURCE_ID,
- NULL));
-
- budget = fosa_msec_to_rel_time(b[i]);
- period = fosa_msec_to_rel_time(100);
- deadline = fosa_msec_to_rel_time(50);
- ret = WVFRSH(frsh_contract_set_basic_params(&contract[i],
- &budget,
- &period,
- FRSH_WT_BOUNDED,
- FRSH_CT_REGULAR));
-
- ret = WVFRSH(frsh_contract_set_timing_reqs(&contract[i],
- false, &deadline));
-
- ret = WVFRSH(frsh_contract_negotiate(&contract[i], &vres[i]));
- WVFRSH(frsh_vres_get_contract(vres[i], &c));
- WVPASS(fres_contract_get_budget(&c, &budget));
- WVPASS(fosa_rel_time_to_msec(budget) == b[i]);
- }
-
- /* Renegotiate the first two contracts */
- for (i=0; i<2; i++) {
- budget = fosa_msec_to_rel_time(2*b[i]);
- period = fosa_msec_to_rel_time(110);
- ret = WVFRSH(frsh_contract_set_basic_params(&contract[i],
- &budget,
- &period,
- FRSH_WT_BOUNDED,
- FRSH_CT_REGULAR));
-
- ret = WVFRSH(frsh_contract_renegotiate_sync(&contract[i], vres[i]));
- WVFRSH(frsh_vres_get_contract(vres[i], &c));
- WVPASS(fres_contract_get_budget(&c, &budget));
- WVPASS(fosa_rel_time_to_msec(budget) == 2*b[i]);
- }
-
- /* Try to renegotiate the third contract - it will be rejected */
- budget = fosa_msec_to_rel_time(2*b[2]);
- period = fosa_msec_to_rel_time(110);
- ret = WVFRSH(frsh_contract_set_basic_params(&contract[2],
+ /* 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));
-
- WVPASS(frsh_contract_renegotiate_sync(&contract[2], vres[2]) == FRSH_ERR_CONTRACT_REJECTED);
- WVFRSH(frsh_vres_get_contract(vres[2], &c));
+
+ 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));
- WVPASSEQ(fosa_rel_time_to_msec(budget), b[2]);
+ WVPASS(fosa_rel_time_to_msec(budget) == 10);
- /* Cancel N contracts */
- for (i=0; i<N; i++) {
- ret = WVFRSH(frsh_contract_cancel(vres[i]));
- }
+ /* Cancel the contract */
+ ret = WVFRSH(frsh_contract_cancel(vres));
frsh_destroy();
}
--- /dev/null
+#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 };
+
+// TODO: Allow specifying loglevel in evironment
+
+// static struct option long_opts[] = {
+// { "loglevel", 1, 0, 'l' },
+// { 0, 0, 0, 0}
+// };
+
+// static void
+// usage(void)
+// {
+// printf("usage: negotiation [ options ]\n");
+// printf(" -l, --loglevel <number>|<domain>=<number>,...\n");
+// }
+
+int ret;
+frsh_contract_t contract[N], c;
+frsh_vres_id_t vres[N];
+frsh_rel_time_t budget, period, deadline;
+int i;
+
+WVTEST_MAIN("basic negotiation")
+{
+// char opt;
+
+// while ((opt = getopt_long(argc, argv, "l:", &long_opts[0], NULL)) != EOF) {
+// switch (opt) {
+// case 'l':
+// break;
+// case 'h':
+// /\*default:*\/
+// usage();
+// exit(opt == 'h' ? 0 : 1);
+// }
+// }
+
+ setenv("WVTEST_DIE_FAST", "", 1);
+ ret = WVFRSH(frsh_init());
+
+ /* Negotiate N contracts */
+ for (i=0; i<N; i++) {
+ ret = WVFRSH(frsh_contract_init(&contract[i]));
+
+ ret = WVFRSH(frsh_contract_set_resource_and_label(
+ &contract[i],
+ DUMMY_RESOURCE_TYPE, DUMMY_RESOURCE_ID,
+ NULL));
+
+ budget = fosa_msec_to_rel_time(b[i]);
+ period = fosa_msec_to_rel_time(100);
+ deadline = fosa_msec_to_rel_time(50);
+ ret = WVFRSH(frsh_contract_set_basic_params(&contract[i],
+ &budget,
+ &period,
+ FRSH_WT_BOUNDED,
+ FRSH_CT_REGULAR));
+
+ ret = WVFRSH(frsh_contract_set_timing_reqs(&contract[i],
+ false, &deadline));
+
+ ret = WVFRSH(frsh_contract_negotiate(&contract[i], &vres[i]));
+ WVFRSH(frsh_vres_get_contract(vres[i], &c));
+ WVPASS(fres_contract_get_budget(&c, &budget));
+ WVPASS(fosa_rel_time_to_msec(budget) == b[i]);
+ }
+
+ /* Renegotiate the first two contracts */
+ for (i=0; i<2; i++) {
+ budget = fosa_msec_to_rel_time(2*b[i]);
+ period = fosa_msec_to_rel_time(110);
+ ret = WVFRSH(frsh_contract_set_basic_params(&contract[i],
+ &budget,
+ &period,
+ FRSH_WT_BOUNDED,
+ FRSH_CT_REGULAR));
+
+ ret = WVFRSH(frsh_contract_renegotiate_sync(&contract[i], vres[i]));
+ WVFRSH(frsh_vres_get_contract(vres[i], &c));
+ WVPASS(fres_contract_get_budget(&c, &budget));
+ WVPASS(fosa_rel_time_to_msec(budget) == 2*b[i]);
+ }
+
+ /* Try to renegotiate the third contract - it will be rejected */
+ budget = fosa_msec_to_rel_time(2*b[2]);
+ period = fosa_msec_to_rel_time(110);
+ ret = WVFRSH(frsh_contract_set_basic_params(&contract[2],
+ &budget,
+ &period,
+ FRSH_WT_BOUNDED,
+ FRSH_CT_REGULAR));
+
+ WVPASS(frsh_contract_renegotiate_sync(&contract[2], vres[2]) == FRSH_ERR_CONTRACT_REJECTED);
+ WVFRSH(frsh_vres_get_contract(vres[2], &c));
+ WVPASS(fres_contract_get_budget(&c, &budget));
+ WVPASSEQ(fosa_rel_time_to_msec(budget), b[2]);
+
+ /* Cancel N contracts */
+ for (i=0; i<N; i++) {
+ ret = WVFRSH(frsh_contract_cancel(vres[i]));
+ }
+
+ frsh_destroy();
+}