A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
hwmp-target-flags-regression.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: Kirill Andreev <andreev@iitp.ru>
19
*/
20
21
#include "ns3/mesh-helper.h"
22
#include "ns3/simulator.h"
23
#include "ns3/random-variable-stream.h"
24
#include "ns3/rng-seed-manager.h"
25
#include "ns3/mobility-helper.h"
26
#include "ns3/double.h"
27
#include "ns3/uinteger.h"
28
#include "ns3/string.h"
29
#include "ns3/yans-wifi-helper.h"
30
#include "ns3/internet-stack-helper.h"
31
#include "ns3/ipv4-address-helper.h"
32
#include "ns3/abort.h"
33
#include "ns3/udp-echo-helper.h"
34
#include "ns3/mobility-model.h"
35
#include "ns3/pcap-test.h"
36
#include <sstream>
37
#include "
hwmp-target-flags-regression.h
"
38
39
using namespace
ns3;
40
42
const
char
*
const
PREFIX
=
"hwmp-target-flags-regression-test"
;
43
44
45
HwmpDoRfRegressionTest::HwmpDoRfRegressionTest
() :
TestCase
(
"HWMP target flags regression test"
),
46
m_nodes (0),
47
m_time (
Seconds
(5))
48
{
49
}
50
51
HwmpDoRfRegressionTest::~HwmpDoRfRegressionTest
()
52
{
53
delete
m_nodes
;
54
}
55
void
56
HwmpDoRfRegressionTest::DoRun
()
57
{
58
RngSeedManager::SetSeed (12345);
59
RngSeedManager::SetRun (7);
60
CreateNodes
();
61
CreateDevices
();
62
InstallApplications
();
63
64
Simulator::Stop (
m_time
);
65
Simulator::Run
();
66
Simulator::Destroy ();
67
68
CheckResults
();
69
70
delete
m_nodes
,
m_nodes
= 0;
71
}
72
void
73
HwmpDoRfRegressionTest::CreateNodes
()
74
{
75
m_nodes
=
new
NodeContainer
;
76
m_nodes
->
Create
(4);
77
MobilityHelper
mobility;
78
mobility.
SetPositionAllocator
(
"ns3::GridPositionAllocator"
,
79
"MinX"
,
DoubleValue
(0.0),
80
"MinY"
,
DoubleValue
(0.0),
81
"DeltaX"
,
DoubleValue
(100),
82
"DeltaY"
,
DoubleValue
(0),
83
"GridWidth"
,
UintegerValue
(4),
84
"LayoutType"
,
StringValue
(
"RowFirst"
));
85
mobility.
SetMobilityModel
(
"ns3::ConstantPositionMobilityModel"
);
86
mobility.
Install
(*
m_nodes
);
87
}
88
void
89
HwmpDoRfRegressionTest::InstallApplications
()
90
{
91
UdpEchoServerHelper
echoServer (9);
92
ApplicationContainer
serverApps = echoServer.
Install
(
m_nodes
->
Get
(0));
93
serverApps.
Start
(
Seconds
(0.0));
94
serverApps.
Stop
(
m_time
);
95
UdpEchoClientHelper
echoClient (
m_interfaces
.
GetAddress
(0), 9);
96
echoClient.
SetAttribute
(
"MaxPackets"
,
UintegerValue
(300));
97
echoClient.SetAttribute (
"Interval"
,
TimeValue
(
Seconds
(1.0)));
98
echoClient.SetAttribute (
"PacketSize"
,
UintegerValue
(100));
99
//Install first client
100
ApplicationContainer
clientApps = echoClient.Install (
m_nodes
->
Get
(1));
101
clientApps.
Start
(
Seconds
(2.2));
102
clientApps.
Stop
(
m_time
);
103
//Install second client
104
clientApps = echoClient.Install (
m_nodes
->
Get
(2));
105
clientApps.
Start
(
Seconds
(2.0));
106
clientApps.
Stop
(
m_time
);
107
//Install second server and attach client to it:
108
UdpEchoServerHelper
echoServer1 (10);
109
serverApps = echoServer1.
Install
(
m_nodes
->
Get
(3));
110
serverApps.
Start
(
Seconds
(0.0));
111
serverApps.
Stop
(
m_time
);
112
UdpEchoClientHelper
echoClient1 (
m_interfaces
.
GetAddress
(3), 10);
113
echoClient1.
SetAttribute
(
"MaxPackets"
,
UintegerValue
(300));
114
echoClient1.SetAttribute (
"Interval"
,
TimeValue
(
Seconds
(1.0)));
115
echoClient1.SetAttribute (
"PacketSize"
,
UintegerValue
(100));
116
clientApps = echoClient1.Install (
m_nodes
->
Get
(0));
117
clientApps.
Start
(
Seconds
(2.4));
118
clientApps.
Stop
(
m_time
);
119
}
120
void
121
HwmpDoRfRegressionTest::CreateDevices
()
122
{
123
int64_t streamsUsed = 0;
124
// 1. setup WiFi
125
YansWifiPhyHelper
wifiPhy = YansWifiPhyHelper::Default ();
126
// This test suite output was originally based on YansErrorRateModel
127
wifiPhy.
SetErrorRateModel
(
"ns3::YansErrorRateModel"
);
128
YansWifiChannelHelper
wifiChannel = YansWifiChannelHelper::Default ();
129
Ptr<YansWifiChannel>
chan = wifiChannel.
Create
();
130
wifiPhy.
SetChannel
(chan);
131
// 2. setup mesh
132
MeshHelper
mesh = MeshHelper::Default ();
133
mesh.
SetStackInstaller
(
"ns3::Dot11sStack"
);
134
mesh.
SetMacType
(
"RandomStart"
,
TimeValue
(
Seconds
(0.1)));
135
mesh.
SetNumberOfInterfaces
(1);
136
NetDeviceContainer
meshDevices = mesh.
Install
(wifiPhy, *
m_nodes
);
137
// Four devices, four streams per mac
138
streamsUsed += mesh.
AssignStreams
(meshDevices, streamsUsed);
139
NS_TEST_ASSERT_MSG_EQ
(streamsUsed, (meshDevices.
GetN
() * 4),
"Stream assignment mismatch"
);
140
streamsUsed += wifiChannel.
AssignStreams
(chan, streamsUsed);
141
NS_TEST_ASSERT_MSG_EQ
(streamsUsed, (meshDevices.
GetN
() * 4),
"Stream assignment mismatch"
);
142
143
// 3. setup TCP/IP
144
InternetStackHelper
internetStack;
145
internetStack.
Install
(*
m_nodes
);
146
Ipv4AddressHelper
address;
147
address.
SetBase
(
"10.1.1.0"
,
"255.255.255.0"
);
148
m_interfaces
= address.
Assign
(meshDevices);
149
// 4. write PCAP if needed
150
wifiPhy.
EnablePcapAll
(
CreateTempDirFilename
(
PREFIX
));
151
}
152
153
void
154
HwmpDoRfRegressionTest::CheckResults
()
155
{
156
for
(
int
i = 0; i < 4; ++i)
157
{
158
NS_PCAP_TEST_EXPECT_EQ
(
PREFIX
<<
"-"
<< i <<
"-1.pcap"
);
159
}
160
}
161
src
mesh
test
dot11s
hwmp-target-flags-regression.cc
Generated on Tue May 14 2013 11:08:29 for ns-3 by
1.8.1.2