src/lte/test/lte-test-link-adaptation.cc
author Nicola Baldo <nbaldo@cttc.es>
Mon, 05 Dec 2011 21:27:44 +0100
changeset 8463 cc818aa536a5
parent 8460 fbb53bda0ec7
child 8506 f9616c9094a5
permissions -rw-r--r--
renamed LteTft --> EpcTft
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
     2
/*
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
     3
 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
     4
 *
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
     7
 * published by the Free Software Foundation;
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
     8
 *
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    12
 * GNU General Public License for more details.
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    13
 *
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    17
 *
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    18
 * Author: Manuel Requena <manuel.requena@cttc.es>
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    19
 */
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    20
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    21
#include "ns3/simulator.h"
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    22
#include "ns3/log.h"
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    23
#include "ns3/string.h"
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    24
#include "ns3/double.h"
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    25
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    26
#include "ns3/mobility-helper.h"
8460
fbb53bda0ec7 renamed LenaHelper --> LteHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8395
diff changeset
    27
#include "ns3/lte-helper.h"
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    28
8064
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
    29
#include "ns3/lte-ue-phy.h"
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
    30
#include "ns3/lte-ue-net-device.h"
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
    31
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    32
#include "ns3/lte-test-link-adaptation.h"
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    33
8064
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
    34
#include "lte-test-sinr-chunk-processor.h"
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
    35
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    36
NS_LOG_COMPONENT_DEFINE ("LteLinkAdaptationTest");
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    37
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    38
using namespace ns3;
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    39
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    40
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    41
/**
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    42
 * Test 1.3 Link Adaptation
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    43
 */
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    44
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    45
void
8039
614020e43493 loss in db in constant spectrum propagation loss
mrequena
parents: 8029
diff changeset
    46
LteTestDlSchedulingCallback (LteLinkAdaptationTestCase *testcase, std::string path,
8149
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    47
                             uint32_t frameNo, uint32_t subframeNo, uint16_t rnti,
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    48
                             uint8_t mcsTb1, uint16_t sizeTb1, uint8_t mcsTb2, uint16_t sizeTb2)
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    49
{
8149
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    50
  testcase->DlScheduling (frameNo, subframeNo, rnti, mcsTb1, sizeTb1, mcsTb2, sizeTb2);
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    51
}
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    52
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    53
/**
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    54
 * TestSuite
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    55
 */
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    56
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    57
LteLinkAdaptationTestSuite::LteLinkAdaptationTestSuite ()
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    58
  : TestSuite ("lte-link-adaptation", SYSTEM)
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    59
{
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    60
  NS_LOG_INFO ("Creating LteLinkAdaptionTestSuite");
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
    61
8046
3d03a2f39c7b test 1.3 finished
mrequena
parents: 8039
diff changeset
    62
  struct SnrEfficiencyMcs
8149
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    63
  {
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    64
    double  snrDb;
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    65
    double  efficiency;
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    66
    int  mcsIndex;
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    67
  };
8039
614020e43493 loss in db in constant spectrum propagation loss
mrequena
parents: 8029
diff changeset
    68
8046
3d03a2f39c7b test 1.3 finished
mrequena
parents: 8039
diff changeset
    69
  /**
8064
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
    70
    * Test vectors: SNRDB, Spectral Efficiency, MCS index
8046
3d03a2f39c7b test 1.3 finished
mrequena
parents: 8039
diff changeset
    71
    * From XXX
3d03a2f39c7b test 1.3 finished
mrequena
parents: 8039
diff changeset
    72
    */
8053
3404ba78e449 new test vector for AMC test; some test cases passing, but not all
Nicola Baldo <nbaldo@cttc.es>
parents: 8046
diff changeset
    73
  SnrEfficiencyMcs snrEfficiencyMcs[] = {
8149
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    74
    { -5.00000,  0.08024,        -1},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    75
    { -4.00000,  0.10030,        -1},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    76
    { -3.00000,  0.12518,        -1},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    77
    { -2.00000,  0.15589,        0},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    78
    { -1.00000,  0.19365,        0},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    79
    { 0.00000,   0.23983,        2},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    80
    { 1.00000,   0.29593,        2},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    81
    { 2.00000,   0.36360,        2},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    82
    { 3.00000,   0.44451,        4},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    83
    { 4.00000,   0.54031,        4},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    84
    { 5.00000,   0.65251,        6},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    85
    { 6.00000,   0.78240,        6},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    86
    { 7.00000,   0.93086,        8},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    87
    { 8.00000,   1.09835,        8},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    88
    { 9.00000,   1.28485,        10},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    89
    { 10.00000,  1.48981,        12},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    90
    { 11.00000,  1.71229,        12},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    91
    { 12.00000,  1.95096,        14},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    92
    { 13.00000,  2.20429,        14},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    93
    { 14.00000,  2.47062,        16},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    94
    { 15.00000,  2.74826,        18},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    95
    { 16.00000,  3.03560,        18},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    96
    { 17.00000,  3.33115,        20},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    97
    { 18.00000,  3.63355,        20},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    98
    { 19.00000,  3.94163,        22},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
    99
    { 20.00000,  4.25439,        22},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
   100
    { 21.00000,  4.57095,        24},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
   101
    { 22.00000,  4.89060,        24},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
   102
    { 23.00000,  5.21276,        26},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
   103
    { 24.00000,  5.53693,        26},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
   104
    { 25.00000,  5.86271,        28},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
   105
    { 26.00000,  6.18980,        28},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
   106
    { 27.00000,  6.51792,        28},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
   107
    { 28.00000,  6.84687,        28},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
   108
    { 29.00000,  7.17649,        28},
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
   109
    { 30.00000,  7.50663,        28},
8132
d897e9d45e1f clean link adaptation test
Manuel Requena <manuel.requena@cttc.es>
parents: 8065
diff changeset
   110
  };
8046
3d03a2f39c7b test 1.3 finished
mrequena
parents: 8039
diff changeset
   111
  int numOfTests = sizeof (snrEfficiencyMcs) / sizeof (SnrEfficiencyMcs);
8039
614020e43493 loss in db in constant spectrum propagation loss
mrequena
parents: 8029
diff changeset
   112
8064
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
   113
  double txPowerDbm = 30; // default eNB TX power over whole bandwdith
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
   114
  double ktDbm = -174;    // reference LTE noise PSD
8149
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
   115
  double noisePowerDbm = ktDbm + 10 * log10 (25 * 180000); // corresponds to kT*bandwidth in linear units
8064
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
   116
  double receiverNoiseFigureDb = 9.0; // default UE noise figure
8132
d897e9d45e1f clean link adaptation test
Manuel Requena <manuel.requena@cttc.es>
parents: 8065
diff changeset
   117
8053
3404ba78e449 new test vector for AMC test; some test cases passing, but not all
Nicola Baldo <nbaldo@cttc.es>
parents: 8046
diff changeset
   118
  for ( int i = 0 ; i < numOfTests; i++ )
8132
d897e9d45e1f clean link adaptation test
Manuel Requena <manuel.requena@cttc.es>
parents: 8065
diff changeset
   119
    {
8064
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
   120
      double lossDb = txPowerDbm - snrEfficiencyMcs[i].snrDb - noisePowerDbm - receiverNoiseFigureDb;
8046
3d03a2f39c7b test 1.3 finished
mrequena
parents: 8039
diff changeset
   121
8053
3404ba78e449 new test vector for AMC test; some test cases passing, but not all
Nicola Baldo <nbaldo@cttc.es>
parents: 8046
diff changeset
   122
      std::ostringstream name;
8065
47f0ce9e40cd added out-of-range test cases to link adaptation test
Nicola Baldo <nbaldo@cttc.es>
parents: 8064
diff changeset
   123
      name << " snr= " << snrEfficiencyMcs[i].snrDb << " dB, "
8053
3404ba78e449 new test vector for AMC test; some test cases passing, but not all
Nicola Baldo <nbaldo@cttc.es>
parents: 8046
diff changeset
   124
           << " mcs= " << snrEfficiencyMcs[i].mcsIndex;
8132
d897e9d45e1f clean link adaptation test
Manuel Requena <manuel.requena@cttc.es>
parents: 8065
diff changeset
   125
      AddTestCase (new LteLinkAdaptationTestCase (name.str (),  snrEfficiencyMcs[i].snrDb, lossDb, snrEfficiencyMcs[i].mcsIndex));
8046
3d03a2f39c7b test 1.3 finished
mrequena
parents: 8039
diff changeset
   126
    }
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   127
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   128
}
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   129
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   130
static LteLinkAdaptationTestSuite lteLinkAdaptationTestSuite;
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   131
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   132
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   133
/**
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   134
 * TestCase
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   135
 */
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   136
8132
d897e9d45e1f clean link adaptation test
Manuel Requena <manuel.requena@cttc.es>
parents: 8065
diff changeset
   137
LteLinkAdaptationTestCase::LteLinkAdaptationTestCase (std::string name, double snrDb, double loss, uint16_t mcsIndex)
8053
3404ba78e449 new test vector for AMC test; some test cases passing, but not all
Nicola Baldo <nbaldo@cttc.es>
parents: 8046
diff changeset
   138
  : TestCase (name),
8064
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
   139
    m_snrDb (snrDb),
8039
614020e43493 loss in db in constant spectrum propagation loss
mrequena
parents: 8029
diff changeset
   140
    m_loss (loss),
8046
3d03a2f39c7b test 1.3 finished
mrequena
parents: 8039
diff changeset
   141
    m_mcsIndex (mcsIndex)
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   142
{
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   143
  std::ostringstream sstream1, sstream2;
8064
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
   144
  sstream1 << " snr=" << snrDb 
8053
3404ba78e449 new test vector for AMC test; some test cases passing, but not all
Nicola Baldo <nbaldo@cttc.es>
parents: 8046
diff changeset
   145
           << " mcs=" << mcsIndex;
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   146
8135
5f0e9d4bfa35 draft interference test
Nicola Baldo <nicola@baldo.biz>
parents: 8132
diff changeset
   147
  NS_LOG_INFO ("Creating LteLinkAdaptationTestCase: " + sstream1.str ());
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   148
}
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   149
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   150
LteLinkAdaptationTestCase::~LteLinkAdaptationTestCase ()
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   151
{
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   152
}
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   153
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   154
void
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   155
LteLinkAdaptationTestCase::DoRun (void)
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   156
{
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   157
  /**
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   158
    * Simulation Topology
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   159
    */
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   160
8460
fbb53bda0ec7 renamed LenaHelper --> LteHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8395
diff changeset
   161
  Ptr<LteHelper> lteHelper = CreateObject<LteHelper> ();
fbb53bda0ec7 renamed LenaHelper --> LteHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8395
diff changeset
   162
//   lteHelper->EnableLogComponents ();
fbb53bda0ec7 renamed LenaHelper --> LteHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8395
diff changeset
   163
  lteHelper->EnableMacTraces ();
fbb53bda0ec7 renamed LenaHelper --> LteHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8395
diff changeset
   164
  lteHelper->EnableRlcTraces ();
fbb53bda0ec7 renamed LenaHelper --> LteHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8395
diff changeset
   165
  lteHelper->SetAttribute ("PathlossModel", StringValue ("ns3::ConstantSpectrumPropagationLossModel"));
8064
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
   166
  NS_LOG_INFO ("SNR = " << m_snrDb << "  LOSS = " << m_loss);
8460
fbb53bda0ec7 renamed LenaHelper --> LteHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8395
diff changeset
   167
  lteHelper->SetPathlossModelAttribute ("Loss", DoubleValue (m_loss));
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   168
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   169
  // Create Nodes: eNodeB and UE
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   170
  NodeContainer enbNodes;
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   171
  NodeContainer ueNodes;
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   172
  enbNodes.Create (1);
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   173
  ueNodes.Create (1);
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   174
  NodeContainer allNodes = NodeContainer ( enbNodes, ueNodes );
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   175
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   176
  // Install Mobility Model
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   177
  MobilityHelper mobility;
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   178
  mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   179
  mobility.Install (allNodes);
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   180
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   181
  // Create Devices and install them in the Nodes (eNB and UE)
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   182
  NetDeviceContainer enbDevs;
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   183
  NetDeviceContainer ueDevs;
8460
fbb53bda0ec7 renamed LenaHelper --> LteHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8395
diff changeset
   184
  lteHelper->SetSchedulerType ("ns3::RrFfMacScheduler");
fbb53bda0ec7 renamed LenaHelper --> LteHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8395
diff changeset
   185
  enbDevs = lteHelper->InstallEnbDevice (enbNodes);
fbb53bda0ec7 renamed LenaHelper --> LteHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8395
diff changeset
   186
  ueDevs = lteHelper->InstallUeDevice (ueNodes);
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   187
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   188
  // Attach a UE to a eNB
8460
fbb53bda0ec7 renamed LenaHelper --> LteHelper
Nicola Baldo <nbaldo@cttc.es>
parents: 8395
diff changeset
   189
  lteHelper->Attach (ueDevs, enbDevs.Get (0));
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   190
8380
f615b30c26e1 S1-U working in downlink
Nicola Baldo <nbaldo@cttc.es>
parents: 8149
diff changeset
   191
  // Activate the default EPS bearer
f615b30c26e1 S1-U working in downlink
Nicola Baldo <nbaldo@cttc.es>
parents: 8149
diff changeset
   192
  enum EpsBearer::Qci q = EpsBearer::NGBR_VIDEO_TCP_DEFAULT;
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   193
  EpsBearer bearer (q);
8463
cc818aa536a5 renamed LteTft --> EpcTft
Nicola Baldo <nbaldo@cttc.es>
parents: 8460
diff changeset
   194
  lteHelper->ActivateEpsBearer (ueDevs, bearer, EpcTft::Default ());
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   195
8132
d897e9d45e1f clean link adaptation test
Manuel Requena <manuel.requena@cttc.es>
parents: 8065
diff changeset
   196
  // Use testing chunk processor in the PHY layer
d897e9d45e1f clean link adaptation test
Manuel Requena <manuel.requena@cttc.es>
parents: 8065
diff changeset
   197
  // It will be used to test that the SNR is as intended
8064
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
   198
  Ptr<LtePhy> uePhy = ueDevs.Get (0)->GetObject<LteUeNetDevice> ()->GetPhy ()->GetObject<LtePhy> ();
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
   199
  Ptr<LteTestSinrChunkProcessor> testSinr = Create<LteTestSinrChunkProcessor> (uePhy);
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
   200
  uePhy->GetDownlinkSpectrumPhy ()->AddSinrChunkProcessor (testSinr);
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
   201
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   202
  Config::Connect ("/NodeList/0/DeviceList/0/LteEnbMac/DlScheduling",
8149
810e24692db8 run check-style on src/lte/
Nicola Baldo <nbaldo@cttc.es>
parents: 8135
diff changeset
   203
                   MakeBoundCallback (&LteTestDlSchedulingCallback, this));
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   204
8064
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
   205
  Simulator::Stop (Seconds (0.005));
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   206
  Simulator::Run ();
8064
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
   207
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
   208
  double calculatedSinrDb = 10.0 * log10 (testSinr->GetSinr ()[0]);
026861f85f53 added SNR test to lte-test-link-adaptation & updated it with new tx psd & noise values
Nicola Baldo <nbaldo@cttc.es>
parents: 8053
diff changeset
   209
  NS_TEST_ASSERT_MSG_EQ_TOL (calculatedSinrDb, m_snrDb, 0.0000001, "Wrong SINR !");
8029
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   210
  Simulator::Destroy ();
07614284e675 Draft version of Test 1.3
mrequena
parents:
diff changeset
   211
}
8039
614020e43493 loss in db in constant spectrum propagation loss
mrequena
parents: 8029
diff changeset
   212
614020e43493 loss in db in constant spectrum propagation loss
mrequena
parents: 8029
diff changeset
   213
614020e43493 loss in db in constant spectrum propagation loss
mrequena
parents: 8029
diff changeset
   214
void
614020e43493 loss in db in constant spectrum propagation loss
mrequena
parents: 8029
diff changeset
   215
LteLinkAdaptationTestCase::DlScheduling (uint32_t frameNo, uint32_t subframeNo, uint16_t rnti,
8135
5f0e9d4bfa35 draft interference test
Nicola Baldo <nicola@baldo.biz>
parents: 8132
diff changeset
   216
                                         uint8_t mcsTb1, uint16_t sizeTb1, uint8_t mcsTb2, uint16_t sizeTb2) 
8039
614020e43493 loss in db in constant spectrum propagation loss
mrequena
parents: 8029
diff changeset
   217
{
614020e43493 loss in db in constant spectrum propagation loss
mrequena
parents: 8029
diff changeset
   218
  static bool firstTime = true;
614020e43493 loss in db in constant spectrum propagation loss
mrequena
parents: 8029
diff changeset
   219
614020e43493 loss in db in constant spectrum propagation loss
mrequena
parents: 8029
diff changeset
   220
  if ( firstTime )
614020e43493 loss in db in constant spectrum propagation loss
mrequena
parents: 8029
diff changeset
   221
    {
614020e43493 loss in db in constant spectrum propagation loss
mrequena
parents: 8029
diff changeset
   222
      firstTime = false;
8135
5f0e9d4bfa35 draft interference test
Nicola Baldo <nicola@baldo.biz>
parents: 8132
diff changeset
   223
      NS_LOG_INFO ("SNR\tRef_MCS\tCalc_MCS");
8039
614020e43493 loss in db in constant spectrum propagation loss
mrequena
parents: 8029
diff changeset
   224
    }
614020e43493 loss in db in constant spectrum propagation loss
mrequena
parents: 8029
diff changeset
   225
8046
3d03a2f39c7b test 1.3 finished
mrequena
parents: 8039
diff changeset
   226
  /**
3d03a2f39c7b test 1.3 finished
mrequena
parents: 8039
diff changeset
   227
   * Note:
8053
3404ba78e449 new test vector for AMC test; some test cases passing, but not all
Nicola Baldo <nbaldo@cttc.es>
parents: 8046
diff changeset
   228
   *    For first 4 subframeNo in the first frameNo, the MCS cannot be properly evaluated,
3404ba78e449 new test vector for AMC test; some test cases passing, but not all
Nicola Baldo <nbaldo@cttc.es>
parents: 8046
diff changeset
   229
   *    because CQI feedback is still not available at the eNB.
8046
3d03a2f39c7b test 1.3 finished
mrequena
parents: 8039
diff changeset
   230
   */
3d03a2f39c7b test 1.3 finished
mrequena
parents: 8039
diff changeset
   231
  if ( (frameNo > 1) || (subframeNo > 4) )
8039
614020e43493 loss in db in constant spectrum propagation loss
mrequena
parents: 8029
diff changeset
   232
    {
8135
5f0e9d4bfa35 draft interference test
Nicola Baldo <nicola@baldo.biz>
parents: 8132
diff changeset
   233
      NS_LOG_INFO (m_snrDb << "\t" << m_mcsIndex << "\t" << (uint16_t)mcsTb1);
8039
614020e43493 loss in db in constant spectrum propagation loss
mrequena
parents: 8029
diff changeset
   234
8046
3d03a2f39c7b test 1.3 finished
mrequena
parents: 8039
diff changeset
   235
      NS_TEST_ASSERT_MSG_EQ ((uint16_t)mcsTb1, m_mcsIndex, "Wrong MCS index");
3d03a2f39c7b test 1.3 finished
mrequena
parents: 8039
diff changeset
   236
    }
3d03a2f39c7b test 1.3 finished
mrequena
parents: 8039
diff changeset
   237
}