]> rtime.felk.cvut.cz Git - frescor/fna.git/blobdiff - tests/tests_frescan/test_frescan_bwres_renegotiate_in_slave.c
added the functions to renegotiate and cancel a contract. TODO: there is a bug when...
[frescor/fna.git] / tests / tests_frescan / test_frescan_bwres_renegotiate_in_slave.c
diff --git a/tests/tests_frescan/test_frescan_bwres_renegotiate_in_slave.c b/tests/tests_frescan/test_frescan_bwres_renegotiate_in_slave.c
new file mode 100644 (file)
index 0000000..0996408
--- /dev/null
@@ -0,0 +1,92 @@
+#include <stdio.h>  // perror
+#include <stdlib.h> // exit
+#include <unistd.h>   // sleep
+
+#include "frescan.h"
+#include "frescan_bwres.h"
+#include "frescan_servers.h"
+
+#define ERROR(s) {perror (s); exit (-1);}
+
+#define NETWORK 0
+#define LOCAL_NODE 1
+
+int main ()
+{
+        int ret;
+        frescan_init_params_t init_params;
+        frescan_ss_t ss;
+        frescan_contract_t contract;
+        frescan_server_params_t server_params;
+        bool accepted;
+
+        init_params.net = NETWORK;
+        init_params.node = LOCAL_NODE;
+        init_params.tx_fp_max_prio = 10;
+        init_params.rx_num_of_channels = 10;
+        init_params.rx_channel_max_prio = NULL;
+
+        printf("Initializing FRESCAN\n");
+        ret = frescan_init(&init_params);
+        if (ret != 0) ERROR ("could not init FRESCAN");
+
+        printf("Initializing BWRES\n");
+        ret = frescan_bwres_init(NETWORK);
+        if (ret != 0) ERROR ("could not init BWRES");
+
+        contract.min_values.budget = 5;
+        contract.min_values.period.tv_sec = 3;
+        contract.min_values.period.tv_nsec = 0;
+        contract.prio = 5;
+
+        printf("Negotiating a contract\n");
+        ret = frescan_bwres_negotiate(NETWORK, &contract, &ss, &accepted);
+        if (ret != 0) ERROR ("could not negotiate succesfully");
+
+        if (accepted) {
+                printf("The contract was accepted, ss:%u\n", ss);
+                ret = frescan_servers_get_data(NETWORK, &server_params, ss);
+                if (ret != 0) ERROR ("could not get servers data");
+
+                printf("B:%u, T=(%u,%u), P:%u\n",
+                       server_params.values.budget,
+                       server_params.values.period.tv_sec,
+                       server_params.values.period.tv_nsec,
+                       server_params.prio);
+        } else {
+                printf("The contract was not accepted\n");
+        }
+
+        printf("Renegotiate the contract in 2 seconds\n");
+        sleep(2);
+
+        contract.min_values.budget = 2;
+        contract.min_values.period.tv_sec  = 6;
+        contract.min_values.period.tv_nsec = 43;
+        contract.prio = 2;
+
+        ret = frescan_bwres_renegotiate(NETWORK, &contract, ss, &accepted);
+        if (ret != 0) ERROR ("could not renegotiate");
+
+        if (accepted) {
+                printf("The contract renegotiation was accepted, ss:%u\n", ss);
+                ret = frescan_servers_get_data(NETWORK, &server_params, ss);
+                if (ret != 0) ERROR ("could not get servers data");
+
+                printf("B:%u, T=(%u,%u), P:%u\n",
+                       server_params.values.budget,
+                       server_params.values.period.tv_sec,
+                       server_params.values.period.tv_nsec,
+                       server_params.prio);
+        } else {
+                printf("The contract was not accepted\n");
+        }
+
+        while (1) {
+                sleep(1);
+        }
+
+        return 0;
+}
+
+