#include <dhcp/option_string.h>
#include <dhcp/option_vendor.h>
#include <dhcpsrv/database_connection.h>
++#include <dhcpsrv/db_exceptions.h>
+ #include <dhcpsrv/host_mgr.h>
#include <dhcpsrv/host_data_source_factory.h>
- #include <dhcpsrv/tests/generic_host_data_source_unittest.h>
- #include <dhcpsrv/tests/test_utils.h>
+ #include <dhcpsrv/testutils/generic_host_data_source_unittest.h>
#include <dhcpsrv/testutils/schema.h>
-#include <dhcpsrv/lease_mgr.h>
++#include <dhcpsrv/testutils/host_data_source_utils.h>
++#include <util/buffer.h>
#include <boost/foreach.hpp>
- #include <dhcpsrv/testutils/host_data_source_utils.h>
#include <gtest/gtest.h>
--#include <util/buffer.h>
#include <chrono>
#include <cstring>
// The database is initially opened in "read-write" mode. We can
// insert some data to the database.
- HostPtr host = initializeHost6("2001:db8::1", Host::IDENT_DUID, false);
+ HostPtr host = HostDataSourceUtils::initializeHost6("2001:db8::1", Host::IDENT_DUID, false);
ASSERT_TRUE(host);
- ASSERT_NO_THROW(hdsptr_->add(host));
+ bool added = false;
+ ASSERT_NO_THROW(added = hdsptr_->add(host));
+ EXPECT_TRUE(added);
// Subnet id will be used in queries to the database.
SubnetID subnet_id = host->getIPv6SubnetID();
ASSERT_TRUE(hdsptr_);
// Let's create a couple of hosts...
- HostPtr host1 = initializeHost4("192.0.2.1", id);
- HostPtr host2 = initializeHost4("192.0.2.2", id);
- HostPtr host3 = initializeHost4("192.0.2.3", id);
- HostPtr host4 = initializeHost4("192.0.2.4", id);
+ HostPtr host1 = HostDataSourceUtils::initializeHost4("192.0.2.1", id);
+ HostPtr host2 = HostDataSourceUtils::initializeHost4("192.0.2.2", id);
+ HostPtr host3 = HostDataSourceUtils::initializeHost4("192.0.2.3", id);
+ HostPtr host4 = HostDataSourceUtils::initializeHost4("192.0.2.4", id);
// ... and add them to the data source.
- ASSERT_NO_THROW(hdsptr_->add(host1));
- ASSERT_NO_THROW(hdsptr_->add(host2));
- ASSERT_NO_THROW(hdsptr_->add(host3));
- ASSERT_NO_THROW(hdsptr_->add(host4));
+ bool added = false;
+ ASSERT_NO_THROW(added = hdsptr_->add(host1));
+ EXPECT_TRUE(added);
+ ASSERT_NO_THROW(added = hdsptr_->add(host2));
+ EXPECT_TRUE(added);
+ ASSERT_NO_THROW(added = hdsptr_->add(host3));
+ EXPECT_TRUE(added);
+ ASSERT_NO_THROW(added = hdsptr_->add(host4));
+ EXPECT_TRUE(added);
SubnetID subnet1 = host1->getIPv4SubnetID();
SubnetID subnet2 = host2->getIPv4SubnetID();
ASSERT_TRUE(host1->getHWAddress());
ASSERT_TRUE(host2->getHWAddress());
- compareHwaddrs(host1, host2, false);
+ HostDataSourceUtils::compareHwaddrs(host1, host2, false);
// Try to add both of them to the host data source.
- ASSERT_NO_THROW(hdsptr_->add(host1));
- ASSERT_NO_THROW(hdsptr_->add(host2));
+ bool added = false;
+ ASSERT_NO_THROW(added = hdsptr_->add(host1));
+ EXPECT_TRUE(added);
+ ASSERT_NO_THROW(added = hdsptr_->add(host2));
+ EXPECT_TRUE(added);
SubnetID subnet1 = host1->getIPv6SubnetID();
SubnetID subnet2 = host2->getIPv6SubnetID();
ASSERT_TRUE(host1->getDuid());
ASSERT_TRUE(host2->getDuid());
- compareDuids(host1, host2, false);
+ HostDataSourceUtils::compareDuids(host1, host2, false);
// Try to add both of them to the host data source.
- ASSERT_NO_THROW(hdsptr_->add(host1));
- ASSERT_NO_THROW(hdsptr_->add(host2));
+ bool added = false;
+ ASSERT_NO_THROW(added = hdsptr_->add(host1));
+ EXPECT_TRUE(added);
+ ASSERT_NO_THROW(added = hdsptr_->add(host2));
+ EXPECT_TRUE(added);
SubnetID subnet1 = host1->getIPv6SubnetID();
SubnetID subnet2 = host2->getIPv6SubnetID();
ASSERT_TRUE(hdsptr_);
// Let's create a couple of hosts...
- HostPtr host1 = initializeHost6("2001:db8::1", id, prefix);
- HostPtr host2 = initializeHost6("2001:db8::2", id, prefix);
- HostPtr host3 = initializeHost6("2001:db8::3", id, prefix);
- HostPtr host4 = initializeHost6("2001:db8::4", id, prefix);
+ HostPtr host1 = HostDataSourceUtils::initializeHost6("2001:db8::1", id, prefix);
+ HostPtr host2 = HostDataSourceUtils::initializeHost6("2001:db8::2", id, prefix);
+ HostPtr host3 = HostDataSourceUtils::initializeHost6("2001:db8::3", id, prefix);
+ HostPtr host4 = HostDataSourceUtils::initializeHost6("2001:db8::4", id, prefix);
// ... and add them to the data source.
- ASSERT_NO_THROW(hdsptr_->add(host1));
- ASSERT_NO_THROW(hdsptr_->add(host2));
- ASSERT_NO_THROW(hdsptr_->add(host3));
- ASSERT_NO_THROW(hdsptr_->add(host4));
+ bool added = false;
+ ASSERT_NO_THROW(added = hdsptr_->add(host1));
+ EXPECT_TRUE(added);
+ ASSERT_NO_THROW(added = hdsptr_->add(host2));
+ EXPECT_TRUE(added);
+ ASSERT_NO_THROW(added = hdsptr_->add(host3));
+ EXPECT_TRUE(added);
+ ASSERT_NO_THROW(added = hdsptr_->add(host4));
+ EXPECT_TRUE(added);
// Are we talking about addresses or prefixes?
uint8_t len = prefix ? 64 : 128;
ASSERT_TRUE(hdsptr_);
// Let's create a couple of hosts...
- HostPtr host1 = initializeHost6("2001:db8:1::", Host::IDENT_DUID, true);
- HostPtr host2 = initializeHost6("2001:db8:2::", Host::IDENT_DUID, true);
- HostPtr host3 = initializeHost6("2001:db8:3::", Host::IDENT_DUID, true);
- HostPtr host4 = initializeHost6("2001:db8:4::", Host::IDENT_DUID, true);
+ HostPtr host1 = HostDataSourceUtils::initializeHost6("2001:db8:1::", Host::IDENT_DUID, true);
+ HostPtr host2 = HostDataSourceUtils::initializeHost6("2001:db8:2::", Host::IDENT_DUID, true);
+ HostPtr host3 = HostDataSourceUtils::initializeHost6("2001:db8:3::", Host::IDENT_DUID, true);
+ HostPtr host4 = HostDataSourceUtils::initializeHost6("2001:db8:4::", Host::IDENT_DUID, true);
// ... and add them to the data source.
- ASSERT_NO_THROW(hdsptr_->add(host1));
- ASSERT_NO_THROW(hdsptr_->add(host2));
- ASSERT_NO_THROW(hdsptr_->add(host3));
- ASSERT_NO_THROW(hdsptr_->add(host4));
+ bool added = false;
+ ASSERT_NO_THROW(added = hdsptr_->add(host1));
+ EXPECT_TRUE(added);
+ ASSERT_NO_THROW(added = hdsptr_->add(host2));
+ EXPECT_TRUE(added);
+ ASSERT_NO_THROW(added = hdsptr_->add(host3));
+ EXPECT_TRUE(added);
+ ASSERT_NO_THROW(added = hdsptr_->add(host4));
+ EXPECT_TRUE(added);
// And then try to retrieve them back.
ConstHostPtr from_hds1 = hdsptr_->get6(host1->getIPv6SubnetID(), IOAddress("2001:db8:1::"));
ASSERT_TRUE(hdsptr_);
// Create a host reservations.
- HostPtr host = initializeHost6("2001:db8::1", Host::IDENT_DUID, true);
+ HostPtr host = HostDataSourceUtils::initializeHost6("2001:db8::1", Host::IDENT_DUID, true);
// Add this reservation once.
- ASSERT_NO_THROW(hdsptr_->add(host));
+ bool added = false;
+ ASSERT_NO_THROW(added = hdsptr_->add(host));
+ EXPECT_TRUE(added);
// Then try to add it again, it should throw an exception.
ASSERT_THROW(hdsptr_->add(host), DuplicateEntry);
ASSERT_TRUE(hdsptr_);
// Create a host reservations.
- HostPtr host = initializeHost6("2001:db8::1", Host::IDENT_HWADDR, true);
+ HostPtr host = HostDataSourceUtils::initializeHost6("2001:db8::1", Host::IDENT_HWADDR, true);
// Add this reservation once.
- ASSERT_NO_THROW(hdsptr_->add(host));
+ bool added = false;
+ ASSERT_NO_THROW(added = hdsptr_->add(host));
+ EXPECT_TRUE(added);
// Then try to add it again, it should throw an exception.
ASSERT_THROW(hdsptr_->add(host), DuplicateEntry);
ASSERT_TRUE(hdsptr_);
// Create a host reservations.
- HostPtr host = initializeHost4("192.0.2.1", Host::IDENT_DUID);
+ HostPtr host = HostDataSourceUtils::initializeHost4("192.0.2.1", Host::IDENT_DUID);
// Add this reservation once.
- ASSERT_NO_THROW(hdsptr_->add(host));
+ bool added = false;
+ ASSERT_NO_THROW(added = hdsptr_->add(host));
+ EXPECT_TRUE(added);
// Then try to add it again, it should throw an exception.
ASSERT_THROW(hdsptr_->add(host), DuplicateEntry);
// Create another host with zero IPv4 address. Adding this host to the
// database should be successful because zero addresses are not counted
// in the unique index.
- HostPtr host2 = initializeHost4("0.0.0.0", Host::IDENT_HWADDR);
+ HostPtr host2 = HostDataSourceUtils::initializeHost4("0.0.0.0", Host::IDENT_HWADDR);
host2->setIPv4SubnetID(1);
host2->setIPv6SubnetID(0);
- ASSERT_NO_THROW(hdsptr_->add(host2));
+ ASSERT_NO_THROW(added = hdsptr_->add(host2));
+ EXPECT_TRUE(added);
}
void