X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f25af1e2829458e33a3a0b74c75865c89dff5f9e..c3a1127888725e3075adff3ad323dc1357351530:/tools/graphicator/graphicator.c diff --git a/tools/graphicator/graphicator.c b/tools/graphicator/graphicator.c index c93965fded..ae54a73619 100644 --- a/tools/graphicator/graphicator.c +++ b/tools/graphicator/graphicator.c @@ -8,153 +8,34 @@ #include #endif -#include -#include -#include -#include -#include - - -#include "simdag/simdag.h" -#include "xbt/log.h" -#include "xbt/dict.h" -#include "xbt/ex.h" +#include "msg/msg.h" #include "xbt/graph.h" -#include "surf/surf.h" -#include "surf/surf_private.h" XBT_LOG_NEW_DEFAULT_CATEGORY(graphicator, "Graphicator Logging System"); -static int name_compare_links(const void *n1, const void *n2) -{ - char name1[80], name2[80]; - strcpy(name1, SD_link_get_name(*((SD_link_t *) n1))); - strcpy(name2, SD_link_get_name(*((SD_link_t *) n2))); - - return strcmp(name1, name2); -} - -static const char *node_name(xbt_node_t n) -{ - return xbt_graph_node_get_data(n); -} - -static const char *edge_name(xbt_edge_t n) -{ - return xbt_graph_edge_get_data(n); -} - -static xbt_node_t xbt_graph_search_node (xbt_graph_t graph, void *data, int (*compare_function)(const char *, const char *)) -{ - unsigned int cursor = 0; - void *tmp = NULL; - - xbt_dynar_t dynar = xbt_graph_get_nodes (graph); - xbt_dynar_foreach(dynar, cursor, tmp) { - xbt_node_t node = (xbt_node_t)tmp; - if (!compare_function (data, xbt_graph_node_get_data (node))) return node; - } - return NULL; -} - -static xbt_edge_t xbt_graph_search_edge (xbt_graph_t graph, xbt_node_t n1, xbt_node_t n2) -{ - unsigned int cursor = 0; - void *tmp = NULL; - xbt_dynar_t dynar = xbt_graph_get_edges (graph); - xbt_dynar_foreach(dynar, cursor, tmp) { - xbt_edge_t edge = (xbt_edge_t)tmp; - if (( xbt_graph_edge_get_source(edge) == n1 && - xbt_graph_edge_get_target(edge) == n2) || - ( xbt_graph_edge_get_source(edge) == n2 && - xbt_graph_edge_get_target(edge) == n1)){ - return edge; - } - } - return NULL; -} - int main(int argc, char **argv) { - char *platformFile = NULL; - char *graphvizFile = NULL; - - unsigned int i; - xbt_dict_cursor_t cursor_src = NULL; - xbt_dict_cursor_t cursor_dst = NULL; - char *src; - char *dst; - char *data; - xbt_ex_t e; - - SD_init(&argc, argv); + XBT_LOG_CONNECT(graphicator); +#ifdef HAVE_TRACING + MSG_init(&argc, argv); if (argc < 3){ XBT_INFO("Usage: %s ", argv[0]); return 1; } - platformFile = argv[1]; - graphvizFile = argv[2]; - - TRY { - SD_create_environment(platformFile); - } CATCH(e) { - xbt_die("Error while loading %s: %s",platformFile,e.msg); - } - - //creating the graph structure - xbt_graph_t graph = xbt_graph_new_graph (0, NULL); - - //adding hosts - xbt_dict_foreach(global_routing->where_network_elements, cursor_src, src, data) { - xbt_graph_new_node (graph, xbt_strdup(src)); - } + char *platformFile = argv[1]; + char *graphvizFile = argv[2]; - //adding links - int totalLinks = SD_link_get_number(); - const SD_link_t *links = SD_link_get_list(); - qsort((void *) links, totalLinks, sizeof(SD_link_t), name_compare_links); - for (i = 0; i < totalLinks; i++) { - xbt_graph_new_node (graph, xbt_strdup (SD_link_get_name(links[i]))); - } - - xbt_dict_foreach(global_routing->where_network_elements, cursor_src, src, data) { - xbt_dict_foreach(global_routing->where_network_elements, cursor_dst, dst, data) { - if (strcmp(src,"loopback")==0 || strcmp(dst,"loopback")==0) continue; + MSG_create_environment(platformFile); - xbt_node_t src_node = xbt_graph_search_node (graph, src, strcmp); - xbt_node_t dst_node = xbt_graph_search_node (graph, dst, strcmp); - TRY { - xbt_dynar_t route = global_routing->get_route(src,dst); - xbt_node_t previous = src_node; - for(i=0;iname); - if (strcmp(link_name, "loopback")==0 || strcmp(link_name, "__loopback__")==0) continue; - xbt_node_t link_node = xbt_graph_search_node (graph, link_name, strcmp); - if (!link_node){ - link_node = xbt_graph_new_node (graph, strdup(link_name)); - } - xbt_edge_t edge = xbt_graph_search_edge (graph, previous, link_node); - if (!edge){ - XBT_DEBUG("\%s %s", (char*)xbt_graph_node_get_data(previous), (char*)xbt_graph_node_get_data(link_node)); - xbt_graph_new_edge (graph, previous, link_node, NULL); - } - previous = link_node; - } - xbt_edge_t edge = xbt_graph_search_edge (graph, previous, dst_node); - if (!edge){ - XBT_DEBUG("\%s %s", (char*)xbt_graph_node_get_data(previous), (char*)xbt_graph_node_get_data(dst_node)); - xbt_graph_new_edge (graph, previous, dst_node, NULL); - } - } CATCH(e) {} - } + int status = TRACE_platform_graph_export_graphviz (graphvizFile); + if (status == 0){ + XBT_INFO ("%s expects --cfg=tracing:1 --cfg=tracing/platform:1", argv[0]); } - xbt_graph_export_graphviz (graph, graphvizFile, node_name, edge_name); - xbt_graph_free_graph (graph, NULL, NULL, NULL); - SD_exit(); - + MSG_clean(); +#else + XBT_INFO ("works only if simgrid was compiled with tracing enabled."); +#endif return 0; }