/// @brief Constructor.
Network()
- : iface_name_(), client_class_(""), t1_(), t2_(), valid_(),
- host_reservation_mode_(HR_ALL), cfg_option_(new CfgOption()),
- calculate_tee_times_(false), t1_percent_(0.0), t2_percent_(0.0) {
+ : iface_name_(), client_class_(), t1_(), t2_(), valid_(),
+ host_reservation_mode_(HR_ALL, true), cfg_option_(new CfgOption()),
+ calculate_tee_times_(), t1_percent_(), t2_percent_() {
}
/// @brief Virtual destructor.
/// @brief Constructor.
Network4()
- : Network(), match_client_id_(true), authoritative_(false) {
+ : Network(), match_client_id_(true, true), authoritative_() {
}
/// @brief Returns the flag indicating if the client identifiers should
/// @brief Constructor.
Network6()
- : Network(), preferred_(0), interface_id_(), rapid_commit_(false) {
+ : Network(), preferred_(), interface_id_(), rapid_commit_() {
}
/// @brief Returns preferred lifetime (in seconds)
const Triplet<uint32_t>& t2,
const Triplet<uint32_t>& valid_lifetime,
const SubnetID id)
- : Subnet(prefix, length, id), Network4(),
- siaddr_(IOAddress("0.0.0.0")) {
+ : Subnet(prefix, length, id), Network4(), siaddr_() {
if (!prefix.isV4()) {
isc_throw(BadValue, "Non IPv4 prefix " << prefix.toText()
<< " specified in subnet4");
-// Copyright (C) 2017-2018 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2017-2019 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
namespace {
+// This test verifies the default values set for the shared
+// networks and verifies that the optional values are unspecified.
+TEST(SharedNetwork4Test, defaults) {
+ SharedNetwork4Ptr network(new SharedNetwork4("frog"));
+ EXPECT_TRUE(network->getIface().unspecified());
+ EXPECT_TRUE(network->getIface().empty());
+
+ EXPECT_TRUE(network->getClientClass().unspecified());
+ EXPECT_TRUE(network->getClientClass().empty());
+
+ EXPECT_TRUE(network->getValid().unspecified());
+ EXPECT_EQ(0, network->getValid().get());
+
+ EXPECT_TRUE(network->getT1().unspecified());
+ EXPECT_EQ(0, network->getT1().get());
+
+ EXPECT_TRUE(network->getT2().unspecified());
+ EXPECT_EQ(0, network->getT2().get());
+
+ EXPECT_TRUE(network->getHostReservationMode().unspecified());
+ EXPECT_EQ(Network::HR_ALL, network->getHostReservationMode().get());
+
+ EXPECT_TRUE(network->getCalculateTeeTimes().unspecified());
+ EXPECT_FALSE(network->getCalculateTeeTimes().get());
+
+ EXPECT_TRUE(network->getT1Percent().unspecified());
+ EXPECT_EQ(0.0, network->getT1Percent().get());
+
+ EXPECT_TRUE(network->getT2Percent().unspecified());
+ EXPECT_EQ(0.0, network->getT2Percent().get());
+
+ EXPECT_TRUE(network->getMatchClientId().unspecified());
+ EXPECT_TRUE(network->getMatchClientId().get());
+
+ EXPECT_TRUE(network->getAuthoritative().unspecified());
+ EXPECT_FALSE(network->getAuthoritative().get());
+}
+
// This test verifies that shared network can be given a name and that
// this name can be retrieved.
TEST(SharedNetwork4Test, getName) {
ASSERT_EQ(0, network->getAllSubnets()->size());
}
+// This test verifies the default values set for the shared
+// networks and verifies that the optional values are unspecified.
+TEST(SharedNetwork6Test, defaults) {
+ SharedNetwork6Ptr network(new SharedNetwork6("frog"));
+ EXPECT_TRUE(network->getIface().unspecified());
+ EXPECT_TRUE(network->getIface().empty());
+
+ EXPECT_TRUE(network->getClientClass().unspecified());
+ EXPECT_TRUE(network->getClientClass().empty());
+
+ EXPECT_TRUE(network->getValid().unspecified());
+ EXPECT_EQ(0, network->getValid().get());
+
+ EXPECT_TRUE(network->getT1().unspecified());
+ EXPECT_EQ(0, network->getT1().get());
+
+ EXPECT_TRUE(network->getT2().unspecified());
+ EXPECT_EQ(0, network->getT2().get());
+
+ EXPECT_TRUE(network->getHostReservationMode().unspecified());
+ EXPECT_EQ(Network::HR_ALL, network->getHostReservationMode().get());
+
+ EXPECT_TRUE(network->getCalculateTeeTimes().unspecified());
+ EXPECT_FALSE(network->getCalculateTeeTimes().get());
+
+ EXPECT_TRUE(network->getT1Percent().unspecified());
+ EXPECT_EQ(0.0, network->getT1Percent().get());
+
+ EXPECT_TRUE(network->getT2Percent().unspecified());
+ EXPECT_EQ(0.0, network->getT2Percent().get());
+
+ EXPECT_TRUE(network->getPreferred().unspecified());
+ EXPECT_EQ(0, network->getPreferred().get());
+
+ EXPECT_TRUE(network->getRapidCommit().unspecified());
+ EXPECT_FALSE(network->getRapidCommit().get());
+}
+
// This test verifies that shared network can be given a name and that
// this name can be retrieved.
TEST(SharedNetwork6Test, getName) {
BadValue); // IPv6 addresses are not allowed in Subnet4
}
+// This test verifies the default values set for the subnets and verifies
+// that the optional values are unspecified.
+TEST(Subnet4Test, defaults) {
+ Triplet<uint32_t> t1;
+ Triplet<uint32_t> t2;
+ Triplet<uint32_t> valid_lft;
+ Subnet4 subnet(IOAddress("192.0.2.0"), 24, t1, t2, valid_lft);
+
+ EXPECT_TRUE(subnet.getIface().unspecified());
+ EXPECT_TRUE(subnet.getIface().empty());
+
+ EXPECT_TRUE(subnet.getClientClass().unspecified());
+ EXPECT_TRUE(subnet.getClientClass().empty());
+
+ EXPECT_TRUE(subnet.getValid().unspecified());
+ EXPECT_EQ(0, subnet.getValid().get());
+
+ EXPECT_TRUE(subnet.getT1().unspecified());
+ EXPECT_EQ(0, subnet.getT1().get());
+
+ EXPECT_TRUE(subnet.getT2().unspecified());
+ EXPECT_EQ(0, subnet.getT2().get());
+
+ EXPECT_TRUE(subnet.getHostReservationMode().unspecified());
+ EXPECT_EQ(Network::HR_ALL, subnet.getHostReservationMode().get());
+
+ EXPECT_TRUE(subnet.getCalculateTeeTimes().unspecified());
+ EXPECT_FALSE(subnet.getCalculateTeeTimes().get());
+
+ EXPECT_TRUE(subnet.getT1Percent().unspecified());
+ EXPECT_EQ(0.0, subnet.getT1Percent().get());
+
+ EXPECT_TRUE(subnet.getT2Percent().unspecified());
+ EXPECT_EQ(0.0, subnet.getT2Percent().get());
+
+ EXPECT_TRUE(subnet.getMatchClientId().unspecified());
+ EXPECT_TRUE(subnet.getMatchClientId().get());
+
+ EXPECT_TRUE(subnet.getAuthoritative().unspecified());
+ EXPECT_FALSE(subnet.getAuthoritative().get());
+
+ EXPECT_TRUE(subnet.getSiaddr().unspecified());
+ EXPECT_TRUE(subnet.getSiaddr().get().isV4Zero());
+
+ EXPECT_TRUE(subnet.getSname().unspecified());
+ EXPECT_TRUE(subnet.getSname().empty());
+
+ EXPECT_TRUE(subnet.getFilename().unspecified());
+ EXPECT_TRUE(subnet.getFilename().empty());
+}
+
// Checks that the subnet id can be either autogenerated or set to an
// arbitrary value through the constructor.
TEST(Subnet4Test, subnetID) {
BadValue); // IPv4 addresses are not allowed in Subnet6
}
+// This test verifies the default values set for the shared
+// networks and verifies that the optional values are unspecified.
+TEST(SharedNetwork6Test, defaults) {
+ Triplet<uint32_t> t1;
+ Triplet<uint32_t> t2;
+ Triplet<uint32_t> preferred_lft;
+ Triplet<uint32_t> valid_lft;
+ Subnet6 subnet(IOAddress("2001:db8:1::"), 64, t1, t2, preferred_lft,
+ valid_lft);
+
+ EXPECT_TRUE(subnet.getIface().unspecified());
+ EXPECT_TRUE(subnet.getIface().empty());
+
+ EXPECT_TRUE(subnet.getClientClass().unspecified());
+ EXPECT_TRUE(subnet.getClientClass().empty());
+
+ EXPECT_TRUE(subnet.getValid().unspecified());
+ EXPECT_EQ(0, subnet.getValid().get());
+
+ EXPECT_TRUE(subnet.getT1().unspecified());
+ EXPECT_EQ(0, subnet.getT1().get());
+
+ EXPECT_TRUE(subnet.getT2().unspecified());
+ EXPECT_EQ(0, subnet.getT2().get());
+
+ EXPECT_TRUE(subnet.getHostReservationMode().unspecified());
+ EXPECT_EQ(Network::HR_ALL, subnet.getHostReservationMode().get());
+
+ EXPECT_TRUE(subnet.getCalculateTeeTimes().unspecified());
+ EXPECT_FALSE(subnet.getCalculateTeeTimes().get());
+
+ EXPECT_TRUE(subnet.getT1Percent().unspecified());
+ EXPECT_EQ(0.0, subnet.getT1Percent().get());
+
+ EXPECT_TRUE(subnet.getT2Percent().unspecified());
+ EXPECT_EQ(0.0, subnet.getT2Percent().get());
+
+ EXPECT_TRUE(subnet.getPreferred().unspecified());
+ EXPECT_EQ(0, subnet.getPreferred().get());
+
+ EXPECT_TRUE(subnet.getRapidCommit().unspecified());
+ EXPECT_FALSE(subnet.getRapidCommit().get());
+}
+
// Checks that the subnet id can be either autogenerated or set to an
// arbitrary value through the constructor.
TEST(Subnet6Test, subnetID) {
/// @tparam A Type of the value to be assigned. Typically this is @c T, but
/// may also be a type that can be cast to @c T.
/// @param value value to be assigned.
+ /// @param unspecified initial state. Default is "unspecified".
template<typename A>
- Optional(A value)
- : default_(value), unspecified_(false) {
+ Optional(A value, const bool unspecified = false)
+ : default_(value), unspecified_(unspecified) {
}
/// @brief Retrieves the encapsulated value.
Optional<int> value2;
EXPECT_EQ(0, value2.get());
EXPECT_TRUE(value2.unspecified());
+
+ Optional<bool> value3(true, true);
+ EXPECT_TRUE(value3.get());
+ EXPECT_TRUE(value3.unspecified());
}
// This test checks if the constructors for a string value