Base class for EMLSR Operations tests. More...
#include "wifi-emlsr-test.h"
Classes | |
struct | FrameInfo |
Information about transmitted frames. More... | |
Public Types | |
enum | TrafficDirection : uint8_t { DOWNLINK = 0 , UPLINK } |
Enumeration for traffic directions. More... | |
Public Types inherited from ns3::TestCase | |
enum class | Duration { QUICK = 1 , EXTENSIVE = 2 , TAKES_FOREVER = 3 } |
How long the test takes to execute. More... | |
Public Member Functions | |
EmlsrOperationsTestBase (const std::string &name) | |
Constructor. | |
~EmlsrOperationsTestBase () override=default | |
Public Member Functions inherited from ns3::TestCase | |
TestCase (const TestCase &)=delete | |
virtual | ~TestCase () |
Destructor. | |
std::string | GetName () const |
TestCase & | operator= (const TestCase &)=delete |
Protected Member Functions | |
void | CheckBlockedLink (Ptr< WifiMac > mac, Mac48Address dest, uint8_t linkId, WifiQueueBlockedReason reason, bool blocked, std::string description, bool testUnblockedForOtherReasons=true) |
Check whether QoS data unicast transmissions addressed to the given destination on the given link are blocked or unblocked for the given reason on the given device. | |
void | DoSetup () override |
Implementation to do any local setup required for this TestCase. | |
Ptr< PacketSocketClient > | GetApplication (TrafficDirection dir, std::size_t staId, std::size_t count, std::size_t pktSize) const |
virtual void | Transmit (Ptr< WifiMac > mac, uint8_t phyId, WifiConstPsduMap psduMap, WifiTxVector txVector, double txPowerW) |
Callback invoked when a FEM passes PSDUs to the PHY. | |
Protected Member Functions inherited from ns3::TestCase | |
TestCase (std::string name) | |
Constructor. | |
void | AddTestCase (TestCase *testCase, Duration duration=Duration::QUICK) |
Add an individual child TestCase to this test suite. | |
TestCase * | GetParent () const |
Get the parent of this TestCase. | |
bool | IsStatusFailure () const |
Check if any tests failed. | |
bool | IsStatusSuccess () const |
Check if all tests passed. | |
void | SetDataDir (std::string directory) |
Set the data directory where reference trace files can be found. | |
void | ReportTestFailure (std::string cond, std::string actual, std::string limit, std::string message, std::string file, int32_t line) |
Log the failure of this TestCase. | |
bool | MustAssertOnFailure () const |
Check if this run should assert on failure. | |
bool | MustContinueOnFailure () const |
Check if this run should continue on failure. | |
std::string | CreateDataDirFilename (std::string filename) |
Construct the full path to a file in the data directory. | |
std::string | CreateTempDirFilename (std::string filename) |
Construct the full path to a file in a temporary directory. | |
Protected Attributes | |
Ptr< ApWifiMac > | m_apMac |
AP wifi MAC. | |
std::vector< PacketSocketAddress > | m_dlSockets |
packet socket address for DL traffic | |
Time | m_duration {0} |
simulation duration | |
bool | m_establishBaDl {false} |
whether BA needs to be established (for TID 0) with the AP as originator | |
bool | m_establishBaUl {false} |
whether BA needs to be established (for TID 0) with the AP as recipient | |
uint16_t | m_lastAid {0} |
AID of last associated station. | |
std::set< uint8_t > | m_linksToEnableEmlsrOn |
IDs of the links on which EMLSR mode has to be enabled. | |
uint8_t | m_mainPhyId {0} |
ID of the main PHY. | |
std::size_t | m_nEmlsrStations {1} |
number of stations to create that activate EMLSR | |
std::size_t | m_nNonEmlsrStations {0} |
number of stations to create that do not activate EMLSR | |
std::vector< Time > | m_paddingDelay |
Padding Delay advertised by the non-AP MLD. | |
std::vector< Ptr< StaWifiMac > > | m_staMacs |
MACs of the non-AP MLDs. | |
std::vector< Time > | m_transitionDelay |
Transition Delay advertised by the non-AP MLD. | |
Time | m_transitionTimeout {MicroSeconds(128)} |
Transition Timeout advertised by the AP MLD. | |
std::vector< FrameInfo > | m_txPsdus |
transmitted PSDUs | |
std::vector< PacketSocketAddress > | m_ulSockets |
packet socket address for UL traffic | |
Private Member Functions | |
void | SetSsid (uint16_t aid, Mac48Address) |
Set the SSID on the next station that needs to start the association procedure. | |
virtual void | StartTraffic () |
Start the generation of traffic (needs to be overridden) | |
Additional Inherited Members | |
Static Public Attributes inherited from ns3::TestCase | |
static constexpr auto | QUICK = Duration::QUICK |
Deprecated test duration simple enums. | |
static constexpr auto | EXTENSIVE = Duration::EXTENSIVE |
static constexpr auto | TAKES_FOREVER = Duration::TAKES_FOREVER |
Base class for EMLSR Operations tests.
This base class setups and configures one AP MLD, a variable number of non-AP MLDs with EMLSR activated and a variable number of non-AP MLD with EMLSR deactivated. Every MLD has three links, each operating on a distinct PHY band (2.4 GHz, 5 GHz and 6 GHz). Therefore, it is expected that three links are setup by the non-AP MLD(s). The values for the Padding Delay, the Transition Delay and the Transition Timeout are provided as argument to the constructor of this class, along with the IDs of the links on which EMLSR mode must be enabled for the non-AP MLDs (this information is used to set the EmlsrLinkSet attribute of the DefaultEmlsrManager installed on the non-AP MLDs).
Definition at line 60 of file wifi-emlsr-test.h.
enum EmlsrOperationsTestBase::TrafficDirection : uint8_t |
Enumeration for traffic directions.
Enumerator | |
---|---|
DOWNLINK | |
UPLINK |
Definition at line 72 of file wifi-emlsr-test.h.
EmlsrOperationsTestBase::EmlsrOperationsTestBase | ( | const std::string & | name | ) |
Constructor.
name | The name of the new TestCase created |
Definition at line 91 of file wifi-emlsr-test.cc.
|
overridedefault |
|
protected |
Check whether QoS data unicast transmissions addressed to the given destination on the given link are blocked or unblocked for the given reason on the given device.
mac | the MAC of the given device |
dest | the MAC address of the given destination |
linkId | the ID of the given link |
reason | the reason for blocking transmissions to test |
blocked | whether transmissions are blocked for the given reason |
description | text indicating when this check is performed |
testUnblockedForOtherReasons | whether to test if transmissions are unblocked for all the reasons other than the one provided |
Definition at line 380 of file wifi-emlsr-test.cc.
References ns3::AC_BE, NS_TEST_EXPECT_MSG_EQ, ns3::WIFI_QOSDATA_QUEUE, and ns3::WIFI_UNICAST.
Referenced by EmlsrDlTxopTest::CheckBlockAck(), EmlsrDlTxopTest::CheckInitialControlFrame(), EmlsrDlTxopTest::CheckPmModeAfterAssociation(), EmlsrDlTxopTest::CheckQosFrames(), EmlsrUlTxopTest::CheckQosFrames(), and EmlsrDlTxopTest::CheckStaEmlNotificationFrame().
|
overrideprotectedvirtual |
Implementation to do any local setup required for this TestCase.
Subclasses should override this method to perform any costly per-test setup before DoRun is invoked.
Reimplemented from ns3::TestCase.
Reimplemented in EmlsrUlTxopTest.
Definition at line 142 of file wifi-emlsr-test.cc.
References ns3::SpectrumWifiPhyHelper::AddChannel(), ns3::WifiHelper::AssignStreams(), ns3::NodeList::Begin(), ns3::Config::ConnectWithoutContext(), ns3::CreateObject(), ns3::WifiPhyHelper::DLT_IEEE802_11_RADIO, ns3::DynamicCast(), ns3::NodeList::End(), ns3::NetDeviceContainer::Get(), ns3::PacketSocketHelper::Install(), m_apMac, m_dlSockets, m_duration, m_linksToEnableEmlsrOn, m_mainPhyId, m_nEmlsrStations, m_nNonEmlsrStations, m_paddingDelay, m_staMacs, m_transitionDelay, m_transitionTimeout, m_ulSockets, ns3::MakeCallback(), NS_ASSERT_MSG, NS_TEST_ASSERT_MSG_NE, ns3::Simulator::Schedule(), ns3::Seconds(), ns3::WifiPhyHelper::Set(), ns3::Config::SetDefault(), ns3::WifiPhyHelper::SetPcapCaptureType(), ns3::WifiPhyHelper::SetPcapDataLinkType(), ns3::PacketSocketAddress::SetProtocol(), ns3::RngSeedManager::SetRun(), ns3::RngSeedManager::SetSeed(), ns3::PacketSocketAddress::SetSingleDevice(), SetSsid(), Transmit(), ns3::WIFI_SPECTRUM_2_4_GHZ, ns3::WIFI_SPECTRUM_5_GHZ, ns3::WIFI_SPECTRUM_6_GHZ, and ns3::WIFI_STANDARD_80211be.
Referenced by EmlOmnExchangeTest::DoSetup(), EmlsrCcaBusyTest::DoSetup(), EmlsrDlTxopTest::DoSetup(), EmlsrLinkSwitchTest::DoSetup(), and EmlsrUlTxopTest::DoSetup().
|
protected |
dir | the traffic direction (downlink/uplink) |
staId | the index (starting at 0) of the non-AP MLD generating/receiving packets |
count | the number of packets to generate |
pktSize | the size of the packets to generate |
Definition at line 314 of file wifi-emlsr-test.cc.
References ns3::CreateObject(), dir, DOWNLINK, m_dlSockets, m_duration, m_ulSockets, ns3::MicroSeconds(), ns3::Simulator::Now(), pktSize, and ns3::Seconds().
Referenced by EmlsrUlTxopTest::CheckBlockAck(), EmlsrDlTxopTest::CheckQosFrames(), EmlsrLinkSwitchTest::CheckQosFrames(), EmlsrUlTxopTest::CheckQosFrames(), SetSsid(), EmlsrDlTxopTest::StartTraffic(), EmlsrUlTxopTest::StartTraffic(), and EmlsrCcaBusyTest::TransmitPacketToAp().
|
private |
Set the SSID on the next station that needs to start the association procedure.
This method is connected to the ApWifiMac's AssociatedSta trace source. Start generating traffic (if needed) when all stations are associated.
aid | the AID assigned to the previous associated STA |
Definition at line 331 of file wifi-emlsr-test.cc.
References DOWNLINK, GetApplication(), m_apMac, m_establishBaDl, m_establishBaUl, m_lastAid, m_nEmlsrStations, m_nNonEmlsrStations, m_staMacs, ns3::MilliSeconds(), ns3::Simulator::Schedule(), StartTraffic(), and UPLINK.
Referenced by DoSetup().
|
inlineprivatevirtual |
Start the generation of traffic (needs to be overridden)
Reimplemented in EmlsrCcaBusyTest, EmlsrDlTxopTest, and EmlsrUlTxopTest.
Definition at line 176 of file wifi-emlsr-test.h.
Referenced by SetSsid().
|
protectedvirtual |
Callback invoked when a FEM passes PSDUs to the PHY.
mac | the MAC transmitting the PSDUs |
phyId | the ID of the PHY transmitting the PSDUs |
psduMap | the PSDU map |
txVector | the TX vector |
txPowerW | the tx power in Watts |
Reimplemented in EmlOmnExchangeTest, EmlsrDlTxopTest, EmlsrLinkSwitchTest, and EmlsrUlTxopTest.
Definition at line 97 of file wifi-emlsr-test.cc.
References ns3::WifiPhy::CalculateTxDuration(), m_txPsdus, ns3::Time::MS, ns3::Simulator::Now(), NS_LOG_INFO, NS_TEST_ASSERT_MSG_EQ, ns3::PeekPointer(), and ns3::WifiActionHeader::Print().
Referenced by DoSetup(), EmlOmnExchangeTest::Transmit(), EmlsrDlTxopTest::Transmit(), EmlsrLinkSwitchTest::Transmit(), and EmlsrUlTxopTest::Transmit().
AP wifi MAC.
Definition at line 156 of file wifi-emlsr-test.h.
Referenced by EmlsrDlTxopTest::CheckApEmlNotificationFrame(), EmlsrDlTxopTest::CheckBlockAck(), EmlsrUlTxopTest::CheckBlockAck(), EmlsrUlTxopTest::CheckCtsFrames(), EmlsrDlTxopTest::CheckInitialControlFrame(), EmlsrLinkSwitchTest::CheckInitialControlFrame(), EmlsrDlTxopTest::CheckPmModeAfterAssociation(), EmlsrDlTxopTest::CheckQosFrames(), EmlsrLinkSwitchTest::CheckQosFrames(), EmlsrUlTxopTest::CheckQosFrames(), EmlsrLinkSwitchTest::CheckRtsFrame(), EmlsrDlTxopTest::CheckStaEmlNotificationFrame(), EmlOmnExchangeTest::DoSetup(), EmlsrCcaBusyTest::DoSetup(), EmlsrDlTxopTest::DoSetup(), EmlsrLinkSwitchTest::DoSetup(), DoSetup(), EmlsrUlTxopTest::DoSetup(), SetSsid(), EmlsrDlTxopTest::StartTraffic(), EmlsrUlTxopTest::StartTraffic(), and EmlsrLinkSwitchTest::Transmit().
|
protected |
packet socket address for DL traffic
Definition at line 158 of file wifi-emlsr-test.h.
Referenced by DoSetup(), and GetApplication().
|
protected |
simulation duration
Definition at line 161 of file wifi-emlsr-test.h.
Referenced by EmlOmnExchangeTest::EmlOmnExchangeTest(), EmlsrCcaBusyTest::EmlsrCcaBusyTest(), EmlsrDlTxopTest::EmlsrDlTxopTest(), EmlsrLinkSwitchTest::EmlsrLinkSwitchTest(), EmlsrUlTxopTest::EmlsrUlTxopTest(), EmlOmnExchangeTest::DoRun(), EmlsrCcaBusyTest::DoRun(), EmlsrDlTxopTest::DoRun(), EmlsrLinkSwitchTest::DoRun(), EmlsrUlTxopTest::DoRun(), DoSetup(), and GetApplication().
|
protected |
whether BA needs to be established (for TID 0) with the AP as originator
Definition at line 151 of file wifi-emlsr-test.h.
Referenced by EmlsrDlTxopTest::EmlsrDlTxopTest(), EmlsrLinkSwitchTest::EmlsrLinkSwitchTest(), EmlsrUlTxopTest::EmlsrUlTxopTest(), and SetSsid().
|
protected |
whether BA needs to be established (for TID 0) with the AP as recipient
Definition at line 153 of file wifi-emlsr-test.h.
Referenced by EmlsrCcaBusyTest::EmlsrCcaBusyTest(), EmlsrUlTxopTest::EmlsrUlTxopTest(), and SetSsid().
|
protected |
AID of last associated station.
Definition at line 160 of file wifi-emlsr-test.h.
Referenced by EmlsrDlTxopTest::EnableEmlsrMode(), SetSsid(), and EmlsrDlTxopTest::StartTraffic().
|
protected |
IDs of the links on which EMLSR mode has to be enabled.
Definition at line 141 of file wifi-emlsr-test.h.
Referenced by EmlOmnExchangeTest::EmlOmnExchangeTest(), EmlsrCcaBusyTest::EmlsrCcaBusyTest(), EmlsrDlTxopTest::EmlsrDlTxopTest(), EmlsrLinkSwitchTest::EmlsrLinkSwitchTest(), EmlsrUlTxopTest::EmlsrUlTxopTest(), EmlOmnExchangeTest::CheckEmlNotification(), EmlOmnExchangeTest::CheckEmlsrLinks(), and DoSetup().
|
protected |
ID of the main PHY.
Definition at line 140 of file wifi-emlsr-test.h.
Referenced by EmlsrCcaBusyTest::EmlsrCcaBusyTest(), EmlsrDlTxopTest::EmlsrDlTxopTest(), EmlsrLinkSwitchTest::EmlsrLinkSwitchTest(), EmlsrUlTxopTest::EmlsrUlTxopTest(), EmlsrUlTxopTest::BackoffGenerated(), EmlsrUlTxopTest::CheckBlockAck(), EmlsrUlTxopTest::CheckCtsFrames(), EmlOmnExchangeTest::CheckEmlNotification(), EmlsrLinkSwitchTest::CheckInitialControlFrame(), EmlsrUlTxopTest::CheckInitialControlFrame(), EmlsrDlTxopTest::CheckPmModeAfterAssociation(), EmlsrCcaBusyTest::CheckPoint1(), EmlsrLinkSwitchTest::CheckQosFrames(), EmlsrUlTxopTest::CheckQosFrames(), EmlsrDlTxopTest::CheckResults(), EmlsrUlTxopTest::CheckResults(), EmlsrLinkSwitchTest::CheckRtsFrame(), EmlsrUlTxopTest::CheckRtsFrames(), DoSetup(), EmlsrUlTxopTest::DoSetup(), EmlsrCcaBusyTest::StartTraffic(), EmlsrUlTxopTest::StartTraffic(), EmlOmnExchangeTest::Transmit(), EmlsrDlTxopTest::Transmit(), EmlsrLinkSwitchTest::Transmit(), and EmlsrUlTxopTest::Transmit().
|
protected |
number of stations to create that activate EMLSR
Definition at line 143 of file wifi-emlsr-test.h.
Referenced by EmlOmnExchangeTest::EmlOmnExchangeTest(), EmlsrCcaBusyTest::EmlsrCcaBusyTest(), EmlsrDlTxopTest::EmlsrDlTxopTest(), EmlsrLinkSwitchTest::EmlsrLinkSwitchTest(), EmlsrUlTxopTest::EmlsrUlTxopTest(), EmlsrDlTxopTest::CheckApEmlNotificationFrame(), EmlsrDlTxopTest::CheckBlockAck(), EmlsrDlTxopTest::CheckInitialControlFrame(), EmlsrDlTxopTest::CheckPmModeAfterAssociation(), EmlsrDlTxopTest::CheckQosFrames(), EmlsrDlTxopTest::CheckResults(), EmlsrDlTxopTest::CheckStaEmlNotificationFrame(), EmlsrDlTxopTest::DoSetup(), DoSetup(), EmlsrDlTxopTest::EnableEmlsrMode(), SetSsid(), EmlsrDlTxopTest::StartTraffic(), and EmlsrDlTxopTest::Transmit().
|
protected |
number of stations to create that do not activate EMLSR
Definition at line 144 of file wifi-emlsr-test.h.
Referenced by EmlOmnExchangeTest::EmlOmnExchangeTest(), EmlsrCcaBusyTest::EmlsrCcaBusyTest(), EmlsrDlTxopTest::EmlsrDlTxopTest(), EmlsrLinkSwitchTest::EmlsrLinkSwitchTest(), EmlsrUlTxopTest::EmlsrUlTxopTest(), EmlsrDlTxopTest::CheckPmModeAfterAssociation(), EmlsrDlTxopTest::CheckResults(), EmlsrDlTxopTest::DoSetup(), DoSetup(), SetSsid(), and EmlsrDlTxopTest::StartTraffic().
|
protected |
Padding Delay advertised by the non-AP MLD.
Definition at line 147 of file wifi-emlsr-test.h.
Referenced by EmlsrDlTxopTest::EmlsrDlTxopTest(), EmlOmnExchangeTest::CheckEmlCapabilitiesInAssocReq(), EmlsrDlTxopTest::CheckInitialControlFrame(), EmlsrDlTxopTest::DoSetup(), and DoSetup().
|
protected |
MACs of the non-AP MLDs.
Definition at line 157 of file wifi-emlsr-test.h.
Referenced by EmlsrUlTxopTest::BackoffGenerated(), EmlsrDlTxopTest::CheckApEmlNotificationFrame(), EmlsrDlTxopTest::CheckBlockAck(), EmlsrUlTxopTest::CheckBlockAck(), EmlsrUlTxopTest::CheckCtsFrames(), EmlOmnExchangeTest::CheckEmlCapabilitiesInAssocResp(), EmlOmnExchangeTest::CheckEmlNotification(), EmlOmnExchangeTest::CheckEmlsrLinks(), EmlsrDlTxopTest::CheckInitialControlFrame(), EmlsrLinkSwitchTest::CheckInitialControlFrame(), EmlsrUlTxopTest::CheckInitialControlFrame(), EmlsrDlTxopTest::CheckPmModeAfterAssociation(), EmlsrCcaBusyTest::CheckPoint1(), EmlsrCcaBusyTest::CheckPoint2(), EmlsrCcaBusyTest::CheckPoint3(), EmlsrDlTxopTest::CheckQosFrames(), EmlsrLinkSwitchTest::CheckQosFrames(), EmlsrUlTxopTest::CheckQosFrames(), EmlsrDlTxopTest::CheckResults(), EmlsrUlTxopTest::CheckResults(), EmlsrLinkSwitchTest::CheckRtsFrame(), EmlsrUlTxopTest::CheckRtsFrames(), EmlsrDlTxopTest::CheckStaEmlNotificationFrame(), EmlOmnExchangeTest::DoSetup(), EmlsrCcaBusyTest::DoSetup(), EmlsrLinkSwitchTest::DoSetup(), DoSetup(), EmlsrUlTxopTest::DoSetup(), EmlsrDlTxopTest::EnableEmlsrMode(), SetSsid(), EmlsrCcaBusyTest::StartTraffic(), EmlsrDlTxopTest::StartTraffic(), EmlsrUlTxopTest::StartTraffic(), EmlOmnExchangeTest::Transmit(), EmlsrDlTxopTest::Transmit(), EmlsrLinkSwitchTest::Transmit(), and EmlsrCcaBusyTest::TransmitPacketToAp().
|
protected |
Transition Delay advertised by the non-AP MLD.
Definition at line 149 of file wifi-emlsr-test.h.
Referenced by EmlsrCcaBusyTest::EmlsrCcaBusyTest(), EmlsrDlTxopTest::EmlsrDlTxopTest(), EmlsrLinkSwitchTest::EmlsrLinkSwitchTest(), EmlsrUlTxopTest::EmlsrUlTxopTest(), EmlsrDlTxopTest::CheckBlockAck(), EmlOmnExchangeTest::CheckEmlCapabilitiesInAssocReq(), EmlsrDlTxopTest::CheckQosFrames(), EmlsrDlTxopTest::CheckStaEmlNotificationFrame(), and DoSetup().
|
protected |
Transition Timeout advertised by the AP MLD.
Definition at line 146 of file wifi-emlsr-test.h.
Referenced by EmlOmnExchangeTest::EmlOmnExchangeTest(), EmlsrDlTxopTest::EmlsrDlTxopTest(), EmlOmnExchangeTest::CheckEmlCapabilitiesInAssocResp(), DoSetup(), and EmlOmnExchangeTest::TxOk().
|
protected |
transmitted PSDUs
Definition at line 155 of file wifi-emlsr-test.h.
Referenced by EmlsrLinkSwitchTest::CheckInitialControlFrame(), EmlsrDlTxopTest::CheckResults(), EmlsrLinkSwitchTest::CheckResults(), EmlsrUlTxopTest::CheckResults(), EmlOmnExchangeTest::Transmit(), EmlsrDlTxopTest::Transmit(), EmlsrLinkSwitchTest::Transmit(), Transmit(), and EmlsrUlTxopTest::Transmit().
|
protected |
packet socket address for UL traffic
Definition at line 159 of file wifi-emlsr-test.h.
Referenced by DoSetup(), and GetApplication().