]> rtime.felk.cvut.cz Git - frescor/frsh.git/commitdiff
Added FWP negotiation and cancelation test
authorMichal Sojka <sojkam1@fel.cvut.cz>
Wed, 27 May 2009 11:02:37 +0000 (13:02 +0200)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Wed, 27 May 2009 11:02:37 +0000 (13:02 +0200)
frsh_api/tests/fwptest/Makefile.omk
frsh_api/tests/fwptest/fwpnego.c [new file with mode: 0644]

index cd2260942eb5bdfbd0b997e37c6015f7a3ffc4aa..3e3ceb3c823bc53cadb2c7175eab6efe5318546f 100644 (file)
@@ -1,6 +1,7 @@
 ifeq ($(CONFIG_FWP),y)
-test_PROGRAMS += fwpreceiver fwpsender
+test_PROGRAMS += fwpreceiver fwpsender fwpnego
 fwpreceiver_SOURCES+= fwpreceiver.c
 fwpsender_SOURCES+= fwpsender.c
+fwpnego_SOURCES = fwpnego.c
 lib_LOADLIBES += pthread rt fwp fna frsh
 endif
diff --git a/frsh_api/tests/fwptest/fwpnego.c b/frsh_api/tests/fwptest/fwpnego.c
new file mode 100644 (file)
index 0000000..043f218
--- /dev/null
@@ -0,0 +1,70 @@
+#include <frsh.h>
+#include <error.h>
+#include <res_dummy.h>
+
+#define N 3
+
+int b[N] = { 10, 20, 30 };
+
+int main(int argc, char *argv[])
+{
+       int ret;
+       frsh_contract_t contract[N];
+       frsh_vres_id_t vres[N];
+       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");
+
+       /* Negotiate N contracts */
+       for (i=0; i<N; i++) {
+               ret = frsh_contract_init(&contract[i]);
+               if (ret) PERROR_AND_EXIT(ret, "frsh_contract_init");
+
+               ret = frsh_contract_set_resource_and_label(
+                       &contract[i],
+                       FRSH_RT_NETWORK, FRSH_NETPF_FWP,
+                       NULL);
+               if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_resource_and_label");
+
+               frsh_network_bytes_to_budget(FRSH_NETPF_FWP, b[i], &budget);
+               period = fosa_msec_to_rel_time(1000);
+               deadline = fosa_msec_to_rel_time(500);
+               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");
+       }
+       for (i=0; i<N; i++) {
+               frsh_network_bytes_to_budget(FRSH_NETPF_FWP, 2*b[i], &budget);
+               period = fosa_msec_to_rel_time(1100);
+               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 reneg");
+
+               ret = frsh_contract_renegotiate_sync(&contract[i], vres[i]);
+               
+       }
+
+       /* Cancel N contracts */
+       for (i=0; i<N; i++) {
+               ret = frsh_contract_cancel(vres[i]);
+               if (ret) PERROR_AND_EXIT(ret, "frsh_contract_cancel");
+       }
+       return 0;
+}