Channel Access Manager Test. More...
Public Member Functions | |
ChannelAccessManagerTest () | |
void | DoRun () |
Implementation to actually run this TestCase. | |
void | DoRun () |
Implementation to actually run this TestCase. | |
void | DoRun () override |
Implementation to actually run this TestCase. | |
void | GenerateBackoff (uint32_t i) |
Generate backoff function. | |
void | NotifyAccessGranted (uint32_t i) |
Notify access granted function. | |
void | NotifyChannelSwitching () |
Notify channel switching function. | |
void | NotifyInternalCollision (Ptr< TxopTest< TxopType > > state) |
Notify internal collision function. | |
![]() | |
TestCase (const TestCase &)=delete | |
virtual | ~TestCase () |
Destructor. | |
std::string | GetName () const |
TestCase & | operator= (const TestCase &)=delete |
Private Types | |
typedef std::vector< Ptr< TxopTest< TxopType > > > | TxopTests |
the TXOP tests typedef | |
Private Member Functions | |
void | AddAccessRequest (uint64_t at, uint64_t txTime, uint64_t expectedGrantTime, uint32_t from) |
Add access function. | |
void | AddAccessRequestWithAckTimeout (uint64_t at, uint64_t txTime, uint64_t expectedGrantTime, uint32_t from) |
Add access request with Ack timeout. | |
void | AddAccessRequestWithSuccessfulAck (uint64_t at, uint64_t txTime, uint64_t expectedGrantTime, uint32_t ackDelay, uint32_t from) |
Add access request with successful ack. | |
void | AddAckTimeoutReset (uint64_t at) |
Add Ack timeout reset function. | |
void | AddCcaBusyEvt (uint64_t at, uint64_t duration, WifiChannelListType channelType=WIFI_CHANLIST_PRIMARY, const std::vector< Time > &per20MhzDurations={}) |
Add CCA busy event function. | |
void | AddNavReset (uint64_t at, uint64_t duration) |
Add NAV reset function. | |
void | AddNavStart (uint64_t at, uint64_t duration) |
Add NAV start function. | |
void | AddPhyDisconnectEvt (uint64_t at, uint64_t duration, uint64_t threshold, uint32_t from) |
Add a PHY disconnect event consisting in the PHY leaving the link and returning after a given time. | |
void | AddPhyReconnectEvt (uint64_t at, uint64_t duration) |
Add a PHY reconnect event consisting in another PHY operating on the link for the given time. | |
void | AddRxErrorEvt (uint64_t at, uint64_t duration) |
Add receive error event function for error at end of frame. | |
void | AddRxErrorEvt (uint64_t at, uint64_t duration, uint64_t timeUntilError) |
Add receive error event function for error during frame. | |
void | AddRxInsideSifsEvt (uint64_t at, uint64_t duration) |
Add receive inside SIFS event function. | |
void | AddRxOkEvt (uint64_t at, uint64_t duration) |
Add receive OK event function. | |
void | AddRxStartEvt (uint64_t at, uint64_t duration) |
Add receive start event function. | |
void | AddSwitchingEvt (uint64_t at, uint64_t duration) |
Add switching event function. | |
void | AddTxEvt (uint64_t at, uint64_t duration) |
Add transmit event function. | |
void | AddTxop (uint32_t aifsn) |
Add Txop function. | |
void | DoAccessRequest (uint64_t txTime, uint64_t expectedGrantTime, Ptr< TxopTest< TxopType > > state) |
Add access request with successful Ack. | |
void | DoCheckBusy (bool busy) |
Perform check that channel access manager is busy or idle. | |
void | EndTest () |
End test function. | |
void | ExpectBackoff (uint64_t time, uint32_t nSlots, uint32_t from) |
Expect generate backoff function. | |
void | ExpectBusy (uint64_t time, bool busy) |
Schedule a check that the channel access manager is busy or idle. | |
void | ExpectInternalCollision (uint64_t time, uint32_t nSlots, uint32_t from) |
Expect internal collision function. | |
void | StartTest (uint64_t slotTime, uint64_t sifs, uint64_t eifsNoDifsNoSifs, uint32_t ackTimeoutValue=20, MHz_u chWidth=MHz_u{20}) |
Start test function. | |
Private Attributes | |
uint32_t | m_ackTimeoutValue |
the Ack timeout value | |
Ptr< ChannelAccessManagerStub > | m_ChannelAccessManager |
the channel access manager | |
Ptr< FrameExchangeManagerStub< TxopType > > | m_feManager |
the Frame Exchange Manager stubbed | |
Ptr< SpectrumWifiPhy > | m_phy |
the PHY object | |
TxopTests | m_txop |
the vector of Txop test instances | |
Additional Inherited Members | |
![]() | |
enum class | Duration { QUICK = 1 , EXTENSIVE = 2 , TAKES_FOREVER = 3 } |
How long the test takes to execute. More... | |
![]() | |
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 |
![]() | |
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. | |
Channel Access Manager Test.
Definition at line 232 of file channel-access-manager-test.cc.
|
private |
the TXOP tests typedef
Definition at line 436 of file channel-access-manager-test.cc.
ChannelAccessManagerTest< TxopType >::ChannelAccessManagerTest | ( | ) |
Definition at line 502 of file channel-access-manager-test.cc.
|
private |
Add access function.
at | the event time |
txTime | the transmit time |
expectedGrantTime | the expected grant time |
from | the index of the requesting Txop |
Definition at line 818 of file channel-access-manager-test.cc.
|
private |
Add access request with Ack timeout.
at | time to schedule DoAccessRequest event |
txTime | the transmit time |
expectedGrantTime | the expected grant time |
from | the index of the requesting Txop |
Definition at line 828 of file channel-access-manager-test.cc.
References ChannelAccessManagerTest< TxopType >::DoAccessRequest(), ns3::MicroSeconds(), ns3::Now(), and ns3::Simulator::Schedule().
|
private |
Add access request with successful ack.
at | time to schedule DoAccessRequest event |
txTime | the transmit time |
expectedGrantTime | the expected grant time |
ackDelay | the delay of the Ack after txEnd |
from | the index of the requesting Txop |
Definition at line 843 of file channel-access-manager-test.cc.
References ChannelAccessManagerTest< TxopType >::DoAccessRequest(), ns3::MicroSeconds(), ns3::Now(), NS_ASSERT, and ns3::Simulator::Schedule().
|
private |
Add Ack timeout reset function.
at | the event time |
Definition at line 809 of file channel-access-manager-test.cc.
References ns3::MicroSeconds(), ns3::ChannelAccessManager::NotifyAckTimeoutResetNow(), ns3::Now(), and ns3::Simulator::Schedule().
|
private |
Add CCA busy event function.
at | the event time |
duration | the duration |
channelType | the channel type |
per20MhzDurations | vector that indicates for how long each 20 MHz subchannel is busy |
Definition at line 876 of file channel-access-manager-test.cc.
References ns3::MicroSeconds(), ns3::ChannelAccessManager::NotifyCcaBusyStartNow(), ns3::Now(), and ns3::Simulator::Schedule().
|
private |
Add NAV reset function.
at | the event time |
duration | the duration |
Definition at line 789 of file channel-access-manager-test.cc.
References ns3::MicroSeconds(), ns3::ChannelAccessManager::NotifyNavResetNow(), ns3::Now(), and ns3::Simulator::Schedule().
|
private |
Add NAV start function.
at | the event time |
duration | the duration |
Definition at line 799 of file channel-access-manager-test.cc.
References ns3::MicroSeconds(), ns3::ChannelAccessManager::NotifyNavStartNow(), ns3::Now(), and ns3::Simulator::Schedule().
|
private |
Add a PHY disconnect event consisting in the PHY leaving the link and returning after a given time.
at | the event time |
duration | the duration of the interval during which no PHY is connected |
threshold | the value for the ResetBackoffThreshold attribute |
from | the index of the Txop that has to request channel access when PHY is reconnected |
Definition at line 912 of file channel-access-manager-test.cc.
References ns3::MicroSeconds(), ns3::Now(), ns3::ChannelAccessManager::RemovePhyListener(), ns3::Simulator::Schedule(), and ns3::SINGLE_LINK_OP_ID.
|
private |
Add a PHY reconnect event consisting in another PHY operating on the link for the given time.
at | the event time |
duration | the duration of the interval during which another PHY is connected |
Definition at line 943 of file channel-access-manager-test.cc.
References ns3::CreateObject(), ns3::DynamicCast(), ns3::MicroSeconds(), ns3::Now(), ns3::Simulator::Schedule(), and ns3::WIFI_STANDARD_80211be.
|
private |
Add receive error event function for error at end of frame.
at | the event time |
duration | the duration |
Definition at line 727 of file channel-access-manager-test.cc.
References ns3::OfdmPhy::GetOfdmRate6Mbps(), ns3::MicroSeconds(), ns3::NanoSeconds(), ns3::ChannelAccessManager::NotifyRxEndErrorNow(), ns3::ChannelAccessManager::NotifyRxStartNow(), ns3::Now(), ns3::Simulator::Schedule(), and ns3::WIFI_PREAMBLE_LONG.
|
private |
Add receive error event function for error during frame.
at | the event time |
duration | the duration |
timeUntilError | the time after event time to force the error |
Definition at line 754 of file channel-access-manager-test.cc.
References ns3::OfdmPhy::GetOfdmRate6Mbps(), ns3::MicroSeconds(), ns3::NanoSeconds(), ns3::ChannelAccessManager::NotifyCcaBusyStartNow(), ns3::ChannelAccessManager::NotifyRxEndErrorNow(), ns3::ChannelAccessManager::NotifyRxStartNow(), ns3::Now(), ns3::Simulator::Schedule(), ns3::WIFI_CHANLIST_PRIMARY, and ns3::WIFI_PREAMBLE_LONG.
|
private |
Add receive inside SIFS event function.
at | the event time |
duration | the duration |
Definition at line 717 of file channel-access-manager-test.cc.
References ns3::MicroSeconds(), ns3::ChannelAccessManager::NotifyRxStartNow(), ns3::Now(), and ns3::Simulator::Schedule().
|
private |
Add receive OK event function.
at | the event time |
duration | the duration |
Definition at line 704 of file channel-access-manager-test.cc.
References ns3::MicroSeconds(), ns3::ChannelAccessManager::NotifyRxEndOkNow(), ns3::ChannelAccessManager::NotifyRxStartNow(), ns3::Now(), and ns3::Simulator::Schedule().
|
private |
Add receive start event function.
at | the event time |
duration | the duration |
Definition at line 902 of file channel-access-manager-test.cc.
References ns3::MicroSeconds(), ns3::ChannelAccessManager::NotifyRxStartNow(), ns3::Now(), and ns3::Simulator::Schedule().
|
private |
Add switching event function.
at | the event time |
duration | the duration |
Definition at line 891 of file channel-access-manager-test.cc.
References ns3::MicroSeconds(), ns3::ChannelAccessManager::NotifySwitchingStartNow(), ns3::Now(), and ns3::Simulator::Schedule().
|
private |
Add transmit event function.
at | the event time |
duration | the duration |
Definition at line 528 of file channel-access-manager-test.cc.
References ns3::MicroSeconds(), ns3::ChannelAccessManager::NotifyTxStartNow(), ns3::Now(), and ns3::Simulator::Schedule().
|
private |
Add Txop function.
aifsn | the AIFSN |
Definition at line 660 of file channel-access-manager-test.cc.
References ns3::CreateObject(), and ns3::CreateObjectWithAttributes().
|
private |
Add access request with successful Ack.
txTime | the transmit time |
expectedGrantTime | the expected grant time |
state | TxopTest |
Definition at line 861 of file channel-access-manager-test.cc.
References ns3::SINGLE_LINK_OP_ID.
Referenced by ChannelAccessManagerTest< TxopType >::AddAccessRequestWithAckTimeout(), and ChannelAccessManagerTest< TxopType >::AddAccessRequestWithSuccessfulAck().
|
private |
Perform check that channel access manager is busy or idle.
busy | whether expected state is busy |
Definition at line 626 of file channel-access-manager-test.cc.
References NS_TEST_EXPECT_MSG_EQ.
Referenced by ChannelAccessManagerTest< TxopType >::ExpectBusy().
|
virtual |
Implementation to actually run this TestCase.
Subclasses should override this method to conduct their tests.
Implements ns3::TestCase.
Definition at line 969 of file channel-access-manager-test.cc.
|
virtual |
Implementation to actually run this TestCase.
Subclasses should override this method to conduct their tests.
Implements ns3::TestCase.
Definition at line 1312 of file channel-access-manager-test.cc.
References ns3::WIFI_CHANLIST_SECONDARY, ns3::WIFI_CHANLIST_SECONDARY40, and ns3::WIFI_CHANLIST_SECONDARY80.
|
overridevirtual |
Implementation to actually run this TestCase.
Subclasses should override this method to conduct their tests.
Implements ns3::TestCase.
|
private |
End test function.
Definition at line 676 of file channel-access-manager-test.cc.
References ns3::Simulator::Destroy(), NS_TEST_EXPECT_MSG_EQ, and ns3::Simulator::Run().
|
private |
Expect generate backoff function.
time | the expected time |
nSlots | the number of slots |
from | the expected from |
Definition at line 605 of file channel-access-manager-test.cc.
References TxopTest< TxopType >::m_expectedBackoff.
|
private |
Schedule a check that the channel access manager is busy or idle.
time | the expected time |
busy | whether the manager is expected to be busy |
Definition at line 616 of file channel-access-manager-test.cc.
References ChannelAccessManagerTest< TxopType >::DoCheckBusy(), ns3::MicroSeconds(), ns3::Now(), and ns3::Simulator::Schedule().
|
private |
Expect internal collision function.
time | the expected time |
nSlots | the number of slots |
from | the expected from |
Definition at line 592 of file channel-access-manager-test.cc.
References TxopTest< TxopType >::m_expectedInternalCollision.
void ChannelAccessManagerTest< TxopType >::GenerateBackoff | ( | uint32_t | i | ) |
Generate backoff function.
i | the index of the Txop |
Definition at line 557 of file channel-access-manager-test.cc.
References TxopTest< TxopType >::m_expectedBackoff, and NS_TEST_EXPECT_MSG_EQ.
void ChannelAccessManagerTest< TxopType >::NotifyAccessGranted | ( | uint32_t | i | ) |
Notify access granted function.
i | the index of the Txop |
Definition at line 509 of file channel-access-manager-test.cc.
References ns3::MicroSeconds(), ns3::Simulator::Now(), and NS_TEST_EXPECT_MSG_EQ.
void ChannelAccessManagerTest< TxopType >::NotifyChannelSwitching | ( | ) |
Notify channel switching function.
Definition at line 574 of file channel-access-manager-test.cc.
References ns3::MicroSeconds(), ns3::Txop::NOT_REQUESTED, ns3::Simulator::Now(), and NS_TEST_EXPECT_MSG_EQ.
void ChannelAccessManagerTest< TxopType >::NotifyInternalCollision | ( | Ptr< TxopTest< TxopType > > | state | ) |
Notify internal collision function.
state | the Txop |
Definition at line 538 of file channel-access-manager-test.cc.
References TxopTest< TxopType >::m_expectedInternalCollision, and NS_TEST_EXPECT_MSG_EQ.
|
private |
Start test function.
slotTime | the slot time |
sifs | the SIFS |
eifsNoDifsNoSifs | the EIFS no DIFS no SIFS |
ackTimeoutValue | the Ack timeout value |
chWidth | the channel width |
Definition at line 633 of file channel-access-manager-test.cc.
References ns3::CreateObject(), ns3::MicroSeconds(), ns3::WIFI_PHY_BAND_UNSPECIFIED, and ns3::WIFI_STANDARD_80211ac.
|
private |
the Ack timeout value
Definition at line 442 of file channel-access-manager-test.cc.
|
private |
the channel access manager
Definition at line 439 of file channel-access-manager-test.cc.
|
private |
the Frame Exchange Manager stubbed
Definition at line 438 of file channel-access-manager-test.cc.
|
private |
the PHY object
Definition at line 440 of file channel-access-manager-test.cc.
|
private |
the vector of Txop test instances
Definition at line 441 of file channel-access-manager-test.cc.