From 741035b408ac46209a03bdd1b2596bd92cc59768 Mon Sep 17 00:00:00 2001 From: wxyu Date: Tue, 13 Aug 2019 16:45:39 +0800 Subject: [PATCH] MS-345 Add Node Test Former-commit-id: 71877f19888587a8ede17babdd332e852f587731 --- CHANGELOGS.md | 2 - cpp/CHANGELOG.md | 3 ++ cpp/src/scheduler/resource/Node.h | 18 +++++--- cpp/unittest/scheduler/CMakeLists.txt | 1 + cpp/unittest/scheduler/node_test.cpp | 66 +++++++++++++++++++++++++++ 5 files changed, 82 insertions(+), 8 deletions(-) create mode 100644 cpp/unittest/scheduler/node_test.cpp diff --git a/CHANGELOGS.md b/CHANGELOGS.md index e714be7df0..c8ee3b39fd 100644 --- a/CHANGELOGS.md +++ b/CHANGELOGS.md @@ -19,5 +19,3 @@ Please mark all change in change log and use the ticket from JIRA. - MS-202 - Add Milvus Jenkins project email notification - MS-215 - Add Milvus cluster CI/CD groovy file - MS-277 - Update CUDA Version to V10.1 -- MS-336 - Scheduler interface -- MS-344 - Add TaskTable Test diff --git a/cpp/CHANGELOG.md b/cpp/CHANGELOG.md index 26b0226949..a562c4ea04 100644 --- a/cpp/CHANGELOG.md +++ b/cpp/CHANGELOG.md @@ -3,6 +3,9 @@ Please mark all change in change log and use the ticket from JIRA. # Milvus 0.4.0 (2019-07-28) +- MS-336 - Scheduler interface +- MS-344 - Add TaskTable Test +- MS-345 - Add Node Test ## Bug diff --git a/cpp/src/scheduler/resource/Node.h b/cpp/src/scheduler/resource/Node.h index a32c14ec51..61ba4a343b 100644 --- a/cpp/src/scheduler/resource/Node.h +++ b/cpp/src/scheduler/resource/Node.h @@ -21,6 +21,9 @@ class Node; using NeighbourNodePtr = std::weak_ptr; struct Neighbour { + Neighbour(NeighbourNodePtr nei, Connection conn) + : neighbour_node(nei), connection(conn) {} + NeighbourNodePtr neighbour_node; Connection connection; }; @@ -29,18 +32,18 @@ class Node { public: void AddNeighbour(const NeighbourNodePtr &neighbour_node, Connection &connection) { - Neighbour neighbour{.neighbour_node = neighbour_node, .connection = connection}; - neighbours_.push_back(neighbour); + Neighbour neighbour(neighbour_node, connection); + neighbours_.emplace_back(neighbour); } void - DelNeighbour(NeighbourNodePtr &neighbour_ptr); + DelNeighbour(NeighbourNodePtr neighbour_ptr) {} bool - IsNeighbour(NeighbourNodePtr &neighbour_ptr); + IsNeighbour(NeighbourNodePtr neighbour_ptr) {} - std::vector - GetNeighbours(); + const std::vector & + GetNeighbours() {} public: std::string @@ -50,6 +53,9 @@ private: std::vector neighbours_; }; +using NodePtr = std::shared_ptr; +using NodeWPtr = std::weak_ptr; + } } } diff --git a/cpp/unittest/scheduler/CMakeLists.txt b/cpp/unittest/scheduler/CMakeLists.txt index d62d80f969..589c4f76ac 100644 --- a/cpp/unittest/scheduler/CMakeLists.txt +++ b/cpp/unittest/scheduler/CMakeLists.txt @@ -15,6 +15,7 @@ include_directories(/usr/include/mysql) #add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY) set(scheduler_test_src + ${unittest_srcs} ${scheduler_resource_srcs} ${scheduler_srcs} ${test_srcs} diff --git a/cpp/unittest/scheduler/node_test.cpp b/cpp/unittest/scheduler/node_test.cpp new file mode 100644 index 0000000000..a2249e715b --- /dev/null +++ b/cpp/unittest/scheduler/node_test.cpp @@ -0,0 +1,66 @@ +#include "scheduler/resource/Node.h" +#include + + +using namespace zilliz::milvus::engine; + +class NodeTest : public ::testing::Test { +protected: + void + SetUp() override { + node1_ = std::make_shared(); + node2_ = std::make_shared(); + + auto pcie = Connection("PCIe", 11.0); + + node1_->AddNeighbour(node2_, pcie); + node2_->AddNeighbour(node1_, pcie); + } + + NodePtr node1_; + NodePtr node2_; + NodePtr node3_; + NodePtr node4_; +}; + +TEST_F(NodeTest, add_neighbour) { + ASSERT_EQ(node3_->GetNeighbours().size(), 0); + ASSERT_EQ(node4_->GetNeighbours().size(), 0); + auto pcie = Connection("PCIe", 11.0); + node3_->AddNeighbour(node4_, pcie); + node4_->AddNeighbour(node3_, pcie); + ASSERT_EQ(node3_->GetNeighbours().size(), 1); + ASSERT_EQ(node4_->GetNeighbours().size(), 1); +} + +TEST_F(NodeTest, del_neighbour) { + ASSERT_EQ(node1_->GetNeighbours().size(), 1); + ASSERT_EQ(node2_->GetNeighbours().size(), 1); + ASSERT_EQ(node3_->GetNeighbours().size(), 0); + node1_->DelNeighbour(node2_); + node2_->DelNeighbour(node2_); + node3_->DelNeighbour(node2_); + ASSERT_EQ(node1_->GetNeighbours().size(), 0); + ASSERT_EQ(node2_->GetNeighbours().size(), 1); + ASSERT_EQ(node3_->GetNeighbours().size(), 0); +} + +TEST_F(NodeTest, is_neighbour) { + ASSERT_TRUE(node1_->IsNeighbour(node2_)); + ASSERT_TRUE(node2_->IsNeighbour(node1_)); + + ASSERT_FALSE(node1_->IsNeighbour(node3_)); + ASSERT_FALSE(node2_->IsNeighbour(node3_)); + ASSERT_FALSE(node3_->IsNeighbour(node1_)); + ASSERT_FALSE(node3_->IsNeighbour(node2_)); +} + +TEST_F(NodeTest, get_neighbours) { + auto node1_neighbours = node1_->GetNeighbours(); + ASSERT_EQ(node1_neighbours.size(), 1); + ASSERT_EQ(node1_neighbours[0].neighbour_node.lock(), node2_); + + auto node2_neighbours = node2_->GetNeighbours(); + ASSERT_EQ(node2_neighbours.size(), 1); + ASSERT_EQ(node2_neighbours[0].neighbour_node.lock(), node1_); +}