A Discrete-Event Network Simulator
API
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
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:41
NetDeviceContainer Install(NodeContainer c)
static void Run(void)
Run the simulation.
Definition: simulator.cc:200
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:1108
#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:158
holds a vector of ns3::NetDevice pointers
static void Destroy(void)
Execute the events scheduled with ScheduleDestroy().
Definition: simulator.cc:164
Every class exported by the ns3 library is enclosed in the ns3 namespace.
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...
Definition: olsr.py:1
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)
Tell the Simulator the calling event should be the last one executed.
Definition: simulator.cc:208
std::string CreateTempDirFilename(std::string filename)
Definition: test.cc:313
void CreateNodes()
Create & configure test network.
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition: nstime.h:866
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.