X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Fdmclock%2Ftest%2Ftest_dmclock_client.cc;fp=src%2Fceph%2Fsrc%2Fdmclock%2Ftest%2Ftest_dmclock_client.cc;h=0000000000000000000000000000000000000000;hb=7da45d65be36d36b880cc55c5036e96c24b53f00;hp=ee4172dc348ac5daebb13c3ec08541472b8b7a1b;hpb=691462d09d0987b47e112d6ee8740375df3c51b2;p=stor4nfv.git diff --git a/src/ceph/src/dmclock/test/test_dmclock_client.cc b/src/ceph/src/dmclock/test/test_dmclock_client.cc deleted file mode 100644 index ee4172d..0000000 --- a/src/ceph/src/dmclock/test/test_dmclock_client.cc +++ /dev/null @@ -1,219 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Copyright (C) 2016 Red Hat Inc. - */ - - -#include -#include -#include -#include - - -#include "dmclock_client.h" -#include "dmclock_util.h" -#include "gtest/gtest.h" - - -namespace dmc = crimson::dmclock; - - -namespace crimson { - namespace dmclock { - - /* - * Allows us to test the code provided with the mutex provided locked. - */ - static void test_locked(std::mutex& mtx, std::function code) { - std::lock_guard l(mtx); - code(); - } - - - TEST(dmclock_client, server_erase) { - using ServerId = int; - // using ClientId = int; - - ServerId server = 101; - // ClientId client = 3; - - // dmc::PhaseType resp_params = dmc::PhaseType::reservation; - - dmc::ServiceTracker st(std::chrono::seconds(2), - std::chrono::seconds(3)); - - auto lock_st = [&](std::function code) { - test_locked(st.data_mtx, code); - }; - - /* The timeline should be as follows: - * - * 0 seconds : request created - * - * 1 seconds : map is size 1 - * - * 2 seconds : clean notes first mark; +2 is base for further calcs - * - * 4 seconds : clean does nothing except makes another mark - * - * 5 seconds : when we're secheduled to erase (+2 + 3) - * - * 5 seconds : since the clean job hasn't run yet, map still size 1 - * - * 6 seconds : clean erases server - * - * 7 seconds : verified server is gone (map size 0) - */ - - lock_st([&] () { - EXPECT_EQ(0u, st.server_map.size()) << - "server map initially has size 0"; - }); - - std::this_thread::sleep_for(std::chrono::seconds(1)); - - // call for side effects - (void) st.get_req_params(server); - - lock_st([&] () { - EXPECT_EQ(1u, st.server_map.size()) << - "server map has size 1 after first request"; - }); - - std::this_thread::sleep_for(std::chrono::seconds(4)); - - lock_st([&] () { - EXPECT_EQ(1u, st.server_map.size()) << - "server map has size 1 just before erase"; - }); - - std::this_thread::sleep_for(std::chrono::seconds(2)); - - lock_st([&] () { - EXPECT_EQ(0u, st.server_map.size()) << - "server map has size 0 just after erase"; - }); - } // TEST - - - TEST(dmclock_client, delta_rho_values) { - using ServerId = int; - // using ClientId = int; - - ServerId server1 = 101; - ServerId server2 = 7; - // ClientId client = 3; - - // RespParams resp_params(server, dmc::PhaseType::reservation); - - dmc::ServiceTracker st(std::chrono::seconds(2), - std::chrono::seconds(3)); - - auto rp1 = st.get_req_params(server1); - - EXPECT_EQ(1u, rp1.delta) << - "delta should be 1 with no intervening responses by" << - "other servers"; - EXPECT_EQ(1u, rp1.rho) << - "rho should be 1 with no intervening reservation responses by" << - "other servers"; - - auto rp2 = st.get_req_params(server1); - - EXPECT_EQ(1u, rp2.delta) << - "delta should be 1 with no intervening responses by" << - "other servers"; - EXPECT_EQ(1u, rp2.rho) << - "rho should be 1 with no intervening reservation responses by" << - "other servers"; - - st.track_resp(server1, dmc::PhaseType::priority); - - auto rp3 = st.get_req_params(server1); - - EXPECT_EQ(1u, rp3.delta) << - "delta should be 1 with no intervening responses by" << - "other servers"; - EXPECT_EQ(1u, rp3.rho) << - "rho should be 1 with no intervening reservation responses by" << - "other servers"; - - st.track_resp(server2, dmc::PhaseType::priority); - - auto rp4 = st.get_req_params(server1); - - EXPECT_EQ(2u, rp4.delta) << - "delta should be 2 with one intervening priority response by " << - "another server"; - EXPECT_EQ(1u, rp4.rho) << - "rho should be 1 with one intervening priority responses by " << - "another server"; - - auto rp5 = st.get_req_params(server1); - - EXPECT_EQ(1u, rp5.delta) << - "delta should be 1 with no intervening responses by" << - "other servers"; - EXPECT_EQ(1u, rp5.rho) << - "rho should be 1 with no intervening reservation responses by" << - "other servers"; - - st.track_resp(server2, dmc::PhaseType::reservation); - - auto rp6 = st.get_req_params(server1); - - EXPECT_EQ(2u, rp6.delta) << - "delta should be 2 with one intervening reservation response by " << - "another server"; - EXPECT_EQ(2u, rp6.rho) << - "rho should be 2 with one intervening reservation responses by " << - "another server"; - - // auto rp6_b = st.get_req_params(server2); - - st.track_resp(server2, dmc::PhaseType::reservation); - st.track_resp(server1, dmc::PhaseType::priority); - st.track_resp(server2, dmc::PhaseType::priority); - st.track_resp(server2, dmc::PhaseType::reservation); - st.track_resp(server1, dmc::PhaseType::reservation); - st.track_resp(server1, dmc::PhaseType::priority); - st.track_resp(server2, dmc::PhaseType::priority); - - auto rp7 = st.get_req_params(server1); - - EXPECT_EQ(5u, rp7.delta) << - "delta should be 5 with fourintervening responses by " << - "another server"; - EXPECT_EQ(3u, rp7.rho) << - "rho should be 3 with two intervening reservation responses by " << - "another server"; - - auto rp7b = st.get_req_params(server2); - - EXPECT_EQ(4u, rp7b.delta) << - "delta should be 4 with three intervening responses by " << - "another server"; - EXPECT_EQ(2u, rp7b.rho) << - "rho should be 2 with one intervening reservation responses by " << - "another server"; - - auto rp8 = st.get_req_params(server1); - - EXPECT_EQ(1u, rp8.delta) << - "delta should be 1 with no intervening responses by " << - "another server"; - EXPECT_EQ(1u, rp8.rho) << - "rho should be 1 with no intervening reservation responses by " << - "another server"; - - auto rp8b = st.get_req_params(server2); - EXPECT_EQ(1u, rp8b.delta) << - "delta should be 1 with no intervening responses by " << - "another server"; - EXPECT_EQ(1u, rp8b.rho) << - "rho should be 1 with no intervening reservation responses by " << - "another server"; - } // TEST - } // namespace dmclock -} // namespace crimson