]> rtime.felk.cvut.cz Git - frescor/fna.git/commitdiff
add test used to detect bug when a contract was non schedulable in the master
authorsangorrin <sangorrin@35b4ef3e-fd22-0410-ab77-dab3279adceb>
Wed, 26 Nov 2008 16:52:15 +0000 (16:52 +0000)
committersangorrin <sangorrin@35b4ef3e-fd22-0410-ab77-dab3279adceb>
Wed, 26 Nov 2008 16:52:15 +0000 (16:52 +0000)
git-svn-id: http://www.frescor.org/private/svn/frescor/fna/trunk@1442 35b4ef3e-fd22-0410-ab77-dab3279adceb

tests/tests_frescan/test_frescan_bwres_negotiate_in_master_not_accepted.c [new file with mode: 0644]

diff --git a/tests/tests_frescan/test_frescan_bwres_negotiate_in_master_not_accepted.c b/tests/tests_frescan/test_frescan_bwres_negotiate_in_master_not_accepted.c
new file mode 100644 (file)
index 0000000..e4d17d4
--- /dev/null
@@ -0,0 +1,137 @@
+#include <stdio.h>  // perror
+#include <stdlib.h> // exit
+#include <unistd.h>   // sleep
+#include <assert.h>
+
+#include "frsh.h"
+
+#include "frescan.h"
+#include "frescan_bwres.h"
+#include "frescan_servers.h"
+
+#define PUT_ERROR(s) {perror (s); exit (-1);}
+
+#define NETWORK 0
+#define LOCAL_NODE 0
+
+// #define ENABLE_LOGGING
+#ifdef ENABLE_LOGGING
+#include <drivers/console_switcher.h>
+#include <misc/logger.h>
+#include <assert.h>
+#define LOG_DEVICE LOG_ETHERNET
+#endif
+
+extern int frescan_fna_network_bytes_to_budget
+                                    (const frsh_resource_id_t resource_id,
+                                    const size_t nbytes,
+                                    frsh_rel_time_t *budget);
+
+int main ()
+{
+        int ret;
+        frescan_init_params_t init_params;
+        frescan_ss_t ss;
+        frsh_contract_t contract;
+        frescan_server_params_t server_params;
+        bool accepted;
+        frsh_rel_time_t budget_min, period_max;
+
+#ifdef ENABLE_LOGGING
+        ret = logger_init(LOG_DEVICE);
+        assert(ret == 0);
+
+        printf("Changing to membuffer console\n");
+        MEMBUFFER_CONSOLE_INIT();
+#endif
+
+        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) PUT_ERROR ("could not init FRESCAN");
+
+        printf("Initializing BWRES\n");
+        ret = frescan_bwres_init(NETWORK);
+        if (ret != 0) PUT_ERROR ("could not init BWRES");
+
+
+        ret = frsh_contract_init(&contract);
+        assert(ret == 0);
+
+        ret = frsh_network_bytes_to_budget(FRSH_NETWORK_ID_DEFAULT,
+                                           8*10,
+                                           &budget_min);
+        assert(ret == 0);
+
+        period_max.tv_sec = 1; period_max.tv_nsec = 0;
+
+        ret = frsh_contract_set_basic_params(&contract,
+                                             &budget_min,
+                                             &period_max,
+                                             FRSH_WT_INDETERMINATE,
+                                             FRSH_CT_REGULAR);
+        assert(ret == 0);
+
+        ret = frsh_contract_set_preemption_level(&contract, 5);
+        assert(ret == 0);
+
+        ret = frescan_bwres_negotiate(NETWORK, &contract, &ss, &accepted);
+        if (ret != 0) PUT_ERROR ("could not negotiate succesfully");
+
+        ret = frescan_bwres_negotiate(NETWORK, &contract, &ss, &accepted);
+        if (ret != 0) PUT_ERROR ("could not negotiate succesfully");
+
+
+        ret = frsh_contract_init(&contract);
+        if (ret != 0) PUT_ERROR ("could not init contract");
+
+        ret = frescan_fna_network_bytes_to_budget (NETWORK, 8*1, &budget_min);
+        if (ret != 0) PUT_ERROR ("could not transform bytes to budget");
+
+        period_max = frsh_msec_to_rel_time(2);
+
+        ret = frsh_contract_set_basic_params
+                        (&contract,
+                         &budget_min,
+                         &period_max,
+                         FRSH_WT_INDETERMINATE,
+                         FRSH_CT_REGULAR);
+        if (ret != 0) PUT_ERROR ("could not set basic params");
+
+        ret = frsh_contract_set_preemption_level(&contract, 8);
+        if (ret != 0) PUT_ERROR ("could not set preemption level");
+
+        printf("Negotiating a contract\n");
+        ret = frescan_bwres_negotiate(NETWORK, &contract, &ss, &accepted);
+        if (ret != 0) PUT_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) PUT_ERROR ("could not get servers data");
+
+                printf("B:%u, T=(%u,%u), P:%u\n",
+                       server_params.budget,
+                       server_params.period.tv_sec,
+                       server_params.period.tv_nsec,
+                       server_params.prio);
+        } else {
+                printf("The contract was not accepted\n");
+        }
+
+        printf("MAIN DONE\n");
+
+#ifdef ENABLE_LOGGING
+        while (logger_manual_call() > 0);
+#endif
+
+        while (1) sleep(1);
+        return 0;
+}
+
+