Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Sebastian Schrader
Kea
Commits
a0fe616b
Commit
a0fe616b
authored
Nov 11, 2015
by
Stephen Morris
Browse files
[master] Merge remote-tracking branch 'github/master'
Merged in change made to GitHub for ticket trac4111.
parents
4c130bd7
cb1cb873
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/lib/dhcp/tests/option6_addrlst_unittest.cc
View file @
a0fe616b
...
...
@@ -38,13 +38,13 @@ using boost::scoped_ptr;
namespace
{
class
Option6AddrLstTest
:
public
::
testing
::
Test
{
public:
Option6AddrLstTest
()
:
buf_
(
255
),
out
B
uf_
(
255
)
{
Option6AddrLstTest
()
:
buf_
(
255
),
out
_b
uf_
(
255
)
{
for
(
unsigned
i
=
0
;
i
<
255
;
i
++
)
{
buf_
[
i
]
=
255
-
i
;
}
}
OptionBuffer
buf_
;
OutputBuffer
out
B
uf_
;
OutputBuffer
out
_b
uf_
;
};
TEST_F
(
Option6AddrLstTest
,
basic
)
{
...
...
@@ -129,10 +129,10 @@ TEST_F(Option6AddrLstTest, basic) {
EXPECT_EQ
(
"2001:db8:1::dead:beef"
,
addr
.
toText
());
// Pack this option
opt1
->
pack
(
out
B
uf_
);
opt1
->
pack
(
out
_b
uf_
);
EXPECT_EQ
(
20
,
out
B
uf_
.
getLength
());
EXPECT_EQ
(
0
,
memcmp
(
expected1
,
out
B
uf_
.
getData
(),
20
));
EXPECT_EQ
(
20
,
out
_b
uf_
.
getLength
());
EXPECT_EQ
(
0
,
memcmp
(
expected1
,
out
_b
uf_
.
getData
(),
20
));
// Two addresses
scoped_ptr
<
Option6AddrLst
>
opt2
;
...
...
@@ -148,11 +148,11 @@ TEST_F(Option6AddrLstTest, basic) {
EXPECT_EQ
(
"ff02::face:b00c"
,
addrs
[
1
].
toText
());
// Pack this option
out
B
uf_
.
clear
();
opt2
->
pack
(
out
B
uf_
);
out
_b
uf_
.
clear
();
opt2
->
pack
(
out
_b
uf_
);
EXPECT_EQ
(
36
,
out
B
uf_
.
getLength
()
);
EXPECT_EQ
(
0
,
memcmp
(
expected2
,
out
B
uf_
.
getData
(),
36
));
EXPECT_EQ
(
36
,
out
_b
uf_
.
getLength
()
);
EXPECT_EQ
(
0
,
memcmp
(
expected2
,
out
_b
uf_
.
getData
(),
36
));
// Three addresses
scoped_ptr
<
Option6AddrLst
>
opt3
;
...
...
@@ -170,11 +170,11 @@ TEST_F(Option6AddrLstTest, basic) {
EXPECT_EQ
(
"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"
,
addrs
[
2
].
toText
());
// Pack this option
out
B
uf_
.
clear
();
opt3
->
pack
(
out
B
uf_
);
out
_b
uf_
.
clear
();
opt3
->
pack
(
out
_b
uf_
);
EXPECT_EQ
(
52
,
out
B
uf_
.
getLength
());
EXPECT_EQ
(
0
,
memcmp
(
expected3
,
out
B
uf_
.
getData
(),
52
));
EXPECT_EQ
(
52
,
out
_b
uf_
.
getLength
());
EXPECT_EQ
(
0
,
memcmp
(
expected3
,
out
_b
uf_
.
getData
(),
52
));
EXPECT_NO_THROW
(
opt1
.
reset
());
EXPECT_NO_THROW
(
opt2
.
reset
());
...
...
@@ -251,4 +251,34 @@ TEST_F(Option6AddrLstTest, toText) {
"2001:db8:1::4 2001:db8:1::5"
,
opt
.
toText
());
}
// A helper for the 'empty' test. Exercise public interfaces of an empty
// Option6AddrLst. It assumes the option type is D6O_DHCPV4_O_DHCPV6_SERVER.
void
checkEmpty
(
Option6AddrLst
&
addrs
)
{
const
uint8_t
expected
[]
=
{
D6O_DHCPV4_O_DHCPV6_SERVER
/
256
,
D6O_DHCPV4_O_DHCPV6_SERVER
%
256
,
0
,
0
};
EXPECT_EQ
(
4
,
addrs
.
len
());
// just 2-byte type and 2-byte len fields
EXPECT_EQ
(
"type=00088, len=00000:"
,
addrs
.
toText
());
OutputBuffer
out_buf
(
255
);
addrs
.
pack
(
out_buf
);
EXPECT_EQ
(
4
,
out_buf
.
getLength
());
EXPECT_EQ
(
0
,
memcmp
(
expected
,
out_buf
.
getData
(),
4
));
}
// Confirms no disruption happens for an empty set of addresses.
TEST_F
(
Option6AddrLstTest
,
empty
)
{
boost
::
scoped_ptr
<
Option6AddrLst
>
addrs
(
new
Option6AddrLst
(
D6O_DHCPV4_O_DHCPV6_SERVER
,
Option6AddrLst
::
AddressContainer
()));
checkEmpty
(
*
addrs
);
const
OptionBuffer
empty_buf
;
addrs
.
reset
(
new
Option6AddrLst
(
D6O_DHCPV4_O_DHCPV6_SERVER
,
empty_buf
.
begin
(),
empty_buf
.
end
()));
checkEmpty
(
*
addrs
);
}
}
// namespace
src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc
View file @
a0fe616b
...
...
@@ -913,6 +913,23 @@ TEST_F(ParseConfigTest, optionDataMinimalWithOptionDef) {
}
// This test verifies an empty option data configuration is supported.
TEST_F
(
ParseConfigTest
,
emptyOptionData
)
{
// Configuration string.
const
std
::
string
config
=
"{
\"
option-data
\"
: [ {"
"
\"
name
\"
:
\"
dhcp4o6-server-addr
\"
"
" } ]"
"}"
;
int
rcode
=
0
;
ASSERT_NO_THROW
(
rcode
=
parseConfiguration
(
config
));
const
Option6AddrLstPtr
opt
=
boost
::
dynamic_pointer_cast
<
Option6AddrLst
>
(
getOptionPtr
(
"dhcp6"
,
D6O_DHCPV4_O_DHCPV6_SERVER
));
ASSERT_TRUE
(
opt
);
ASSERT_EQ
(
0
,
opt
->
getAddresses
().
size
());
}
};
// Anonymous namespace
/// The next set of tests check basic operation of the HooksLibrariesParser.
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment