Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
integrate the wifi unit tests
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Sun, 22 Sep 2019 22:55:54 +0000 (00:55 +0200)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Sun, 22 Sep 2019 23:20:13 +0000 (01:20 +0200)
teshsuite/surf/CMakeLists.txt
teshsuite/surf/wifi_usage/1STA-1LINK-1NODE-CT.cpp [deleted file]
teshsuite/surf/wifi_usage/1STA-1LINK-1NODE-CT.tesh [deleted file]
teshsuite/surf/wifi_usage/1STA-1LINK-1NODE-NOCT.tesh [deleted file]
teshsuite/surf/wifi_usage/1STA-1LINK-1NODE.cpp [moved from teshsuite/surf/wifi_usage/1STA-1LINK-1NODE-NOCT.cpp with 77% similarity]
teshsuite/surf/wifi_usage/1STA-1LINK-1NODE.tesh [new file with mode: 0644]
teshsuite/surf/wifi_usage/2STA-CT.tesh [deleted file]
teshsuite/surf/wifi_usage/2STA-NOCT.cpp [deleted file]
teshsuite/surf/wifi_usage/2STA-NOCT.tesh [deleted file]
teshsuite/surf/wifi_usage/2STA.cpp [moved from teshsuite/surf/wifi_usage/2STA-CT.cpp with 87% similarity]
teshsuite/surf/wifi_usage/2STA.tesh [new file with mode: 0644]

index ab86688..fffe9eb 100644 (file)
@@ -7,6 +7,21 @@ foreach(x lmm_usage surf_usage surf_usage2)
 
   set(tesh_files    ${tesh_files}    ${CMAKE_CURRENT_SOURCE_DIR}/${x}/${x}.tesh)
   set(teshsuite_src ${teshsuite_src} ${CMAKE_CURRENT_SOURCE_DIR}/${x}/${x}.cpp)
+
+  ADD_TESH(tesh-surf-${x} --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/surf/${x} --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/surf/${x} ${x}.tesh)
+endforeach()
+
+foreach(x 1STA-1LINK-1NODE 2STA)
+  add_executable       (${x}  EXCLUDE_FROM_ALL wifi_usage/${x}.cpp)
+  target_link_libraries(${x}  simgrid)
+  set_target_properties(${x}  PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/wifi_usage)
+  set_property(TARGET ${x} APPEND PROPERTY INCLUDE_DIRECTORIES "${INTERNAL_INCLUDES}")
+  add_dependencies(tests ${x})
+
+  set(tesh_files    ${tesh_files}    ${CMAKE_CURRENT_SOURCE_DIR}/wifi_usage/${x}.tesh)
+  set(teshsuite_src ${teshsuite_src} ${CMAKE_CURRENT_SOURCE_DIR}/wifi_usage/${x}.cpp)
+
+  ADD_TESH(tesh-surf-wifi-${x} --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/surf/wifi_usage --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/surf/wifi_usage ${x}.tesh)
 endforeach()
 
 add_executable       (maxmin_bench EXCLUDE_FROM_ALL maxmin_bench/maxmin_bench.cpp)
@@ -22,10 +37,6 @@ endforeach()
 set(tesh_files     ${tesh_files}                                                               PARENT_SCOPE)
 set(teshsuite_src  ${teshsuite_src} ${CMAKE_CURRENT_SOURCE_DIR}/maxmin_bench/maxmin_bench.cpp  PARENT_SCOPE)
 
-foreach(x lmm_usage surf_usage surf_usage2)
-  ADD_TESH(tesh-surf-${x} --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/surf/${x} --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/surf/${x} ${x}.tesh)
-endforeach()
-
 foreach(x small medium large)
   ADD_TESH(tesh-surf-maxmin-${x} --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/surf/maxmin_bench --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/surf/maxmin_bench maxmin_bench_${x}.tesh)
 endforeach()
diff --git a/teshsuite/surf/wifi_usage/1STA-1LINK-1NODE-CT.cpp b/teshsuite/surf/wifi_usage/1STA-1LINK-1NODE-CT.cpp
deleted file mode 100644 (file)
index 5ebe484..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Copyright (c) 2017-2018. The SimGrid Team. All rights reserved.          */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-#include "simgrid/s4u.hpp"
-#include "xbt/log.h"
-
-#include "simgrid/msg.h"
-#include "src/surf/network_cm02.hpp"
-#include <exception>
-#include <iostream>
-#include <random>
-#include <string>
-
-XBT_LOG_NEW_DEFAULT_CATEGORY(simulator, "[wifi_usage] 1STA-1LINK-1NODE-CT");
-
-void setup_simulation();
-static void flowActor(std::vector<std::string> args);
-
-/**
- * Theory says:
- *   - AP1 is the most constraint constraint
- *   - When two STA communicates on the same AP we have the following AP constraint:
- *     1.05/r_STA1 * rho_STA1 <= 1
- *   - Thus:
- *      mu = 1 / [ 1/1 * 1.05/54Mbps ] = 51428571
- *      simulation_time = 1000*8 / mu = 0.0001555556s
- * BTW: SimGrid should give you: 0.000156s due to computation side effects
- *
- */
-int main(int argc, char** argv)
-{
-
-  // Build engine
-  simgrid::s4u::Engine engine(&argc, argv);
-  engine.load_platform(argv[1]);
-  setup_simulation();
-  engine.run();
-  XBT_INFO("Simulation took %fs", simgrid::s4u::Engine::get_clock());
-  return (0);
-}
-
-void setup_simulation()
-{
-
-  std::vector<std::string> args, noArgs;
-  args.push_back("NODE1");
-  args.push_back("1000");
-  simgrid::s4u::Actor::create("STA1", simgrid::s4u::Host::by_name("STA1"), flowActor, args);
-  simgrid::s4u::Actor::create("NODE1", simgrid::s4u::Host::by_name("NODE1"), flowActor, noArgs);
-  simgrid::kernel::resource::NetworkWifiLink* l =
-      (simgrid::kernel::resource::NetworkWifiLink*)simgrid::s4u::Link::by_name("AP1")->get_impl();
-  l->set_host_rate(simgrid::s4u::Host::by_name("STA1"), 0);
-}
-
-static void flowActor(std::vector<std::string> args)
-{
-  std::string selfName               = simgrid::s4u::this_actor::get_host()->get_name();
-  simgrid::s4u::Mailbox* selfMailbox = simgrid::s4u::Mailbox::by_name(simgrid::s4u::this_actor::get_host()->get_name());
-
-  if (args.size() > 0) { // We should send
-    simgrid::s4u::Mailbox* dstMailbox = simgrid::s4u::Mailbox::by_name(args.at(0));
-
-    int dataSize        = std::atoi(args.at(1).c_str());
-    double comStartTime = simgrid::s4u::Engine::get_clock();
-    dstMailbox->put(const_cast<char*>("message"), dataSize);
-    double comEndTime = simgrid::s4u::Engine::get_clock();
-    XBT_INFO("%s sent %d bytes to %s in %f seconds from %f to %f", selfName.c_str(), dataSize, args.at(0).c_str(),
-             comEndTime - comStartTime, comStartTime, comEndTime);
-  } else { // We should receive
-    selfMailbox->get();
-  }
-}
diff --git a/teshsuite/surf/wifi_usage/1STA-1LINK-1NODE-CT.tesh b/teshsuite/surf/wifi_usage/1STA-1LINK-1NODE-CT.tesh
deleted file mode 100644 (file)
index 8da4f52..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env tesh
-
-$ ${bindir:=.}/1STA-1LINK-1NODE-CT ${platfdir}/wifi/1STA-1LINK-1NODE.xml
-> [STA1:STA1:(1) 0.000156] [simulator/INFO] STA1 sent 1000 bytes to NODE1 in 0.000156 seconds from 0.000000 to 0.000156
-> [0.000156] [simulator/INFO] Simulation took 0.000156s
diff --git a/teshsuite/surf/wifi_usage/1STA-1LINK-1NODE-NOCT.tesh b/teshsuite/surf/wifi_usage/1STA-1LINK-1NODE-NOCT.tesh
deleted file mode 100644 (file)
index 8e4a34c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/env tesh
-
-$ ${bindir:=.}/1STA-1LINK-1NODE-NOCT ${platfdir}/wifi/1STA-1LINK-1NODE.xml --cfg=network/crosstraffic:0
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/crosstraffic' to '0'
-> [STA1:STA1:(1) 0.000148] [simulator/INFO] STA1 sent 1000 bytes to NODE1 in 0.000148 seconds from 0.000000 to 0.000148
-> [0.000148] [simulator/INFO] Simulation took 0.000148s
@@ -20,13 +20,16 @@ static void flowActor(std::vector<std::string> args);
 
 /**
  * Theory says:
- *   - AP1 is the most constraint constraint
+ *   - AP1 is the limiting constraint
  *   - When two STA communicates on the same AP we have the following AP constraint:
- *     1/r_STA1 * rho_STA1 <= 1
- *   - Thus:
+ *     w/o cross-traffic:    1/r_STA1 * rho_STA1 <= 1
+ *     with cross-traffic:   1.05/r_STA1 * rho_STA1 <= 1
+ *   - Thus without cross-traffic:
  *      mu = 1 / [ 1/1 * 1/54Mbps ] = 5.4e+07
  *      simulation_time = 1000*8 / mu = 0.0001481481s
- *
+ *   - Thus with cross-traffic:
+ *      mu = 1 / [ 1/1 * 1.05/54Mbps ] = 51428571
+ *      simulation_time = 1000*8 / mu = 0.0001555556s (rounded to 0.000156s in SimGrid)
  */
 int main(int argc, char** argv)
 {
@@ -47,11 +50,11 @@ void setup_simulation()
   std::vector<std::string> args, noArgs;
   args.push_back("NODE1");
   args.push_back("1000");
-  simgrid::s4u::Actor::create("STA1", simgrid::s4u::Host::by_name("STA1"), flowActor, args);
-  simgrid::s4u::Actor::create("NODE1", simgrid::s4u::Host::by_name("NODE1"), flowActor, noArgs);
+  simgrid::s4u::Actor::create("sender", simgrid::s4u::Host::by_name("Station 1"), flowActor, args);
+  simgrid::s4u::Actor::create("receiver", simgrid::s4u::Host::by_name("NODE1"), flowActor, noArgs);
   simgrid::kernel::resource::NetworkWifiLink* l =
       (simgrid::kernel::resource::NetworkWifiLink*)simgrid::s4u::Link::by_name("AP1")->get_impl();
-  l->set_host_rate(simgrid::s4u::Host::by_name("STA1"), 0);
+  l->set_host_rate(simgrid::s4u::Host::by_name("Station 1"), 0);
 }
 
 static void flowActor(std::vector<std::string> args)
diff --git a/teshsuite/surf/wifi_usage/1STA-1LINK-1NODE.tesh b/teshsuite/surf/wifi_usage/1STA-1LINK-1NODE.tesh
new file mode 100644 (file)
index 0000000..accf3d0
--- /dev/null
@@ -0,0 +1,12 @@
+#!/usr/bin/env tesh
+
+p Test WITH crosstraffic
+$ ${bindir:=.}/1STA-1LINK-1NODE ${platfdir}/wifi/1STA-1LINK-1NODE.xml
+> [Station 1:sender:(1) 0.000156] [simulator/INFO] Station 1 sent 1000 bytes to NODE1 in 0.000156 seconds from 0.000000 to 0.000156
+> [0.000156] [simulator/INFO] Simulation took 0.000156s
+
+p Test WITHOUT crosstraffic
+$ ${bindir:=.}/1STA-1LINK-1NODE ${platfdir}/wifi/1STA-1LINK-1NODE.xml --cfg=network/crosstraffic:0
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/crosstraffic' to '0'
+> [Station 1:sender:(1) 0.000148] [simulator/INFO] Station 1 sent 1000 bytes to NODE1 in 0.000148 seconds from 0.000000 to 0.000148
+> [0.000148] [simulator/INFO] Simulation took 0.000148s
diff --git a/teshsuite/surf/wifi_usage/2STA-CT.tesh b/teshsuite/surf/wifi_usage/2STA-CT.tesh
deleted file mode 100644 (file)
index 0fe49d3..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env tesh
-
-$ ${bindir:=.}/2STA-CT ${platfdir}/wifi/2STA.xml
-> [STA1:STA1:(1) 0.000311] [simulator/INFO] STA1 sent 1000 bytes to STA2 in 0.000311 seconds from 0.000000 to 0.000311
-> [0.000311] [simulator/INFO] Simulation took 0.000311s
diff --git a/teshsuite/surf/wifi_usage/2STA-NOCT.cpp b/teshsuite/surf/wifi_usage/2STA-NOCT.cpp
deleted file mode 100644 (file)
index d238dd6..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Copyright (c) 2017-2018. The SimGrid Team. All rights reserved.          */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-#include "simgrid/msg.h"
-#include "simgrid/s4u.hpp"
-#include "src/surf/network_cm02.hpp"
-#include "xbt/log.h"
-#include <exception>
-#include <iostream>
-#include <random>
-#include <string>
-
-XBT_LOG_NEW_DEFAULT_CATEGORY(simulator, "[wifi_usage] 2STA-1NODE");
-
-void setup_simulation();
-static void flowActor(std::vector<std::string> args);
-
-/**
- * Theory says:
- *   - When two STA communicates on the same AP we have the following AP constraint:
- *     1/r_STA1 * rho_STA1 + 1/r_STA2 * rho_2 <= 1
- *   - Thus:
- *      mu = 1 / [ 1/2 * 1/54Mbps + 1/54Mbps ] = 5.4e+07
- *      simulation_time = 1000*8 / [ mu / 2 ] = 0.0002962963s
- *
- */
-int main(int argc, char** argv)
-{
-
-  // Build engine
-  simgrid::s4u::Engine engine(&argc, argv);
-  engine.load_platform(argv[1]);
-  setup_simulation();
-  engine.run();
-  XBT_INFO("Simulation took %fs", simgrid::s4u::Engine::get_clock());
-
-  return (0);
-}
-
-void setup_simulation()
-{
-
-  std::vector<std::string> args, noArgs;
-  args.push_back("STA2");
-  args.push_back("1000");
-  simgrid::s4u::Actor::create("STA1", simgrid::s4u::Host::by_name("STA1"), flowActor, args);
-  simgrid::s4u::Actor::create("STA2", simgrid::s4u::Host::by_name("STA2"), flowActor, noArgs);
-  simgrid::kernel::resource::NetworkWifiLink* l =
-      (simgrid::kernel::resource::NetworkWifiLink*)simgrid::s4u::Link::by_name("AP1")->get_impl();
-  l->set_host_rate(simgrid::s4u::Host::by_name("STA1"), 0);
-  l->set_host_rate(simgrid::s4u::Host::by_name("STA2"), 0);
-}
-
-static void flowActor(std::vector<std::string> args)
-{
-  std::string selfName               = simgrid::s4u::this_actor::get_host()->get_name();
-  simgrid::s4u::Mailbox* selfMailbox = simgrid::s4u::Mailbox::by_name(simgrid::s4u::this_actor::get_host()->get_name());
-
-  if (args.size() > 0) { // We should send
-    simgrid::s4u::Mailbox* dstMailbox = simgrid::s4u::Mailbox::by_name(args.at(0));
-
-    int dataSize        = std::atoi(args.at(1).c_str());
-    double comStartTime = simgrid::s4u::Engine::get_clock();
-    dstMailbox->put(const_cast<char*>("message"), dataSize);
-    double comEndTime = simgrid::s4u::Engine::get_clock();
-    XBT_INFO("%s sent %d bytes to %s in %f seconds from %f to %f", selfName.c_str(), dataSize, args.at(0).c_str(),
-             comEndTime - comStartTime, comStartTime, comEndTime);
-  } else { // We should receive
-    selfMailbox->get();
-  }
-}
diff --git a/teshsuite/surf/wifi_usage/2STA-NOCT.tesh b/teshsuite/surf/wifi_usage/2STA-NOCT.tesh
deleted file mode 100644 (file)
index 064cce2..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/env tesh
-
-$ ${bindir:=.}/2STA-NOCT ${platfdir}/wifi/2STA.xml --cfg=network/crosstraffic:0
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/crosstraffic' to '0'
-> [STA1:STA1:(1) 0.000296] [simulator/INFO] STA1 sent 1000 bytes to STA2 in 0.000296 seconds from 0.000000 to 0.000296
-> [0.000296] [simulator/INFO] Simulation took 0.000296s
similarity index 87%
rename from teshsuite/surf/wifi_usage/2STA-CT.cpp
rename to teshsuite/surf/wifi_usage/2STA.cpp
index be6b13d..a8d1dbe 100644 (file)
@@ -20,11 +20,14 @@ static void flowActor(std::vector<std::string> args);
 /**
  * Theory says:
  *   - When two STA communicates on the same AP we have the following AP constraint:
- *     1.05/r_STA1 * rho_STA1 + 1.05/r_STA2 * rho_2 <= 1
- *   - Thus:
+ *     w/o cross-traffic:       1/r_STA1 * rho_STA1 +    1/r_STA2 * rho_2 <= 1
+ *     with cross-traffic:   1.05/r_STA1 * rho_STA1 + 1.05/r_STA2 * rho_2 <= 1
+ *   - Thus without cross-traffic:
+ *      mu = 1 / [ 1/2 * 1/54Mbps + 1/54Mbps ] = 5.4e+07
+ *      simulation_time = 1000*8 / [ mu / 2 ] = 0.0002962963s
+ *   - Thus with cross-traffic:
  *      mu = 1 / [ 1/2 * 1.05/54Mbps + 1.05/54Mbps ] =  51428571
  *      simulation_time = 1000*8 / [ mu / 2 ] = 0.0003111111s
- *
  */
 int main(int argc, char** argv)
 {
diff --git a/teshsuite/surf/wifi_usage/2STA.tesh b/teshsuite/surf/wifi_usage/2STA.tesh
new file mode 100644 (file)
index 0000000..d06cd8f
--- /dev/null
@@ -0,0 +1,10 @@
+#!/usr/bin/env tesh
+
+$ ${bindir:=.}/2STA ${platfdir}/wifi/2STA.xml --cfg=network/crosstraffic:0
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/crosstraffic' to '0'
+> [STA1:STA1:(1) 0.000296] [simulator/INFO] STA1 sent 1000 bytes to STA2 in 0.000296 seconds from 0.000000 to 0.000296
+> [0.000296] [simulator/INFO] Simulation took 0.000296s
+
+$ ${bindir:=.}/2STA ${platfdir}/wifi/2STA.xml
+> [STA1:STA1:(1) 0.000311] [simulator/INFO] STA1 sent 1000 bytes to STA2 in 0.000311 seconds from 0.000000 to 0.000311
+> [0.000311] [simulator/INFO] Simulation took 0.000311s