]> rtime.felk.cvut.cz Git - frescor/frsh.git/commitdiff
Added negotiation overhead benchmark
authorMichal Sojka <sojkam1@fel.cvut.cz>
Thu, 2 Apr 2009 09:20:18 +0000 (11:20 +0200)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Thu, 2 Apr 2009 09:20:18 +0000 (11:20 +0200)
frsh_api/tests/Makefile.omk
frsh_api/tests/negobench.c [new file with mode: 0644]

index 62a195cc276a8f44385977da53a188238c6c7727..b7829674bb9047e24e6aef4ebe775d76e1ba64b9 100644 (file)
@@ -1,6 +1,11 @@
 
 test_PROGRAMS += negotiation
 negotiation_SOURCES = negotiation.c
+
+test_PROGRAMS += negobench
+negobench_SOURCES = negobench.c
+
+
 lib_LOADLIBES += pthread rt frsh 
 
 ifeq ($(CONFIG_FWP),y)
diff --git a/frsh_api/tests/negobench.c b/frsh_api/tests/negobench.c
new file mode 100644 (file)
index 0000000..fb614ea
--- /dev/null
@@ -0,0 +1,59 @@
+#include <frsh.h>
+#include <error.h>
+#include <res_dummy.h>
+#include <time.h>
+
+#define N 1000
+
+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++) {
+               struct timespec t_start, t_end;
+               clock_gettime(CLOCK_MONOTONIC, &t_start);
+               ret = frsh_contract_init(&contract[i]);
+               if (ret) PERROR_AND_EXIT(ret, "frsh_contract_init");
+
+               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");
+
+               budget = fosa_msec_to_rel_time(10);
+               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");
+               clock_gettime(CLOCK_MONOTONIC, &t_end);
+               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));
+       }
+       /* 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;
+}