Commit c3a2487f authored by Marcin Siodelski's avatar Marcin Siodelski
Browse files

[master] Merge branch 'trac4075'

parents 4753ad3c 390cf0ae
......@@ -106,7 +106,7 @@ limitations on the number of leases and duration. However, this
may result in longer periods of server's unresponsiveness to
DHCP packets, while it processes the expired leases.
% ALLOC_ENGINE_V4_LEASES_RECLAMATION_START starting reclamation of expired leases (limit = %1 leases or %2 seconds)
% ALLOC_ENGINE_V4_LEASES_RECLAMATION_START starting reclamation of expired leases (limit = %1 leases or %2 milliseconds)
This debug message is issued when the allocation engine starts the
reclamation of the expired leases. The maximum number of leases to
be reclaimed and the timeout is included in the message. If any of
......@@ -371,7 +371,7 @@ limitations on the number of leases and duration. However, this
may result in longer periods of server's unresponsiveness to
DHCP packets, while it processes the expired leases.
% ALLOC_ENGINE_V6_LEASES_RECLAMATION_START starting reclamation of expired leases (limit = %1 leases or %2 seconds)
% ALLOC_ENGINE_V6_LEASES_RECLAMATION_START starting reclamation of expired leases (limit = %1 leases or %2 milliseconds)
This debug message is issued when the allocation engine starts the
reclamation of the expired leases. The maximum number of leases to
be reclaimed and the timeout is included in the message. If any of
......
......@@ -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
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment