Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
make an interesting error message when mixing link_energy and NS3
[simgrid.git] / src / surf / network_ns3.cpp
index f7c56ae..ea97b5f 100644 (file)
@@ -19,6 +19,7 @@
 #include "src/instr/instr_private.hpp" // TRACE_is_enabled(). FIXME: remove by subscribing tracing to the surf signals
 #include "src/kernel/routing/NetPoint.hpp"
 
+#include "simgrid/plugins/energy.h"
 #include "simgrid/s4u/Engine.hpp"
 #include "simgrid/s4u/NetZone.hpp"
 
@@ -143,6 +144,9 @@ namespace simgrid {
 namespace surf {
 
 NetworkNS3Model::NetworkNS3Model() : NetworkModel() {
+  xbt_assert(not sg_link_energy_is_inited(),
+             "LinkEnergy plugin and NS3 network models are not compatible. Are you looking for Ecofen, maybe?");
+
   NetPointNs3::EXTENSION_ID = simgrid::kernel::routing::NetPoint::extension_create<NetPointNs3>();
 
   ns3_initialize(ns3_tcp_model.get().c_str());
@@ -232,6 +236,9 @@ void NetworkNS3Model::updateActionsState(double now, double delta)
       socket_to_destroy.push_back(ns3Socket);
       XBT_DEBUG("Destroy socket %p of action %p", ns3Socket.c_str(), action);
       action->finish(Action::State::done);
+    } else {
+      XBT_DEBUG("Socket %p sent %u bytes out of %u (%u remaining)", ns3Socket.c_str(), sgFlow->sentBytes_,
+                sgFlow->totalBytes_, sgFlow->remaining_);
     }
   }
 
@@ -450,8 +457,8 @@ void ns3_add_link(NetPointNs3* src, NetPointNs3* dst, double bw, double lat) {
   ns3::Ptr<ns3::Node> b = nodes.Get(dstNum);
 
   XBT_DEBUG("\tAdd PTP from %d to %d bw:'%f Bps' lat:'%fs'", srcNum, dstNum, bw, lat);
-  pointToPoint.SetChannelAttribute("DataRate",
-                                   ns3::DataRateValue(ns3::DataRate(bw * 8))); // NS3 takes bps, but we provide Bps
+  pointToPoint.SetDeviceAttribute("DataRate",
+                                  ns3::DataRateValue(ns3::DataRate(bw * 8))); // NS3 takes bps, but we provide Bps
   pointToPoint.SetChannelAttribute("Delay", ns3::TimeValue(ns3::Seconds(lat)));
 
   ns3::NetDeviceContainer netA;