A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
flame-test-suite.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  * Author: Pavel Boyko <boyko@iitp.ru>
19  */
20 
21 #include "ns3/test.h"
22 #include "ns3/packet.h"
23 #include "ns3/simulator.h"
24 #include "ns3/flame-header.h"
25 #include "ns3/flame-rtable.h"
26 
27 using namespace ns3;
28 using namespace flame;
29 
31 struct FlameHeaderTest : public TestCase
32 {
34  TestCase ("FlameHeader roundtrip serialization")
35  {
36  }
37  void DoRun ();
38 };
39 
40 void
42 {
43  FlameHeader a;
44  a.AddCost (123);
45  a.SetSeqno (456);
46  a.SetOrigDst (Mac48Address ("11:22:33:44:55:66"));
47  a.SetOrigSrc (Mac48Address ("00:11:22:33:44:55"));
48  a.SetProtocol (0x806);
49  Ptr<Packet> packet = Create<Packet> ();
50  packet->AddHeader (a);
51  FlameHeader b;
52  packet->RemoveHeader (b);
53  NS_TEST_ASSERT_MSG_EQ (b, a, "FlameHeader roundtrip serialization works");
54 }
55 
56 //-----------------------------------------------------------------------------
57 
59 class FlameRtableTest : public TestCase
60 {
61 public:
62  FlameRtableTest ();
63  void DoRun ();
64 
65 private:
67  void TestLookup ();
72  void TestAddPath ();
73  void TestExpire ();
75 private:
78  uint32_t iface;
79  uint8_t cost;
80  uint16_t seqnum;
82 };
83 
86 
88  TestCase ("FlameRtable"),
89  dst ("01:00:00:01:00:01"),
90  hop ("01:00:00:01:00:03"),
91  iface (8010),
92  cost (10),
93  seqnum (1)
94 {
95 }
96 
97 void
99 {
101 
103  NS_TEST_EXPECT_MSG_EQ ((table->Lookup (dst) == correct), true, "Routing table lookup works");
104 }
105 
106 void
108 {
110 }
111 
112 void
114 {
115  // this is assumed to be called when path records are already expired
117  NS_TEST_EXPECT_MSG_EQ (table->Lookup (dst).IsValid (), false, "Routing table records expirations works");
118 }
119 
120 void
122 {
123  table = CreateObject<FlameRtable> ();
124 
125  Simulator::Schedule (Seconds (0), &FlameRtableTest::TestLookup, this);
126  Simulator::Schedule (Seconds (1), &FlameRtableTest::TestAddPath, this);
127  Simulator::Schedule (Seconds (122), &FlameRtableTest::TestExpire, this);
128 
129  Simulator::Run ();
130  Simulator::Destroy ();
131 }
132 
133 
134 //-----------------------------------------------------------------------------
135 
136 class FlameTestSuite : public TestSuite
137 {
138 public:
139  FlameTestSuite ();
140 };
141 
143  : TestSuite ("devices-mesh-flame", UNIT)
144 {
145  AddTestCase (new FlameHeaderTest, TestCase::QUICK);
146  AddTestCase (new FlameRtableTest, TestCase::QUICK);
147 }
148 
uint32_t RemoveHeader(Header &header)
Deserialize and remove the header from the internal buffer.
Definition: packet.cc:268
void SetSeqno(uint16_t seqno)
Unit test for FlameRtable.
void SetOrigDst(Mac48Address dst)
void AddPath(const Mac48Address destination, const Mac48Address retransmitter, const uint32_t interface, const uint8_t cost, const uint16_t seqnum)
Add path.
Definition: flame-rtable.cc:61
A suite of tests to run.
Definition: test.h:1105
static FlameTestSuite g_flameTestSuite
#define NS_TEST_EXPECT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report if not.
Definition: test.h:265
encapsulates test code
Definition: test.h:929
Built-in self test for FlameHeader.
void SetProtocol(uint16_t protocol)
#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:148
void AddCost(uint8_t cost)
Definition: flame-header.cc:92
void DoRun()
Implementation to actually run this TestCase.
Ptr< FlameRtable > table
Mac48Address dst
Route lookup result, return type of LookupXXX methods.
Definition: flame-rtable.h:45
Mac48Address hop
void SetOrigSrc(Mac48Address OrigSrc)
an EUI-48 address
Definition: mac48-address.h:41
void AddTestCase(TestCase *testCase) NS_DEPRECATED
Add an individual child TestCase case to this TestCase.
Definition: test.cc:184
bool IsValid() const
True for valid route.
void TestLookup()
Test Add apth and lookup path;.
void DoRun()
Implementation to actually run this TestCase.
LookupResult Lookup(Mac48Address destination)
Lookup path to destination.
Definition: flame-rtable.cc:84
void AddHeader(const Header &header)
Add header to this packet.
Definition: packet.cc:253
static FlameRtableTest g_FlameRtableTest
Test instance.