src/devices/mesh/flame/flame-rtable.cc
author Kirill Andreev <andreev@iitp.ru>
Mon, 24 Aug 2009 18:05:31 +0400
changeset 5157 ace422ad12df
parent 5148 359f9e62b9b6
child 5160 86c06ea5dd32
permissions -rw-r--r--
Cosmetics: '\n' was replaced with std::endl, Camel case for attributes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     2
/*
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     3
 * Copyright (c) 2009 IITP RAS
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     4
 *
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     8
 *
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    12
 * GNU General Public License for more details.
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    13
 *
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    17
 *
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    18
 * Author: Kirill Andreev <andreev@iitp.ru>
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    19
 */
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    20
#include "ns3/assert.h"
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    21
#include "ns3/simulator.h"
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    22
#include "ns3/test.h"
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    23
#include "ns3/log.h"
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    24
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    25
#include "flame-rtable.h"
5132
aee541a30256 Restored newline at namespace
Kirill Andreev <andreev@iitp.ru>
parents: 5129
diff changeset
    26
namespace ns3 {
aee541a30256 Restored newline at namespace
Kirill Andreev <andreev@iitp.ru>
parents: 5129
diff changeset
    27
namespace flame {
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    28
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    29
NS_LOG_COMPONENT_DEFINE ("FlameRtable");
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    30
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    31
NS_OBJECT_ENSURE_REGISTERED (FlameRtable);
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    32
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    33
TypeId
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    34
FlameRtable::GetTypeId ()
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    35
{
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    36
  static TypeId tid =
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    37
      TypeId ("ns3::flame::FlameRtable")
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    38
      .SetParent<Object> () .AddConstructor<FlameRtable> ()
5157
ace422ad12df Cosmetics: '\n' was replaced with std::endl, Camel case for attributes
Kirill Andreev <andreev@iitp.ru>
parents: 5148
diff changeset
    39
      .AddAttribute ( "Lifetime",
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    40
                      "The lifetime of the routing enrty",
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    41
                      TimeValue (Seconds (120)), MakeTimeAccessor (
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    42
                          &FlameRtable::m_lifetime),
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    43
                      MakeTimeChecker ()
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    44
                      )
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    45
                      ;
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    46
  return tid;
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    47
}
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    48
FlameRtable::FlameRtable () :
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    49
  m_lifetime (Seconds (120))
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    50
{
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    51
}
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    52
FlameRtable::~FlameRtable ()
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    53
{
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    54
}
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    55
void
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    56
FlameRtable::DoDispose ()
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    57
{
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    58
  m_routes.clear ();
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    59
}
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    60
void
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    61
FlameRtable::AddPath (const Mac48Address destination, const Mac48Address retransmitter,
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    62
    const uint32_t interface, const uint8_t cost, const uint16_t seqnum)
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    63
{
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    64
  std::map<Mac48Address, Route>::iterator i = m_routes.find (destination);
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    65
  if (i == m_routes.end ())
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    66
    {
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    67
      Route newroute;
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    68
      newroute.cost = cost;
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    69
      newroute.retransmitter = retransmitter;
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    70
      newroute.interface = interface;
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    71
      newroute.whenExpire = Simulator::Now () + m_lifetime;
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    72
      newroute.seqnum = seqnum;
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    73
      m_routes[destination] = newroute;
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    74
      return;
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    75
    }
5088
fe6fcf14f2a1 Flame: added correct seqno filtering, added broadcast timers
Kirill Andreev <andreev@iitp.ru>
parents: 5082
diff changeset
    76
  i->second.seqnum = seqnum;
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    77
  NS_ASSERT (i != m_routes.end ());
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    78
  i->second.retransmitter = retransmitter;
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    79
  i->second.interface = interface;
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    80
  i->second.cost = cost;
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    81
  i->second.whenExpire = Simulator::Now () + m_lifetime;
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    82
}
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    83
FlameRtable::LookupResult
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    84
FlameRtable::Lookup (Mac48Address destination)
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    85
{
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    86
  std::map<Mac48Address, Route>::iterator i = m_routes.find (destination);
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    87
  if (i == m_routes.end ())
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    88
    {
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    89
      return LookupResult ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    90
    }
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    91
  if ((i->second.whenExpire < Simulator::Now ()))
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    92
    {
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    93
      NS_LOG_DEBUG ("Route has expired, sorry.");
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    94
      m_routes.erase (i);
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    95
      return LookupResult ();
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    96
    }
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    97
  return LookupResult (i->second.retransmitter, i->second.interface, i->second.cost, i->second.seqnum);
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    98
}
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
    99
bool
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   100
FlameRtable::LookupResult::operator== (const FlameRtable::LookupResult & o) const
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   101
{
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   102
  return (retransmitter == o.retransmitter && ifIndex == o.ifIndex && cost == o.cost && seqnum == o.seqnum);
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   103
}
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   104
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   105
bool
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   106
FlameRtable::LookupResult::IsValid () const
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   107
{
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   108
  return !(retransmitter == Mac48Address::GetBroadcast () && ifIndex == INTERFACE_ANY && cost == MAX_COST
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   109
      && seqnum == 0);
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   110
}
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   111
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   112
#ifdef RUN_SELF_TESTS
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   113
/// Unit test for FlameRtable
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   114
class FlameRtableTest : public Test
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   115
{
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   116
public:
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   117
  FlameRtableTest ();
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   118
  virtual bool
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   119
  RunTests ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   120
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   121
private:
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   122
  /// Test Add apth and lookup path;
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   123
  void
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   124
  TestLookup ();
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   125
  /**
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   126
   * \name Test add path and try to lookup after entry has expired
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   127
   * \{
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   128
   */
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   129
  void
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   130
  TestAddPath ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   131
  void
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   132
  TestExpire ();
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   133
  ///\}
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   134
private:
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   135
  bool result;
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   136
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   137
  Mac48Address dst;
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   138
  Mac48Address hop;
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   139
  uint32_t iface;
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   140
  uint8_t cost;
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   141
  uint16_t seqnum;
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   142
  Ptr<FlameRtable> table;
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   143
};
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   144
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   145
/// Test instance
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   146
static FlameRtableTest g_FlameRtableTest;
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   147
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   148
FlameRtableTest::FlameRtableTest () :
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   149
  Test ("Mesh/flame/FlameRtable"), result (true), dst ("01:00:00:01:00:01"), hop ("01:00:00:01:00:03"),
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   150
      iface (8010), cost (10), seqnum (1)
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   151
{
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   152
}
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   153
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   154
void
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   155
FlameRtableTest::TestLookup ()
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   156
{
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   157
  FlameRtable::LookupResult correct (hop, iface, cost, seqnum);
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   158
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   159
  table->AddPath (dst, hop, iface, cost, seqnum);
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   160
  NS_TEST_ASSERT (table->Lookup (dst) == correct);
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   161
}
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   162
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   163
void
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   164
FlameRtableTest::TestAddPath ()
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   165
{
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   166
  table->AddPath (dst, hop, iface, cost, seqnum);
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   167
}
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   168
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   169
void
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   170
FlameRtableTest::TestExpire ()
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   171
{
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   172
  // this is assumed to be called when path records are already expired
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   173
  FlameRtable::LookupResult correct (hop, iface, cost, seqnum);
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   174
  NS_TEST_ASSERT (!table->Lookup (dst).IsValid ());
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   175
}
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   176
bool
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   177
FlameRtableTest::RunTests ()
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   178
{
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   179
  table = CreateObject<FlameRtable> ();
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   180
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   181
  Simulator::Schedule (Seconds (0), &FlameRtableTest::TestLookup, this);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   182
  Simulator::Schedule (Seconds (1), &FlameRtableTest::TestAddPath, this);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   183
  Simulator::Schedule (Seconds (122), &FlameRtableTest::TestExpire, this);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   184
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   185
  Simulator::Run ();
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   186
  Simulator::Destroy ();
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5088
diff changeset
   187
5079
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   188
  return result;
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   189
}
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   190
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   191
#endif // RUN_SELF_TESTS
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   192
} //namespace flame
245215e5e6ed Added flame rtable, fixed DoDispose in HwmpRtable
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   193
} //namespace ns3