1 /* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  *
18  * Author: Marco Miozzo <marco.miozzo@cttc.es>
19  */
20 
21 #ifndef LENA_TEST_MIMO_H
22 #define LENA_TEST_MIMO_H
23 
24 #include "ns3/simulator.h"
25 #include "ns3/test.h"
26 
27 
28 using namespace ns3;
29 
30 
31 /**
32  * \ingroup lte-test
33  * \ingroup tests
34  *
35  * \brief This system test program creates different test cases with a
36  * single eNB and single UE. The traffic is configured to be in saturation
37  * mode. It is checked if the throughput reaches the expected values
38  * when MIMO is used.
39  */
40 class LenaMimoTestCase : public TestCase
41 {
42 public:
43   /**
44    * Constructor
45    *
46    * \param dist the distance
47    * \param estThrDl the estimated throughput DL
48    * \param schedulerType the scheduler type
49    * \param useIdealRrc true if use ideal RRC
50    */
51   LenaMimoTestCase (uint16_t dist, std::vector<uint32_t> estThrDl, std::string schedulerType, bool useIdealRrc);
52   virtual ~LenaMimoTestCase ();
53 
54 private:
55   virtual void DoRun (void);
56 
57   /**
58    * Get RLC buffer sample
59    * \param rlcStats Ptr<RadioBearerStatsCalculator>
60    * \param imsi the IMSI
61    * \param rnti the RNTI
62    */
63   void GetRlcBufferSample (Ptr<RadioBearerStatsCalculator> rlcStats, uint64_t imsi, uint8_t rnti);
64 
65   /**
66    * Builds the test name string based on provided parameter values
67    * \param dist the distance
68    * \param schedulerType the scheduler type
69    * \param useIdealRrc if true use the ideal RRC
70    * \returns the name string
71    */
72   static std::string BuildNameString (uint16_t dist, std::string schedulerType, bool useIdealRrc);
73   uint16_t m_dist; ///< the distance
74   std::vector<uint32_t> m_estThrDl; ///< estimated throughput DL
75   std::string m_schedulerType; ///< the scheduler type
76   bool m_useIdealRrc; ///< whether to use the ideal RRC
77 
78   std::vector <uint64_t> m_dlDataRxed; ///< DL data received
79 
80 };
81 
82 
83 /**
84  * \ingroup lte-test
85  * \ingroup tests
86  *
87  * \brief Lena Test Mimo Suite
88  */
89 
90 class LenaTestMimoSuite : public TestSuite
91 {
92 public:
93   LenaTestMimoSuite ();
94 };
95 
96 #endif /* LENA_TEST_MIMO_H */
97