src/lte/test/lte-test-pss-ff-mac-scheduler.cc
changeset 9673 da69cd4f2c93
parent 9655 72ed5eddc62b
parent 9267 1309ad7bb448
child 9675 a14ab3098785
equal deleted inserted replaced
9672:34cdaa0fad64 9673:da69cd4f2c93
    88   // UPLINK -> DISTANCE 0 -> MCS 28 -> Itbs 26 (from table 7.1.7.2.1-1 of 36.2    13)
    88   // UPLINK -> DISTANCE 0 -> MCS 28 -> Itbs 26 (from table 7.1.7.2.1-1 of 36.2    13)
    89   // 1 user -> 25 PRB at Itbs 26 -> 2292 -> 2292000 > 232000 -> throughput = 232000 bytes/sec
    89   // 1 user -> 25 PRB at Itbs 26 -> 2292 -> 2292000 > 232000 -> throughput = 232000 bytes/sec
    90   // 3 users -> 8 PRB at Itbs 26 -> 749 -> 749000 > 232000 -> throughput = 232000 bytes/sec 
    90   // 3 users -> 8 PRB at Itbs 26 -> 749 -> 749000 > 232000 -> throughput = 232000 bytes/sec 
    91   // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 > 232000 -> throughput = 232000 bytes/sec
    91   // 6 users -> 4 PRB at Itbs 26 -> 373 -> 373000 > 232000 -> throughput = 232000 bytes/sec
    92   // 12 users -> 2 PRB at Itbs 26 -> 185 -> 185000 < 232000 -> throughput = 185000 bytes/sec
    92   // 12 users -> 2 PRB at Itbs 26 -> 185 -> 185000 < 232000 -> throughput = 185000 bytes/sec
    93   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,0,0,232000,232000,200,1));
    93   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,0,0,232000,232000,200,1), TestCase::EXTENSIVE);
    94   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (3,0,0,232000,232000,200,1));
    94   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (3,0,0,232000,232000,200,1), TestCase::QUICK);
    95   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,0,0,232000,232000,200,1));
    95   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,0,0,232000,232000,200,1), TestCase::EXTENSIVE);
    96   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,0,0,183000,185000,200,1));
    96   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,0,0,183000,185000,200,1), TestCase::EXTENSIVE);
    97 
    97 
    98   // DOWNLINK - DISTANCE 3000 -> MCS 24 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
    98   // DOWNLINK - DISTANCE 3000 -> MCS 24 -> Itbs 20 (from table 7.1.7.2.1-1 of 36.213)
    99   // DOWNLINK -> DISTANCE 0 -> MCS 28 -> Itbs 26 (from table 7.1.7.2.1-1 of 36.2    13)
    99   // DOWNLINK -> DISTANCE 0 -> MCS 28 -> Itbs 26 (from table 7.1.7.2.1-1 of 36.2    13)
   100   // Traffic info
   100   // Traffic info
   101   //   UDP traffic: payload size = 200 bytes, interval = 1 ms
   101   //   UDP traffic: payload size = 200 bytes, interval = 1 ms
   108   // UPLINK - DISTANCE 3000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
   108   // UPLINK - DISTANCE 3000 -> MCS 20 -> Itbs 18 (from table 7.1.7.2.1-1 of 36.213)
   109   // 1 user -> 25 PRB at Itbs 18 -> 1239 -> 1239000 > 232000 -> throughput = 232000 bytes/sec
   109   // 1 user -> 25 PRB at Itbs 18 -> 1239 -> 1239000 > 232000 -> throughput = 232000 bytes/sec
   110   // 3 users -> 8 PRB at Itbs 18 -> 389 -> 389000 > 232000 -> throughput = 232000 bytes/sec
   110   // 3 users -> 8 PRB at Itbs 18 -> 389 -> 389000 > 232000 -> throughput = 232000 bytes/sec
   111   // 6 users -> 4 PRB at Itbs 18 -> 193 -> 193000 < 232000 -> throughput = 193000 bytes/sec
   111   // 6 users -> 4 PRB at Itbs 18 -> 193 -> 193000 < 232000 -> throughput = 193000 bytes/sec
   112   // 12 users -> 2 PRB at Itbs 18 -> 97 -> 97000 < 232000 -> throughput = 97000 bytes/sec
   112   // 12 users -> 2 PRB at Itbs 18 -> 97 -> 97000 < 232000 -> throughput = 97000 bytes/sec
   113   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,0,3000,232000,232000,200,1));
   113   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,0,3000,232000,232000,200,1), TestCase::EXTENSIVE);
   114   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (3,0,3000,232000,232000,200,1));
   114   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (3,0,3000,232000,232000,200,1), TestCase::EXTENSIVE);
   115   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,0,3000,230500,193000,200,1));
   115   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,0,3000,230500,193000,200,1), TestCase::EXTENSIVE);
   116   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,0,3000,115250,97000,200,1));
   116   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,0,3000,115250,97000,200,1), TestCase::EXTENSIVE);
   117  
   117  
   118   // DOWNLINK - DISTANCE 6000 -> MCS 16 -> Itbs 15 (from table 7.1.7.2.1-1 of 36.213)
   118   // DOWNLINK - DISTANCE 6000 -> MCS 16 -> Itbs 15 (from table 7.1.7.2.1-1 of 36.213)
   119   // Traffic info
   119   // Traffic info
   120   //   UDP traffic: payload size = 200 bytes, interval = 1 ms
   120   //   UDP traffic: payload size = 200 bytes, interval = 1 ms
   121   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 232000 byte/rate 
   121   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 232000 byte/rate 
   127   // UPLINK - DISTANCE 6000 -> MCS 12 -> Itbs 11 (from table 7.1.7.2.1-1 of 36.213)
   127   // UPLINK - DISTANCE 6000 -> MCS 12 -> Itbs 11 (from table 7.1.7.2.1-1 of 36.213)
   128   // 1 user -> 25 PRB at Itbs 11 -> 621 -> 621000 > 232000 -> throughput = 232000  bytes/sec
   128   // 1 user -> 25 PRB at Itbs 11 -> 621 -> 621000 > 232000 -> throughput = 232000  bytes/sec
   129   // 3 users -> 8 PRB at Itbs 11 -> 201 -> 201000 < 232000 -> throughput = 201000  bytes/sec
   129   // 3 users -> 8 PRB at Itbs 11 -> 201 -> 201000 < 232000 -> throughput = 201000  bytes/sec
   130   // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 < 232000 -> throughput = 97000 bytes/sec
   130   // 6 users -> 4 PRB at Itbs 11 -> 97 -> 97000 < 232000 -> throughput = 97000 bytes/sec
   131   // 12 users -> 2 PRB at Itbs 11 -> 47 -> 47000 < 232000 -> throughput = 47000 bytes/sec
   131   // 12 users -> 2 PRB at Itbs 11 -> 47 -> 47000 < 232000 -> throughput = 47000 bytes/sec
   132   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,0,6000,232000,232000,200,1));
   132   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,0,6000,232000,232000,200,1), TestCase::EXTENSIVE);
   133   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (3,0,6000,232000,201000,200,1));
   133   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (3,0,6000,232000,201000,200,1), TestCase::EXTENSIVE);
   134   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,0,6000,150500,97000,200,1));
   134   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,0,6000,150500,97000,200,1), TestCase::EXTENSIVE);
   135   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,0,6000,75250,47000,200,1));
   135   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,0,6000,75250,47000,200,1), TestCase::EXTENSIVE);
   136 
   136 
   137   // DOWNLINK - DISTANCE 9000 -> MCS 12 -> Itbs 11 (from table 7.1.7.2.1-1 of 36.213)
   137   // DOWNLINK - DISTANCE 9000 -> MCS 12 -> Itbs 11 (from table 7.1.7.2.1-1 of 36.213)
   138   // Traffic info
   138   // Traffic info
   139   //   UDP traffic: payload size = 200 bytes, interval = 1 ms
   139   //   UDP traffic: payload size = 200 bytes, interval = 1 ms
   140   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 232000 byte/rate 
   140   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 232000 byte/rate 
   146   // UPLINK - DISTANCE 9000 -> MCS 8 -> Itbs 8 (from table 7.1.7.2.1-1 of 36.213)
   146   // UPLINK - DISTANCE 9000 -> MCS 8 -> Itbs 8 (from table 7.1.7.2.1-1 of 36.213)
   147   // 1 user -> 24 PRB at Itbs 8 -> 437 -> 437000 > 232000 -> throughput = 232000 bytes/sec
   147   // 1 user -> 24 PRB at Itbs 8 -> 437 -> 437000 > 232000 -> throughput = 232000 bytes/sec
   148   // 3 users -> 8 PRB at Itbs 8 -> 137 -> 137000 < 232000 -> throughput = 137000 bytes/sec
   148   // 3 users -> 8 PRB at Itbs 8 -> 137 -> 137000 < 232000 -> throughput = 137000 bytes/sec
   149   // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 < 232000 -> throughput = 67000 bytes/sec
   149   // 6 users -> 4 PRB at Itbs 8 -> 67 -> 67000 < 232000 -> throughput = 67000 bytes/sec
   150   // 12 users -> 2 PRB at Itbs 8 -> 32 -> 32000 < 232000 -> throughput = 32000 bytes/sec
   150   // 12 users -> 2 PRB at Itbs 8 -> 32 -> 32000 < 232000 -> throughput = 32000 bytes/sec
   151   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,0,9000,232000,232000,200,1));
   151   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,0,9000,232000,232000,200,1), TestCase::EXTENSIVE);
   152   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (3,0,9000,199000,137000,200,1));
   152   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (3,0,9000,199000,137000,200,1), TestCase::EXTENSIVE);
   153   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,0,9000,99500,67000,200,1));
   153   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,0,9000,99500,67000,200,1), TestCase::EXTENSIVE);
   154   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,0,9000,49750,32000,200,1));
   154   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,0,9000,49750,32000,200,1), TestCase::EXTENSIVE);
   155  
   155  
   156   // DONWLINK - DISTANCE 15000 -> MCS 6 -> Itbs 6 (from table 7.1.7.2.1-1 of 36.213)
   156   // DONWLINK - DISTANCE 15000 -> MCS 6 -> Itbs 6 (from table 7.1.7.2.1-1 of 36.213)
   157   // Traffic info
   157   // Traffic info
   158   //   UDP traffic: payload size = 200 bytes, interval = 1 ms
   158   //   UDP traffic: payload size = 200 bytes, interval = 1 ms
   159   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 232000 byte/rate 
   159   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 232000 byte/rate 
   165   // UPLINK - DISTANCE 15000 -> MCS 6 -> Itbs 6 (from table 7.1.7.2.1-1 of 36.213)
   165   // UPLINK - DISTANCE 15000 -> MCS 6 -> Itbs 6 (from table 7.1.7.2.1-1 of 36.213)
   166   // 1 user -> 25 PRB at Itbs 6 -> 233 -> 233000 > 232000 -> throughput = 232000 bytes/sec
   166   // 1 user -> 25 PRB at Itbs 6 -> 233 -> 233000 > 232000 -> throughput = 232000 bytes/sec
   167   // 3 users -> 8 PRB at Itbs 6 -> 69 -> 69000 < 232000 -> throughput = 69000 bytes/sec
   167   // 3 users -> 8 PRB at Itbs 6 -> 69 -> 69000 < 232000 -> throughput = 69000 bytes/sec
   168   // 6 users -> 4 PRB at Itbs 6 -> 32 -> 32000 < 232000 -> throughput = 32000 bytes/sec
   168   // 6 users -> 4 PRB at Itbs 6 -> 32 -> 32000 < 232000 -> throughput = 32000 bytes/sec
   169   // 12 users -> 2 PRB at Itbs 6 -> 15 -> 15000 < 232000 -> throughput = 15000 bytes/sec
   169   // 12 users -> 2 PRB at Itbs 6 -> 15 -> 15000 < 232000 -> throughput = 15000 bytes/sec
   170   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,0,15000,232000,232000,200,1));
   170   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (1,0,15000,232000,232000,200,1), TestCase::EXTENSIVE);
   171   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (3,0,15000,103000,69000,200,1));
   171   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (3,0,15000,103000,69000,200,1), TestCase::EXTENSIVE);
   172   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,0,15000,51500,32000,200,1));
   172   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (6,0,15000,51500,32000,200,1), TestCase::EXTENSIVE);
   173   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,0,15000,25750,15000,200,1));
   173   AddTestCase (new LenaPssFfMacSchedulerTestCase1 (12,0,15000,25750,15000,200,1), TestCase::EXTENSIVE);
   174 
   174 
   175   // Test Case 2: homogeneous flow test in PSS (different distance)
   175   // Test Case 2: homogeneous flow test in PSS (different distance)
   176   // Traffic1 info
   176   // Traffic1 info
   177   //   UDP traffic: payload size = 100 bytes, interval = 1 ms
   177   //   UDP traffic: payload size = 100 bytes, interval = 1 ms
   178   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 132000 byte/rate 
   178   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 132000 byte/rate 
   194   estThrPssDl1.push_back (132000);
   194   estThrPssDl1.push_back (132000);
   195   estThrPssDl1.push_back (132000);
   195   estThrPssDl1.push_back (132000);
   196   estThrPssDl1.push_back (132000);
   196   estThrPssDl1.push_back (132000);
   197   estThrPssDl1.push_back (132000);
   197   estThrPssDl1.push_back (132000);
   198   estThrPssDl1.push_back (132000);
   198   estThrPssDl1.push_back (132000);
   199   AddTestCase (new LenaPssFfMacSchedulerTestCase2 (dist1,estThrPssDl1,packetSize1,1));
   199   AddTestCase (new LenaPssFfMacSchedulerTestCase2 (dist1,estThrPssDl1,packetSize1,1), TestCase::EXTENSIVE);
   200 
   200 
   201   // Traffic2 info
   201   // Traffic2 info
   202   //   UDP traffic: payload size = 200 bytes, interval = 1 ms
   202   //   UDP traffic: payload size = 200 bytes, interval = 1 ms
   203   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 132000 byte/rate 
   203   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 132000 byte/rate 
   204   // Maximum throughput = 5 / ( 1/2196000 + 1/1383000 + 1/903000 + 1/597000 + 1/309000) = 694720  byte/s
   204   // Maximum throughput = 5 / ( 1/2196000 + 1/1383000 + 1/903000 + 1/597000 + 1/309000) = 694720  byte/s
   219   estThrPssDl2.push_back (138944);
   219   estThrPssDl2.push_back (138944);
   220   estThrPssDl2.push_back (138944);
   220   estThrPssDl2.push_back (138944);
   221   estThrPssDl2.push_back (138944);
   221   estThrPssDl2.push_back (138944);
   222   estThrPssDl2.push_back (138944);
   222   estThrPssDl2.push_back (138944);
   223   estThrPssDl2.push_back (138944);
   223   estThrPssDl2.push_back (138944);
   224   AddTestCase (new LenaPssFfMacSchedulerTestCase2 (dist2,estThrPssDl2,packetSize2,1));
   224   AddTestCase (new LenaPssFfMacSchedulerTestCase2 (dist2,estThrPssDl2,packetSize2,1), TestCase::EXTENSIVE);
   225   
   225   
   226   // Test Case 3: : heterogeneous flow test in PSS (same distance)
   226   // Test Case 3: : heterogeneous flow test in PSS (same distance)
   227   // Traffic3 info:
   227   // Traffic3 info:
   228   //   UDP traffic: payload size = [100, 200,300,400,500] bytes, interval = 1 ms
   228   //   UDP traffic: payload size = [100, 200,300,400,500] bytes, interval = 1 ms
   229   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 232000 byte/rate 
   229   //   UDP rate in scheduler: (payload + RLC header + PDCP header + IP header + UDP header) * 1000 byte/sec -> 232000 byte/rate 
   245   estThrPssDl3.push_back (132000);
   245   estThrPssDl3.push_back (132000);
   246   estThrPssDl3.push_back (232000);
   246   estThrPssDl3.push_back (232000);
   247   estThrPssDl3.push_back (332000);
   247   estThrPssDl3.push_back (332000);
   248   estThrPssDl3.push_back (432000);
   248   estThrPssDl3.push_back (432000);
   249   estThrPssDl3.push_back (532000);
   249   estThrPssDl3.push_back (532000);
   250   AddTestCase (new LenaPssFfMacSchedulerTestCase2 (dist3,estThrPssDl3,packetSize3,1));
   250   AddTestCase (new LenaPssFfMacSchedulerTestCase2 (dist3,estThrPssDl3,packetSize3,1), TestCase::EXTENSIVE);
   251   
   251   
   252 
   252 
   253   // Test Case 4: heterogeneous flow test in PSS (different distance)
   253   // Test Case 4: heterogeneous flow test in PSS (different distance)
   254   // Traffic4 info 
   254   // Traffic4 info 
   255   //   UDP traffic: payload size = [100,200,300] bytes, interval = 1 ms
   255   //   UDP traffic: payload size = [100,200,300] bytes, interval = 1 ms
   266   packetSize4.push_back (300);
   266   packetSize4.push_back (300);
   267   std::vector<uint32_t> estThrPssDl4;
   267   std::vector<uint32_t> estThrPssDl4;
   268   estThrPssDl4.push_back (132000); // User 0 estimated TTI throughput from PSS
   268   estThrPssDl4.push_back (132000); // User 0 estimated TTI throughput from PSS
   269   estThrPssDl4.push_back (232000); // User 1 estimated TTI throughput from PSS
   269   estThrPssDl4.push_back (232000); // User 1 estimated TTI throughput from PSS
   270   estThrPssDl4.push_back (332000); // User 2 estimated TTI throughput from PSS
   270   estThrPssDl4.push_back (332000); // User 2 estimated TTI throughput from PSS
   271   AddTestCase (new LenaPssFfMacSchedulerTestCase2 (dist4,estThrPssDl4,packetSize4,1));
   271   AddTestCase (new LenaPssFfMacSchedulerTestCase2 (dist4,estThrPssDl4,packetSize4,1), TestCase::QUICK);
   272 }
   272 }
   273 
   273 
   274 static LenaTestPssFfMacSchedulerSuite lenaTestPssFfMacSchedulerSuite;
   274 static LenaTestPssFfMacSchedulerSuite lenaTestPssFfMacSchedulerSuite;
   275 
   275 
   276 // --------------- T E S T - C A S E   # 1 ------------------------------
   276 // --------------- T E S T - C A S E   # 1 ------------------------------