A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
flame-regression.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2009 IITP RAS
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * Authors: Kirill Andreev <andreev@iitp.ru>
18 */
19
20#include "ns3/ipv4-interface-container.h"
21#include "ns3/node-container.h"
22#include "ns3/nstime.h"
23#include "ns3/pcap-file.h"
24#include "ns3/test.h"
25
26using namespace ns3;
27
28/**
29 * \ingroup mesh-test
30 * \defgroup flame-test flame sub-module tests
31 */
32
33/**
34 * \ingroup flame-test
35 *
36 * \brief FLAME protocol regression test of three stations:
37 * \verbatim
38 * <-----------|-----------> Broadcast frame
39 * |----------->| Unicast frame
40 * Source Destination
41 * (node ID) 2 1 0
42 * <-----------|----------->| | ARP request
43 * |<-----------|----------->| ARP request
44 * | |<-----------| ARP reply
45 * |<-----------| | ARP reply
46 * |----------->| | Data
47 * | |----------->| Data
48 * | |<-----------|-----------> PATH_UPDATE (no broadcast was sent)
49 * |<-----------|----------->| PATH_UPDATE
50 * <-----------|----------->| | PATH_UPDATE
51 * | |<-----------|-----------> ARP request
52 * |<-----------|----------->| ARP request
53 * <-----------|----------->| | ARP request
54 * |----------->| | ARP reply
55 * | |----------->| ARP reply
56 * | |<-----------| Data
57 * |<-----------| | Data
58 * |............|............|
59 * After five seconds data is transmitted again as
60 * broadcast, and PATH_UPDATE is sent
61 * \endverbatim
62 */
64{
65 public:
67 ~FlameRegressionTest() override;
68
69 void DoRun() override;
70 /// Check results function
71 void CheckResults();
72
73 private:
74 /// \internal It is important to have pointers here
76 /// Simulation time
78 /// Needed to install applications
80
81 /// Create nodes function
82 void CreateNodes();
83 /// Create devices function
84 void CreateDevices();
85 /// Install application function
87
88 /// Server-side socket
90 /// Client-side socket
92
93 /// sent packets counter
95
96 /**
97 * Send data
98 * \param socket the sending socket
99 */
100 void SendData(Ptr<Socket> socket);
101
102 /**
103 * \brief Handle a packet reception.
104 *
105 * This function is called by lower layers.
106 *
107 * \param socket the socket the packet was received to.
108 */
109 void HandleReadServer(Ptr<Socket> socket);
110
111 /**
112 * \brief Handle a packet reception.
113 *
114 * This function is called by lower layers.
115 *
116 * \param socket the socket the packet was received to.
117 */
118 void HandleReadClient(Ptr<Socket> socket);
119};
FLAME protocol regression test of three stations:
Time m_time
Simulation time.
~FlameRegressionTest() override
void CheckResults()
Check results function.
void InstallApplications()
Install application function.
void CreateNodes()
Create nodes function.
Ptr< Socket > m_clientSocket
Client-side socket.
NodeContainer * m_nodes
void SendData(Ptr< Socket > socket)
Send data.
Ptr< Socket > m_serverSocket
Server-side socket.
void HandleReadClient(Ptr< Socket > socket)
Handle a packet reception.
void HandleReadServer(Ptr< Socket > socket)
Handle a packet reception.
Ipv4InterfaceContainer m_interfaces
Needed to install applications.
void CreateDevices()
Create devices function.
void DoRun() override
Implementation to actually run this TestCase.
uint32_t m_sentPktsCounter
sent packets counter
holds a vector of std::pair of Ptr<Ipv4> and interface index.
keep track of a set of node pointers.
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:77
encapsulates test code
Definition: test.h:1061
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
Every class exported by the ns3 library is enclosed in the ns3 namespace.