A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
hello-regression-test.cc
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2009 IITP RAS
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  * Authors: Pavel Boyko <boyko@iitp.ru>
19  */
20 
21 #include "hello-regression-test.h"
22 #include "ns3/simulator.h"
23 #include "ns3/random-variable-stream.h"
24 #include "ns3/rng-seed-manager.h"
25 #include "ns3/double.h"
26 #include "ns3/uinteger.h"
27 #include "ns3/string.h"
28 #include "ns3/pcap-file.h"
29 #include "ns3/olsr-helper.h"
30 #include "ns3/internet-stack-helper.h"
31 #include "ns3/point-to-point-helper.h"
32 #include "ns3/ipv4-address-helper.h"
33 #include "ns3/abort.h"
34 #include "ns3/pcap-test.h"
35 
36 namespace ns3
37 {
38 namespace olsr
39 {
40 
41 const char * const HelloRegressionTest::PREFIX = "olsr-hello-regression-test";
42 
44  TestCase ("Test OLSR Hello messages generation"),
45  m_time (Seconds (5))
46 {
47 }
48 
50 {
51 }
52 
53 void
55 {
58  CreateNodes ();
59 
61  Simulator::Run ();
63 
64  CheckResults ();
65 }
66 
67 void
69 {
70  // create 2 nodes
71  NodeContainer c;
72  c.Create (2);
73  // install TCP/IP & OLSR
74  OlsrHelper olsr;
75  InternetStackHelper internet;
76  internet.SetRoutingHelper (olsr);
77  internet.Install (c);
78  // Assign OLSR RVs to specific streams
79  int64_t streamsUsed = olsr.AssignStreams (c, 0);
80  NS_TEST_ASSERT_MSG_EQ (streamsUsed, 2, "Should have assigned 2 streams");
81  // create p2p channel & devices
83  p2p.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
84  p2p.SetChannelAttribute ("Delay", StringValue ("2ms"));
85  NetDeviceContainer nd = p2p.Install (c);
86  // setup IP addresses
87  Ipv4AddressHelper ipv4;
88  ipv4.SetBase ("10.1.1.0", "255.255.255.0");
89  ipv4.Assign (nd);
90  // setup PCAP traces
92 }
93 
94 void
96 {
97  for (uint32_t i = 0; i < 2; ++i)
98  {
99  NS_PCAP_TEST_EXPECT_EQ (PREFIX << "-" << i << "-1.pcap");
100  }
101 }
102 
103 }
104 }
hold variables of type string
Definition: string.h:18
NetDeviceContainer Install(NodeContainer c)
static void Run(void)
Run the simulation until one of:
Definition: simulator.cc:157
int64_t AssignStreams(NodeContainer c, int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model...
Definition: olsr-helper.cc:87
const Time m_time
Total simulation time.
aggregate IP/TCP/UDP functionality to existing Nodes.
Helper class that adds OLSR routing to nodes.
Definition: olsr-helper.h:38
Build a set of PointToPointNetDevice objects.
encapsulates test code
Definition: test.h:929
#define NS_PCAP_TEST_EXPECT_EQ(filename)
Test that a pair of reference/new pcap files are equal.
Definition: pcap-test.h:18
void SetDeviceAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each NetDevice created by the helper.
static void SetRun(uint64_t run)
Set the run number of simulation.
void EnablePcapAll(std::string prefix, bool promiscuous=false)
Enable pcap output on each device (which is of the appropriate type) in the set of all nodes created ...
#define NS_TEST_ASSERT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report and abort if not.
Definition: test.h:148
holds a vector of ns3::NetDevice pointers
static void Destroy(void)
Every event scheduled by the Simulator::insertAtDestroy method is invoked.
Definition: simulator.cc:121
keep track of a set of node pointers.
void Install(std::string nodeName) const
Aggregate implementations of the ns3::Ipv4, ns3::Ipv6, ns3::Udp, and ns3::Tcp classes onto the provid...
void SetChannelAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each Channel created by the helper.
static void SetSeed(uint32_t seed)
set the seed it will duplicate the seed value 6 times
Ipv4InterfaceContainer Assign(const NetDeviceContainer &c)
Assign IP addresses to the net devices specified in the container based on the current network prefix...
static void Stop(void)
If an event invokes this method, it will be the last event scheduled by the Simulator::run method bef...
Definition: simulator.cc:165
std::string CreateTempDirFilename(std::string filename)
Definition: test.cc:313
void CreateNodes()
Create & configure test network.
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
static const char *const PREFIX
Unique PCAP files prefix for this test.
void SetRoutingHelper(const Ipv4RoutingHelper &routing)
void SetBase(Ipv4Address network, Ipv4Mask mask, Ipv4Address base="0.0.0.1")
Set the base network number, network mask and base address.
void CheckResults()
Compare traces with reference ones.