A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Documentation ▼
Installation
Manual
Models
Contributing
Wiki
Development ▼
API Docs
Issue Tracker
Merge Requests
API
Loading...
Searching...
No Matches
flame-regression.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2009 IITP RAS
3
*
4
* SPDX-License-Identifier: GPL-2.0-only
5
*
6
* Authors: Kirill Andreev <andreev@iitp.ru>
7
*/
8
9
#ifndef FLAME_REGRESSION_H
10
#define FLAME_REGRESSION_H
11
12
#include "ns3/ipv4-interface-container.h"
13
#include "ns3/node-container.h"
14
#include "ns3/nstime.h"
15
#include "ns3/pcap-file.h"
16
#include "ns3/test.h"
17
18
using namespace
ns3
;
19
20
/**
21
* @ingroup mesh-test
22
* @defgroup flame-test flame sub-module tests
23
*/
24
25
/**
26
* @ingroup flame-test
27
*
28
* @brief FLAME protocol regression test of three stations:
29
* @verbatim
30
* <-----------|-----------> Broadcast frame
31
* |----------->| Unicast frame
32
* Source Destination
33
* (node ID) 2 1 0
34
* <-----------|----------->| | ARP request
35
* |<-----------|----------->| ARP request
36
* | |<-----------| ARP reply
37
* |<-----------| | ARP reply
38
* |----------->| | Data
39
* | |----------->| Data
40
* | |<-----------|-----------> PATH_UPDATE (no broadcast was sent)
41
* |<-----------|----------->| PATH_UPDATE
42
* <-----------|----------->| | PATH_UPDATE
43
* | |<-----------|-----------> ARP request
44
* |<-----------|----------->| ARP request
45
* <-----------|----------->| | ARP request
46
* |----------->| | ARP reply
47
* | |----------->| ARP reply
48
* | |<-----------| Data
49
* |<-----------| | Data
50
* |............|............|
51
* After five seconds data is transmitted again as
52
* broadcast, and PATH_UPDATE is sent
53
* @endverbatim
54
*/
55
class
FlameRegressionTest
:
public
TestCase
56
{
57
public
:
58
FlameRegressionTest
();
59
~FlameRegressionTest
()
override
;
60
61
void
DoRun
()
override
;
62
/// Check results function
63
void
CheckResults
();
64
65
private
:
66
/// @internal It is important to have pointers here
67
NodeContainer
*
m_nodes
;
68
/// Simulation time
69
Time
m_time
;
70
/// Needed to install applications
71
Ipv4InterfaceContainer
m_interfaces
;
72
73
/// Create nodes function
74
void
CreateNodes
();
75
/// Create devices function
76
void
CreateDevices
();
77
/// Install application function
78
void
InstallApplications
();
79
80
/// Server-side socket
81
Ptr<Socket>
m_serverSocket
;
82
/// Client-side socket
83
Ptr<Socket>
m_clientSocket
;
84
85
/// sent packets counter
86
uint32_t
m_sentPktsCounter
;
87
88
/**
89
* Send data
90
* @param socket the sending socket
91
*/
92
void
SendData
(
Ptr<Socket>
socket);
93
94
/**
95
* @brief Handle a packet reception.
96
*
97
* This function is called by lower layers.
98
*
99
* @param socket the socket the packet was received to.
100
*/
101
void
HandleReadServer
(
Ptr<Socket>
socket);
102
103
/**
104
* @brief Handle a packet reception.
105
*
106
* This function is called by lower layers.
107
*
108
* @param socket the socket the packet was received to.
109
*/
110
void
HandleReadClient
(
Ptr<Socket>
socket);
111
};
112
113
#endif
// FLAME_REGRESSION_H
FlameRegressionTest::m_time
Time m_time
Simulation time.
Definition
flame-regression.h:69
FlameRegressionTest::~FlameRegressionTest
~FlameRegressionTest() override
Definition
flame-regression.cc:40
FlameRegressionTest::FlameRegressionTest
FlameRegressionTest()
Definition
flame-regression.cc:32
FlameRegressionTest::CheckResults
void CheckResults()
Check results function.
Definition
flame-regression.cc:150
FlameRegressionTest::InstallApplications
void InstallApplications()
Install application function.
Definition
flame-regression.cc:128
FlameRegressionTest::CreateNodes
void CreateNodes()
Create nodes function.
Definition
flame-regression.cc:64
FlameRegressionTest::m_clientSocket
Ptr< Socket > m_clientSocket
Client-side socket.
Definition
flame-regression.h:83
FlameRegressionTest::m_nodes
NodeContainer * m_nodes
Definition
flame-regression.h:67
FlameRegressionTest::SendData
void SendData(Ptr< Socket > socket)
Send data.
Definition
flame-regression.cc:159
FlameRegressionTest::m_serverSocket
Ptr< Socket > m_serverSocket
Server-side socket.
Definition
flame-regression.h:81
FlameRegressionTest::HandleReadClient
void HandleReadClient(Ptr< Socket > socket)
Handle a packet reception.
Definition
flame-regression.cc:188
FlameRegressionTest::HandleReadServer
void HandleReadServer(Ptr< Socket > socket)
Handle a packet reception.
Definition
flame-regression.cc:174
FlameRegressionTest::m_interfaces
Ipv4InterfaceContainer m_interfaces
Needed to install applications.
Definition
flame-regression.h:71
FlameRegressionTest::CreateDevices
void CreateDevices()
Create devices function.
Definition
flame-regression.cc:87
FlameRegressionTest::DoRun
void DoRun() override
Implementation to actually run this TestCase.
Definition
flame-regression.cc:46
FlameRegressionTest::m_sentPktsCounter
uint32_t m_sentPktsCounter
sent packets counter
Definition
flame-regression.h:86
ns3::Ipv4InterfaceContainer
holds a vector of std::pair of Ptr<Ipv4> and interface index.
Definition
ipv4-interface-container.h:45
ns3::NodeContainer
keep track of a set of node pointers.
Definition
node-container.h:29
ns3::Ptr
Smart pointer class similar to boost::intrusive_ptr.
Definition
ptr.h:70
ns3::TestCase::TestCase
TestCase(const TestCase &)=delete
Caller graph was not generated because of its size.
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition
nstime.h:96
uint32_t
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
src
mesh
test
flame
flame-regression.h
Generated on
for ns-3 by
1.15.0