author | Tom Henderson <tomh@tomh.org> |
Mon, 28 Sep 2015 20:27:25 -0700 | |
changeset 11676 | 05ea1489e509 |
parent 11253 | dbdfb8d4cfe1 |
permissions | -rw-r--r-- |
10885
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
1 |
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
2 |
/* |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
3 |
* Copyright (c) 2014 Natale Patriciello <natale.patriciello@gmail.com> |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
4 |
* |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or modify |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
6 |
* it under the terms of the GNU General Public License version 2 as |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation; |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
8 |
* |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
9 |
* This program is distributed in the hope that it will be useful, |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
12 |
* GNU General Public License for more details. |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
13 |
* |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
14 |
* You should have received a copy of the GNU General Public License |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
15 |
* along with this program; if not, write to the Free Software |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
16 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
17 |
* |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
18 |
*/ |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
19 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
20 |
#include "ns3/test.h" |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
21 |
#include "ns3/core-module.h" |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
22 |
#include "ns3/tcp-option.h" |
11183
52ff59697ec9
bug 2002: Hardcoded include paths cause breakage
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents:
10885
diff
changeset
|
23 |
#include "ns3/private/tcp-option-winscale.h" |
52ff59697ec9
bug 2002: Hardcoded include paths cause breakage
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents:
10885
diff
changeset
|
24 |
#include "ns3/private/tcp-option-ts.h" |
10885
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
25 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
26 |
#include <string.h> |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
27 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
28 |
namespace ns3 { |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
29 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
30 |
class TcpOptionWSTestCase : public TestCase |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
31 |
{ |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
32 |
public: |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
33 |
TcpOptionWSTestCase (std::string name, uint8_t scale); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
34 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
35 |
void TestSerialize (); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
36 |
void TestDeserialize (); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
37 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
38 |
private: |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
39 |
virtual void DoRun (void); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
40 |
virtual void DoTeardown (void); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
41 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
42 |
uint8_t m_scale; |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
43 |
Buffer m_buffer; |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
44 |
}; |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
45 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
46 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
47 |
TcpOptionWSTestCase::TcpOptionWSTestCase (std::string name, uint8_t scale) |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
48 |
: TestCase (name) |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
49 |
{ |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
50 |
m_scale = scale; |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
51 |
} |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
52 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
53 |
void |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
54 |
TcpOptionWSTestCase::DoRun () |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
55 |
{ |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
56 |
TestSerialize (); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
57 |
TestDeserialize (); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
58 |
} |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
59 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
60 |
void |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
61 |
TcpOptionWSTestCase::TestSerialize () |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
62 |
{ |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
63 |
TcpOptionWinScale opt; |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
64 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
65 |
opt.SetScale (m_scale); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
66 |
NS_TEST_EXPECT_MSG_EQ (m_scale, opt.GetScale (), "Scale isn't saved correctly"); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
67 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
68 |
m_buffer.AddAtStart (opt.GetSerializedSize ()); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
69 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
70 |
opt.Serialize (m_buffer.Begin ()); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
71 |
} |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
72 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
73 |
void |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
74 |
TcpOptionWSTestCase::TestDeserialize () |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
75 |
{ |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
76 |
TcpOptionWinScale opt; |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
77 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
78 |
Buffer::Iterator start = m_buffer.Begin (); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
79 |
uint8_t kind = start.PeekU8 (); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
80 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
81 |
NS_TEST_EXPECT_MSG_EQ (kind, TcpOption::WINSCALE, "Different kind found"); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
82 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
83 |
opt.Deserialize (start); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
84 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
85 |
NS_TEST_EXPECT_MSG_EQ (m_scale, opt.GetScale (), "Different scale found"); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
86 |
} |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
87 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
88 |
void |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
89 |
TcpOptionWSTestCase::DoTeardown () |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
90 |
{ |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
91 |
} |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
92 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
93 |
class TcpOptionTSTestCase : public TestCase |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
94 |
{ |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
95 |
public: |
11253
dbdfb8d4cfe1
defer random variable usage until test run time
Tom Henderson <tomh@tomh.org>
parents:
11183
diff
changeset
|
96 |
TcpOptionTSTestCase (std::string name); |
10885
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
97 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
98 |
void TestSerialize (); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
99 |
void TestDeserialize (); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
100 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
101 |
private: |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
102 |
virtual void DoRun (void); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
103 |
virtual void DoTeardown (void); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
104 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
105 |
uint32_t m_timestamp; |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
106 |
uint32_t m_echo; |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
107 |
Buffer m_buffer; |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
108 |
}; |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
109 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
110 |
|
11253
dbdfb8d4cfe1
defer random variable usage until test run time
Tom Henderson <tomh@tomh.org>
parents:
11183
diff
changeset
|
111 |
TcpOptionTSTestCase::TcpOptionTSTestCase (std::string name) |
10885
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
112 |
: TestCase (name) |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
113 |
{ |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
114 |
} |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
115 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
116 |
void |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
117 |
TcpOptionTSTestCase::DoRun () |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
118 |
{ |
11253
dbdfb8d4cfe1
defer random variable usage until test run time
Tom Henderson <tomh@tomh.org>
parents:
11183
diff
changeset
|
119 |
Ptr<UniformRandomVariable> x = CreateObject<UniformRandomVariable> (); |
dbdfb8d4cfe1
defer random variable usage until test run time
Tom Henderson <tomh@tomh.org>
parents:
11183
diff
changeset
|
120 |
|
dbdfb8d4cfe1
defer random variable usage until test run time
Tom Henderson <tomh@tomh.org>
parents:
11183
diff
changeset
|
121 |
for (uint32_t i = 0; i < 1000; ++i) |
dbdfb8d4cfe1
defer random variable usage until test run time
Tom Henderson <tomh@tomh.org>
parents:
11183
diff
changeset
|
122 |
{ |
dbdfb8d4cfe1
defer random variable usage until test run time
Tom Henderson <tomh@tomh.org>
parents:
11183
diff
changeset
|
123 |
m_timestamp = x->GetInteger (); |
dbdfb8d4cfe1
defer random variable usage until test run time
Tom Henderson <tomh@tomh.org>
parents:
11183
diff
changeset
|
124 |
m_echo = x->GetInteger (); |
dbdfb8d4cfe1
defer random variable usage until test run time
Tom Henderson <tomh@tomh.org>
parents:
11183
diff
changeset
|
125 |
TestSerialize (); |
dbdfb8d4cfe1
defer random variable usage until test run time
Tom Henderson <tomh@tomh.org>
parents:
11183
diff
changeset
|
126 |
TestDeserialize (); |
dbdfb8d4cfe1
defer random variable usage until test run time
Tom Henderson <tomh@tomh.org>
parents:
11183
diff
changeset
|
127 |
} |
10885
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
128 |
} |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
129 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
130 |
void |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
131 |
TcpOptionTSTestCase::TestSerialize () |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
132 |
{ |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
133 |
TcpOptionTS opt; |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
134 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
135 |
opt.SetTimestamp (m_timestamp); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
136 |
opt.SetEcho (m_echo); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
137 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
138 |
NS_TEST_EXPECT_MSG_EQ (m_timestamp, opt.GetTimestamp (), "TS isn't saved correctly"); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
139 |
NS_TEST_EXPECT_MSG_EQ (m_echo, opt.GetEcho (), "echo isn't saved correctly"); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
140 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
141 |
m_buffer.AddAtStart (opt.GetSerializedSize ()); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
142 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
143 |
opt.Serialize (m_buffer.Begin ()); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
144 |
} |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
145 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
146 |
void |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
147 |
TcpOptionTSTestCase::TestDeserialize () |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
148 |
{ |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
149 |
TcpOptionTS opt; |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
150 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
151 |
Buffer::Iterator start = m_buffer.Begin (); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
152 |
uint8_t kind = start.PeekU8 (); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
153 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
154 |
NS_TEST_EXPECT_MSG_EQ (kind, TcpOption::TS, "Different kind found"); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
155 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
156 |
opt.Deserialize (start); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
157 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
158 |
NS_TEST_EXPECT_MSG_EQ (m_timestamp, opt.GetTimestamp (), "Different TS found"); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
159 |
NS_TEST_EXPECT_MSG_EQ (m_echo, opt.GetEcho (), "Different echo found"); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
160 |
} |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
161 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
162 |
void |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
163 |
TcpOptionTSTestCase::DoTeardown () |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
164 |
{ |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
165 |
} |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
166 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
167 |
static class TcpOptionTestSuite : public TestSuite |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
168 |
{ |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
169 |
public: |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
170 |
TcpOptionTestSuite () |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
171 |
: TestSuite ("tcp-option", UNIT) |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
172 |
{ |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
173 |
for (uint8_t i = 0; i < 15; ++i) |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
174 |
{ |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
175 |
AddTestCase (new TcpOptionWSTestCase ("Testing window " |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
176 |
"scale value", i), TestCase::QUICK); |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
177 |
} |
11253
dbdfb8d4cfe1
defer random variable usage until test run time
Tom Henderson <tomh@tomh.org>
parents:
11183
diff
changeset
|
178 |
AddTestCase (new TcpOptionTSTestCase ("Testing serialization of random values for timestamp"), TestCase::QUICK); |
10885
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
179 |
} |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
180 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
181 |
} g_TcpOptionTestSuite; |
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
182 |
|
462d70f54ada
Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam
Natale Patriciello <natale.patriciello@gmail.com>
parents:
diff
changeset
|
183 |
} // namespace ns3 |