View | Details | Raw Unified | Return to bug 2222
Collapse All | Expand All

(-)a/src/wifi/test/wifi-test.cc (-2 / +124 lines)
 Lines 17-24    Link Here 
17
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
 *
18
 *
19
 * Authors: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
19
 * Authors: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
20
 *          Quincy Tse <quincy.tse@nicta.com.au> (Case for Bug 991)
20
 *          Quincy Tse <quincy.tse@nicta.com.au>
21
 *          Sébastien Deronne <sebastien.deronne@gmail.com> (Case for bug 730)
21
 *          Sébastien Deronne <sebastien.deronne@gmail.com>
22
 */
22
 */
23
23
24
#include "ns3/yans-wifi-helper.h"
24
#include "ns3/yans-wifi-helper.h"
 Lines 950-955    Link Here 
950
}
950
}
951
951
952
//-----------------------------------------------------------------------------
952
//-----------------------------------------------------------------------------
953
/**
954
 * Make sure that when virtual collision occurs the wifi remote station manager 
955
 * is triggered and the retry counter is increased.
956
 *
957
 * See \bugid{2222}
958
 */
959
960
class Bug2222TestCase : public TestCase
961
{
962
public:
963
  Bug2222TestCase ();
964
  virtual ~Bug2222TestCase ();
965
966
  virtual void DoRun (void);
967
968
969
private:
970
  uint32_t m_countInternalCollisions;
971
972
  void PopulateArpCache ();
973
  void TxDataFailedTrace (std::string context, Mac48Address adr);
974
};
975
976
Bug2222TestCase::Bug2222TestCase ()
977
  : TestCase ("Test case for Bug 2222"),
978
    m_countInternalCollisions (0)
979
{
980
}
981
982
Bug2222TestCase::~Bug2222TestCase ()
983
{
984
}
985
986
void
987
Bug2222TestCase::TxDataFailedTrace (std::string context, Mac48Address adr)
988
{
989
  //Indicate the long retry counter has been increased in the wifi remote station manager
990
  m_countInternalCollisions++;
991
}
992
993
void
994
Bug2222TestCase::DoRun (void)
995
{
996
  m_countInternalCollisions = 0;
997
    
998
  //Generate same backoff for AC_VI and AC_VO
999
  RngSeedManager::SetSeed (1);
1000
  RngSeedManager::SetRun (31);
1001
1002
  NodeContainer wifiNodes;
1003
  wifiNodes.Create (2);
1004
1005
  YansWifiChannelHelper channel = YansWifiChannelHelper::Default ();
1006
  YansWifiPhyHelper phy = YansWifiPhyHelper::Default ();
1007
  phy.SetChannel (channel.Create ());
1008
1009
  WifiHelper wifi;
1010
  WifiMacHelper mac;
1011
  Ssid ssid = Ssid ("ns-3-ssid");
1012
  mac.SetType ("ns3::AdhocWifiMac",
1013
               "QosSupported", BooleanValue (true));
1014
1015
  NetDeviceContainer wifiDevices;
1016
  wifiDevices = wifi.Install (phy, mac, wifiNodes);
1017
1018
  MobilityHelper mobility;
1019
  Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
1020
1021
  positionAlloc->Add (Vector (0.0, 0.0, 0.0));
1022
  positionAlloc->Add (Vector (1.0, 0.0, 0.0));
1023
  mobility.SetPositionAllocator (positionAlloc);
1024
1025
  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
1026
  mobility.Install (wifiNodes);
1027
1028
  Ptr<WifiNetDevice> device1 = DynamicCast<WifiNetDevice> (wifiDevices.Get (0));
1029
  Ptr<WifiNetDevice> device2 = DynamicCast<WifiNetDevice> (wifiDevices.Get (1));
1030
1031
  PacketSocketAddress socket;
1032
  socket.SetSingleDevice (device1->GetIfIndex ());
1033
  socket.SetPhysicalAddress (device2->GetAddress ());
1034
  socket.SetProtocol (1);
1035
1036
  PacketSocketHelper packetSocket;
1037
  packetSocket.Install (wifiNodes);
1038
1039
  Ptr<PacketSocketClient> clientLowPriority = CreateObject<PacketSocketClient> ();
1040
  clientLowPriority->SetAttribute ("PacketSize", UintegerValue (1460));
1041
  clientLowPriority->SetAttribute ("MaxPackets", UintegerValue (1));
1042
  clientLowPriority->SetAttribute ("Priority", UintegerValue (4)); //AC_VI
1043
  clientLowPriority->SetRemote (socket);
1044
  wifiNodes.Get(0)->AddApplication (clientLowPriority);
1045
  clientLowPriority->SetStartTime (Seconds (0.0));
1046
  clientLowPriority->SetStopTime (Seconds (1.0));
1047
  
1048
  Ptr<PacketSocketClient> clientHighPriority = CreateObject<PacketSocketClient> ();
1049
  clientHighPriority->SetAttribute ("PacketSize", UintegerValue (1460));
1050
  clientHighPriority->SetAttribute ("MaxPackets", UintegerValue (1));
1051
  clientHighPriority->SetAttribute ("Priority", UintegerValue (6)); //AC_VO
1052
  clientHighPriority->SetRemote (socket);
1053
  wifiNodes.Get(0)->AddApplication (clientHighPriority);
1054
  clientHighPriority->SetStartTime (Seconds (0.0));
1055
  clientHighPriority->SetStopTime (Seconds (1.0));
1056
1057
  Ptr<PacketSocketServer> server = CreateObject<PacketSocketServer> ();
1058
  server->SetLocal (socket);
1059
  wifiNodes.Get(1)->AddApplication (server);
1060
  server->SetStartTime (Seconds (0.0));
1061
  server->SetStopTime (Seconds (1.0));
1062
1063
  Config::Connect ("/NodeList/*/DeviceList/*/RemoteStationManager/MacTxDataFailed", MakeCallback (&Bug2222TestCase::TxDataFailedTrace, this));
1064
1065
  Simulator::Stop (Seconds (1.0));
1066
  Simulator::Run ();
1067
  Simulator::Destroy ();
1068
1069
  NS_TEST_ASSERT_MSG_EQ (m_countInternalCollisions, 1, "unexpected number of internal collisions!");
1070
}
1071
1072
//-----------------------------------------------------------------------------
1073
953
class WifiTestSuite : public TestSuite
1074
class WifiTestSuite : public TestSuite
954
{
1075
{
955
public:
1076
public:
 Lines 965-970    Link Here 
965
  AddTestCase (new Bug555TestCase, TestCase::QUICK); //Bug 555
1086
  AddTestCase (new Bug555TestCase, TestCase::QUICK); //Bug 555
966
  AddTestCase (new Bug730TestCase, TestCase::QUICK); //Bug 730
1087
  AddTestCase (new Bug730TestCase, TestCase::QUICK); //Bug 730
967
  AddTestCase (new SetChannelFrequencyTest, TestCase::QUICK);
1088
  AddTestCase (new SetChannelFrequencyTest, TestCase::QUICK);
1089
  AddTestCase (new Bug2222TestCase, TestCase::QUICK); //Bug 2222
968
}
1090
}
969
1091
970
static WifiTestSuite g_wifiTestSuite;
1092
static WifiTestSuite g_wifiTestSuite;

Return to bug 2222