From: Martin Quinson Date: Sun, 22 Sep 2019 22:55:54 +0000 (+0200) Subject: integrate the wifi unit tests X-Git-Tag: v3.24~68^2^2~16 X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/356466da3fe215d9c33bd63f59230fb8c60da021 integrate the wifi unit tests --- diff --git a/teshsuite/surf/CMakeLists.txt b/teshsuite/surf/CMakeLists.txt index ab86688c85..fffe9eba77 100644 --- a/teshsuite/surf/CMakeLists.txt +++ b/teshsuite/surf/CMakeLists.txt @@ -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 index 5ebe484acb..0000000000 --- a/teshsuite/surf/wifi_usage/1STA-1LINK-1NODE-CT.cpp +++ /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 -#include -#include -#include - -XBT_LOG_NEW_DEFAULT_CATEGORY(simulator, "[wifi_usage] 1STA-1LINK-1NODE-CT"); - -void setup_simulation(); -static void flowActor(std::vector 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 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 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("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 index 8da4f52c57..0000000000 --- a/teshsuite/surf/wifi_usage/1STA-1LINK-1NODE-CT.tesh +++ /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 index 8e4a34c232..0000000000 --- a/teshsuite/surf/wifi_usage/1STA-1LINK-1NODE-NOCT.tesh +++ /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 diff --git a/teshsuite/surf/wifi_usage/1STA-1LINK-1NODE-NOCT.cpp b/teshsuite/surf/wifi_usage/1STA-1LINK-1NODE.cpp similarity index 77% rename from teshsuite/surf/wifi_usage/1STA-1LINK-1NODE-NOCT.cpp rename to teshsuite/surf/wifi_usage/1STA-1LINK-1NODE.cpp index 5d810fe92f..73e951e259 100644 --- a/teshsuite/surf/wifi_usage/1STA-1LINK-1NODE-NOCT.cpp +++ b/teshsuite/surf/wifi_usage/1STA-1LINK-1NODE.cpp @@ -20,13 +20,16 @@ static void flowActor(std::vector 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 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 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 index 0000000000..accf3d0af9 --- /dev/null +++ b/teshsuite/surf/wifi_usage/1STA-1LINK-1NODE.tesh @@ -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 index 0fe49d3428..0000000000 --- a/teshsuite/surf/wifi_usage/2STA-CT.tesh +++ /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 index d238dd628e..0000000000 --- a/teshsuite/surf/wifi_usage/2STA-NOCT.cpp +++ /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 -#include -#include -#include - -XBT_LOG_NEW_DEFAULT_CATEGORY(simulator, "[wifi_usage] 2STA-1NODE"); - -void setup_simulation(); -static void flowActor(std::vector 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 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 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("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 index 064cce2bcd..0000000000 --- a/teshsuite/surf/wifi_usage/2STA-NOCT.tesh +++ /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 diff --git a/teshsuite/surf/wifi_usage/2STA-CT.cpp b/teshsuite/surf/wifi_usage/2STA.cpp similarity index 87% rename from teshsuite/surf/wifi_usage/2STA-CT.cpp rename to teshsuite/surf/wifi_usage/2STA.cpp index be6b13d5c4..a8d1dbe95c 100644 --- a/teshsuite/surf/wifi_usage/2STA-CT.cpp +++ b/teshsuite/surf/wifi_usage/2STA.cpp @@ -20,11 +20,14 @@ static void flowActor(std::vector 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 index 0000000000..d06cd8f76e --- /dev/null +++ b/teshsuite/surf/wifi_usage/2STA.tesh @@ -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