X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1c9c0b176c525481b6c223842ebd4be29dc1f111..1b911b6a9f89da36c855be22c9506b772a089ca6:/src/mc/mc_global.c diff --git a/src/mc/mc_global.c b/src/mc/mc_global.c index fc018b86b1..42e8dd131f 100644 --- a/src/mc/mc_global.c +++ b/src/mc/mc_global.c @@ -15,6 +15,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_global, mc, mc_snapshot_t initial_snapshot = NULL; xbt_fifo_t mc_stack = NULL; mc_stats_t mc_stats = NULL; +mc_stats_pair_t mc_stats_pair = NULL; mc_state_t mc_current_state = NULL; char mc_replay_mode = FALSE; double *mc_time = NULL; @@ -65,8 +66,8 @@ void MC_init_with_automaton(xbt_automaton_t a){ MC_SET_RAW_MEM; /* Initialize statistics */ - mc_stats = xbt_new0(s_mc_stats_t, 1); - mc_stats->state_size = 1; + mc_stats_pair = xbt_new0(s_mc_stats_pair_t, 1); + //mc_stats_pair->pair_size = 1; XBT_DEBUG("Creating snapshot_stack"); @@ -75,6 +76,7 @@ void MC_init_with_automaton(xbt_automaton_t a){ MC_UNSET_RAW_MEM; + //MC_dfs_init(a); MC_dfs_init(a); } @@ -88,7 +90,14 @@ void MC_modelcheck(void) void MC_modelcheck_with_automaton(xbt_automaton_t a){ MC_init_with_automaton(a); - MC_exit(); + MC_exit_with_automaton(); +} + +void MC_exit_with_automaton(void) +{ + MC_print_statistics_pairs(mc_stats_pair); + xbt_free(mc_time); + MC_memory_exit(); } void MC_exit(void) @@ -255,6 +264,17 @@ void MC_print_statistics(mc_stats_t stats) (double)stats->expanded_states / stats->state_size); */ } +void MC_print_statistics_pairs(mc_stats_pair_t stats) +{ + XBT_INFO("Expanded pairs = %lu", stats->expanded_pairs); + XBT_INFO("Visited pairs = %lu", stats->visited_pairs); + //XBT_INFO("Executed transitions = %lu", stats->executed_transitions); + XBT_INFO("Expanded / Visited = %lf", + (double) stats->visited_pairs / stats->expanded_pairs); + /*XBT_INFO("Exploration coverage = %lf", + (double)stats->expanded_states / stats->state_size); */ +} + void MC_assert(int prop) { if (MC_IS_ENABLED && !prop) { @@ -268,6 +288,19 @@ void MC_assert(int prop) } } +void MC_assert_pair(int prop){ + if (MC_IS_ENABLED && !prop) { + XBT_INFO("**************************"); + XBT_INFO("*** PROPERTY NOT VALID ***"); + XBT_INFO("**************************"); + //XBT_INFO("Counter-example execution trace:"); + MC_show_snapshot_stack(mc_snapshot_stack); + //MC_dump_snapshot_stack(mc_snapshot_stack); + MC_print_statistics_pairs(mc_stats_pair); + xbt_abort(); + } +} + void MC_process_clock_add(smx_process_t process, double amount) { mc_time[process->pid] += amount;