Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Kea
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
445
Issues
445
List
Boards
Labels
Service Desk
Milestones
Merge Requests
71
Merge Requests
71
Operations
Operations
Incidents
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
ISC Open Source Projects
Kea
Commits
b7bce1d6
Commit
b7bce1d6
authored
Nov 19, 2012
by
Stephen Morris
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[2404] Change multiple discrete variables to arrays
... in preparation for adding IPv4 tests
parent
504f64b2
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
73 additions
and
89 deletions
+73
-89
src/lib/dhcpsrv/tests/mysql_lease_mgr_unittest.cc
src/lib/dhcpsrv/tests/mysql_lease_mgr_unittest.cc
+73
-89
No files found.
src/lib/dhcpsrv/tests/mysql_lease_mgr_unittest.cc
View file @
b7bce1d6
...
...
@@ -36,14 +36,11 @@ namespace {
#include "schema_copy.h"
// IPv6 addresseses
const
char
*
ADDRESS_0
=
"2001:db8::0"
;
const
char
*
ADDRESS_1
=
"2001:db8::1"
;
const
char
*
ADDRESS_2
=
"2001:db8::2"
;
const
char
*
ADDRESS_3
=
"2001:db8::3"
;
const
char
*
ADDRESS_4
=
"2001:db8::4"
;
const
char
*
ADDRESS_5
=
"2001:db8::5"
;
const
char
*
ADDRESS_6
=
"2001:db8::6"
;
const
char
*
ADDRESS_7
=
"2001:db8::7"
;
const
char
*
ADDRESS6
[]
=
{
"2001:db8::0"
,
"2001:db8::1"
,
"2001:db8::2"
,
"2001:db8::3"
,
"2001:db8::4"
,
"2001:db8::5"
,
"2001:db8::6"
,
"2001:db8::7"
,
NULL
};
// Connection strings. Assume:
// Database: keatest
...
...
@@ -168,15 +165,14 @@ public:
// @brief Constructor
//
// Deletes everything from the database and opens it.
MySqlLeaseMgrTest
()
:
L0_ADDRESS
(
ADDRESS_0
),
L0_IOADDRESS
(
L0_ADDRESS
),
L1_ADDRESS
(
ADDRESS_1
),
L1_IOADDRESS
(
L1_ADDRESS
),
L2_ADDRESS
(
ADDRESS_2
),
L2_IOADDRESS
(
L2_ADDRESS
),
L3_ADDRESS
(
ADDRESS_3
),
L3_IOADDRESS
(
L3_ADDRESS
),
L4_ADDRESS
(
ADDRESS_4
),
L4_IOADDRESS
(
L4_ADDRESS
),
L5_ADDRESS
(
ADDRESS_5
),
L5_IOADDRESS
(
L5_ADDRESS
),
L6_ADDRESS
(
ADDRESS_6
),
L6_IOADDRESS
(
L6_ADDRESS
),
L7_ADDRESS
(
ADDRESS_7
),
L7_IOADDRESS
(
L7_ADDRESS
)
{
MySqlLeaseMgrTest
()
{
// Initialize address strings and IOAddresses
for
(
int
i
=
0
;
ADDRESS6
[
i
]
!=
NULL
;
++
i
)
{
string
addr
(
ADDRESS6
[
i
]);
straddress6_
.
push_back
(
addr
);
IOAddress
ioaddr
(
addr
);
ioaddress6_
.
push_back
(
ioaddr
);
}
destroySchema
();
createSchema
();
...
...
@@ -240,8 +236,8 @@ public:
lease
->
fqdn_rev_
=
false
;
// Unused
lease
->
comments_
=
std
::
string
(
""
);
// Unused
// Set
the other parameters. For historical reasons, L0_ADDRESS
is not used.
if
(
address
==
L0_ADDRESS
)
{
// Set
other parameters. For historical reasons, address 0
is not used.
if
(
address
==
straddress6_
[
0
]
)
{
lease
->
type_
=
Lease6
::
LEASE_IA_TA
;
lease
->
prefixlen_
=
4
;
lease
->
iaid_
=
142
;
...
...
@@ -251,7 +247,7 @@ public:
lease
->
cltt_
=
168256
;
// Current time of day
lease
->
subnet_id_
=
23
;
// Arbitrary number
}
else
if
(
address
==
L1_ADDRESS
)
{
}
else
if
(
address
==
straddress6_
[
1
]
)
{
lease
->
type_
=
Lease6
::
LEASE_IA_TA
;
lease
->
prefixlen_
=
0
;
lease
->
iaid_
=
42
;
...
...
@@ -261,7 +257,7 @@ public:
lease
->
cltt_
=
123456
;
// Current time of day
lease
->
subnet_id_
=
73
;
// Arbitrary number
}
else
if
(
address
==
L2_ADDRESS
)
{
}
else
if
(
address
==
straddress6_
[
2
]
)
{
lease
->
type_
=
Lease6
::
LEASE_IA_PD
;
lease
->
prefixlen_
=
7
;
lease
->
iaid_
=
89
;
...
...
@@ -269,9 +265,9 @@ public:
lease
->
preferred_lft_
=
1800
;
// Preferred lifetime
lease
->
valid_lft_
=
5412
;
// Actual lifetime
lease
->
cltt_
=
234567
;
// Current time of day
lease
->
subnet_id_
=
73
;
// Same as for
L1_ADDRESS
lease
->
subnet_id_
=
73
;
// Same as for
straddress6_1
}
else
if
(
address
==
L3_ADDRESS
)
{
}
else
if
(
address
==
straddress6_
[
3
]
)
{
lease
->
type_
=
Lease6
::
LEASE_IA_NA
;
lease
->
prefixlen_
=
28
;
lease
->
iaid_
=
0xfffffffe
;
...
...
@@ -290,8 +286,8 @@ public:
lease
->
cltt_
=
234567
;
// Current time of day
lease
->
subnet_id_
=
37
;
// Different from L1 and L2
}
else
if
(
address
==
L4_ADDRESS
)
{
// Same DUID and IAID as
L1_ADDRESS
}
else
if
(
address
==
straddress6_
[
4
]
)
{
// Same DUID and IAID as
straddress6_1
lease
->
type_
=
Lease6
::
LEASE_IA_PD
;
lease
->
prefixlen_
=
15
;
lease
->
iaid_
=
42
;
...
...
@@ -301,8 +297,8 @@ public:
lease
->
cltt_
=
222456
;
// Current time of day
lease
->
subnet_id_
=
75
;
// Arbitrary number
}
else
if
(
address
==
L5_ADDRESS
)
{
// Same DUID and IAID as
L1_ADDRESS
}
else
if
(
address
==
straddress6_
[
5
]
)
{
// Same DUID and IAID as
straddress6_1
lease
->
type_
=
Lease6
::
LEASE_IA_PD
;
lease
->
prefixlen_
=
24
;
lease
->
iaid_
=
42
;
...
...
@@ -312,8 +308,8 @@ public:
lease
->
cltt_
=
227476
;
// Current time of day
lease
->
subnet_id_
=
175
;
// Arbitrary number
}
else
if
(
address
==
L6_ADDRESS
)
{
// Same DUID as
L1_ADDRESS
}
else
if
(
address
==
straddress6_
[
6
]
)
{
// Same DUID as
straddress6_1
lease
->
type_
=
Lease6
::
LEASE_IA_PD
;
lease
->
prefixlen_
=
24
;
lease
->
iaid_
=
93
;
...
...
@@ -323,8 +319,8 @@ public:
lease
->
cltt_
=
627476
;
// Current time of day
lease
->
subnet_id_
=
112
;
// Arbitrary number
}
else
if
(
address
==
L7_ADDRESS
)
{
// Same IAID as
L1_ADDRESS
}
else
if
(
address
==
straddress6_
[
7
]
)
{
// Same IAID as
straddress6_1
lease
->
type_
=
Lease6
::
LEASE_IA_PD
;
lease
->
prefixlen_
=
24
;
lease
->
iaid_
=
42
;
...
...
@@ -350,17 +346,11 @@ public:
// @return vector<Lease6Ptr> Vector of pointers to leases
vector
<
Lease6Ptr
>
createLeases6
()
{
// Create leases
// Create leases
for each address
vector
<
Lease6Ptr
>
leases
;
leases
.
push_back
(
initializeLease6
(
L0_ADDRESS
));
leases
.
push_back
(
initializeLease6
(
L1_ADDRESS
));
leases
.
push_back
(
initializeLease6
(
L2_ADDRESS
));
leases
.
push_back
(
initializeLease6
(
L3_ADDRESS
));
leases
.
push_back
(
initializeLease6
(
L4_ADDRESS
));
leases
.
push_back
(
initializeLease6
(
L5_ADDRESS
));
leases
.
push_back
(
initializeLease6
(
L6_ADDRESS
));
leases
.
push_back
(
initializeLease6
(
L7_ADDRESS
));
for
(
int
i
=
0
;
i
<
straddress6_
.
size
();
++
i
)
{
leases
.
push_back
(
initializeLease6
(
straddress6_
[
i
]));
}
EXPECT_EQ
(
8
,
leases
.
size
());
// Check they were created
...
...
@@ -381,31 +371,10 @@ public:
// Member variables
LeaseMgr
*
lmptr_
;
// Pointer to the lease manager
string
L0_ADDRESS
;
// String form of address 1
IOAddress
L0_IOADDRESS
;
// IOAddress form of L1_ADDRESS
string
L1_ADDRESS
;
// String form of address 1
IOAddress
L1_IOADDRESS
;
// IOAddress form of L1_ADDRESS
string
L2_ADDRESS
;
// String form of address 2
IOAddress
L2_IOADDRESS
;
// IOAddress form of L2_ADDRESS
string
L3_ADDRESS
;
// String form of address 3
IOAddress
L3_IOADDRESS
;
// IOAddress form of L3_ADDRESS
string
L4_ADDRESS
;
// String form of address 4
IOAddress
L4_IOADDRESS
;
// IOAddress form of L4_ADDRESS
string
L5_ADDRESS
;
// String form of address 5
IOAddress
L5_IOADDRESS
;
// IOAddress form of L5_ADDRESS
string
L6_ADDRESS
;
// String form of address 6
IOAddress
L6_IOADDRESS
;
// IOAddress form of L6_ADDRESS
LeaseMgr
*
lmptr_
;
// Pointer to the lease manager
string
L7_ADDRESS
;
// String form of address 7
IOAddress
L7_IOADDRESS
;
// IOAddress form of L7_ADDRESS
vector
<
string
>
straddress6_
;
// String forms of IPv6 addresses
vector
<
IOAddress
>
ioaddress6_
;
// IOAddress forms of IPv6 addresses
};
...
...
@@ -538,9 +507,24 @@ TEST_F(MySqlLeaseMgrTest, checkVersion) {
EXPECT_EQ
(
CURRENT_VERSION_MINOR
,
version
.
second
);
}
// @brief Compare two Lease4 structures for equality
void
detailCompareLease
(
const
Lease4Ptr
&
first
,
const
Lease4Ptr
&
second
)
{
// Compare address strings. Comparison of address objects is not used, as
// odd things happen when they are different: the EXPECT_EQ macro appears to
// call the operator uint32_t() function, which causes an exception to be
// thrown for IPv6 addresses.
EXPECT_EQ
(
first
->
addr_
.
toText
(),
second
->
addr_
.
toText
());
EXPECT_TRUE
(
first
->
hwaddr_
==
second
->
hwaddr_
);
EXPECT_TRUE
(
*
first
->
client_id_
==
*
second
->
client_id_
);
EXPECT_EQ
(
first
->
valid_lft_
,
second
->
valid_lft_
);
EXPECT_EQ
(
first
->
cltt_
,
second
->
cltt_
);
EXPECT_EQ
(
first
->
subnet_id_
,
second
->
subnet_id_
);
}
// @brief Compare two Lease6 structures for equality
void
detailCompareLease
6
(
const
Lease6Ptr
&
first
,
const
Lease6Ptr
&
second
)
{
detailCompareLease
(
const
Lease6Ptr
&
first
,
const
Lease6Ptr
&
second
)
{
EXPECT_EQ
(
first
->
type_
,
second
->
type_
);
// Compare address strings. Comparison of address objects is not used, as
...
...
@@ -560,7 +544,7 @@ detailCompareLease6(const Lease6Ptr& first, const Lease6Ptr& second) {
// @brief Check individual Lease6 methods
//
// Checks that the add/
update
/delete works. All are done within one
// Checks that the add/
get
/delete works. All are done within one
// test so that "rollback" can be used to remove trace of the tests
// from the database.
//
...
...
@@ -580,32 +564,32 @@ TEST_F(MySqlLeaseMgrTest, basicLease6) {
// Reopen the database to ensure that they actually got stored.
reopen
();
Lease6Ptr
l_returned
=
lmptr_
->
getLease6
(
L1_IOADDRESS
);
Lease6Ptr
l_returned
=
lmptr_
->
getLease6
(
ioaddress6_
[
1
]
);
EXPECT_TRUE
(
l_returned
);
detailCompareLease
6
(
leases
[
1
],
l_returned
);
detailCompareLease
(
leases
[
1
],
l_returned
);
l_returned
=
lmptr_
->
getLease6
(
L2_IOADDRESS
);
l_returned
=
lmptr_
->
getLease6
(
ioaddress6_
[
2
]
);
EXPECT_TRUE
(
l_returned
);
detailCompareLease
6
(
leases
[
2
],
l_returned
);
detailCompareLease
(
leases
[
2
],
l_returned
);
l_returned
=
lmptr_
->
getLease6
(
L3_IOADDRESS
);
l_returned
=
lmptr_
->
getLease6
(
ioaddress6_
[
3
]
);
EXPECT_TRUE
(
l_returned
);
detailCompareLease
6
(
leases
[
3
],
l_returned
);
detailCompareLease
(
leases
[
3
],
l_returned
);
// Check that we can't add a second lease with the same address
EXPECT_FALSE
(
lmptr_
->
addLease
(
leases
[
1
]));
// Delete a lease, check that it's gone, and that we can't delete it
// a second time.
EXPECT_TRUE
(
lmptr_
->
deleteLease6
(
L1_IOADDRESS
));
l_returned
=
lmptr_
->
getLease6
(
L1_IOADDRESS
);
EXPECT_TRUE
(
lmptr_
->
deleteLease6
(
ioaddress6_
[
1
]
));
l_returned
=
lmptr_
->
getLease6
(
ioaddress6_
[
1
]
);
EXPECT_FALSE
(
l_returned
);
EXPECT_FALSE
(
lmptr_
->
deleteLease6
(
L1_IOADDRESS
));
EXPECT_FALSE
(
lmptr_
->
deleteLease6
(
ioaddress6_
[
1
]
));
// Check that the second address is still there.
l_returned
=
lmptr_
->
getLease6
(
L2_IOADDRESS
);
l_returned
=
lmptr_
->
getLease6
(
ioaddress6_
[
2
]
);
EXPECT_TRUE
(
l_returned
);
detailCompareLease
6
(
leases
[
2
],
l_returned
);
detailCompareLease
(
leases
[
2
],
l_returned
);
}
// @brief Check GetLease6 methods - Access by DUID/IAID
...
...
@@ -636,9 +620,9 @@ TEST_F(MySqlLeaseMgrTest, getLease6Extended1) {
addresses
.
push_back
((
*
i
)
->
addr_
.
toText
());
}
sort
(
addresses
.
begin
(),
addresses
.
end
());
EXPECT_EQ
(
L1_ADDRESS
,
addresses
[
0
]);
EXPECT_EQ
(
L4_ADDRESS
,
addresses
[
1
]);
EXPECT_EQ
(
L5_ADDRESS
,
addresses
[
2
]);
EXPECT_EQ
(
straddress6_
[
1
]
,
addresses
[
0
]);
EXPECT_EQ
(
straddress6_
[
4
]
,
addresses
[
1
]);
EXPECT_EQ
(
straddress6_
[
5
]
,
addresses
[
2
]);
// Check that nothing is returned when either the IAID or DUID match
// nothing.
...
...
@@ -710,9 +694,9 @@ TEST_F(MySqlLeaseMgrTest, updateLease6) {
lmptr_
->
commit
();
reopen
();
Lease6Ptr
l_returned
=
lmptr_
->
getLease6
(
L1_IOADDRESS
);
Lease6Ptr
l_returned
=
lmptr_
->
getLease6
(
ioaddress6_
[
1
]
);
EXPECT_TRUE
(
l_returned
);
detailCompareLease
6
(
leases
[
1
],
l_returned
);
detailCompareLease
(
leases
[
1
],
l_returned
);
// Modify some fields in lease 1 (not the address) and update it.
++
leases
[
1
]
->
iaid_
;
...
...
@@ -724,9 +708,9 @@ TEST_F(MySqlLeaseMgrTest, updateLease6) {
// ... and check what is returned is what is expected.
l_returned
.
reset
();
l_returned
=
lmptr_
->
getLease6
(
L1_IOADDRESS
);
l_returned
=
lmptr_
->
getLease6
(
ioaddress6_
[
1
]
);
EXPECT_TRUE
(
l_returned
);
detailCompareLease
6
(
leases
[
1
],
l_returned
);
detailCompareLease
(
leases
[
1
],
l_returned
);
// Alter the lease again and check.
++
leases
[
1
]
->
iaid_
;
...
...
@@ -736,16 +720,16 @@ TEST_F(MySqlLeaseMgrTest, updateLease6) {
lmptr_
->
updateLease6
(
leases
[
1
]);
l_returned
.
reset
();
l_returned
=
lmptr_
->
getLease6
(
L1_IOADDRESS
);
l_returned
=
lmptr_
->
getLease6
(
ioaddress6_
[
1
]
);
EXPECT_TRUE
(
l_returned
);
detailCompareLease
6
(
leases
[
1
],
l_returned
);
detailCompareLease
(
leases
[
1
],
l_returned
);
// Check we can do an update without changing data.
lmptr_
->
updateLease6
(
leases
[
1
]);
l_returned
.
reset
();
l_returned
=
lmptr_
->
getLease6
(
L1_IOADDRESS
);
l_returned
=
lmptr_
->
getLease6
(
ioaddress6_
[
1
]
);
EXPECT_TRUE
(
l_returned
);
detailCompareLease
6
(
leases
[
1
],
l_returned
);
detailCompareLease
(
leases
[
1
],
l_returned
);
// Try updating a lease not in the database.
EXPECT_THROW
(
lmptr_
->
updateLease6
(
leases
[
2
]),
isc
::
dhcp
::
NoSuchLease
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a 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