Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
greatly improve an error message
authorMartin Quinson <martin.quinson@loria.fr>
Fri, 16 Jun 2017 22:48:52 +0000 (00:48 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Fri, 16 Jun 2017 23:30:48 +0000 (01:30 +0200)
src/surf/xml/surfxml_sax_cb.cpp
teshsuite/simdag/flatifier/bogus_missing_gateway.tesh

index ac88aa5..b2513fd 100644 (file)
@@ -54,6 +54,36 @@ void surf_parse_error(const char *fmt, ...) {
   surf_exit();
   xbt_die("Exiting now");
 }
+void surf_parse_assert_netpoint(char* hostname, const char* pre, const char* post)
+{
+  if (sg_netpoint_by_name_or_null(hostname) != nullptr) // found
+    return;
+
+  std::string msg = std::string(pre);
+  msg += hostname;
+  msg += post;
+  msg += " Existing netpoints: \n";
+
+  std::vector<simgrid::kernel::routing::NetPoint*> list;
+  simgrid::s4u::Engine::instance()->netpointList(&list);
+  bool first = true;
+  for (auto np : list) {
+    if (np->isNetZone())
+      continue;
+
+    if (not first)
+      msg += ",";
+    first = false;
+    msg += "'" + np->name() + "'";
+    if (msg.length() > 4096) {
+      msg.pop_back(); // remove trailing quote
+      msg += "...(list truncated)......";
+      break;
+    }
+  }
+  surf_parse_error("%s", msg.c_str());
+}
+
 void surf_parse_warn(const char *fmt, ...) {
   va_list va;
   va_start(va,fmt);
@@ -737,61 +767,40 @@ void ETag_surfxml_backbone(){
 }
 
 void STag_surfxml_route(){
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_route_src), "Route src='%s' does name a node.",
-                    A_surfxml_route_src);
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_route_dst), "Route dst='%s' does name a node.",
-                    A_surfxml_route_dst);
+  surf_parse_assert_netpoint(A_surfxml_route_src, "Route src='", "' does name a node.");
+  surf_parse_assert_netpoint(A_surfxml_route_dst, "Route dst='", "' does name a node.");
 }
 
 void STag_surfxml_ASroute(){
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_ASroute_src), "ASroute src='%s' does name a node.",
-                    A_surfxml_ASroute_src);
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_ASroute_dst), "ASroute dst='%s' does name a node.",
-                    A_surfxml_ASroute_dst);
+  surf_parse_assert_netpoint(A_surfxml_ASroute_src, "ASroute src='", "' does name a node.");
+  surf_parse_assert_netpoint(A_surfxml_ASroute_dst, "ASroute dst='", "' does name a node.");
 
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_ASroute_gw___src), "ASroute gw_src='%s' does name a node.",
-                    A_surfxml_ASroute_gw___src);
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_ASroute_gw___dst), "ASroute gw_dst='%s' does name a node.",
-                    A_surfxml_ASroute_gw___dst);
+  surf_parse_assert_netpoint(A_surfxml_ASroute_gw___src, "ASroute gw_src='", "' does name a node.");
+  surf_parse_assert_netpoint(A_surfxml_ASroute_gw___dst, "ASroute gw_dst='", "' does name a node.");
 }
 void STag_surfxml_zoneRoute(){
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_zoneRoute_src), "zoneRoute src='%s' does name a node.",
-                    A_surfxml_zoneRoute_src);
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_zoneRoute_dst), "zoneRoute dst='%s' does name a node.",
-                    A_surfxml_zoneRoute_dst);
-
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_zoneRoute_gw___src), "zoneRoute gw_src='%s' does name a node.",
-                    A_surfxml_zoneRoute_gw___src);
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_zoneRoute_gw___dst), "zoneRoute gw_dst='%s' does name a node.",
-                    A_surfxml_zoneRoute_gw___dst);
+  surf_parse_assert_netpoint(A_surfxml_zoneRoute_src, "zoneRoute src='", "' does name a node.");
+  surf_parse_assert_netpoint(A_surfxml_zoneRoute_dst, "zoneRoute dst='", "' does name a node.");
+  surf_parse_assert_netpoint(A_surfxml_zoneRoute_gw___src, "zoneRoute gw_src='", "' does name a node.");
+  surf_parse_assert_netpoint(A_surfxml_zoneRoute_gw___dst, "zoneRoute gw_dst='", "' does name a node.");
 }
 
 void STag_surfxml_bypassRoute(){
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassRoute_src), "bypassRoute src='%s' does name a node.",
-                    A_surfxml_bypassRoute_src);
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassRoute_dst), "bypassRoute dst='%s' does name a node.",
-                    A_surfxml_bypassRoute_dst);
+  surf_parse_assert_netpoint(A_surfxml_bypassRoute_src, "bypassRoute src='", "' does name a node.");
+  surf_parse_assert_netpoint(A_surfxml_bypassRoute_dst, "bypassRoute dst='", "' does name a node.");
 }
 
 void STag_surfxml_bypassASroute(){
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassASroute_src),
-                    "bypassASroute src='%s' does name a node.", A_surfxml_bypassASroute_src);
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassASroute_dst),
-                    "bypassASroute dst='%s' does name a node.", A_surfxml_bypassASroute_dst);
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassASroute_gw___src),
-                    "bypassASroute gw_src='%s' does name a node.", A_surfxml_bypassASroute_gw___src);
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassASroute_gw___dst),
-                    "bypassASroute gw_dst='%s' does name a node.", A_surfxml_bypassASroute_gw___dst);
+  surf_parse_assert_netpoint(A_surfxml_bypassASroute_src, "bypassASroute src='", "' does name a node.");
+  surf_parse_assert_netpoint(A_surfxml_bypassASroute_dst, "bypassASroute dst='", "' does name a node.");
+  surf_parse_assert_netpoint(A_surfxml_bypassASroute_gw___src, "bypassASroute gw_src='", "' does name a node.");
+  surf_parse_assert_netpoint(A_surfxml_bypassASroute_gw___dst, "bypassASroute gw_dst='", "' does name a node.");
 }
 void STag_surfxml_bypassZoneRoute(){
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassZoneRoute_src),
-                    "bypassASroute src='%s' does name a node.", A_surfxml_bypassZoneRoute_src);
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassZoneRoute_dst),
-                    "bypassASroute dst='%s' does name a node.", A_surfxml_bypassZoneRoute_dst);
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassZoneRoute_gw___src),
-                    "bypassASroute gw_src='%s' does name a node.", A_surfxml_bypassZoneRoute_gw___src);
-  surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassZoneRoute_gw___dst),
-                    "bypassASroute gw_dst='%s' does name a node.", A_surfxml_bypassZoneRoute_gw___dst);
+  surf_parse_assert_netpoint(A_surfxml_bypassZoneRoute_src, "bypassZoneRoute src='", "' does name a node.");
+  surf_parse_assert_netpoint(A_surfxml_bypassZoneRoute_dst, "bypassZoneRoute dst='", "' does name a node.");
+  surf_parse_assert_netpoint(A_surfxml_bypassZoneRoute_gw___src, "bypassZoneRoute gw_src='", "' does name a node.");
+  surf_parse_assert_netpoint(A_surfxml_bypassZoneRoute_gw___dst, "bypassZoneRoute gw_dst='", "' does name a node.");
 }
 
 void ETag_surfxml_route(){
index b45ef48..9418706 100644 (file)
@@ -1,11 +1,13 @@
 ! expect signal SIGABRT
 $ ${bindir:=.}/flatifier ../platforms/bogus_missing_src_gateway.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
 > [  0.000000] [0:maestro@] Switching to the L07 model to handle parallel tasks.
-> [  0.000000] [0:maestro@] Parse error at ../platforms/bogus_missing_src_gateway.xml:14: zoneRoute gw_src='nod-cluster_router.cluster.us' does name a node.
+> [  0.000000] [0:maestro@] Parse error at ../platforms/bogus_missing_src_gateway.xml:14: zoneRoute gw_src='nod-cluster_router.cluster.us' does name a node. Existing netpoints: 
+> 'noeud-2.grappe.fr','noeud-4.grappe.fr','noeud-1.grappe.fr','noeud-3.grappe.fr','node-1.cluster.us','noeud-grappe_router.grappe.fr','node-2.cluster.us','node-3.cluster.us','node-4.cluster.us','node-cluster_router.cluster.us'
 > [  0.000000] [0:maestro@] Exiting now
 
 ! expect signal SIGABRT
 $ ${bindir:=.}/flatifier ../platforms/bogus_missing_dst_gateway.xml "--log=root.fmt:[%10.6r]%e[%i:%P@%h]%e%m%n"
 > [  0.000000] [0:maestro@] Switching to the L07 model to handle parallel tasks.
-> [  0.000000] [0:maestro@] Parse error at ../platforms/bogus_missing_dst_gateway.xml:14: zoneRoute gw_dst='neud-grappe_router.grappe.fr' does name a node.
+> [  0.000000] [0:maestro@] Parse error at ../platforms/bogus_missing_dst_gateway.xml:14: zoneRoute gw_dst='neud-grappe_router.grappe.fr' does name a node. Existing netpoints: 
+> 'noeud-2.grappe.fr','noeud-4.grappe.fr','noeud-1.grappe.fr','noeud-3.grappe.fr','node-1.cluster.us','noeud-grappe_router.grappe.fr','node-2.cluster.us','node-3.cluster.us','node-4.cluster.us','node-cluster_router.cluster.us'
 > [  0.000000] [0:maestro@] Exiting now