namespace simgrid {
namespace mc {
-static inline const char* get_color(int id)
-{
- static constexpr std::array<const char*, 13> colors{{"blue", "red", "green3", "goldenrod", "brown", "purple",
- "magenta", "turquoise4", "gray25", "forestgreen", "hotpink",
- "lightblue", "tan"}};
- return colors[id % colors.size()];
-}
-
-static std::string pointer_to_string(void* pointer)
-{
- return XBT_LOG_ISENABLED(Api, xbt_log_priority_verbose) ? xbt::string_printf("%p", pointer) : "(verbose only)";
-}
-
-static std::string buff_size_to_string(size_t buff_size)
-{
- return XBT_LOG_ISENABLED(Api, xbt_log_priority_verbose) ? std::to_string(buff_size) : "(verbose only)";
-}
-
/** Statically "upcast" a s_smx_actor_t into an ActorInformation
*
* This gets 'actorInfo' from '&actorInfo->copy'. It upcasts in the
return process_info;
}
-bool Api::requests_are_dependent(RemotePtr<kernel::actor::SimcallObserver> obs1,
- RemotePtr<kernel::actor::SimcallObserver> obs2) const
-{
- xbt_assert(mc_model_checker != nullptr, "Must be called from MCer");
-
- return mc_model_checker->requests_are_dependent(obs1, obs2);
-}
-
xbt::string const& Api::get_actor_host_name(smx_actor_t actor) const
{
if (mc_model_checker == nullptr)
XBT_CINFO(mc_global, "Counter-example execution trace:");
for (auto const& s : mc_model_checker->getChecker()->get_textual_trace())
XBT_CINFO(mc_global, " %s", s.c_str());
- simgrid::mc::dumpRecordPath();
+ XBT_INFO("Path = %s", mc_model_checker->getChecker()->get_record_trace().to_string().c_str());
simgrid::mc::session_singleton->log_state();
throw DeadlockError();
}
mc_model_checker->exit(status);
}
-void Api::dump_record_path() const
+std::string Api::request_get_dot_output(const Transition* t) const
{
- simgrid::mc::dumpRecordPath();
-}
+ static constexpr std::array<const char*, 13> colors{{"blue", "red", "green3", "goldenrod", "brown", "purple",
+ "magenta", "turquoise4", "gray25", "forestgreen", "hotpink",
+ "lightblue", "tan"}};
+ const char* color = colors[(t->aid_ - 1) % colors.size()];
-std::string Api::request_get_dot_output(aid_t aid, int value) const
-{
- const char* color = get_color(aid - 1);
- return "label = \"" + mc_model_checker->simcall_dot_label(aid, value) + "\", color = " + color +
- ", fontcolor = " + color;
+ return "label = \"" + t->dot_label() + "\", color = " + color + ", fontcolor = " + color;
}
#if HAVE_SMPI
return simgrid::mc::snapshot_equal(s1, s2);
}
-simgrid::mc::Snapshot* Api::take_snapshot(int num_state) const
+simgrid::mc::Snapshot* Api::take_snapshot(long num_state) const
{
auto snapshot = new simgrid::mc::Snapshot(num_state);
return snapshot;
void Api::automaton_load(const char* file) const
{
- MC_automaton_load(file);
+ if (simgrid::mc::property_automaton == nullptr)
+ simgrid::mc::property_automaton = xbt_automaton_new();
+
+ xbt_automaton_load(simgrid::mc::property_automaton, file);
}
std::vector<int> Api::automaton_propositional_symbol_evaluate() const