/// @param secs Number of seconds since expiration of leases before
/// they can be removed. Leases which have expired later than this
/// time will not be deleted.
- virtual void deleteExpiredReclaimedLeases4(const uint32_t secs) = 0;
+ ///
+ /// @return Number of leases deleted.
+ virtual uint64_t deleteExpiredReclaimedLeases4(const uint32_t secs) = 0;
/// @brief Deletes all expired and reclaimed DHCPv6 leases.
///
/// @param secs Number of seconds since expiration of leases before
/// they can be removed. Leases which have expired later than this
/// time will not be deleted.
- virtual void deleteExpiredReclaimedLeases6(const uint32_t secs) = 0;
+ ///
+ /// @return Number of leases deleted.
+ virtual uint64_t deleteExpiredReclaimedLeases6(const uint32_t secs) = 0;
/// @brief Return backend type
///
}
}
-void
+uint64_t
Memfile_LeaseMgr::deleteExpiredReclaimedLeases4(const uint32_t secs) {
LOG_DEBUG(dhcpsrv_logger, DHCPSRV_DBG_TRACE_DETAIL,
DHCPSRV_MEMFILE_DELETE_EXPIRED_RECLAIMED4)
.arg(secs);
- deleteExpiredReclaimedLeases<Lease4StorageExpirationIndex, Lease4>(secs, V4, storage4_,
- lease_file4_);
+ return (deleteExpiredReclaimedLeases<
+ Lease4StorageExpirationIndex, Lease4
+ >(secs, V4, storage4_, lease_file4_));
}
-void
+uint64_t
Memfile_LeaseMgr::deleteExpiredReclaimedLeases6(const uint32_t secs) {
LOG_DEBUG(dhcpsrv_logger, DHCPSRV_DBG_TRACE_DETAIL,
DHCPSRV_MEMFILE_DELETE_EXPIRED_RECLAIMED6)
.arg(secs);
- deleteExpiredReclaimedLeases<Lease6StorageExpirationIndex, Lease6>(secs, V6, storage6_,
- lease_file6_);
+ return (deleteExpiredReclaimedLeases<
+ Lease6StorageExpirationIndex, Lease6
+ >(secs, V6, storage6_, lease_file6_));
}
template<typename IndexType, typename LeaseType, typename StorageType,
typename LeaseFileType>
-void
+uint64_t
Memfile_LeaseMgr::deleteExpiredReclaimedLeases(const uint32_t secs,
const Universe& universe,
StorageType& storage,
// Erase leases from memory.
index.erase(lower_limit, upper_limit);
}
+ // Return number of leases deleted.
+ return (num_leases);
}
/// @param secs Number of seconds since expiration of leases before
/// they can be removed. Leases which have expired later than this
/// time will not be deleted.
- virtual void deleteExpiredReclaimedLeases4(const uint32_t secs);
+ ///
+ /// @return Number of leases deleted.
+ virtual uint64_t deleteExpiredReclaimedLeases4(const uint32_t secs);
/// @brief Deletes all expired-reclaimed DHCPv6 leases.
///
/// @param secs Number of seconds since expiration of leases before
/// they can be removed. Leases which have expired later than this
/// time will not be deleted.
- virtual void deleteExpiredReclaimedLeases6(const uint32_t secs);
+ ///
+ /// @return Number of leases deleted.
+ virtual uint64_t deleteExpiredReclaimedLeases6(const uint32_t secs);
private:
/// @param lease_file Reference to a DHCPv4 or DHCPv6 lease file
/// instance where leases should be marked as deleted.
///
+ /// @return Number of leases deleted.
+ ///
/// @tparam IndexType Index type to be used to search for the
/// expired-reclaimed leases, i.e.
/// @c Lease4StorageExpirationIndex or @c Lease6StorageExpirationIndex.
/// DHCPv6 lease file type.
template<typename IndexType, typename LeaseType, typename StorageType,
typename LeaseFileType>
- void deleteExpiredReclaimedLeases(const uint32_t secs,
- const Universe& universe,
- StorageType& storage,
- LeaseFileType& lease_file) const;
+ uint64_t deleteExpiredReclaimedLeases(const uint32_t secs,
+ const Universe& universe,
+ StorageType& storage,
+ LeaseFileType& lease_file) const;
public:
}
}
-void
+uint64_t
MySqlLeaseMgr::deleteExpiredReclaimedLeases4(const uint32_t) {
isc_throw(NotImplemented, "MySqlLeaseMgr::deleteExpiredReclaimedLeases4"
" is not implemented");
}
-void
+uint64_t
MySqlLeaseMgr::deleteExpiredReclaimedLeases6(const uint32_t) {
isc_throw(NotImplemented, "MySqlLeaseMgr::deleteExpiredReclaimedLeases6"
" is not implemented");
/// @param secs Number of seconds since expiration of leases before
/// they can be removed. Leases which have expired later than this
/// time will not be deleted.
- virtual void deleteExpiredReclaimedLeases4(const uint32_t secs);
+ ///
+ /// @return Number of leases deleted.
+ virtual uint64_t deleteExpiredReclaimedLeases4(const uint32_t secs);
/// @brief Deletes all expired-reclaimed DHCPv6 leases.
///
/// @param secs Number of seconds since expiration of leases before
/// they can be removed. Leases which have expired later than this
/// time will not be deleted.
- virtual void deleteExpiredReclaimedLeases6(const uint32_t secs);
+ ///
+ /// @return Number of leases deleted.
+ virtual uint64_t deleteExpiredReclaimedLeases6(const uint32_t secs);
/// @brief Return backend type
///
return (deleteLeaseCommon(DELETE_LEASE6, bind_array));
}
-void
+uint64_t
PgSqlLeaseMgr::deleteExpiredReclaimedLeases4(const uint32_t) {
isc_throw(NotImplemented, "PgSqlLeaseMgr::deleteExpiredReclaimedLeases4"
" is not implemented");
}
-void
+uint64_t
PgSqlLeaseMgr::deleteExpiredReclaimedLeases6(const uint32_t) {
isc_throw(NotImplemented, "PgSqlLeaseMgr::deleteExpiredReclaimedLeases6"
" is not implemented");
/// @param secs Number of seconds since expiration of leases before
/// they can be removed. Leases which have expired later than this
/// time will not be deleted.
- virtual void deleteExpiredReclaimedLeases4(const uint32_t secs);
+ ///
+ /// @return Number of leases deleted.
+ virtual uint64_t deleteExpiredReclaimedLeases4(const uint32_t secs);
/// @brief Deletes all expired-reclaimed DHCPv6 leases.
///
/// @param secs Number of seconds since expiration of leases before
/// they can be removed. Leases which have expired later than this
/// time will not be deleted.
- virtual void deleteExpiredReclaimedLeases6(const uint32_t secs);
+ ///
+ /// @return Number of leases deleted.
+ virtual uint64_t deleteExpiredReclaimedLeases6(const uint32_t secs);
/// @brief Return backend type
///
// Delete expired and reclaimed leases which have expired earlier than
// 15 seconds ago. This should affect leases with index 2, 3, 4 etc.
- ASSERT_NO_THROW(lmptr_->deleteExpiredReclaimedLeases4(lease_affinity_time));
+ uint64_t deleted_num;
+ uint64_t should_delete_num = 0;
+ ASSERT_NO_THROW(
+ deleted_num = lmptr_->deleteExpiredReclaimedLeases4(lease_affinity_time)
+ );
for (size_t i = 0; i < leases.size(); ++i) {
// Obtain lease from the server.
((leases[i]->getExpirationTime() + lease_affinity_time) < current_time)) {
EXPECT_FALSE(lease) << "The following lease should have been"
" deleted: " << leases[i]->toText();
+ ++should_delete_num;
} else {
// If the lease is not reclaimed or it has expired less than
" deleted: " << leases[i]->toText();
}
}
+ // Check that the number of leases deleted is correct.
+ EXPECT_EQ(deleted_num, should_delete_num);
// Make sure we can make another attempt, when there are no more leases
// to be deleted.
- ASSERT_NO_THROW(lmptr_->deleteExpiredReclaimedLeases4(lease_affinity_time));
+ ASSERT_NO_THROW(
+ deleted_num = lmptr_->deleteExpiredReclaimedLeases4(lease_affinity_time)
+ );
+ // No lease should have been deleted.
+ EXPECT_EQ(0, deleted_num);
// Reopen the database. This to ensure that the leases have been deleted
// from the persistent storage.
// Delete expired and reclaimed leases which have expired earlier than
// 15 seconds ago. This should affect leases with index 2, 3, 4 etc.
- ASSERT_NO_THROW(lmptr_->deleteExpiredReclaimedLeases6(lease_affinity_time));
+ uint64_t deleted_num;
+ uint64_t should_delete_num = 0;
+ ASSERT_NO_THROW(
+ deleted_num = lmptr_->deleteExpiredReclaimedLeases6(lease_affinity_time)
+ );
for (size_t i = 0; i < leases.size(); ++i) {
// Obtain lease from the server.
((leases[i]->getExpirationTime() + lease_affinity_time) < current_time)) {
EXPECT_FALSE(lease) << "The following lease should have been"
" deleted: " << leases[i]->toText();
+ ++should_delete_num;
} else {
// If the lease is not reclaimed or it has expired less than
" deleted: " << leases[i]->toText();
}
}
+ // Check that the number of deleted leases is correct.
+ EXPECT_EQ(should_delete_num, deleted_num);
// Make sure we can make another attempt, when there are no more leases
// to be deleted.
- ASSERT_NO_THROW(lmptr_->deleteExpiredReclaimedLeases6(lease_affinity_time));
+ ASSERT_NO_THROW(
+ deleted_num = lmptr_->deleteExpiredReclaimedLeases6(lease_affinity_time)
+ );
+ // No lease should have been deleted.
+ EXPECT_EQ(0, deleted_num);
// Reopen the database. This to ensure that the leases have been deleted
// from the persistent storage.
/// @param secs Number of seconds since expiration of leases before
/// they can be removed. Leases which have expired later than this
/// time will not be deleted.
- virtual void deleteExpiredReclaimedLeases4(const uint32_t) {
+ virtual uint64_t deleteExpiredReclaimedLeases4(const uint32_t) {
isc_throw(NotImplemented, "ConcreteLeaseMgr::deleteExpiredReclaimedLeases4"
" is not implemented");
}
/// @param secs Number of seconds since expiration of leases before
/// they can be removed. Leases which have expired later than this
/// time will not be deleted.
- virtual void deleteExpiredReclaimedLeases6(const uint32_t) {
+ virtual uint64_t deleteExpiredReclaimedLeases6(const uint32_t) {
isc_throw(NotImplemented, "ConcreteLeaseMgr::deleteExpiredReclaimedLeases6"
" is not implemented");
}