|
@@ -524,20 +524,26 @@ public:
|
|
}
|
|
}
|
|
|
|
|
|
/// @brief Implements "lease{4,6}_expire callout, which lasts at least
|
|
/// @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
|
|
/// 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
|
|
/// 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
|
|
/// the approximate time that the reclamation of all leases would take and
|
|
/// test that the timeouts for the leases' reclamation work as expected.
|
|
/// 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.
|
|
/// @param callout_handle Callout handle.
|
|
/// @return Zero.
|
|
/// @return Zero.
|
|
static int leaseExpireWithDelayCallout(CalloutHandle& callout_handle) {
|
|
static int leaseExpireWithDelayCallout(CalloutHandle& callout_handle) {
|
|
leaseExpireCallout(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);
|
|
return (0);
|
|
}
|
|
}
|
|
@@ -895,7 +901,7 @@ public:
|
|
HooksManager::loadLibraries(libraries);
|
|
HooksManager::loadLibraries(libraries);
|
|
|
|
|
|
// Install a callout: lease4_expire or lease6_expire. Each callout
|
|
// 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;
|
|
std::ostringstream callout_name;
|
|
callout_name << callout_argument_name << "_expire";
|
|
callout_name << callout_argument_name << "_expire";
|
|
EXPECT_NO_THROW(HooksManager::preCalloutsLibraryHandle().registerCallout(
|
|
EXPECT_NO_THROW(HooksManager::preCalloutsLibraryHandle().registerCallout(
|
|
@@ -904,8 +910,8 @@ public:
|
|
// Reclaim leases with timeout.
|
|
// Reclaim leases with timeout.
|
|
ASSERT_NO_THROW(reclaimExpiredLeases(0, timeout, false));
|
|
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 actual number of leases reclaimed is likely to be lower than
|
|
// the theoretical number. For low theoretical number the adjusted
|
|
// the theoretical number. For low theoretical number the adjusted
|
|
@@ -1333,8 +1339,8 @@ TEST_F(ExpirationAllocEngine6Test, reclaimExpiredLeasesHooksWithSkip) {
|
|
TEST_F(ExpirationAllocEngine6Test, reclaimExpiredLeasesTimeout) {
|
|
TEST_F(ExpirationAllocEngine6Test, reclaimExpiredLeasesTimeout) {
|
|
// This test needs at least 40 leases to make sense.
|
|
// This test needs at least 40 leases to make sense.
|
|
BOOST_STATIC_ASSERT(TEST_LEASES_NUM >= 40);
|
|
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
|
|
// 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) {
|
|
TEST_F(ExpirationAllocEngine4Test, reclaimExpiredLeasesTimeout) {
|
|
// This test needs at least 40 leases to make sense.
|
|
// This test needs at least 40 leases to make sense.
|
|
BOOST_STATIC_ASSERT(TEST_LEASES_NUM >= 40);
|
|
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
|
|
// This test verifies that at least one lease is reclaimed if the timeout
|