A Discrete-Event Network Simulator
API
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
27using namespace ns3;
28using namespace flame;
29
37{
39 TestCase ("FlameHeader roundtrip serialization")
40 {
41 }
42 void DoRun ();
43};
44
45void
47{
49 a.AddCost (123);
50 a.SetSeqno (456);
51 a.SetOrigDst (Mac48Address ("11:22:33:44:55:66"));
52 a.SetOrigSrc (Mac48Address ("00:11:22:33:44:55"));
53 a.SetProtocol (0x806);
54 Ptr<Packet> packet = Create<Packet> ();
55 packet->AddHeader (a);
57 packet->RemoveHeader (b);
58 NS_TEST_ASSERT_MSG_EQ (b, a, "FlameHeader roundtrip serialization works");
59}
60
61//-----------------------------------------------------------------------------
62
70{
71public:
73 void DoRun ();
74
75private:
77 void TestLookup ();
78
80 void TestAddPath ();
82 void TestExpire ();
83
84private:
88 uint8_t cost;
89 uint16_t seqnum;
91};
92
95
97 TestCase ("FlameRtable"),
98 dst ("01:00:00:01:00:01"),
99 hop ("01:00:00:01:00:03"),
100 iface (8010),
101 cost (10),
102 seqnum (1)
103{
104}
105
106void
108{
110
112 NS_TEST_EXPECT_MSG_EQ ((table->Lookup (dst) == correct), true, "Routing table lookup works");
113}
114
115void
117{
119}
120
121void
123{
124 // this is assumed to be called when path records are already expired
126 NS_TEST_EXPECT_MSG_EQ (table->Lookup (dst).IsValid (), false, "Routing table records expirations works");
127}
128
129void
131{
132 table = CreateObject<FlameRtable> ();
133
134 Simulator::Schedule (Seconds (0), &FlameRtableTest::TestLookup, this);
135 Simulator::Schedule (Seconds (1), &FlameRtableTest::TestAddPath, this);
136 Simulator::Schedule (Seconds (122), &FlameRtableTest::TestExpire, this);
137
138 Simulator::Run ();
139 Simulator::Destroy ();
140}
141
142
150{
151public:
153};
154
156 : TestSuite ("devices-mesh-flame", UNIT)
157{
158 AddTestCase (new FlameHeaderTest, TestCase::QUICK);
159 AddTestCase (new FlameRtableTest, TestCase::QUICK);
160}
161
Unit test for FlameRtable.
uint32_t iface
interface
void TestExpire()
Test add path and try to lookup after entry has expired.
uint16_t seqnum
sequence number
void TestAddPath()
Test add path and try to lookup after entry has expired.
Mac48Address hop
hop address
void TestLookup()
Test Add apth and lookup path;.
Mac48Address dst
destination address
void DoRun()
Implementation to actually run this TestCase.
Ptr< FlameRtable > table
table
Flame Test Suite.
an EUI-48 address
Definition: mac48-address.h:44
uint32_t RemoveHeader(Header &header)
Deserialize and remove the header from the internal buffer.
Definition: packet.cc:280
void AddHeader(const Header &header)
Add header to this packet.
Definition: packet.cc:256
encapsulates test code
Definition: test.h:994
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
Definition: test.cc:299
A suite of tests to run.
Definition: test.h:1188
void SetOrigSrc(Mac48Address OrigSrc)
Set origin source function.
void AddCost(uint8_t cost)
Add cost value.
Definition: flame-header.cc:93
void SetOrigDst(Mac48Address dst)
Set origin destination address.
void SetProtocol(uint16_t protocol)
Set protocol value.
void SetSeqno(uint16_t seqno)
Set sequence number value.
LookupResult Lookup(Mac48Address destination)
Lookup path to destination.
Definition: flame-rtable.cc:88
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:65
static FlameRtableTest g_FlameRtableTest
Test instance.
static FlameTestSuite g_flameTestSuite
the test suite
#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:141
#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:240
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition: nstime.h:1244
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Built-in self test for FlameHeader.
void DoRun()
Implementation to actually run this TestCase.
Route lookup result, return type of LookupXXX methods.
Definition: flame-rtable.h:46