24 #include "ns3/string.h" 25 #include "ns3/yans-wifi-helper.h" 26 #include "ns3/mobility-helper.h" 27 #include "ns3/wifi-net-device.h" 28 #include "ns3/adhoc-wifi-mac.h" 29 #include "ns3/ap-wifi-mac.h" 30 #include "ns3/propagation-loss-model.h" 31 #include "ns3/yans-error-rate-model.h" 32 #include "ns3/constant-position-mobility-model.h" 34 #include "ns3/pointer.h" 35 #include "ns3/rng-seed-manager.h" 36 #include "ns3/config.h" 37 #include "ns3/error-model.h" 38 #include "ns3/socket.h" 39 #include "ns3/packet-socket-server.h" 40 #include "ns3/packet-socket-client.h" 41 #include "ns3/packet-socket-helper.h" 42 #include "ns3/spectrum-wifi-helper.h" 43 #include "ns3/multi-model-spectrum-channel.h" 44 #include "ns3/wifi-spectrum-signal-parameters.h" 45 #include "ns3/yans-wifi-phy.h" 46 #include "ns3/mgt-headers.h" 47 #include "ns3/ht-configuration.h" 48 #include "ns3/wifi-ppdu.h" 49 #include "ns3/wifi-psdu.h" 50 #include "ns3/waypoint-mobility-model.h" 59 int64_t currentStream = stream;
97 virtual void DoRun (
void);
139 mac->SetDevice (dev);
144 phy->SetErrorRateModel (error);
146 phy->SetDevice (dev);
152 mac->SetAddress (Mac48Address::Allocate ());
155 dev->SetRemoteStationManager (manager);
167 channel->SetPropagationDelayModel (propDelay);
168 channel->SetPropagationLossModel (propLoss);
174 Simulator::Stop (
Seconds (10.0));
177 Simulator::Destroy ();
254 virtual void DoRun (
void);
282 :
TestCase (
"InterferenceHelperSequence")
307 mac->SetDevice (dev);
312 phy->SetErrorRateModel (error);
314 phy->SetDevice (dev);
321 mac->SetAddress (Mac48Address::Allocate ());
324 dev->SetRemoteStationManager (manager);
340 channel->SetPropagationDelayModel (propDelay);
341 channel->SetPropagationLossModel (propLoss);
348 propLoss->SetDefaultLoss (999);
350 Simulator::Schedule (
Seconds (1.0),
352 DynamicCast<WifiNetDevice> (senderB->
GetDevice (0)));
354 Simulator::Schedule (
Seconds (1.0000001),
356 DynamicCast<WifiNetDevice> (rxOnly->
GetDevice (0)));
358 Simulator::Schedule (
Seconds (5.0),
360 DynamicCast<WifiNetDevice> (senderA->
GetDevice (0)));
362 Simulator::Schedule (
Seconds (7.0),
364 DynamicCast<WifiNetDevice> (senderB->
GetDevice (0)));
366 Simulator::Stop (
Seconds (100.0));
369 Simulator::Destroy ();
428 virtual void DoRun (
void);
455 :
TestCase (
"Test case for DCF immediate access with broadcast frames")
489 RngSeedManager::SetSeed (1);
490 RngSeedManager::SetRun (40);
495 channel->SetPropagationDelayModel (propDelay);
496 channel->SetPropagationLossModel (propLoss);
498 Ptr<Node> txNode = CreateObject<Node> ();
512 txPhy->SetErrorRateModel (txError);
514 txPhy->SetDevice (txDev);
515 txPhy->SetMobility (txMobility);
522 txMac->SetAddress (Mac48Address::Allocate ());
523 txDev->SetMac (txMac);
524 txDev->SetPhy (txPhy);
535 Simulator::Stop (
Seconds (2.0));
537 Simulator::Destroy ();
547 uint32_t expectedWait1 = 1408 + (1 * 9) + 16 + (2 * 9);
548 Time expectedSecondTransmissionTime = expectedFirstTransmissionTime +
MicroSeconds (expectedWait1);
573 virtual void DoRun (
void);
590 :
TestCase (
"Test case for Bug 730"),
626 wifi.SetRemoteStationManager (
"ns3::ConstantRateWifiManager",
632 mac.SetType (
"ns3::StaWifiMac",
639 mac.SetType (
"ns3::ApWifiMac",
649 positionAlloc->
Add (Vector (0.0, 0.0, 0.0));
650 positionAlloc->
Add (Vector (1.0, 0.0, 0.0));
651 mobility.SetPositionAllocator (positionAlloc);
653 mobility.SetMobilityModel (
"ns3::ConstantPositionMobilityModel");
662 socket.SetPhysicalAddress (ap_device->
GetAddress ());
663 socket.SetProtocol (1);
667 packetSocket.
Install (wifiStaNode);
685 Simulator::Schedule (
Seconds (10.0),
Config::Set,
"/NodeList/0/DeviceList/0/RemoteStationManager/FragmentationThreshold",
StringValue (
"800"));
687 Simulator::Stop (
Seconds (55));
690 Simulator::Destroy ();
693 NS_TEST_ASSERT_MSG_EQ (result,
true,
"packet reception unexpectedly stopped after adapting fragmentation threshold!");
710 virtual void DoRun (
void);
735 :
TestCase (
"Test case for fragmentation with QoS stations"),
781 wifi.SetRemoteStationManager (
"ns3::ConstantRateWifiManager",
786 mac.SetType (
"ns3::StaWifiMac",
793 mac.SetType (
"ns3::ApWifiMac",
803 positionAlloc->
Add (Vector (0.0, 0.0, 0.0));
804 positionAlloc->
Add (Vector (1.0, 0.0, 0.0));
805 mobility.SetPositionAllocator (positionAlloc);
807 mobility.SetMobilityModel (
"ns3::ConstantPositionMobilityModel");
818 sta_mac->GetAttribute (
"BE_Txop", ptr);
823 socket.SetPhysicalAddress (ap_device->
GetAddress ());
824 socket.SetProtocol (1);
828 packetSocket.
Install (wifiStaNode);
847 Config::Set (
"/NodeList/0/DeviceList/0/RemoteStationManager/FragmentationThreshold",
StringValue (
"400"));
853 Simulator::Destroy ();
870 virtual void DoRun (
void);
884 :
TestCase (
"Test case for setting WifiPhy channel and frequency")
910 ssid =
Ssid (
"wifi-phy-configuration");
912 macSta.
SetType (
"ns3::StaWifiMac",
922 phySta = CreateObject<YansWifiPhy> ();
933 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
944 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
955 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
965 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
967 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
976 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
978 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
987 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
989 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
998 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
1000 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
1009 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
1011 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
1020 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
1022 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
1031 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
1034 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
1043 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
1046 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
1055 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
1057 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
1067 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
1070 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
1079 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
1081 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
1084 std::ostringstream path;
1085 path <<
"/NodeList/*/DeviceList/" << staDevice.
Get(0)->GetIfIndex () <<
"/$ns3::WifiNetDevice/Phy/$ns3::YansWifiPhy/ChannelNumber";
1094 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
1096 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
1099 std::ostringstream path;
1100 path <<
"/NodeList/*/DeviceList/" << staDevice.
Get(0)->GetIfIndex () <<
"/$ns3::WifiNetDevice/Phy/$ns3::YansWifiPhy/ChannelWidth";
1111 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
1113 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
1117 std::ostringstream path;
1118 path <<
"/NodeList/*/DeviceList/" << staDevice.
Get(0)->GetIfIndex () <<
"/$ns3::WifiNetDevice/Phy/$ns3::YansWifiPhy/ChannelWidth";
1129 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
1133 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
1144 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
1146 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
1159 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
1161 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
1171 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
1174 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
1199 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
1202 staDevice =
wifi.Install (
phy, macSta, wifiStaNode.
Get (0));
1236 Simulator::Destroy ();
1253 virtual void DoRun (
void);
1268 :
TestCase (
"Test case for Bug 2222"),
1269 m_countInternalCollisions (0)
1291 RngSeedManager::SetSeed (1);
1292 RngSeedManager::SetRun (16);
1293 int64_t streamNumber = 100;
1303 wifi.SetRemoteStationManager (
"ns3::ConstantRateWifiManager",
1308 mac.SetType (
"ns3::AdhocWifiMac",
1312 wifiDevices =
wifi.Install (
phy,
mac, wifiNodes);
1315 wifi.AssignStreams (wifiDevices, streamNumber);
1320 positionAlloc->
Add (Vector (0.0, 0.0, 0.0));
1321 positionAlloc->
Add (Vector (10.0, 0.0, 0.0));
1322 mobility.SetPositionAllocator (positionAlloc);
1324 mobility.SetMobilityModel (
"ns3::ConstantPositionMobilityModel");
1332 socket.SetPhysicalAddress (device2->GetAddress ());
1333 socket.SetProtocol (1);
1336 packetSocket.
Install (wifiNodes);
1364 Simulator::Stop (
Seconds (1.0));
1366 Simulator::Destroy ();
1389 virtual void DoRun (
void);
1417 :
TestCase (
"Test case for Bug 2843"),
1432 double startingFreq = c->
Begin ()->fl;
1447 if (*it == tupleForCurrentTx)
1462 for (uint8_t i = 0; i < numPackets; i++)
1465 sourceDevice->
Send (pkt, destination, 0);
1472 uint16_t channelWidth = 40;
1483 lossModel->SetFrequency (5.180e9);
1487 = CreateObject<ConstantSpeedPropagationDelayModel> ();
1499 wifi.SetRemoteStationManager (
"ns3::ConstantRateWifiManager",
1505 mac.SetType (
"ns3::StaWifiMac");
1507 staDevice =
wifi.Install (spectrumPhy,
mac, wifiStaNode);
1509 mac.SetType (
"ns3::ApWifiMac");
1515 positionAlloc->
Add (Vector (0.0, 0.0, 0.0));
1516 positionAlloc->
Add (Vector (1.0, 0.0, 0.0));
1517 mobility.SetPositionAllocator (positionAlloc);
1519 mobility.SetMobilityModel (
"ns3::ConstantPositionMobilityModel");
1529 Simulator::Stop (
Seconds (0.8));
1532 Simulator::Destroy ();
1565 virtual void DoRun (
void);
1590 :
TestCase (
"Test case for Bug 2831"),
1591 m_reassocReqCount (0),
1592 m_reassocRespCount (0),
1593 m_countOperationalChannelWidth20 (0),
1594 m_countOperationalChannelWidth40 (0)
1646 propDelay.
SetTypeId (
"ns3::ConstantSpeedPropagationDelayModel");
1649 channel->SetPropagationDelayModel (propagationDelay);
1650 channel->SetPropagationLossModel (propagationLoss);
1652 Ptr<Node> apNode = CreateObject<Node> ();
1655 apDev->SetHtConfiguration (apHtConfiguration);
1657 mac.SetTypeId (
"ns3::ApWifiMac");
1663 Ptr<Node> staNode = CreateObject<Node> ();
1666 staDev->SetHtConfiguration (staHtConfiguration);
1667 mac.SetTypeId (
"ns3::StaWifiMac");
1677 m_apPhy = CreateObject<YansWifiPhy> ();
1687 staMobility->
SetPosition (Vector (1.0, 0.0, 0.0));
1690 m_staPhy = CreateObject<YansWifiPhy> ();
1699 apMac->
SetAddress (Mac48Address::Allocate ());
1700 apDev->SetMac (apMac);
1703 manager.
SetTypeId (
"ns3::ConstantRateWifiManager");
1707 staMac->
SetAddress (Mac48Address::Allocate ());
1708 staDev->SetMac (staMac);
1717 Simulator::Stop (
Seconds (3.0));
1719 Simulator::Destroy ();
1748 virtual void DoRun (
void);
1779 :
TestCase (
"Test case for StaWifiMac scanning capability")
1812 RngSeedManager::SetSeed (1);
1813 RngSeedManager::SetRun (1);
1814 int64_t streamNumber = 1;
1819 Ptr<Node> apNodeNearest = CreateObject<Node> ();
1820 Ptr<Node> staNode = CreateObject<Node> ();
1828 wifi.SetRemoteStationManager (
"ns3::ConstantRateWifiManager");
1832 mac.SetType (
"ns3::ApWifiMac",
1835 mac.SetType (
"ns3::ApWifiMac",
1836 "BeaconGeneration",
BooleanValue (nearestApBeaconGeneration));
1837 apDeviceNearest =
wifi.Install (
phy,
mac, apNodeNearest);
1840 mac.SetType (
"ns3::StaWifiMac",
1842 staDevice =
wifi.Install (
phy,
mac, staNode);
1845 wifi.AssignStreams (apDevice, streamNumber);
1846 wifi.AssignStreams (apDeviceNearest, streamNumber + 1);
1847 wifi.AssignStreams (staDevice, streamNumber + 2);
1851 positionAlloc->
Add (Vector (0.0, 0.0, 0.0));
1852 positionAlloc->
Add (Vector (10.0, 0.0, 0.0));
1853 positionAlloc->
Add (Vector (5.0, 5.0, 0.0));
1854 positionAlloc->
Add (Vector (6.0, 5.0, 0.0));
1855 mobility.SetPositionAllocator (positionAlloc);
1857 mobility.SetMobilityModel (
"ns3::ConstantPositionMobilityModel");
1874 Mac48Address nearestApAddr = DynamicCast<WifiNetDevice> (nearestAp->
GetDevice (0))->GetMac ()->GetAddress ();
1878 Simulator::Stop (
Seconds (0.2));
1880 Simulator::Destroy ();
1888 Mac48Address nearestApAddr = DynamicCast<WifiNetDevice> (nearestAp->
GetDevice (0))->GetMac ()->GetAddress ();
1890 Simulator::Stop (
Seconds (0.2));
1892 Simulator::Destroy ();
1900 Mac48Address secondNearestApAddr = DynamicCast<WifiNetDevice> (
nodes.Get (1)->GetDevice (0))->GetMac ()->GetAddress ();
1904 Simulator::Stop (
Seconds (1.5));
1906 Simulator::Destroy ();
1940 virtual void DoRun (
void);
1995 :
TestCase (
"Test case for Bug 2470"),
1996 m_receivedNormalMpduCount (0),
1997 m_receivedAmpduCount (0),
1998 m_failedActionCount (0),
1999 m_addbaEstablishedCount (0),
2000 m_addbaPendingCount (0),
2001 m_addbaRejectedCount (0),
2002 m_addbaNoReplyCount (0),
2003 m_addbaResetCount (0)
2016 case OriginatorBlockAckAgreement::ESTABLISHED:
2019 case OriginatorBlockAckAgreement::PENDING:
2022 case OriginatorBlockAckAgreement::REJECTED:
2025 case OriginatorBlockAckAgreement::NO_REPLY:
2028 case OriginatorBlockAckAgreement::RESET:
2069 for (uint32_t i = 0; i < numPackets; i++)
2072 sourceDevice->
Send (pkt, destination, 0);
2079 RngSeedManager::SetSeed (1);
2080 RngSeedManager::SetRun (1);
2081 int64_t streamNumber = 200;
2093 wifi.SetRemoteStationManager (
"ns3::ConstantRateWifiManager",
2099 phy.Set (
"PostReceptionErrorModel", apErrorModel);
2100 mac.SetType (
"ns3::ApWifiMac",
"EnableBeaconJitter",
BooleanValue (
false));
2104 phy.Set (
"PostReceptionErrorModel", staErrorModel);
2105 mac.SetType (
"ns3::StaWifiMac");
2106 staDevice =
wifi.Install (
phy,
mac, wifiStaNode);
2109 wifi.AssignStreams (apDevice, streamNumber);
2110 wifi.AssignStreams (staDevice, streamNumber);
2114 positionAlloc->
Add (Vector (0.0, 0.0, 0.0));
2115 positionAlloc->
Add (Vector (1.0, 0.0, 0.0));
2116 mobility.SetPositionAllocator (positionAlloc);
2118 mobility.SetMobilityModel (
"ns3::ConstantPositionMobilityModel");
2131 Simulator::Stop (
Seconds (1.0));
2133 Simulator::Destroy ();
2144 std::list<uint32_t> blackList;
2146 blackList.push_back (8);
2147 blackList.push_back (9);
2148 blackList.push_back (10);
2149 blackList.push_back (11);
2150 blackList.push_back (12);
2151 blackList.push_back (13);
2183 blackList.push_back (4);
2184 blackList.push_back (5);
2185 blackList.push_back (6);
2226 virtual void DoRun (
void);
2233 void RunOne (
bool useAmpdu);
2261 :
TestCase (
"Test case for issue #40"),
2264 m_txMacFinalDataFailedCount (0)
2281 for (uint8_t i = 0; i < numPackets; i++)
2284 sourceDevice->
Send (pkt, destination, 0);
2302 RngSeedManager::SetSeed (1);
2303 RngSeedManager::SetRun (1);
2304 int64_t streamNumber = 100;
2316 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
2320 mac.SetType (
"ns3::ApWifiMac");
2324 mac.SetType (
"ns3::StaWifiMac");
2325 staDevice =
wifi.Install (
phy,
mac, wifiStaNode);
2328 wifi.AssignStreams (apDevice, streamNumber);
2329 wifi.AssignStreams (staDevice, streamNumber);
2333 positionAlloc->
Add (Vector (0.0, 0.0, 0.0));
2334 positionAlloc->
Add (Vector (10.0, 0.0, 0.0));
2335 mobility.SetPositionAllocator (positionAlloc);
2337 mobility.SetMobilityModel (
"ns3::ConstantPositionMobilityModel");
2340 mobility.SetMobilityModel(
"ns3::WaypointMobilityModel");
2357 ap_mac->GetAttribute (
"BE_Txop", ptr);
2374 Simulator::Stop (
Seconds (3.0));
2381 Simulator::Destroy ();
2412 virtual void DoRun (
void);
2435 :
TestCase (
"Test case for issue #169")
2448 for (uint8_t i = 0; i < numPackets; i++)
2452 sourceDevice->
Send (packet, destination, 0);
2459 if (psdus.begin()->second->GetSize () >= 1000)
2468 RngSeedManager::SetSeed (1);
2469 RngSeedManager::SetRun (1);
2470 int64_t streamNumber = 100;
2482 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
2486 mac.SetType (
"ns3::ApWifiMac");
2490 mac.SetType (
"ns3::StaWifiMac");
2491 staDevice =
wifi.Install (
phy,
mac, wifiStaNode);
2494 wifi.AssignStreams (apDevice, streamNumber);
2495 wifi.AssignStreams (staDevice, streamNumber);
2499 positionAlloc->
Add (Vector (0.0, 0.0, 0.0));
2500 positionAlloc->
Add (Vector (1.0, 0.0, 0.0));
2501 mobility.SetPositionAllocator (positionAlloc);
2503 mobility.SetMobilityModel (
"ns3::ConstantPositionMobilityModel");
2515 Simulator::Stop (
Seconds (2.0));
2518 Simulator::Destroy ();
2542 virtual void DoRun (
void);
2577 :
TestCase (
"Test case for use of channel bonding with Ideal rate manager")
2595 sourceDevice->
Send (packet, destination, 0);
2601 if (psduMap.begin ()->second->GetSize () >= 1000)
2616 RngSeedManager::SetSeed (1);
2617 RngSeedManager::SetRun (1);
2618 int64_t streamNumber = 100;
2630 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
2634 mac.SetType (
"ns3::ApWifiMac");
2638 mac.SetType (
"ns3::StaWifiMac");
2639 staDevice =
wifi.Install (
phy,
mac, wifiStaNode);
2642 wifi.AssignStreams (apDevice, streamNumber);
2643 wifi.AssignStreams (staDevice, streamNumber);
2647 positionAlloc->
Add (Vector (0.0, 0.0, 0.0));
2648 positionAlloc->
Add (Vector (50.0, 0.0, 0.0));
2649 mobility.SetPositionAllocator (positionAlloc);
2651 mobility.SetMobilityModel (
"ns3::ConstantPositionMobilityModel");
2675 Simulator::Stop (
Seconds (3.2));
2678 Simulator::Destroy ();
2695 virtual void DoRun (
void);
2741 :
TestCase (
"Test case for use of imbalanced MIMO settings with Ideal rate manager")
2753 Config::Set (
"/NodeList/0/DeviceList/*/$ns3::WifiNetDevice/Phy/MaxSupportedTxSpatialStreams",
UintegerValue (maxStreams));
2754 Config::Set (
"/NodeList/0/DeviceList/*/$ns3::WifiNetDevice/Phy/MaxSupportedRxSpatialStreams",
UintegerValue (maxStreams));
2761 Config::Set (
"/NodeList/1/DeviceList/*/$ns3::WifiNetDevice/Phy/MaxSupportedTxSpatialStreams",
UintegerValue (maxStreams));
2762 Config::Set (
"/NodeList/1/DeviceList/*/$ns3::WifiNetDevice/Phy/MaxSupportedRxSpatialStreams",
UintegerValue (maxStreams));
2769 sourceDevice->
Send (packet, destination, 0);
2775 if (psdus.begin ()->second->GetSize () >= 1000)
2796 RngSeedManager::SetSeed (1);
2797 RngSeedManager::SetRun (1);
2798 int64_t streamNumber = 100;
2810 wifi.SetRemoteStationManager (
"ns3::IdealWifiManager");
2814 mac.SetType (
"ns3::ApWifiMac");
2818 mac.SetType (
"ns3::StaWifiMac");
2819 staDevice =
wifi.Install (
phy,
mac, wifiStaNode);
2822 wifi.AssignStreams (apDevice, streamNumber);
2823 wifi.AssignStreams (staDevice, streamNumber);
2827 positionAlloc->
Add (Vector (0.0, 0.0, 0.0));
2828 positionAlloc->
Add (Vector (40.0, 0.0, 0.0));
2829 mobility.SetPositionAllocator (positionAlloc);
2831 mobility.SetMobilityModel (
"ns3::ConstantPositionMobilityModel");
2962 Simulator::Stop (
Seconds (10.2));
2964 Simulator::Destroy ();
2989 bool CheckDataRate (
HeRu::RuType ruType, std::string mcs, uint8_t nss, uint16_t guardInterval, uint16_t expectedDataRate);
2990 virtual void DoRun (
void);
2994 :
TestCase (
"Check data rates for different RU types.")
3001 uint16_t approxWidth = HeRu::GetBandwidth (ruType);
3003 uint64_t dataRate = round (mode.
GetDataRate (approxWidth, guardInterval, nss) / 100000.0);
3005 if (static_cast<uint16_t> (dataRate) != expectedDataRate)
3007 std::cerr <<
"RU=" << ruType
3010 <<
" guardInterval=" << guardInterval
3011 <<
" expected=" << expectedDataRate <<
" x100kbps" 3012 <<
" computed=" <<
static_cast<uint16_t
> (dataRate) <<
" x100kbps" 3036 &&
CheckDataRate (HeRu::RU_26_TONE,
"HeMcs10", 4, 1600, 500)
3037 &&
CheckDataRate (HeRu::RU_26_TONE,
"HeMcs11", 4, 3200, 500);
3039 NS_TEST_EXPECT_MSG_EQ (retval,
true,
"26-tone RU data rate verification for different MCSs, GIs, and Nss's failed");
3044 &&
CheckDataRate ( HeRu::RU_106_TONE,
"HeMcs9", 1, 800, 500)
3045 &&
CheckDataRate ( HeRu::RU_242_TONE,
"HeMcs5", 1, 1600, 650)
3046 &&
CheckDataRate ( HeRu::RU_484_TONE,
"HeMcs3", 1, 1600, 650)
3047 &&
CheckDataRate ( HeRu::RU_996_TONE,
"HeMcs5", 1, 3200, 2450)
3048 &&
CheckDataRate (HeRu::RU_2x996_TONE,
"HeMcs3", 1, 3200, 2450);
3050 NS_TEST_EXPECT_MSG_EQ (retval,
true,
"Data rate verification for RUs above 52-tone RU (included) failed");
size_t GetNumBands() const
uint32_t RemoveHeader(Header &header)
Deserialize and remove the header from the internal buffer.
void RunOne(void)
Run one function.
void Set(std::string name, const AttributeValue &v)
uint32_t AddApplication(Ptr< Application > application)
Associate an Application to this Node.
uint8_t m_countOperationalChannelWidth20
count number of beacon frames announcing a 20 MHz operating channel width
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr<NetDevice> stored in this container at a given index.
void SetStopTime(Time stop)
Specify application stop time.
Simulation virtual time values and global simulation resolution.
void AddbaStateChangedCallback(std::string context, Time t, Mac48Address recipient, uint8_t tid, OriginatorBlockAckAgreement::State state)
Callback when ADDBA state changed.
virtual ~Bug730TestCase()
Smart pointer class similar to boost::intrusive_ptr.
virtual ~QosFragmentationTestCase()
void Transmit(std::string context, Ptr< const Packet > p, double power)
Callback invoked when PHY transmits a packet.
AttributeValue implementation for Boolean.
void SetLocal(PacketSocketAddress addr)
set the local address and protocol to be used
void TxFinalDataFailedCallback(std::string context, Mac48Address address)
Transmit final data failed function.
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
void Receive(std::string context, Ptr< const Packet > p, const Address &adr)
Receive function.
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
void StoreDistinctTuple(std::string context, Ptr< SpectrumSignalParameters > txParams)
Stores the distinct {starting frequency, channelWidth, Number of subbands in SpectrumModel, modulation type} tuples that have been used during the testcase run.
Ptr< WifiPpdu > ppdu
The PPDU being transmitted.
Hold variables of type string.
Make sure that the ADDBA handshake process is protected.
virtual void DoRun(void)
Implementation to actually run this TestCase.
Make it easy to create and manage PHY objects for the YANS model.
void Set(std::string path, const AttributeValue &value)
virtual void DoRun(void)
Implementation to actually run this TestCase.
void SetChannel(const Ptr< YansWifiChannel > channel)
Set the YansWifiChannel this YansWifiPhy is to be connected to.
virtual ~IdealRateManagerMimoTest()
Ptr< NetDevice > GetDevice(uint32_t index) const
Retrieve the index-th NetDevice associated to this node.
std::unordered_map< uint16_t, Ptr< const WifiPsdu > > WifiConstPsduMap
void RxCallback(std::string context, Ptr< const Packet > p, RxPowerWattPerChannelBand rxPowersW)
Callback triggered when a packet is received by the PHYs.
void AddWaypoint(const Waypoint &waypoint)
virtual void ConfigureStandardAndBand(WifiPhyStandard standard, WifiPhyBand band)
Configure the PHY-level parameters for different Wi-Fi standard.
QosFragmentationTestCase()
void AggregateObject(Ptr< Object > other)
Aggregate two Objects together.
Handle packet fragmentation and retransmissions for QoS data frames as well as MSDU aggregation (A-MS...
an address for a packet socket
virtual void DoRun(void)
Implementation to actually run this TestCase.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
uint16_t m_receivedNormalMpduCount
Count received normal MPDU packets on STA.
uint16_t m_rxCount
Count number of successfully received data packets.
uint16_t m_receivedAmpduCount
Count received A-MPDU packets on STA.
void SetTypeId(TypeId tid)
Set the TypeId of the Objects to be created by this factory.
#define NS_TEST_EXPECT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report if not.
Make sure that Ideal rate manager is able to handle non best-effort traffic.
void SetMobility(const Ptr< MobilityModel > mobility)
assign a mobility model to this device
The HT Operation Information ElementThis class knows how to serialise and deserialise the HT Operatio...
bool QosUtilsIsOldPacket(uint16_t startingSeq, uint16_t seqNumber)
This function checks if packet with sequence number seqNumber is an "old" packet. ...
virtual void DoRun(void)
Implementation to actually run this TestCase.
void SendPacketBurst(uint8_t numPackets, Ptr< NetDevice > sourceDevice, Address &destination) const
Triggers the arrival of a burst of 1000 Byte-long packets in the source device.
Qos Utils Is Old Packet Test.
void AddPropagationLossModel(Ptr< PropagationLossModel > loss)
Add the single-frequency propagation loss model to be used.
uint8_t GetNss(uint16_t staId=SU_STA_ID) const
If this TX vector is associated with an SU PPDU, return the number of spatial streams.
virtual ~StaWifiMacScanningTestCase()
uint8_t m_reassocReqCount
count number of reassociation requests
Make sure that when changing the fragmentation threshold during the simulation, the TCP transmission ...
virtual ~Bug2843TestCase()
void AssocCallback(std::string context, Mac48Address bssid)
Callback function on STA assoc event.
virtual void ConfigureStandard(WifiStandard standard)=0
helps to create WifiNetDevice objects
Mac48Address m_associatedApBssid
Associated AP's bssid.
Make sure that Ideal rate manager recovers when the station is moving away from the access point...
InterferenceHelperSequenceTest()
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
bool CheckDataRate(HeRu::RuType ruType, std::string mcs, uint8_t nss, uint16_t guardInterval, uint16_t expectedDataRate)
Compare the data rate computed for the provided combination with standard defined one...
Give ns3::PacketSocket powers to ns3::Node.
void SetSingleDevice(uint32_t device)
Set the address to match only a specified NetDevice.
uint32_t GetIfIndex(void) const
Address GetAddress(void) const
a polymophic address class
void SendPackets(uint8_t numPackets, Ptr< NetDevice > sourceDevice, Address &destination)
Triggers the arrival of 1000 Byte-long packets in the source device.
void SetDevice(const Ptr< NetDevice > device)
Sets the device this PHY is associated with.
WifiMode GetMode(uint16_t staId=SU_STA_ID) const
If this TX vector is associated with an SU PPDU, return the selected payload transmission mode...
virtual ~Issue169TestCase()
uint16_t GetChannelWidth(void) const
void CheckLastSelectedMode(WifiMode expectedMode)
Check if the selected WifiMode is correct.
uint16_t m_addbaRejectedCount
Count number of times ADDBA state machine is in rejected state.
uint16_t m_addbaEstablishedCount
Count number of times ADDBA state machine is in established state.
void SendPacket(Ptr< NetDevice > sourceDevice, Address &destination)
Triggers the transmission of a 1000 Byte-long data packet from the source device. ...
void TurnBeaconGenerationOn(Ptr< Node > apNode)
Turn beacon generation on the AP node.
Keep track of the current position and velocity of an object.
void SetStaMimoSettings(uint8_t antennas, uint8_t maxStreams)
Change the configured MIMO settings for STA node.
void RxCallback(std::string context, Ptr< const Packet > p, uint16_t channelFreqMhz, WifiTxVector txVector, MpduInfo aMpdu, SignalNoiseDbm signalNoise, uint16_t staId)
Callback when packet is received.
The MPDU is not part of an A-MPDU.
virtual ~Bug2470TestCase()
Ptr< Node > CreateOne(Vector pos, Ptr< YansWifiChannel > channel)
Create one function.
virtual ~Bug2831TestCase()
IdealRateManagerMimoTest()
Make sure that Wifi STA is correctly associating to the best AP (i.e., nearest from STA)...
void SetDevice(const Ptr< NetDevice > device)
Sets the device this PHY is associated with.
void Receive(std::string context, Ptr< const Packet > p, const Address &adr)
Receive function.
Ptr< Object > Create(void) const
Create an Object instance of the configured TypeId.
WifiMode m_txMode
Store the last selected mode to send data packet.
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model...
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
base class for all MAC-level wifi objects.
uint32_t m_countInternalCollisions
count internal collisions
void SetChannel(Ptr< SpectrumChannel > channel)
Hold an unsigned integer type.
#define NS_TEST_ASSERT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report and abort if not.
QosUtilsIsOldPacketTest()
virtual void DoRun(void)
Implementation to actually run this TestCase.
holds a vector of ns3::NetDevice pointers
indicates whether the socket has a priority set.
void RunOne(bool useAmpdu)
Run one function.
calculate a propagation delay.
Address GetBroadcast(void) const
Hold together all Wifi-related objects.
uint32_t PeekHeader(Header &header) const
Deserialize but does not remove the header from the internal buffer.
virtual void DoRun(void)
Implementation to actually run this TestCase.
virtual void DoRun(void)
Implementation to actually run this TestCase.
virtual void DoRun(void)
Implementation to actually run this TestCase.
Make sure that the channel width and the channel number can be changed at runtime.
uint16_t m_addbaResetCount
Count number of times ADDBA state machine is in reset state.
virtual void SetAddress(Mac48Address address)=0
hold a list of per-remote-station state.
WifiModulationClass GetModulationClass() const
void Connect(std::string path, const CallbackBase &cb)
virtual void DoRun(void)
Implementation to actually run this TestCase.
uint32_t m_fragments
transmitted fragments
void SendPacket(Ptr< NetDevice > sourceDevice, Address &destination)
Triggers the transmission of a 1000 Byte-long data packet from the source device. ...
void SetErrorRateModel(const Ptr< ErrorRateModel > rate)
Sets the error rate model.
virtual void DoRun(void)
Implementation to actually run this TestCase.
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
void SwitchCh(Ptr< WifiNetDevice > dev)
Switch channel function.
Ptr< WifiPhy > GetPhy(void) const
Bands::const_iterator Begin() const
Const Iterator to the model Bands container start.
Ptr< YansWifiPhy > m_staPhy
STA PHY.
void CheckLastSelectedMode(WifiMode expectedMode)
Check if the selected WifiMode is correct.
void TxDataFailedTrace(std::string context, Mac48Address adress)
Transmit data failed function.
virtual void DoRun(void)
Implementation to actually run this TestCase.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
keep track of a set of node pointers.
void SetApMimoSettings(uint8_t antennas, uint8_t maxStreams)
Change the configured MIMO settings for AP node.
Hold objects of type Ptr<T>.
static WifiTestSuite g_wifiTestSuite
the test suite
uint16_t GetFrequency(void) const
802.11 PHY layer modelThis PHY implements a model of 802.11a.
bool Send(Ptr< Packet > packet, const Address &dest, uint16_t protocolNumber)
void TxCallback(std::string context, WifiConstPsduMap psdus, WifiTxVector txVector, double txPowerW)
Callback that indicates a PSDU is being transmitted.
virtual void DoRun(void)
Implementation to actually run this TestCase.
Ptr< Packet > Copy(void) const
performs a COW copy of the packet.
virtual bool Send(Ptr< Packet > packet, const Address &dest, uint16_t protocolNumber)=0
IdealRateManagerChannelWidthTest()
uint32_t m_received
received packets
void SetList(const std::list< uint32_t > &packetlist)
RuType
The different HE Resource Unit (RU) types.
uint16_t m_addbaPendingCount
Count number of times ADDBA state machine is in pending state.
NodeContainer Setup(bool nearestApBeaconGeneration, bool staActiveProbe)
Setup test.
virtual ~Bug2222TestCase()
Ptr< const SpectrumModel > GetSpectrumModel() const
virtual void SetChannelNumber(uint8_t id)
Set channel number.
manage and create wifi channel objects for the YANS model.
ObjectFactory m_propDelay
propagation delay
uint8_t GetChannelNumber(void) const
Return current channel number.
create MAC layers for a ns3::WifiNetDevice.
void SendOnePacket(Ptr< LrWpanPhy > sender, Ptr< LrWpanPhy > receiver)
State
Represents the state for this agreement.
void RxSuccessCallback(std::string context, Ptr< const Packet > p)
Callback when packet is successfully received.
uint8_t m_countOperationalChannelWidth40
count number of beacon frames announcing a 40 MHz operating channel width
void ChangeChannelWidth(uint16_t channelWidth)
Change the configured channel width for all nodes.
void SetErrorRateModel(std::string name, std::string n0="", const AttributeValue &v0=EmptyAttributeValue(), std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue())
Test to validate that Ideal rate manager properly selects TXVECTOR in scenarios where MIMO is used...
void TxCallback(std::string context, WifiConstPsduMap psduMap, WifiTxVector txVector, double txPowerW)
Callback that indicates a PSDU is being transmitted.
void SetPosition(const Vector &position)
The IEEE 802.11 SSID Information Element.
Make sure that the correct channel width and center frequency have been set for OFDM basic rate trans...
ObjectFactory m_propDelay
propagation delay
void RxErrorCallback(std::string context, Ptr< const Packet > p, double snr)
Callback when packet is dropped.
Make sure that when virtual collision occurs the wifi remote station manager is triggered and the ret...
virtual void SetType(std::string type, std::string n0="", const AttributeValue &v0=EmptyAttributeValue(), std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue(), std::string n8="", const AttributeValue &v8=EmptyAttributeValue(), std::string n9="", const AttributeValue &v9=EmptyAttributeValue(), std::string n10="", const AttributeValue &v10=EmptyAttributeValue())
std::tuple< double, uint16_t, uint32_t, WifiModulationClass > FreqWidthSubbandModulationTuple
A tuple of {starting frequency, channelWidth, Number of subbands in SpectrumModel, modulation type}.
virtual void DoRun(void)
Implementation to actually run this TestCase.
uint16_t m_txCount
Count number of transmitted data packets.
void RunSubtest(PointerValue apErrorModel, PointerValue staErrorModel)
Run subtest for this test suite.
uint8_t GetStaChannelWidth(void) const
Return the STA channel width.
Helper class used to assign positions and mobility models to nodes.
ObjectFactory m_manager
manager
Instantiate subclasses of ns3::Object.
virtual ~IdealRateManagerChannelWidthTest()
Ptr< WifiMac > GetMac(void) const
StaWifiMacScanningTestCase()
WifiModulationClass
This enumeration defines the modulation classes per (Table 9-4 "Modulation classes"; IEEE 802...
uint32_t AddDevice(Ptr< NetDevice > device)
Associate a NetDevice to this node.
#define NS_ABORT_MSG_IF(cond, msg)
Abnormal program termination if a condition is true, with a message.
void AddPacketTag(const Tag &tag) const
Add a packet tag.
void SetRemote(PacketSocketAddress addr)
set the remote address and protocol to be used
Ptr< SpectrumValue > psd
The Power Spectral Density of the waveform, in linear units.
void TxCallback(std::string context, WifiConstPsduMap psdus, WifiTxVector txVector, double txPowerW)
Callback that indicates a PSDU is being transmitted.
static void AssignWifiRandomStreams(Ptr< WifiMac > mac, int64_t stream)
SignalNoiseDbm structure.
virtual void SetChannelWidth(uint16_t channelWidth)
Ptr< YansWifiPhy > m_apPhy
AP PHY.
void SetPropagationDelayModel(Ptr< PropagationDelayModel > delay)
Set the propagation delay model to be used.
Time Seconds(double value)
Construct a Time in the indicated unit.
AttributeValue implementation for Ssid.
ObjectFactory m_manager
manager
void SendPacketBurst(uint32_t numPackets, Ptr< NetDevice > sourceDevice, Address &destination) const
Triggers the arrival of a burst of 1000 Byte-long packets in the source device.
uint32_t m_received
received
void Add(Vector v)
Add a position to the list of positions.
void SendOnePacket(Ptr< WifiNetDevice > dev)
Send one packet function.
Ptr< Node > Get(uint32_t i) const
Get the Ptr<Node> stored in this container at a given index.
void Install(Ptr< Node > node) const
Aggregate an instance of a ns3::PacketSocketFactory onto the provided node.
Data rate verification test for MCSs of different RU sizes.
virtual void DoRun(void)
Implementation to actually run this TestCase.
WifiTxVector m_txVector
Store the last TXVECTOR used to transmit Data.
Make sure that Ideal rate manager properly selects MCS based on the configured channel width...
void TurnApOff(Ptr< Node > apNode)
Turn the AP node off.
uint16_t m_txMacFinalDataFailedCount
Count number of unsuccessfully transmitted data packets.
void SendOnePacket(Ptr< WifiNetDevice > dev)
Send one packet function.
void CheckLastSelectedNss(uint8_t expectedNss)
Check if the selected Nss is correct.
Time MicroSeconds(uint64_t value)
Construct a Time in the indicated unit.
SetChannelFrequencyTest()
Time Now(void)
create an ns3::Time instance which contains the current simulation time.
uint16_t m_addbaNoReplyCount
Count number of times ADDBA state machine is in no_reply state.
virtual void DoRun(void)
Implementation to actually run this TestCase.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
virtual ~Issue40TestCase()
uint16_t GetChannelWidth(void) const
std::vector< FreqWidthSubbandModulationTuple > m_distinctTuples
vector of distinct {starting frequency, channelWidth, Number of subbands in SpectrumModel, modulation type} tuples
void ChangeSupportedChannelWidth(void)
Function called to change the supported channel width at runtime.
void SetPriority(uint8_t priority)
Set the tag's priority.
This class can be used to hold variables of floating point type such as 'double' or 'float'...
uint16_t m_failedActionCount
Count failed ADDBA request/response.
Ptr< YansWifiPhy > GetYansWifiPhyPtr(const NetDeviceContainer &nc) const
Get yans wifi phy function.
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.
void SendPackets(uint8_t numPackets, Ptr< NetDevice > sourceDevice, Address &destination, uint8_t priority)
Triggers the transmission of a 1000 Byte-long data packet from the source device. ...
void GetAttribute(std::string name, AttributeValue &value) const
Get the value of an attribute, raising fatal errors if unsuccessful.
void SetStartTime(Time start)
Specify application start time.
#define NS_TEST_EXPECT_MSG_LT_OR_EQ(actual, limit, msg)
Test that an actual value is less than or equal to a limit and report if not.
Ptr< T > Copy(Ptr< T > object)
Return a deep copy of a Ptr.
Callback< R, Ts... > MakeCallback(R(T::*memPtr)(Ts...), OBJ objPtr)
Build Callbacks for class method members which take varying numbers of arguments and potentially retu...
HeRuMcsDataRateTestCase()
uint8_t m_reassocRespCount
count number of reassociation responses
uint64_t GetDataRate(uint16_t channelWidth, uint16_t guardInterval, uint8_t nss) const
std::map< WifiSpectrumBand, double > RxPowerWattPerChannelBand
A map of the received power (Watts) for each band.
void CreateOne(Vector pos, Ptr< YansWifiChannel > channel)
Create one function.
Make sure that fragmentation works with QoS stations.
uint16_t m_channelWidth
channel width (in MHz)
bool DefineChannelNumber(uint8_t channelNumber, WifiPhyBand band, WifiPhyStandard standard, uint16_t frequency, uint16_t channelWidth)
Add a channel definition to the WifiPhy.
Set Channel Frequency Test.
Handle packet fragmentation and retransmissions for data and management frames.
Make it easy to create and manage PHY objects for the spectrum model.
virtual void DoRun(void)
Implementation to actually run this TestCase.