From 169320d27b07052d6ffa08729603b703338dfa77 Mon Sep 17 00:00:00 2001 From: gvolfing Date: Mon, 8 Aug 2022 17:59:39 +0200 Subject: [PATCH] Move RsmClient into a separate folder and header --- tests/simulation/CMakeLists.txt | 2 +- tests/simulation/raft.cpp | 131 ++++++++++++++++---------------- 2 files changed, 67 insertions(+), 66 deletions(-) diff --git a/tests/simulation/CMakeLists.txt b/tests/simulation/CMakeLists.txt index b44dacb36..15c426e8c 100644 --- a/tests/simulation/CMakeLists.txt +++ b/tests/simulation/CMakeLists.txt @@ -31,4 +31,4 @@ add_simulation_test(raft.cpp address) add_simulation_test(trial_query_storage/query_storage_test.cpp address) -add_simulation_test(sharded_map.cpp address) +#add_simulation_test(sharded_map.cpp address) diff --git a/tests/simulation/raft.cpp b/tests/simulation/raft.cpp index 29f0a97dd..6f6d8fb08 100644 --- a/tests/simulation/raft.cpp +++ b/tests/simulation/raft.cpp @@ -22,6 +22,7 @@ #include "io/rsm/raft.hpp" #include "io/simulator/simulator.hpp" #include "io/simulator/simulator_transport.hpp" +#include "utils/rsm_client.hpp" using memgraph::io::Address; using memgraph::io::Duration; @@ -116,90 +117,90 @@ class TestState { } }; -template -class RsmClient { - using ServerPool = std::vector
; +// template +// class RsmClient { +// using ServerPool = std::vector
; - IoImpl io_; - Address leader_; +// IoImpl io_; +// Address leader_; - std::mt19937 cli_rng_{0}; - ServerPool server_addrs_; +// std::mt19937 cli_rng_{0}; +// ServerPool server_addrs_; - template - std::optional CheckForCorrectLeader(ResponseT response) { - if (response.retry_leader) { - MG_ASSERT(!response.success, "retry_leader should never be set for successful responses"); - leader_ = response.retry_leader.value(); - std::cout << "client redirected to leader server " << leader_.last_known_port << std::endl; - } else if (!response.success) { - std::uniform_int_distribution addr_distrib(0, (server_addrs_.size() - 1)); - size_t addr_index = addr_distrib(cli_rng_); - leader_ = server_addrs_[addr_index]; +// template +// std::optional CheckForCorrectLeader(ResponseT response) { +// if (response.retry_leader) { +// MG_ASSERT(!response.success, "retry_leader should never be set for successful responses"); +// leader_ = response.retry_leader.value(); +// std::cout << "client redirected to leader server " << leader_.last_known_port << std::endl; +// } else if (!response.success) { +// std::uniform_int_distribution addr_distrib(0, (server_addrs_.size() - 1)); +// size_t addr_index = addr_distrib(cli_rng_); +// leader_ = server_addrs_[addr_index]; - std::cout << "client NOT redirected to leader server, trying a random one at index " << addr_index - << " with port " << leader_.last_known_port << std::endl; - return {}; - } +// std::cout << "client NOT redirected to leader server, trying a random one at index " << addr_index +// << " with port " << leader_.last_known_port << std::endl; +// return {}; +// } - return response; - } +// return response; +// } - public: - RsmClient(IoImpl &&io, Address &&leader, ServerPool &&server_addrs) - : io_{io}, leader_{leader}, server_addrs_{server_addrs} {} +// public: +// RsmClient(IoImpl &&io, Address &&leader, ServerPool &&server_addrs) +// : io_{io}, leader_{leader}, server_addrs_{server_addrs} {} - RsmClient() = delete; +// RsmClient() = delete; - std::optional> SendWriteRequest(WriteRequestT req) { - WriteRequest client_req; - client_req.operation = req; +// std::optional> SendWriteRequest(WriteRequestT req) { +// WriteRequest client_req; +// client_req.operation = req; - std::cout << "client sending CasRequest to Leader " << leader_.last_known_port << std::endl; - ResponseFuture> response_future = - io_.template Request, WriteResponse>(leader_, client_req); - ResponseResult> response_result = std::move(response_future).Wait(); +// std::cout << "client sending CasRequest to Leader " << leader_.last_known_port << std::endl; +// ResponseFuture> response_future = +// io_.template Request, WriteResponse>(leader_, client_req); +// ResponseResult> response_result = std::move(response_future).Wait(); - if (response_result.HasError()) { - std::cout << "client timed out while trying to communicate with leader server " << std::endl; - // continue; - return std::nullopt; - } +// if (response_result.HasError()) { +// std::cout << "client timed out while trying to communicate with leader server " << std::endl; +// // continue; +// return std::nullopt; +// } - ResponseEnvelope> response_envelope = response_result.GetValue(); - WriteResponse write_response = response_envelope.message; +// ResponseEnvelope> response_envelope = response_result.GetValue(); +// WriteResponse write_response = response_envelope.message; - return CheckForCorrectLeader(write_response); - } +// return CheckForCorrectLeader(write_response); +// } - std::optional> SendReadRequest(ReadRequestT req) { - ReadRequest read_req; - read_req.operation = req; +// std::optional> SendReadRequest(ReadRequestT req) { +// ReadRequest read_req; +// read_req.operation = req; - std::cout << "client sending GetRequest to Leader " << leader_.last_known_port << std::endl; - ResponseFuture> get_response_future = - io_.template Request, ReadResponse>(leader_, read_req); +// std::cout << "client sending GetRequest to Leader " << leader_.last_known_port << std::endl; +// ResponseFuture> get_response_future = +// io_.template Request, ReadResponse>(leader_, read_req); - // receive response - ResponseResult> get_response_result = std::move(get_response_future).Wait(); +// // receive response +// ResponseResult> get_response_result = std::move(get_response_future).Wait(); - if (get_response_result.HasError()) { - std::cout << "client timed out while trying to communicate with leader server " << std::endl; - return {}; - } +// if (get_response_result.HasError()) { +// std::cout << "client timed out while trying to communicate with leader server " << std::endl; +// return {}; +// } - ResponseEnvelope> get_response_envelope = get_response_result.GetValue(); - ReadResponse read_get_response = get_response_envelope.message; +// ResponseEnvelope> get_response_envelope = get_response_result.GetValue(); +// ReadResponse read_get_response = get_response_envelope.message; - if (!read_get_response.success) { - // sent to a non-leader - return {}; - } +// if (!read_get_response.success) { +// // sent to a non-leader +// return {}; +// } - return CheckForCorrectLeader(read_get_response); - } -}; +// return CheckForCorrectLeader(read_get_response); +// } +// }; template void RunRaft(Raft server) {