]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[709-cb_cmds-add-support-for-commands-to-manage-the-servers] Improved server support
authorFrancis Dupont <fdupont@isc.org>
Mon, 1 Jul 2019 07:08:12 +0000 (09:08 +0200)
committerFrancis Dupont <fdupont@isc.org>
Wed, 3 Jul 2019 23:10:51 +0000 (01:10 +0200)
src/lib/dhcpsrv/testutils/test_config_backend_dhcp4.cc
src/lib/dhcpsrv/testutils/test_config_backend_dhcp6.cc

index 650542cce9cb1f7ea683ff1b00c1828718994c8d..cb92280a1f057f50d53d7786089b9de95972ae8c 100644 (file)
@@ -188,12 +188,12 @@ TestConfigBackendDHCPv4::getModifiedOptions4(const db::ServerSelector& /* server
 StampedValuePtr
 TestConfigBackendDHCPv4::getGlobalParameter4(const db::ServerSelector& server_selector,
                                              const std::string& name) const {
+    auto tags = server_selector.getTags();
     auto candidate = StampedValuePtr();
     const auto& index = globals_.get<StampedValueNameIndexTag>();
     auto global_range = index.equal_range(name);
     for (auto global_it = global_range.first; global_it != global_range.second;
          ++global_it) {
-        auto tags = server_selector.getTags();
         for (auto tag : tags) {
             if ((*global_it)->hasServerTag(ServerTag(tag))) {
                 return (*global_it);
@@ -209,18 +209,50 @@ TestConfigBackendDHCPv4::getGlobalParameter4(const db::ServerSelector& server_se
 
 
 StampedValueCollection
-TestConfigBackendDHCPv4::getAllGlobalParameters4(const db::ServerSelector& /* server_selector */) const {
-    return (globals_);
+TestConfigBackendDHCPv4::getAllGlobalParameters4(const db::ServerSelector& server_selector) const {
+    auto tags = server_selector.getTags();
+    StampedValueCollection globals;
+    for (auto global : globals_) {
+        bool got = false;
+        for (auto tag : tags) {
+            if (global->hasServerTag(ServerTag(tag))) {
+                globals.insert(global);
+                got = true;
+                break;
+            }
+        }
+        if (got) {
+            continue;
+        }
+        if (global->hasAllServerTag()) {
+            globals.insert(global);
+        }
+    }
+    return (globals);
 }
 
 StampedValueCollection
-TestConfigBackendDHCPv4::getModifiedGlobalParameters4(const db::ServerSelector& /* server_selector */,
+TestConfigBackendDHCPv4::getModifiedGlobalParameters4(const db::ServerSelector& server_selector,
                                                       const boost::posix_time::ptime& modification_time) const {
-    const auto& index = globals_.get<StampedValueModificationTimeIndexTag>();
+    auto tags = server_selector.getTags();
     StampedValueCollection globals;
+    const auto& index = globals_.get<StampedValueModificationTimeIndexTag>();
     auto lb = index.lower_bound(modification_time);
     for (auto global = lb; global != index.end(); ++global) {
-        globals.insert(*global);
+        bool got = false;
+        for (auto tag : tags) {
+            if ((*global)->hasServerTag(ServerTag(tag))) {
+                globals.insert(*global);
+                got = true;
+                break;
+            }
+        }
+        if (got) {
+            continue;
+        }
+        if ((*global)->hasAllServerTag()) {
+            globals.insert(*global);
+        }
     }
     return (globals);
 }
@@ -571,10 +603,18 @@ TestConfigBackendDHCPv4::deleteGlobalParameter4(const db::ServerSelector& server
 }
 
 uint64_t
-TestConfigBackendDHCPv4::deleteAllGlobalParameters4(const db::ServerSelector& /* server_selector */) {
-    auto globals_size = globals_.size();
-    globals_.clear();
-    return (globals_size);
+TestConfigBackendDHCPv4::deleteAllGlobalParameters4(const db::ServerSelector& server_selector) {
+    uint64_t cnt = 0;
+    for (auto global_it = globals_.begin(); global_it != globals_.end(); ) {
+        auto value = *global_it;
+        if (value->hasServerTag(ServerTag(getServerTag(server_selector)))) {
+            global_it = globals_.erase(global_it);
+            cnt++;
+        } else {
+            ++global_it;
+        }
+    }
+    return (cnt);
 }
 
 uint64_t
index 383c4cd6e91fe888afa7942b5f89a024502ac8df..787d31f8ebbfe0fc890888a7320fa9dc29b632ef 100644 (file)
@@ -187,12 +187,12 @@ TestConfigBackendDHCPv6::getModifiedOptions6(const db::ServerSelector& /* server
 StampedValuePtr
 TestConfigBackendDHCPv6::getGlobalParameter6(const db::ServerSelector& server_selector,
                                              const std::string& name) const {
+    auto tags = server_selector.getTags();
     auto candidate = StampedValuePtr();
     const auto& index = globals_.get<StampedValueNameIndexTag>();
     auto global_range = index.equal_range(name);
     for (auto global_it = global_range.first; global_it != global_range.second;
          ++global_it) {
-        auto tags = server_selector.getTags();
         for (auto tag : tags) {
             if ((*global_it)->hasServerTag(ServerTag(tag))) {
                 return (*global_it);
@@ -208,18 +208,50 @@ TestConfigBackendDHCPv6::getGlobalParameter6(const db::ServerSelector& server_se
 
 
 StampedValueCollection
-TestConfigBackendDHCPv6::getAllGlobalParameters6(const db::ServerSelector& /* server_selector */) const {
-    return (globals_);
+TestConfigBackendDHCPv6::getAllGlobalParameters6(const db::ServerSelector& server_selector) const {
+    auto tags = server_selector.getTags();
+    StampedValueCollection globals;
+    for (auto global : globals_) {
+        bool got = false;
+        for (auto tag : tags) {
+            if (global->hasServerTag(ServerTag(tag))) {
+                globals.insert(global);
+                got = true;
+                break;
+            }
+        }
+        if (got) {
+            continue;
+        }
+        if (global->hasAllServerTag()) {
+            globals.insert(global);
+        }
+    }
+    return (globals);
 }
 
 StampedValueCollection
-TestConfigBackendDHCPv6::getModifiedGlobalParameters6(const db::ServerSelector& /* server_selector */,
+TestConfigBackendDHCPv6::getModifiedGlobalParameters6(const db::ServerSelector& server_selector,
                                                       const boost::posix_time::ptime& modification_time) const {
-    const auto& index = globals_.get<StampedValueModificationTimeIndexTag>();
+    auto tags = server_selector.getTags();
     StampedValueCollection globals;
+    const auto& index = globals_.get<StampedValueModificationTimeIndexTag>();
     auto lb = index.lower_bound(modification_time);
     for (auto global = lb; global != index.end(); ++global) {
-        globals.insert(*global);
+        bool got = false;
+        for (auto tag : tags) {
+            if ((*global)->hasServerTag(ServerTag(tag))) {
+                globals.insert(*global);
+                got = true;
+                break;
+            }
+        }
+        if (got) {
+            continue;
+        }
+        if ((*global)->hasAllServerTag()) {
+            globals.insert(*global);
+        }
     }
     return (globals);
 }
@@ -608,10 +640,18 @@ TestConfigBackendDHCPv6::deleteGlobalParameter6(const db::ServerSelector& server
 }
 
 uint64_t
-TestConfigBackendDHCPv6::deleteAllGlobalParameters6(const db::ServerSelector& /* server_selector */) {
-    auto globals_size = globals_.size();
-    globals_.clear();
-    return (globals_size);
+TestConfigBackendDHCPv6::deleteAllGlobalParameters6(const db::ServerSelector& server_selector) {
+    uint64_t cnt = 0;
+    for (auto global_it = globals_.begin(); global_it != globals_.end(); ) {
+        auto value = *global_it;
+        if (value->hasServerTag(ServerTag(getServerTag(server_selector)))) {
+            global_it = globals_.erase(global_it);
+            cnt++;
+        } else {
+            ++global_it;
+        }
+    }
+    return (cnt);
 }
 
 uint64_t