added separate test suites for new propagation models
authorNicola Baldo <nbaldo@cttc.es>
Fri, 04 May 2012 15:15:41 +0200
changeset 8739 d4a80ca13a60
parent 8738 a2308a34e7c9
child 8740 4ec1f4d63dc8
added separate test suites for new propagation models
src/propagation/test/itu-r-1411-los-test-suite.cc
src/propagation/test/itu-r-1411-nlos-over-rooftop-test-suite.cc
src/propagation/test/kun-2600-mhz-test-suite.cc
src/propagation/test/okumura-hata-test-suite.cc
src/propagation/wscript
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/propagation/test/itu-r-1411-los-test-suite.cc	Fri May 04 15:15:41 2012 +0200
@@ -0,0 +1,124 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011,2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Marco Miozzo <marco.miozzo@cttc.es>
+ *         Nicola Baldo <nbaldo@cttc.es>
+ */
+
+
+#include <ns3/log.h>
+#include <ns3/test.h>
+#include <ns3/itu-r-1411-los-propagation-loss-model.h>
+#include <ns3/string.h>
+#include <ns3/double.h>
+#include <ns3/constant-position-mobility-model.h>
+#include <ns3/enum.h>
+
+
+namespace ns3 {
+
+NS_LOG_COMPONENT_DEFINE ("ItuR1411LosPropagationLossModelTest");
+
+
+class ItuR1411LosPropagationLossModelTestCase : public TestCase
+{
+public:
+  ItuR1411LosPropagationLossModelTestCase (double freq, double dist, double hb, double hm, double refValue, std::string name);
+  virtual ~ItuR1411LosPropagationLossModelTestCase ();
+
+private:
+  virtual void DoRun (void);
+  Ptr<MobilityModel> CreateMobilityModel (uint16_t index);
+
+  double m_freq;
+  double m_dist;
+  double m_hb;
+  double m_hm;
+  double m_lossRef;
+
+};
+
+ItuR1411LosPropagationLossModelTestCase::ItuR1411LosPropagationLossModelTestCase (double freq, double dist, double hb, double hm, double refValue, std::string name)
+  : TestCase (name),
+    m_freq (freq),
+    m_dist (dist),
+    m_hb (hb),
+    m_hm (hm),
+    m_lossRef (refValue)
+{
+}
+
+ItuR1411LosPropagationLossModelTestCase::~ItuR1411LosPropagationLossModelTestCase ()
+{
+}
+
+
+
+void
+ItuR1411LosPropagationLossModelTestCase::DoRun (void)
+{
+  NS_LOG_FUNCTION (this);
+
+
+  Ptr<MobilityModel> mma = CreateObject<ConstantPositionMobilityModel> ();
+  mma->SetPosition (Vector (0.0, 0.0, m_hb));
+
+  Ptr<MobilityModel> mmb = CreateObject<ConstantPositionMobilityModel> ();
+  mmb->SetPosition (Vector (m_dist, 0.0, m_hm));
+
+  Ptr<ItuR1411LosPropagationLossModel> propagationLossModel = CreateObject<ItuR1411LosPropagationLossModel> ();
+  propagationLossModel->SetAttribute ("Frequency", DoubleValue (m_freq));
+
+  double loss = propagationLossModel->GetLoss (mma, mmb);
+
+  NS_LOG_INFO ("Calculated loss: " << loss);
+  NS_LOG_INFO ("Theoretical loss: " << m_lossRef);
+ 
+  NS_TEST_ASSERT_MSG_EQ_TOL (loss, m_lossRef, 0.1, "Wrong loss!");
+
+}
+
+
+
+class ItuR1411LosPropagationLossModelTestSuite : public TestSuite
+{
+public:
+  ItuR1411LosPropagationLossModelTestSuite ();
+};
+
+
+
+ItuR1411LosPropagationLossModelTestSuite::ItuR1411LosPropagationLossModelTestSuite ()
+  : TestSuite ("itu-r-1411-los", SYSTEM)
+{
+
+  LogComponentEnable ("ItuR1411LosPropagationLossModelTest", LOG_LEVEL_ALL);
+
+  double freq = 2.1140e9;
+
+  AddTestCase (new ItuR1411LosPropagationLossModelTestCase (freq, 100, 30, 1,  81.00, "freq=2114MHz, dist=100m"));
+
+
+}
+
+
+
+static ItuR1411LosPropagationLossModelTestSuite g_ituR1411LosTestSuite;
+
+
+
+}   // namespace ns3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/propagation/test/itu-r-1411-nlos-over-rooftop-test-suite.cc	Fri May 04 15:15:41 2012 +0200
@@ -0,0 +1,127 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011,2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Marco Miozzo <marco.miozzo@cttc.es>
+ *         Nicola Baldo <nbaldo@cttc.es>
+ */
+
+
+#include <ns3/log.h>
+#include <ns3/test.h>
+#include <ns3/itu-r-1411-nlos-over-rooftop-propagation-loss-model.h>
+#include <ns3/string.h>
+#include <ns3/double.h>
+#include <ns3/constant-position-mobility-model.h>
+#include <ns3/enum.h>
+
+
+namespace ns3 {
+
+NS_LOG_COMPONENT_DEFINE ("ItuR1411NlosOverRooftopPropagationLossModelTest");
+
+
+class ItuR1411NlosOverRooftopPropagationLossModelTestCase : public TestCase
+{
+public:
+  ItuR1411NlosOverRooftopPropagationLossModelTestCase (double freq, double dist, double hb, double hm, EnvironmentType env, CitySize city, double refValue, std::string name);
+  virtual ~ItuR1411NlosOverRooftopPropagationLossModelTestCase ();
+
+private:
+  virtual void DoRun (void);
+  Ptr<MobilityModel> CreateMobilityModel (uint16_t index);
+
+  double m_freq;
+  double m_dist;
+  double m_hb;
+  double m_hm;
+  EnvironmentType m_env;
+  CitySize m_city;
+  double m_lossRef;
+
+};
+
+ItuR1411NlosOverRooftopPropagationLossModelTestCase::ItuR1411NlosOverRooftopPropagationLossModelTestCase (double freq, double dist, double hb, double hm, EnvironmentType env, CitySize city, double refValue, std::string name)
+  : TestCase (name),
+    m_freq (freq),
+    m_dist (dist),
+    m_hb (hb),
+    m_hm (hm),
+    m_env (env),
+    m_city (city),
+    m_lossRef (refValue)
+{
+}
+
+ItuR1411NlosOverRooftopPropagationLossModelTestCase::~ItuR1411NlosOverRooftopPropagationLossModelTestCase ()
+{
+}
+
+
+
+void
+ItuR1411NlosOverRooftopPropagationLossModelTestCase::DoRun (void)
+{
+  NS_LOG_FUNCTION (this);
+
+
+  Ptr<MobilityModel> mma = CreateObject<ConstantPositionMobilityModel> ();
+  mma->SetPosition (Vector (0.0, 0.0, m_hb));
+
+  Ptr<MobilityModel> mmb = CreateObject<ConstantPositionMobilityModel> ();
+  mmb->SetPosition (Vector (m_dist, 0.0, m_hm));
+
+  Ptr<ItuR1411NlosOverRooftopPropagationLossModel> propagationLossModel = CreateObject<ItuR1411NlosOverRooftopPropagationLossModel> ();
+  propagationLossModel->SetAttribute ("Frequency", DoubleValue (m_freq));
+  propagationLossModel->SetAttribute ("Environment", EnumValue (m_env));
+  propagationLossModel->SetAttribute ("CitySize", EnumValue (m_city));
+
+  double loss = propagationLossModel->GetLoss (mma, mmb);
+
+  NS_LOG_INFO ("Calculated loss: " << loss);
+  NS_LOG_INFO ("Theoretical loss: " << m_lossRef);
+ 
+  NS_TEST_ASSERT_MSG_EQ_TOL (loss, m_lossRef, 0.1, "Wrong loss!");
+
+}
+
+
+
+class ItuR1411NlosOverRooftopPropagationLossModelTestSuite : public TestSuite
+{
+public:
+  ItuR1411NlosOverRooftopPropagationLossModelTestSuite ();
+};
+
+
+
+ItuR1411NlosOverRooftopPropagationLossModelTestSuite::ItuR1411NlosOverRooftopPropagationLossModelTestSuite ()
+  : TestSuite ("itu-r-1411-nlos-over-rooftop", SYSTEM)
+{
+
+  LogComponentEnable ("ItuR1411NlosOverRooftopPropagationLossModelTest", LOG_LEVEL_ALL);
+
+  AddTestCase (new ItuR1411NlosOverRooftopPropagationLossModelTestCase (2.1140e9, 900, 30, 1, UrbanEnvironment, LargeCity, 143.69, "f=2114Mhz, dist=900, urban large city"));
+
+}
+
+
+
+static ItuR1411NlosOverRooftopPropagationLossModelTestSuite g_ituR1411NlosOverRooftopTestSuite;
+
+
+
+}   // namespace ns3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/propagation/test/kun-2600-mhz-test-suite.cc	Fri May 04 15:15:41 2012 +0200
@@ -0,0 +1,119 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011,2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Marco Miozzo <marco.miozzo@cttc.es>
+ *         Nicola Baldo <nbaldo@cttc.es>
+ */
+
+
+#include <ns3/log.h>
+#include <ns3/test.h>
+#include <ns3/kun-2600-mhz-propagation-loss-model.h>
+#include <ns3/string.h>
+#include <ns3/double.h>
+#include <ns3/constant-position-mobility-model.h>
+#include <ns3/enum.h>
+
+
+namespace ns3 {
+
+NS_LOG_COMPONENT_DEFINE ("Kun2600MhzPropagationLossModelTest");
+
+
+class Kun2600MhzPropagationLossModelTestCase : public TestCase
+{
+public:
+  Kun2600MhzPropagationLossModelTestCase (double dist, double hb, double hm, double refValue, std::string name);
+  virtual ~Kun2600MhzPropagationLossModelTestCase ();
+
+private:
+  virtual void DoRun (void);
+  Ptr<MobilityModel> CreateMobilityModel (uint16_t index);
+
+  double m_dist;
+  double m_hb;
+  double m_hm;
+  double m_lossRef;
+
+};
+
+Kun2600MhzPropagationLossModelTestCase::Kun2600MhzPropagationLossModelTestCase (double dist, double hb, double hm, double refValue, std::string name)
+  : TestCase (name),
+    m_dist (dist),
+    m_hb (hb),
+    m_hm (hm),
+    m_lossRef (refValue)
+{
+}
+
+Kun2600MhzPropagationLossModelTestCase::~Kun2600MhzPropagationLossModelTestCase ()
+{
+}
+
+
+
+void
+Kun2600MhzPropagationLossModelTestCase::DoRun (void)
+{
+  NS_LOG_FUNCTION (this);
+
+
+  Ptr<MobilityModel> mma = CreateObject<ConstantPositionMobilityModel> ();
+  mma->SetPosition (Vector (0.0, 0.0, m_hb));
+
+  Ptr<MobilityModel> mmb = CreateObject<ConstantPositionMobilityModel> ();
+  mmb->SetPosition (Vector (m_dist, 0.0, m_hm));
+
+  Ptr<Kun2600MhzPropagationLossModel> propagationLossModel = CreateObject<Kun2600MhzPropagationLossModel> ();
+
+  double loss = propagationLossModel->GetLoss (mma, mmb);
+
+  NS_LOG_INFO ("Calculated loss: " << loss);
+  NS_LOG_INFO ("Theoretical loss: " << m_lossRef);
+ 
+  NS_TEST_ASSERT_MSG_EQ_TOL (loss, m_lossRef, 0.1, "Wrong loss!");
+
+}
+
+
+
+class Kun2600MhzPropagationLossModelTestSuite : public TestSuite
+{
+public:
+  Kun2600MhzPropagationLossModelTestSuite ();
+};
+
+
+
+Kun2600MhzPropagationLossModelTestSuite::Kun2600MhzPropagationLossModelTestSuite ()
+  : TestSuite ("kun-2600-mhz", SYSTEM)
+{
+
+  LogComponentEnable ("Kun2600MhzPropagationLossModelTest", LOG_LEVEL_ALL);
+
+  AddTestCase (new Kun2600MhzPropagationLossModelTestCase (2000, 30, 1,  121.83, "dist=2000m"));
+
+
+}
+
+
+
+static Kun2600MhzPropagationLossModelTestSuite g_kun2600MhzTestSuite;
+
+
+
+}   // namespace ns3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/propagation/test/okumura-hata-test-suite.cc	Fri May 04 15:15:41 2012 +0200
@@ -0,0 +1,142 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011,2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Marco Miozzo <marco.miozzo@cttc.es>
+ *         Nicola Baldo <nbaldo@cttc.es>
+ */
+
+
+#include <ns3/log.h>
+#include <ns3/test.h>
+#include <ns3/okumura-hata-propagation-loss-model.h>
+#include <ns3/string.h>
+#include <ns3/double.h>
+#include <ns3/constant-position-mobility-model.h>
+#include <ns3/enum.h>
+
+
+namespace ns3 {
+
+NS_LOG_COMPONENT_DEFINE ("OkumuraHataPropagationLossModelTest");
+
+
+class OkumuraHataPropagationLossModelTestCase : public TestCase
+{
+public:
+  OkumuraHataPropagationLossModelTestCase (double freq, double dist, double hb, double hm, EnvironmentType env, CitySize city, double refValue, std::string name);
+  virtual ~OkumuraHataPropagationLossModelTestCase ();
+
+private:
+  virtual void DoRun (void);
+  Ptr<MobilityModel> CreateMobilityModel (uint16_t index);
+
+  double m_freq;
+  double m_dist;
+  double m_hb;
+  double m_hm;
+  EnvironmentType m_env;
+  CitySize m_city;
+  double m_lossRef;
+
+};
+
+OkumuraHataPropagationLossModelTestCase::OkumuraHataPropagationLossModelTestCase (double freq, double dist, double hb, double hm, EnvironmentType env, CitySize city, double refValue, std::string name)
+  : TestCase (name),
+    m_freq (freq),
+    m_dist (dist),
+    m_hb (hb),
+    m_hm (hm),
+    m_env (env),
+    m_city (city),
+    m_lossRef (refValue)
+{
+}
+
+OkumuraHataPropagationLossModelTestCase::~OkumuraHataPropagationLossModelTestCase ()
+{
+}
+
+
+
+void
+OkumuraHataPropagationLossModelTestCase::DoRun (void)
+{
+  NS_LOG_FUNCTION (this);
+
+
+  Ptr<MobilityModel> mma = CreateObject<ConstantPositionMobilityModel> ();
+  mma->SetPosition (Vector (0.0, 0.0, m_hb));
+
+  Ptr<MobilityModel> mmb = CreateObject<ConstantPositionMobilityModel> ();
+  mmb->SetPosition (Vector (m_dist, 0.0, m_hm));
+
+  Ptr<OkumuraHataPropagationLossModel> propagationLossModel = CreateObject<OkumuraHataPropagationLossModel> ();
+  propagationLossModel->SetAttribute ("Frequency", DoubleValue (m_freq));
+  propagationLossModel->SetAttribute ("Environment", EnumValue (m_env));
+  propagationLossModel->SetAttribute ("CitySize", EnumValue (m_city));
+
+  double loss = propagationLossModel->GetLoss (mma, mmb);
+
+  NS_LOG_INFO ("Calculated loss: " << loss);
+  NS_LOG_INFO ("Theoretical loss: " << m_lossRef);
+ 
+  NS_TEST_ASSERT_MSG_EQ_TOL (loss, m_lossRef, 0.1, "Wrong loss!");
+
+}
+
+
+
+class OkumuraHataPropagationLossModelTestSuite : public TestSuite
+{
+public:
+  OkumuraHataPropagationLossModelTestSuite ();
+};
+
+
+
+OkumuraHataPropagationLossModelTestSuite::OkumuraHataPropagationLossModelTestSuite ()
+  : TestSuite ("okumura-hata", SYSTEM)
+{
+
+  LogComponentEnable ("OkumuraHataPropagationLossModelTest", LOG_LEVEL_ALL);
+
+  double freq = 869e6; // this will use the original OH model
+
+  AddTestCase (new OkumuraHataPropagationLossModelTestCase (freq, 2000, 30, 1, UrbanEnvironment, LargeCity, 137.93, "original OH Urban Large city"));
+
+  AddTestCase (new OkumuraHataPropagationLossModelTestCase (freq, 2000, 30, 1, UrbanEnvironment, SmallCity, 137.88, "original OH Urban small city"));
+
+  AddTestCase (new OkumuraHataPropagationLossModelTestCase (freq, 2000, 30, 1, SubUrbanEnvironment, LargeCity, 128.03, "original OH SubUrban"));
+
+  AddTestCase (new OkumuraHataPropagationLossModelTestCase (freq, 2000, 30, 1, OpenAreasEnvironment, LargeCity, 110.21, "original OH OpenAreas"));
+
+
+  freq = 2.1140e9;  // this will use the extended COST231 OH model
+
+  AddTestCase (new OkumuraHataPropagationLossModelTestCase (freq, 2000, 30, 1, UrbanEnvironment, LargeCity, 148.55, "COST231 OH Urban Large city"));
+
+  AddTestCase (new OkumuraHataPropagationLossModelTestCase (freq, 2000, 30, 1, UrbanEnvironment, SmallCity, 150.64, "COST231 OH Urban small city and suburban"));
+
+}
+
+
+
+static OkumuraHataPropagationLossModelTestSuite g_okumuraHataTestSuite;
+
+
+
+}   // namespace ns3
--- a/src/propagation/wscript	Thu May 03 16:27:39 2012 +0200
+++ b/src/propagation/wscript	Fri May 04 15:15:41 2012 +0200
@@ -17,6 +17,10 @@
     module_test = bld.create_ns3_module_test_library('propagation')
     module_test.source = [
         'test/propagation-loss-model-test-suite.cc',
+        'test/okumura-hata-test-suite.cc',
+        'test/itu-r-1411-los-test-suite.cc',
+        'test/kun-2600-mhz-test-suite.cc',
+        'test/itu-r-1411-nlos-over-rooftop-test-suite.cc',
         ]
 
     headers = bld.new_task_gen(features=['ns3header'])