Exemplo n.º 1
0
 //
 // Add test cases to the test suite.
 //
 void BigMathTestCases::AddTestCases( boost::unit_test::test_suite* testSuite, boost::shared_ptr< BigMathTestCases > tester ) const
 {
     AddTestCase( "BigMath Test Case - 64x32", &BigMathTestCases::TestCase_64x32, tester, testSuite );
     AddTestCase( "BigMath Test Case - 64x64", &BigMathTestCases::TestCase_64x64, tester, testSuite );
 }
 //
 // Add test cases to the test suite.
 //
 void MaleFirstNameDataFileRecordTestCases::AddTestCases( boost::unit_test::test_suite* testSuite, boost::shared_ptr< MaleFirstNameDataFileRecordTestCases > tester ) const
 {
     AddTestCase( "MaleFirstNameDataFileRecord: TestCase_DFRConstructor", &TestCase_DFRConstructor<TPCE::MaleFirstNameDataFileRecord>, fields, testSuite );
     AddTestCaseField<TPCE::MaleFirstNameDataFileRecord>( "MaleFirstNameDataFileRecord: TestCase_NAME", &TestCase_DFRFieldString<TPCE::MaleFirstNameDataFileRecord>, fields, &TPCE::MaleFirstNameDataFileRecord::NAME, name, testSuite );
     AddTestCase( "MaleFirstNameDataFileRecord: TestCase_DFRToString", &TestCase_DFRToString<TPCE::MaleFirstNameDataFileRecord>, fields, testSuite );
 }
BuildingsPathlossTestSuite::BuildingsPathlossTestSuite ()
  : TestSuite ("buildings-pathloss-test", SYSTEM)
{

  LogComponentEnable ("BuildingsPathlossTest", LOG_LEVEL_ALL);

  double freq = 869e6;  // E_UTRA BAND #5 see table 5.5-1 of 36.101

  AddTestCase (new BuildingsPathlossTestCase (freq, 1, 2, UrbanEnvironment, LargeCity, 137.93, "OH Urban Large city"), TestCase::QUICK);

  AddTestCase (new BuildingsPathlossTestCase (freq, 1, 2, UrbanEnvironment, SmallCity, 137.88, "OH Urban small city"), TestCase::QUICK);

  AddTestCase (new BuildingsPathlossTestCase (freq, 1, 2, SubUrbanEnvironment, LargeCity, 128.03, "loss OH SubUrban"), TestCase::QUICK);

  AddTestCase (new BuildingsPathlossTestCase (freq, 1, 2, OpenAreasEnvironment, LargeCity, 110.21, "loss OH OpenAreas"), TestCase::QUICK);

  // Test #2 COST231 Model (1500 < freq < 2000~2170 MHz) (Macro<->UE)

  freq = 2.1140e9; // E_UTRA BAND #1 see table 5.5-1 of 36.101

  AddTestCase (new BuildingsPathlossTestCase (freq, 1, 2, UrbanEnvironment, LargeCity, 148.55, "COST231 Urban Large city"), TestCase::QUICK);

  AddTestCase (new BuildingsPathlossTestCase (freq, 1, 2, UrbanEnvironment, SmallCity, 150.64, "COST231 Urban small city and suburban"), TestCase::QUICK);

  // Test #3 2.6 GHz model (Macro<->UE)

  freq = 2.620e9; // E_UTRA BAND #7 see table 5.5-1 of 36.101

  AddTestCase (new BuildingsPathlossTestCase (freq, 1, 2, UrbanEnvironment, SmallCity, 121.83, "2.6GHz model"), TestCase::QUICK);

  // Test #4 ITU1411 LOS model (Macro<->UE)

  freq = 2.1140e9; // E_UTRA BAND #1 see table 5.5-1 of 36.101
  AddTestCase (new BuildingsPathlossTestCase (freq, 1, 3, UrbanEnvironment, LargeCity, 81.00, "ITU1411 LOS"), TestCase::QUICK);

  // Test #5 ITU1411 NLOS model (Macro<->UE)

  freq = 2.1140e9; // E_UTRA BAND #1 see table 5.5-1 of 36.101

  AddTestCase (new BuildingsPathlossTestCase (freq, 1, 4, UrbanEnvironment, LargeCity, 143.69, "ITU1411 NLOS"), TestCase::QUICK);

  // Test #6 ITUP1238 (HeNB <-> UE)

  freq = 2.1140e9; // E_UTRA BAND #1 see table 5.5-1 of 36.101
  AddTestCase (new BuildingsPathlossTestCase (freq, 5, 6, UrbanEnvironment, LargeCity, 88.3855, "ITUP1238"), TestCase::QUICK);

  // Test #7 Outdoor -> Indoor OkumuraHata (Macro<->UE)

  freq = 2.1140e9; // E_UTRA BAND #1 see table 5.5-1 of 36.101
  // The loss is as in test #2 (large city) plus the building penetration loss
  // which for ConcreteWithWindows is equal to 7 dB -> 148.55 + 7 = 155.55
  AddTestCase (new BuildingsPathlossTestCase (freq, 1, 7, UrbanEnvironment, LargeCity, 155.55, "Okumura Hata Outdoor -> Indoor"), TestCase::QUICK);

  // Test #8 Outdoor -> Indoor ITU1411 (Macro<->UE)
  freq = 2.1140e9; // E_UTRA BAND #1 see table 5.5-1 of 36.101
  // The loss is as in test #4 plus the building penetration loss
  // which for ConcreteWithWindows is equal to 7 dB -> 81.000 + 7 = 88.000
  AddTestCase (new BuildingsPathlossTestCase (freq, 1, 8, UrbanEnvironment, LargeCity, 88.000, "ITU1411 LOS Outdoor -> Indoor"), TestCase::QUICK);

  // Test #9 Indoor -> Outdoor LOS (HeNB <-> UE)

  freq = 2.1140e9; // E_UTRA BAND #1 see table 5.5-1 of 36.101
  // The loss is similar of test #4 plus the building penetration loss
  // which for ConcreteWithWindows is equal to 7 dB and the height gain
  // (2 floors x 2 dB/floor = 4) -> 81.838 + 7 - 4 = 84.838
  AddTestCase (new BuildingsPathlossTestCase (freq, 9, 10, UrbanEnvironment, LargeCity, 84.838, "ITU1411 LOS Indoor -> Outdoor"), TestCase::QUICK);

  // Test #10 Indoor -> Outdoor NLOS (HeNB <-> UE)

  freq = 2.1140e9; // E_UTRA BAND #1 see table 5.5-1 of 36.101
  // The loss is similar as in test #4 plus the building penetration loss
  // which for ConcreteWithWindows is equal to 7 dB and the height gain
  // (2 floors x 2 dB/floor = 4) -> 180.90 + 7 - 4 = 183.90
  AddTestCase (new BuildingsPathlossTestCase (freq, 9, 11, UrbanEnvironment, LargeCity, 183.90, "ITU1411 NLOS Indoor -> Outdoor"), TestCase::QUICK);


}
EpcS1uDlTestSuite::EpcS1uDlTestSuite ()
  : TestSuite ("epc-s1u-downlink", SYSTEM)
{  
  std::vector<EnbDlTestData> v1;  
  EnbDlTestData e1;
  UeDlTestData f1 (1, 100);
  e1.ues.push_back (f1);
  v1.push_back (e1);
  AddTestCase (new EpcS1uDlTestCase ("1 eNB, 1UE", v1), TestCase::QUICK);


  std::vector<EnbDlTestData> v2;  
  EnbDlTestData e2;
  UeDlTestData f2_1 (1, 100);
  e2.ues.push_back (f2_1);
  UeDlTestData f2_2 (2, 200);
  e2.ues.push_back (f2_2);
  v2.push_back (e2);
  AddTestCase (new EpcS1uDlTestCase ("1 eNB, 2UEs", v2), TestCase::QUICK);


  std::vector<EnbDlTestData> v3;  
  v3.push_back (e1);
  v3.push_back (e2);
  AddTestCase (new EpcS1uDlTestCase ("2 eNBs", v3), TestCase::QUICK);


  EnbDlTestData e3;
  UeDlTestData f3_1 (3, 50);
  e3.ues.push_back (f3_1);
  UeDlTestData f3_2 (5, 1472);
  e3.ues.push_back (f3_2);
  UeDlTestData f3_3 (1, 1);
  e3.ues.push_back (f3_2);
  std::vector<EnbDlTestData> v4;  
  v4.push_back (e3);
  v4.push_back (e1);
  v4.push_back (e2);
  AddTestCase (new EpcS1uDlTestCase ("3 eNBs", v4), TestCase::QUICK);

  std::vector<EnbDlTestData> v5;  
  EnbDlTestData e5;
  UeDlTestData f5 (10, 3000);
  e5.ues.push_back (f5);
  v5.push_back (e5);
  AddTestCase (new EpcS1uDlTestCase ("1 eNB, 10 pkts 3000 bytes each", v5), TestCase::QUICK);

  std::vector<EnbDlTestData> v6;  
  EnbDlTestData e6;
  UeDlTestData f6 (50, 3000);
  e6.ues.push_back (f6);
  v6.push_back (e6);
  AddTestCase (new EpcS1uDlTestCase ("1 eNB, 50 pkts 3000 bytes each", v6), TestCase::QUICK);
  
  std::vector<EnbDlTestData> v7;  
  EnbDlTestData e7;
  UeDlTestData f7 (10, 15000);
  e7.ues.push_back (f7);
  v7.push_back (e7);
  AddTestCase (new EpcS1uDlTestCase ("1 eNB, 10 pkts 15000 bytes each", v7), TestCase::QUICK);

  std::vector<EnbDlTestData> v8;  
  EnbDlTestData e8;
  UeDlTestData f8 (100, 15000);
  e8.ues.push_back (f8);
  v8.push_back (e8);
  AddTestCase (new EpcS1uDlTestCase ("1 eNB, 100 pkts 15000 bytes each", v8), TestCase::QUICK);
}
LenaTestPhyErrorModelSuite::LenaTestPhyErrorModelSuite ()
  : TestSuite ("lte-phy-error-model", SYSTEM)
{
  NS_LOG_INFO ("creating LenaTestPhyErrorModelTestCase");
  
  
  for (uint32_t rngRun = 1; rngRun <= 3; ++rngRun)
    {

      // Tests on DL Control Channels (PCFICH+PDCCH)
      // the tolerance is calculated with the following octave code:
      //
      // n =  1000; # TX packets
      // for p=1-[0.007 0.045 0.206 0.343]
      //    tol = n*p - binoinv(0.001, n, p)
      // endfor

      // 1 interfering eNB SINR -2.0 BLER 0.007 TB size 217
      AddTestCase (new LenaDlCtrlPhyErrorModelTestCase (2, 1078, 0.007, 9,
                                                        Seconds (0.04), rngRun),
                   (rngRun == 1) ? TestCase::QUICK : TestCase::TAKES_FOREVER);
      // 2 interfering eNBs SINR -4.0 BLER 0.037 TB size 217
      AddTestCase (new LenaDlCtrlPhyErrorModelTestCase (3, 1040, 0.045, 21,
                                                        Seconds (0.04), rngRun),
                   (rngRun == 1) ? TestCase::EXTENSIVE : TestCase::TAKES_FOREVER);
      // 3 interfering eNBs SINR -6.0 BLER 0.21 TB size 133
      AddTestCase (new LenaDlCtrlPhyErrorModelTestCase (4, 1250, 0.206, 40,
                                                        Seconds (0.12), rngRun),
                   (rngRun == 1) ? TestCase::EXTENSIVE : TestCase::TAKES_FOREVER);
      // 4 interfering eNBs SINR -7.0 BLER 0.34 TB size 133
      AddTestCase (new LenaDlCtrlPhyErrorModelTestCase (5, 1260, 0.343, 47,
                                                        Seconds (0.12), rngRun),
                   (rngRun == 1) ? TestCase::EXTENSIVE : TestCase::TAKES_FOREVER);

      // Tests on DL Data channels (PDSCH)
      // the tolerance is calculated with the following octave code:
      //
      // n =  1000; # TX packets
      // for p=1-[0.33 0.11 0.2 0.3 0.55 0.14]
      //    tol = n*p - binoinv(0.005, n, p)
      // endfor

      // MCS 2 TB size of 256 bits BLER 0.33 SINR -5.51
      AddTestCase (new LenaDataPhyErrorModelTestCase (4, 1800, 0.33, 39,
                                                      Seconds (0.04), rngRun),
                   (rngRun == 1) ? TestCase::QUICK : TestCase::TAKES_FOREVER);
      // MCS 2 TB size of 528 bits BLER 0.11 SINR -5.51
      AddTestCase (new LenaDataPhyErrorModelTestCase (2, 1800, 0.11, 26,
                                                      Seconds (0.04), rngRun),
                   (rngRun == 1) ? TestCase::EXTENSIVE : TestCase::TAKES_FOREVER);
      // MCS 2 TB size of 1088 bits BLER 0.02 SINR -5.51
      AddTestCase (new LenaDataPhyErrorModelTestCase (1, 1800, 0.02, 33,
                                                      Seconds (0.04), rngRun),
                   (rngRun == 1) ? TestCase::EXTENSIVE : TestCase::TAKES_FOREVER);
      // MCS 12 TB size of 4800 bits  BLER 0.3  SINR 4.43
      AddTestCase (new LenaDataPhyErrorModelTestCase (1, 600, 0.3, 38,
                                                      Seconds (0.04), rngRun),
                   (rngRun == 1) ? TestCase::EXTENSIVE : TestCase::TAKES_FOREVER);
      // MCS 12 TB size of 1632 bits  BLER 0.55  SINR 4.43
      AddTestCase (new LenaDataPhyErrorModelTestCase (3, 600, 0.55, 40,
                                                      Seconds (0.04), rngRun),
                   (rngRun == 1) ? TestCase::EXTENSIVE : TestCase::TAKES_FOREVER);
      // MCS 16 TB size of 7272 bits (3648 x 3584) BLER 0.14 SINR 8.48
      // BLER 0.14 = 1 - ((1-0.075)*(1-0.075))
      AddTestCase (new LenaDataPhyErrorModelTestCase (1, 470, 0.14, 29,
                                                      Seconds (0.04), rngRun),
                   (rngRun == 1) ? TestCase::EXTENSIVE : TestCase::TAKES_FOREVER);

    }

}