Merge branch 'T0879-MG-transport-prototype' of github.com:memgraph/memgraph into T0941-MG-implement-basic-raft-version
This commit is contained in:
@@ -14,7 +14,7 @@ function(add_simulation_test test_cpp san)
|
||||
# used to help create two targets of the same name even though CMake
|
||||
# requires unique logical target names
|
||||
set_target_properties(${target_name} PROPERTIES OUTPUT_NAME ${exec_name})
|
||||
target_link_libraries(${target_name} gtest gmock mg-utils mg-io mg-io-simulator mg-io-rsm)
|
||||
target_link_libraries(${target_name} gtest gmock mg-utils mg-io mg-io-simulator)
|
||||
|
||||
# sanitize
|
||||
target_compile_options(${target_name} PRIVATE -fsanitize=${san})
|
||||
@@ -25,10 +25,6 @@ function(add_simulation_test test_cpp san)
|
||||
add_dependencies(memgraph__simulation ${target_name})
|
||||
endfunction(add_simulation_test)
|
||||
|
||||
add_simulation_test(future.cpp thread)
|
||||
|
||||
add_simulation_test(basic_request.cpp address)
|
||||
|
||||
add_simulation_test(raft.cpp address)
|
||||
|
||||
add_simulation_test(trial_query_storage/query_storage_test.cpp address)
|
||||
|
||||
@@ -30,11 +30,11 @@ struct CounterResponse {
|
||||
};
|
||||
|
||||
void run_server(Io<SimulatorTransport> io) {
|
||||
uint64_t highest_seen;
|
||||
uint64_t highest_seen = 0;
|
||||
|
||||
while (!io.ShouldShutDown()) {
|
||||
std::cout << "[SERVER] Is receiving..." << std::endl;
|
||||
auto request_result = io.ReceiveWithTimeout<CounterRequest>(100000);
|
||||
auto request_result = io.Receive<CounterRequest>();
|
||||
if (request_result.HasError()) {
|
||||
std::cout << "[SERVER] Error, continue" << std::endl;
|
||||
continue;
|
||||
@@ -71,8 +71,8 @@ int main() {
|
||||
// send request
|
||||
CounterRequest cli_req;
|
||||
cli_req.proposal = i;
|
||||
auto res_f = cli_io.RequestWithTimeout<CounterRequest, CounterResponse>(srv_addr, cli_req, 1000);
|
||||
auto res_rez = res_f.Wait();
|
||||
auto res_f = cli_io.Request<CounterRequest, CounterResponse>(srv_addr, cli_req);
|
||||
auto res_rez = std::move(res_f).Wait();
|
||||
if (!res_rez.HasError()) {
|
||||
std::cout << "[CLIENT] Got a valid response" << std::endl;
|
||||
auto env = res_rez.GetValue();
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
// Copyright 2022 Memgraph Ltd.
|
||||
//
|
||||
// Use of this software is governed by the Business Source License
|
||||
// included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source
|
||||
// License, and you may not use this file except in compliance with the Business Source License.
|
||||
//
|
||||
// As of the Change Date specified in that file, in accordance with
|
||||
// the Business Source License, use of this software will be governed
|
||||
// by the Apache License, Version 2.0, included in the file
|
||||
// licenses/APL.txt.
|
||||
|
||||
#include <string>
|
||||
#include <thread>
|
||||
|
||||
#include "io/future.hpp"
|
||||
#include "utils/logging.hpp"
|
||||
|
||||
using namespace memgraph::io;
|
||||
|
||||
void Fill(Promise<std::string> promise_1) { promise_1.Fill("success"); }
|
||||
|
||||
void Wait(Future<std::string> future_1, Promise<std::string> promise_2) {
|
||||
std::string result_1 = future_1.Wait();
|
||||
MG_ASSERT(result_1 == "success");
|
||||
promise_2.Fill("it worked");
|
||||
}
|
||||
|
||||
int main() {
|
||||
std::atomic_bool waiting = false;
|
||||
|
||||
std::function<bool()> notifier = [&] {
|
||||
waiting.store(true, std::memory_order_seq_cst);
|
||||
return false;
|
||||
};
|
||||
|
||||
auto [future_1, promise_1] = FuturePromisePairWithNotifier<std::string>(notifier);
|
||||
auto [future_2, promise_2] = FuturePromisePair<std::string>();
|
||||
|
||||
std::jthread t1(Wait, std::move(future_1), std::move(promise_2));
|
||||
|
||||
// spin in a loop until the promise signals
|
||||
// that it is waiting
|
||||
while (!waiting.load(std::memory_order_acquire)) {
|
||||
std::this_thread::yield();
|
||||
}
|
||||
|
||||
std::jthread t2(Fill, std::move(promise_1));
|
||||
|
||||
t1.join();
|
||||
t2.join();
|
||||
|
||||
std::string result_2 = future_2.Wait();
|
||||
MG_ASSERT(result_2 == "it worked");
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -15,8 +15,6 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
// header
|
||||
|
||||
namespace memgraph::tests::simulation {
|
||||
|
||||
struct Vertex {
|
||||
|
||||
@@ -26,7 +26,7 @@ using memgraph::io::simulator::SimulatorTransport;
|
||||
void run_server(Io<SimulatorTransport> io) {
|
||||
while (!io.ShouldShutDown()) {
|
||||
std::cout << "[STORAGE] Is receiving..." << std::endl;
|
||||
auto request_result = io.ReceiveWithTimeout<ScanVerticesRequest>(100000);
|
||||
auto request_result = io.Receive<ScanVerticesRequest>();
|
||||
if (request_result.HasError()) {
|
||||
std::cout << "[STORAGE] Error, continue" << std::endl;
|
||||
continue;
|
||||
@@ -78,9 +78,8 @@ int main() {
|
||||
|
||||
auto req = ScanVerticesRequest{2, std::nullopt};
|
||||
|
||||
auto res_f = cli_io.RequestWithTimeout<ScanVerticesRequest, VerticesResponse>(srv_addr, req, 1000);
|
||||
auto res_rez = res_f.Wait();
|
||||
// MG_ASSERT(res_rez.HasError());
|
||||
auto res_f = cli_io.Request<ScanVerticesRequest, VerticesResponse>(srv_addr, req);
|
||||
auto res_rez = std::move(res_f).Wait();
|
||||
simulator.ShutDown();
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user