A Discrete-Event Network Simulator
API
mpi-test-fixtures.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright 2018. Lawrence Livermore National Security, LLC.
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  * Author: Steven Smith <smith84@llnl.gov>
19  */
20 
21 #include <iomanip>
22 #include <sstream>
23 #include <ios>
24 
42 namespace ns3 {
43 
44 template <typename T> class Ptr;
45 class Address;
46 class Packet;
47 
48 
57 #define RANK0COUT(x) \
58  do \
59  if (SinkTracer::GetWorldRank () == 0) \
60  { \
61  std::cout << "TEST : "; \
62  std::ios_base::fmtflags f( std::cout.flags() ); \
63  std::cout << std::setfill('0') << std::setw(5) << SinkTracer::GetLineCount (); \
64  std::cout.flags( f ); \
65  std::cout << " : " << x; \
66  } \
67  while (false)
68 
77 #define RANK0COUTAPPEND(x) \
78  do \
79  if (SinkTracer::GetWorldRank () == 0) \
80  { \
81  std::cout << x ; \
82  } \
83  while (false)
84 
91 {
92 
93 public:
97  static void Init (void);
98 
103  static void SinkTrace (const ns3::Ptr<const ns3::Packet> packet,
104  const ns3::Address &srcAddress,
105  const ns3::Address &destAddress);
106 
113  static void Verify (unsigned long expectedCount);
114 
121  static std::string FormatAddress (const ns3::Address address);
122 
128  static int GetWorldRank (void)
129  {
130  return m_worldRank;
131  }
132 
138  static int GetWorldSize (void)
139  {
140  return m_worldSize;
141  }
142 
147  static int GetLineCount (void)
148  {
149  return m_line++;
150  }
151 
152 private:
153  static unsigned long m_sinkCount;
154  static unsigned long m_line;
155  static int m_worldRank;
156  static int m_worldSize;
157 };
158 
159 } // namespace ns3
a polymophic address class
Definition: address.h:91
Collects data about incoming packets.
static void SinkTrace(const ns3::Ptr< const ns3::Packet > packet, const ns3::Address &srcAddress, const ns3::Address &destAddress)
PacketSink receive trace callback.
static int GetWorldRank(void)
Get the MPI rank in the world communicator.
static void Init(void)
PacketSink Init.
static int m_worldRank
MPI CommWorld rank.
static int GetLineCount(void)
Get current line count and increment it.
static void Verify(unsigned long expectedCount)
Verify the sink trace count observed matches the expected count.
static int m_worldSize
MPI CommWorld size.
static unsigned long m_line
Current output line number for ordering output.
static int GetWorldSize(void)
Get the MPI size of the world communicator.
static unsigned long m_sinkCount
Running sum of number of SinkTrace calls observed.
static std::string FormatAddress(const ns3::Address address)
Get the source address and port, as a formatted string.
address
Definition: first.py:44
Every class exported by the ns3 library is enclosed in the ns3 namespace.