#define CATCH_CONFIG_MAIN #include #include #include #include #include #include #include #include "etcd/Client.hpp" #include "etcd/KeepAlive.hpp" static const std::string etcd_url("http://127.0.0.1:2379"); TEST_CASE("fork: set in child and get from self") { pid_t pid = fork(); REQUIRE(pid >= 0); if (pid == 0) { // child etcd::Client etcd(etcd_url); etcd.set("/test/fork-key1", "fork: abcdefgh").wait(); std::cout << "child: set finished ..." << std::endl; } else { // self etcd::Client etcd(etcd_url); size_t check = 0; while (check < 10) { auto resp = etcd.get("/test/fork-key1").get(); if (!resp.is_ok()) { check += 1; std::this_thread::sleep_for(std::chrono::seconds(1)); continue; } else { CHECK(resp.value().as_string() == "fork: abcdefgh"); break; } } std::cout << "self: get finished ..." << std::endl; } }