summaryrefslogtreecommitdiffstats
path: root/src/lib/dhcpsrv/tests/alloc_engine_expiration_unittest.cc
diff options
context:
space:
mode:
authorMarcin Siodelski <marcin@isc.org>2015-10-15 16:16:50 +0200
committerMarcin Siodelski <marcin@isc.org>2015-10-15 16:16:50 +0200
commitc3a2487f53ecf69edc0a38f574fce17c4332162c (patch)
treee2a6eeeab1fe0bb7b53f5c971526da91b042ca30 /src/lib/dhcpsrv/tests/alloc_engine_expiration_unittest.cc
parent[master] Unit-test fixes after trac3987 merge. (diff)
parent[4075] Corrected seconds to milliseconds in the log message. (diff)
downloadkea-c3a2487f53ecf69edc0a38f574fce17c4332162c.tar.xz
kea-c3a2487f53ecf69edc0a38f574fce17c4332162c.zip
[master] Merge branch 'trac4075'
Diffstat (limited to 'src/lib/dhcpsrv/tests/alloc_engine_expiration_unittest.cc')
-rw-r--r--src/lib/dhcpsrv/tests/alloc_engine_expiration_unittest.cc28
1 files changed, 17 insertions, 11 deletions
diff --git a/src/lib/dhcpsrv/tests/alloc_engine_expiration_unittest.cc b/src/lib/dhcpsrv/tests/alloc_engine_expiration_unittest.cc
index 57a1ef324d..e1146ab021 100644
--- a/src/lib/dhcpsrv/tests/alloc_engine_expiration_unittest.cc
+++ b/src/lib/dhcpsrv/tests/alloc_engine_expiration_unittest.cc
@@ -524,20 +524,26 @@ public:
}
/// @brief Implements "lease{4,6}_expire callout, which lasts at least
- /// 2ms.
+ /// 40ms.
///
/// This callout is useful to test scenarios where the reclamation of the
/// lease needs to take a known amount of time. If the callout is installed
- /// it will take at least 2ms for each lease. It is then possible to calculate
+ /// it will take at least 40ms for each lease. It is then possible to calculate
/// the approximate time that the reclamation of all leases would take and
/// test that the timeouts for the leases' reclamation work as expected.
///
+ /// The value of 40ms is relatively high, but it has been selected to
+ /// mitigate the problems with usleep on some virtual machines. On those
+ /// machines the wakeup from usleep may take significant amount of time,
+ /// i.e. usually around 10ms. Thus, the sleep time should be considerably
+ /// higher than this delay.
+ ///
/// @param callout_handle Callout handle.
/// @return Zero.
static int leaseExpireWithDelayCallout(CalloutHandle& callout_handle) {
leaseExpireCallout(callout_handle);
- // Delay the return from the callout by 2ms.
- usleep(2000);
+ // Delay the return from the callout by 40ms.
+ usleep(40000);
return (0);
}
@@ -895,7 +901,7 @@ public:
HooksManager::loadLibraries(libraries);
// Install a callout: lease4_expire or lease6_expire. Each callout
- // takes at least 2ms to run (it uses usleep).
+ // takes at least 40ms to run (it uses usleep).
std::ostringstream callout_name;
callout_name << callout_argument_name << "_expire";
EXPECT_NO_THROW(HooksManager::preCalloutsLibraryHandle().registerCallout(
@@ -904,8 +910,8 @@ public:
// Reclaim leases with timeout.
ASSERT_NO_THROW(reclaimExpiredLeases(0, timeout, false));
- // We reclaimed at most (timeout / 2ms) leases.
- const uint16_t theoretical_reclaimed = static_cast<uint16_t>(timeout / 2);
+ // We reclaimed at most (timeout / 40ms) leases.
+ const uint16_t theoretical_reclaimed = static_cast<uint16_t>(timeout / 40);
// The actual number of leases reclaimed is likely to be lower than
// the theoretical number. For low theoretical number the adjusted
@@ -1333,8 +1339,8 @@ TEST_F(ExpirationAllocEngine6Test, reclaimExpiredLeasesHooksWithSkip) {
TEST_F(ExpirationAllocEngine6Test, reclaimExpiredLeasesTimeout) {
// This test needs at least 40 leases to make sense.
BOOST_STATIC_ASSERT(TEST_LEASES_NUM >= 40);
- // Run with timeout of 60ms.
- testReclaimExpiredLeasesTimeout(60);
+ // Run with timeout of 1.2s.
+ testReclaimExpiredLeasesTimeout(1200);
}
// This test verifies that at least one lease is reclaimed if the timeout
@@ -1734,8 +1740,8 @@ TEST_F(ExpirationAllocEngine4Test, reclaimExpiredLeasesHooksWithSkip) {
TEST_F(ExpirationAllocEngine4Test, reclaimExpiredLeasesTimeout) {
// This test needs at least 40 leases to make sense.
BOOST_STATIC_ASSERT(TEST_LEASES_NUM >= 40);
- // Run with timeout of 60ms.
- testReclaimExpiredLeasesTimeout(60);
+ // Run with timeout of 1.2s.
+ testReclaimExpiredLeasesTimeout(1200);
}
// This test verifies that at least one lease is reclaimed if the timeout