From d35f8e02772d8508e18c802d5880b930c34bb1a8 Mon Sep 17 00:00:00 2001
From: Sergey Yakubov <sergey.yakubov@desy.de>
Date: Sat, 19 May 2018 07:53:24 +0200
Subject: [PATCH] refactor tests

---
 producer/api/src/producer_impl.cpp            |  2 +-
 producer/api/src/request_handler_factory.cpp  | 17 ++---
 producer/api/src/request_handler_factory.h    | 16 ++---
 producer/api/src/request_handler_tcp.cpp      | 29 +++++----
 producer/api/src/request_handler_tcp.h        | 13 ++--
 producer/api/src/request_pool.cpp             | 11 ++--
 producer/api/src/request_pool.h               |  3 +-
 producer/api/unittests/test_producer_impl.cpp |  4 +-
 .../test_request_handler_factory.cpp          |  4 +-
 .../unittests/test_request_handler_tcp.cpp    | 65 ++++++++-----------
 producer/api/unittests/test_request_pool.cpp  | 25 ++++---
 11 files changed, 93 insertions(+), 96 deletions(-)

diff --git a/producer/api/src/producer_impl.cpp b/producer/api/src/producer_impl.cpp
index c24fa2ec6..3d7e84e46 100644
--- a/producer/api/src/producer_impl.cpp
+++ b/producer/api/src/producer_impl.cpp
@@ -13,7 +13,7 @@ const size_t ProducerImpl::kDiscoveryServiceUpdateFrequencyMs = 10000; // 10s
 
 ProducerImpl::ProducerImpl(std::string endpoint, uint8_t n_processing_threads): log__{GetDefaultProducerLogger()} {
     discovery_service_.reset(new ReceiverDiscoveryService{endpoint, ProducerImpl::kDiscoveryServiceUpdateFrequencyMs});
-    request_handler_factory_.reset(new RequestHandlerFactory{RequestHandlerType::kTcp,discovery_service_.get()});
+    request_handler_factory_.reset(new RequestHandlerFactory{RequestHandlerType::kTcp, discovery_service_.get()});
     request_pool__.reset(new RequestPool{n_processing_threads, request_handler_factory_.get()});
 }
 
diff --git a/producer/api/src/request_handler_factory.cpp b/producer/api/src/request_handler_factory.cpp
index d2753d7e6..7dedc995b 100644
--- a/producer/api/src/request_handler_factory.cpp
+++ b/producer/api/src/request_handler_factory.cpp
@@ -4,19 +4,20 @@
 
 namespace  asapo {
 
-std::unique_ptr<RequestHandler> RequestHandlerFactory::NewRequestHandler(uint64_t thread_id) {
+std::unique_ptr<RequestHandler> RequestHandlerFactory::NewRequestHandler(uint64_t thread_id, uint64_t* shared_counter) {
     switch (type_) {
-        case asapo::RequestHandlerType::kTcp:
-            return std::unique_ptr<RequestHandler>{new RequestHandlerTcp(discovery_service_,thread_id)};
+    case asapo::RequestHandlerType::kTcp:
+        return std::unique_ptr<RequestHandler> {new RequestHandlerTcp(discovery_service_, thread_id, shared_counter)};
     }
     return nullptr;
 }
 
-RequestHandlerFactory::RequestHandlerFactory(RequestHandlerType type,ReceiverDiscoveryService* discovery_service): type_{type},
-discovery_service_{discovery_service}{
-if (discovery_service_) {
-    discovery_service_->StartCollectingData();
-}
+RequestHandlerFactory::RequestHandlerFactory(RequestHandlerType type,
+                                             ReceiverDiscoveryService* discovery_service): type_{type},
+    discovery_service_{discovery_service} {
+    if (discovery_service_) {
+        discovery_service_->StartCollectingData();
+    }
 
 
 }
diff --git a/producer/api/src/request_handler_factory.h b/producer/api/src/request_handler_factory.h
index 22a68d642..32cffafd8 100644
--- a/producer/api/src/request_handler_factory.h
+++ b/producer/api/src/request_handler_factory.h
@@ -12,17 +12,17 @@ namespace  asapo {
 #endif
 
 enum class RequestHandlerType {
-  kTcp,
-  kFilesystem
+    kTcp,
+    kFilesystem
 };
 
 class RequestHandlerFactory {
- public:
-  RequestHandlerFactory(RequestHandlerType type, ReceiverDiscoveryService* discovery_service);
-  VIRTUAL std::unique_ptr<RequestHandler> NewRequestHandler(uint64_t thread_id);
- private:
-  RequestHandlerType type_;
-  ReceiverDiscoveryService* discovery_service_;
+  public:
+    RequestHandlerFactory(RequestHandlerType type, ReceiverDiscoveryService* discovery_service);
+    VIRTUAL std::unique_ptr<RequestHandler> NewRequestHandler(uint64_t thread_id, uint64_t* shared_counter);
+  private:
+    RequestHandlerType type_;
+    ReceiverDiscoveryService* discovery_service_;
 };
 
 
diff --git a/producer/api/src/request_handler_tcp.cpp b/producer/api/src/request_handler_tcp.cpp
index 3f7faa34d..f5732764a 100644
--- a/producer/api/src/request_handler_tcp.cpp
+++ b/producer/api/src/request_handler_tcp.cpp
@@ -7,8 +7,10 @@
 namespace asapo {
 
 
-RequestHandlerTcp::RequestHandlerTcp(ReceiverDiscoveryService* discovery_service,uint64_t thread_id):
-    io__{GenerateDefaultIO()}, log__{GetDefaultProducerLogger()},discovery_service__{discovery_service},thread_id_{thread_id} {
+RequestHandlerTcp::RequestHandlerTcp(ReceiverDiscoveryService* discovery_service, uint64_t thread_id,
+                                     uint64_t* shared_counter):
+    io__{GenerateDefaultIO()}, log__{GetDefaultProducerLogger()}, discovery_service__{discovery_service}, thread_id_{thread_id},
+    ncurrent_connections_{shared_counter} {
 
 }
 
@@ -23,7 +25,7 @@ Error RequestHandlerTcp::ConnectToReceiver(const std::string& receiver_address)
     return nullptr;
 }
 
-Error RequestHandlerTcp::SendHeaderAndData(const Request* request,const std::string& receiver_address) {
+Error RequestHandlerTcp::SendHeaderAndData(const Request* request, const std::string& receiver_address) {
     Error io_error;
     io__->Send(sd_, &(request->header), sizeof(request->header), &io_error);
     if(io_error) {
@@ -59,8 +61,8 @@ Error RequestHandlerTcp::ReceiveResponse(const std::string& receiver_address) {
     return nullptr;
 }
 
-Error RequestHandlerTcp::TrySendToReceiver(const Request* request,const std::string& receiver_address) {
-    auto err = SendHeaderAndData(request ,receiver_address);
+Error RequestHandlerTcp::TrySendToReceiver(const Request* request, const std::string& receiver_address) {
+    auto err = SendHeaderAndData(request, receiver_address);
     if (err)  {
         return err;
     }
@@ -81,7 +83,7 @@ void RequestHandlerTcp::UpdateReceiversUriIfNewConnection() {
 
     receivers_list_ = discovery_service__->RotatedUriList(thread_id_);
     last_receivers_uri_update_ = high_resolution_clock::now();
-    ncurrent_connections_++;
+    (*ncurrent_connections_)++;
 }
 
 bool RequestHandlerTcp::CheckForRebalance() {
@@ -90,7 +92,7 @@ bool RequestHandlerTcp::CheckForRebalance() {
 
     auto now =  high_resolution_clock::now();
     uint64_t elapsed_ms = std::chrono::duration_cast<std::chrono::milliseconds>( now -
-        last_receivers_uri_update_).count();
+                          last_receivers_uri_update_).count();
     bool rebalance = false;
     if (elapsed_ms > discovery_service__->UpdateFrequency()) {
         auto thread_receivers_new = discovery_service__->RotatedUriList(thread_id_);
@@ -104,7 +106,7 @@ bool RequestHandlerTcp::CheckForRebalance() {
 
 }
 
-Error RequestHandlerTcp::ProcessRequestUnlocked(const Request* request){
+Error RequestHandlerTcp::ProcessRequestUnlocked(const Request* request) {
     bool rebalance = CheckForRebalance();
     if (rebalance && sd_ != kDisconnectedSocketDescriptor) {
         io__->CloseSocket(sd_, nullptr);
@@ -117,7 +119,7 @@ Error RequestHandlerTcp::ProcessRequestUnlocked(const Request* request){
             if (err != nullptr ) continue;
         }
 
-        auto err = TrySendToReceiver(request,receiver_uri);
+        auto err = TrySendToReceiver(request, receiver_uri);
         if (err != nullptr && err != ProducerErrorTemplates::kFileIdAlreadyInUse)  {
             io__->CloseSocket(sd_, nullptr);
             sd_ = kDisconnectedSocketDescriptor;
@@ -138,7 +140,7 @@ bool RequestHandlerTcp::IsConnected() {
 }
 
 bool RequestHandlerTcp::CanCreateNewConnections() {
-    return ncurrent_connections_ < discovery_service__->MaxConnections();
+    return (*ncurrent_connections_) < discovery_service__->MaxConnections();
 }
 
 bool RequestHandlerTcp::ReadyProcessRequest() {
@@ -149,8 +151,11 @@ void RequestHandlerTcp::PrepareProcessingRequestLocked() {
     UpdateReceiversUriIfNewConnection();
 }
 
-void RequestHandlerTcp::TearDownProcessingRequestLocked(const Error &error_from_process) {
-    ncurrent_connections_--;
+void RequestHandlerTcp::TearDownProcessingRequestLocked(const Error& error_from_process) {
+    if (error_from_process) {
+        (*ncurrent_connections_)--;
+    }
+
 }
 
 }
diff --git a/producer/api/src/request_handler_tcp.h b/producer/api/src/request_handler_tcp.h
index 27f25e356..6ed212294 100644
--- a/producer/api/src/request_handler_tcp.h
+++ b/producer/api/src/request_handler_tcp.h
@@ -18,11 +18,11 @@ namespace asapo {
 
 class RequestHandlerTcp: public RequestHandler {
   public:
-    explicit RequestHandlerTcp(ReceiverDiscoveryService* discovery_service,uint64_t thread_id);
+    explicit RequestHandlerTcp(ReceiverDiscoveryService* discovery_service, uint64_t thread_id, uint64_t* shared_counter);
     Error ProcessRequestUnlocked(const Request* request) override;
     bool ReadyProcessRequest() override;
     void PrepareProcessingRequestLocked()  override;
-    void TearDownProcessingRequestLocked(const Error &error_from_process)  override;
+    void TearDownProcessingRequestLocked(const Error& error_from_process)  override;
 
     virtual ~RequestHandlerTcp() = default;
     std::unique_ptr<IO> io__;
@@ -30,20 +30,19 @@ class RequestHandlerTcp: public RequestHandler {
     ReceiverDiscoveryService* discovery_service__;
   private:
     Error ConnectToReceiver(const std::string& receiver_address);
-    Error SendHeaderAndData(const Request*,const std::string& receiver_address);
+    Error SendHeaderAndData(const Request*, const std::string& receiver_address);
     Error ReceiveResponse(const std::string& receiver_address);
-    Error TrySendToReceiver(const Request* request,const std::string& receiver_address);
+    Error TrySendToReceiver(const Request* request, const std::string& receiver_address);
     SocketDescriptor sd_{kDisconnectedSocketDescriptor};
     void UpdateReceiversUriIfNewConnection();
     bool CheckForRebalance();
     ReceiversList receivers_list_;
     high_resolution_clock::time_point last_receivers_uri_update_;
-    uint64_t ncurrent_connections_{0};
     bool IsConnected();
     bool CanCreateNewConnections();
     uint64_t thread_id_;
-
-  };
+    uint64_t* ncurrent_connections_;
+};
 }
 
 #endif //ASAPO_REQUEST_H
diff --git a/producer/api/src/request_pool.cpp b/producer/api/src/request_pool.cpp
index eba0be22f..8eb18321f 100644
--- a/producer/api/src/request_pool.cpp
+++ b/producer/api/src/request_pool.cpp
@@ -6,7 +6,7 @@ namespace asapo {
 
 RequestPool:: RequestPool(uint8_t n_threads,
                           RequestHandlerFactory* request_handler_factory): log__{GetDefaultProducerLogger()},
-                                                                        request_handler_factory__{request_handler_factory},
+    request_handler_factory__{request_handler_factory},
     threads_{n_threads} {
     for(size_t i = 0; i < threads_.size(); i++) {
         log__->Debug("starting thread " + std::to_string(i));
@@ -40,7 +40,8 @@ void RequestPool::PutRequestBackToQueue(std::unique_ptr<Request> request) {
     request_queue_.emplace_front(std::move(request));
 }
 
-void RequestPool::ProcessRequest(const std::unique_ptr<RequestHandler>& request_handler,ThreadInformation* thread_info) {
+void RequestPool::ProcessRequest(const std::unique_ptr<RequestHandler>& request_handler,
+                                 ThreadInformation* thread_info) {
 
     request_handler->PrepareProcessingRequestLocked();
 
@@ -57,14 +58,14 @@ void RequestPool::ProcessRequest(const std::unique_ptr<RequestHandler>& request_
 void RequestPool::ThreadHandler(uint64_t id) {
     ThreadInformation thread_info;
     thread_info.lock =  std::unique_lock<std::mutex>(mutex_);
-    auto request_handler = request_handler_factory__->NewRequestHandler(id);
+    auto request_handler = request_handler_factory__->NewRequestHandler(id, &shared_counter_);
     do {
-        condition_.wait(thread_info.lock, [this,&request_handler] {
+        condition_.wait(thread_info.lock, [this, &request_handler] {
             return (CanProcessRequest(request_handler) || quit_);
         });
         //after wait, we own the lock
         if (!quit_) {
-            ProcessRequest(request_handler,&thread_info);
+            ProcessRequest(request_handler, &thread_info);
         };
     } while (!quit_);
 }
diff --git a/producer/api/src/request_pool.h b/producer/api/src/request_pool.h
index b4b0d4fd5..bfe0a9018 100644
--- a/producer/api/src/request_pool.h
+++ b/producer/api/src/request_pool.h
@@ -40,9 +40,10 @@ class RequestPool {
     std::mutex mutex_;
     std::deque<std::unique_ptr<Request>> request_queue_;
     bool CanProcessRequest(const std::unique_ptr<RequestHandler>& request_handler);
-    void ProcessRequest(const std::unique_ptr<RequestHandler>& request_handler,ThreadInformation* thread_info);
+    void ProcessRequest(const std::unique_ptr<RequestHandler>& request_handler, ThreadInformation* thread_info);
     std::unique_ptr<Request> GetRequestFromQueue();
     void PutRequestBackToQueue(std::unique_ptr<Request>request);
+    uint64_t shared_counter_{0};
 
 };
 
diff --git a/producer/api/unittests/test_producer_impl.cpp b/producer/api/unittests/test_producer_impl.cpp
index 777c7779a..be807c26e 100644
--- a/producer/api/unittests/test_producer_impl.cpp
+++ b/producer/api/unittests/test_producer_impl.cpp
@@ -37,7 +37,7 @@ TEST(ProducerImpl, Constructor) {
 class ProducerImplTests : public testing::Test {
   public:
     testing::NiceMock<MockDiscoveryService> service;
-    asapo::RequestHandlerFactory factory{asapo::RequestHandlerType::kTcp,&service};
+    asapo::RequestHandlerFactory factory{asapo::RequestHandlerType::kTcp, &service};
     testing::NiceMock<asapo::MockLogger> mock_logger;
     testing::NiceMock<MockRequestPull> mock_pull{&factory};
     asapo::ProducerImpl producer{"", 1};
@@ -67,7 +67,7 @@ TEST_F(ProducerImplTests, OKSendingRequest) {
     uint64_t expected_size = 100;
     Request request{asapo::GenericNetworkRequestHeader{}, nullptr, nullptr};
     EXPECT_CALL(mock_pull, AddRequest_t(_)).WillOnce(Return(
-                nullptr));
+            nullptr));
 
     auto err = producer.Send(1, nullptr, expected_size, nullptr);
 
diff --git a/producer/api/unittests/test_request_handler_factory.cpp b/producer/api/unittests/test_request_handler_factory.cpp
index 34e91d2e9..8d3bb0b6d 100644
--- a/producer/api/unittests/test_request_handler_factory.cpp
+++ b/producer/api/unittests/test_request_handler_factory.cpp
@@ -18,9 +18,9 @@ TEST(CreateFactory, Tcp) {
     MockDiscoveryService mock_discovery;
     EXPECT_CALL(mock_discovery, StartCollectingData());
 
-    RequestHandlerFactory factory{asapo::RequestHandlerType::kTcp,&mock_discovery};
+    RequestHandlerFactory factory{asapo::RequestHandlerType::kTcp, &mock_discovery};
 
-    auto handler = factory.NewRequestHandler(1);
+    auto handler = factory.NewRequestHandler(1, nullptr);
 
     ASSERT_THAT(dynamic_cast<asapo::RequestHandlerTcp*>(handler.get()), Ne(nullptr));
 
diff --git a/producer/api/unittests/test_request_handler_tcp.cpp b/producer/api/unittests/test_request_handler_tcp.cpp
index f923a3b52..538d8cc73 100644
--- a/producer/api/unittests/test_request_handler_tcp.cpp
+++ b/producer/api/unittests/test_request_handler_tcp.cpp
@@ -34,7 +34,7 @@ using ::testing::HasSubstr;
 
 TEST(RequestHandlerTcp, Constructor) {
     MockDiscoveryService ds;
-    asapo::RequestHandlerTcp request{&ds,1};
+    asapo::RequestHandlerTcp request{&ds, 1, nullptr};
 
     ASSERT_THAT(dynamic_cast<const asapo::IO*>(request.io__.get()), Ne(nullptr));
     ASSERT_THAT(dynamic_cast<const asapo::AbstractLogger*>(request.log__), Ne(nullptr));
@@ -47,26 +47,26 @@ class RequestHandlerTcpTests : public testing::Test {
     NiceMock<asapo::MockIO> mock_io;
     NiceMock<MockDiscoveryService> mock_discovery_service;
 
-    uint64_t expected_file_id = 42k;
+    uint64_t expected_file_id = 42;
     uint64_t expected_file_size = 1337;
     uint64_t expected_thread_id = 2;
 
-  asapo::Opcode expected_op_code = asapo::kNetOpcodeSendData;
+    asapo::Opcode expected_op_code = asapo::kNetOpcodeSendData;
     void*    expected_file_pointer = (void*)0xC00FE;
     asapo::Error callback_err;
     asapo::GenericNetworkRequestHeader header{expected_op_code, expected_file_id, expected_file_size};
     bool called = false;
     asapo::GenericNetworkRequestHeader callback_header;
     asapo::Request request{header, expected_file_pointer, [this](asapo::GenericNetworkRequestHeader header, asapo::Error err) {
-        called = true;
-        callback_err = std::move(err);
-        callback_header = header;
-    }};
+            called = true;
+            callback_err = std::move(err);
+            callback_header = header;
+        }};
 
     asapo::Request request_nocallback{header, expected_file_pointer, nullptr};
     testing::NiceMock<asapo::MockLogger> mock_logger;
-
-    asapo::RequestHandlerTcp request_handler{&mock_discovery_service,expected_thread_id};
+    uint64_t n_connections{0};
+    asapo::RequestHandlerTcp request_handler{&mock_discovery_service, expected_thread_id, &n_connections};
 
     asapo::SocketDescriptor sd = asapo::kDisconnectedSocketDescriptor;
     std::string expected_address1 = {"127.0.0.1:9090"};
@@ -74,7 +74,7 @@ class RequestHandlerTcpTests : public testing::Test {
     asapo::ReceiversList receivers_list{expected_address1, expected_address2};
     asapo::ReceiversList receivers_list_single{expected_address1};
 
-  std::vector<asapo::SocketDescriptor> expected_sds{83942, 83943};
+    std::vector<asapo::SocketDescriptor> expected_sds{83942, 83943};
 
     void ExpectFailConnect(bool only_once = false);
     void ExpectFailSendHeader(bool only_once = false);
@@ -84,7 +84,7 @@ class RequestHandlerTcpTests : public testing::Test {
     void ExpectOKSendData(bool only_once = false);
     void ExpectFailReceive(bool only_once = false);
     void ExpectOKReceive(bool only_once = true);
-    void DoSingleSend(bool success = true);
+    void DoSingleSend(bool connect = true, bool success = true);
 
     void SetUp() override {
         request_handler.log__ = &mock_logger;
@@ -262,25 +262,20 @@ void RequestHandlerTcpTests::ExpectOKReceive(bool only_once) {
     }
 }
 
-TEST_F(RequestHandlerTcpTests, CannotProcessRequestIfNotEnoughConnections) {
-    EXPECT_CALL(mock_discovery_service, MaxConnections()).WillOnce(Return(0));
-    auto res = request_handler.ReadyProcessRequest();
-    ASSERT_THAT(res, Eq(false));
-}
-
-void RequestHandlerTcpTests::DoSingleSend(bool success) {
-    if (success) ExpectOKConnect(true);
+void RequestHandlerTcpTests::DoSingleSend(bool connect, bool success) {
+    if (connect) ExpectOKConnect(true);
     ExpectOKSendHeader(true);
     ExpectOKSendData(true);
     if (success) {
         ExpectOKReceive(true);
-    }else {
+    } else {
         ExpectFailReceive(true);
     }
 
-
-    EXPECT_CALL(mock_discovery_service, RotatedUriList(_)).
+    if (connect) {
+        EXPECT_CALL(mock_discovery_service, RotatedUriList(_)).
         WillOnce(Return(receivers_list_single));
+    }
 
     request_handler.PrepareProcessingRequestLocked();
     request_handler.ProcessRequestUnlocked(&request);
@@ -288,7 +283,12 @@ void RequestHandlerTcpTests::DoSingleSend(bool success) {
     Mock::VerifyAndClearExpectations(&mock_io);
     Mock::VerifyAndClearExpectations(&mock_logger);
     Mock::VerifyAndClearExpectations(&mock_discovery_service);
+}
 
+TEST_F(RequestHandlerTcpTests, CannotProcessRequestIfNotEnoughConnections) {
+    EXPECT_CALL(mock_discovery_service, MaxConnections()).WillOnce(Return(0));
+    auto res = request_handler.ReadyProcessRequest();
+    ASSERT_THAT(res, Eq(false));
 }
 
 TEST_F(RequestHandlerTcpTests, CanProcessRequestIfAlreadyConnected) {
@@ -307,35 +307,26 @@ TEST_F(RequestHandlerTcpTests, GetsUriListINotConnected) {
 
 TEST_F(RequestHandlerTcpTests, DoesNotGetsUriIfAlreadyConnected) {
     DoSingleSend();
+    EXPECT_CALL(mock_discovery_service, RotatedUriList(_)).Times(0);
     request_handler.PrepareProcessingRequestLocked();
 }
 
 TEST_F(RequestHandlerTcpTests, ReduceConnectionNumberAtTearDownIfError) {
-    DoSingleSend(false);
-
     auto err = asapo::TextError("error");
+    n_connections = 1;
 
     request_handler.TearDownProcessingRequestLocked(err);
 
-
-    EXPECT_CALL(mock_discovery_service, MaxConnections()).WillOnce(Return(1));
-    auto res = request_handler.ReadyProcessRequest();
-    ASSERT_THAT(res, Eq(true));
+    ASSERT_THAT(n_connections, Eq(0));
 
 }
 
-
 TEST_F(RequestHandlerTcpTests, DoNotReduceConnectionNumberAtTearDownIfNoError) {
-    DoSingleSend(true);
-    DoSingleSend(false);
-
-    auto err = asapo::TextError("error");
-    request_handler.TearDownProcessingRequestLocked(err);
+    n_connections = 1;
 
-//    EXPECT_CALL(mock_discovery_service, MaxConnections()).WillOnce(Return(1));
-    auto res = request_handler.ReadyProcessRequest();
-    ASSERT_THAT(res, Eq(false));
+    request_handler.TearDownProcessingRequestLocked(nullptr);
 
+    ASSERT_THAT(n_connections, Eq(1));
 }
 
 
diff --git a/producer/api/unittests/test_request_pool.cpp b/producer/api/unittests/test_request_pool.cpp
index a665ffcdc..d3b50af57 100644
--- a/producer/api/unittests/test_request_pool.cpp
+++ b/producer/api/unittests/test_request_pool.cpp
@@ -41,16 +41,15 @@ using asapo::GenericNetworkRequestHeader;
 
 
 class MockRequestHandlerFactory : public asapo::RequestHandlerFactory {
- public:
-  MockRequestHandlerFactory(RequestHandler* request_handler):
-      RequestHandlerFactory(asapo::RequestHandlerType::kTcp, nullptr)
-  {
-      request_handler_ = request_handler;
-  }
-  std::unique_ptr<RequestHandler> NewRequestHandler(uint64_t thread_id) override {
-      return std::unique_ptr<RequestHandler>{request_handler_};
-  }
- private:
+  public:
+    MockRequestHandlerFactory(RequestHandler* request_handler):
+        RequestHandlerFactory(asapo::RequestHandlerType::kTcp, nullptr) {
+        request_handler_ = request_handler;
+    }
+    std::unique_ptr<RequestHandler> NewRequestHandler(uint64_t thread_id, uint64_t* shared_counter) override {
+        return std::unique_ptr<RequestHandler> {request_handler_};
+    }
+  private:
     RequestHandler* request_handler_;
 };
 
@@ -74,7 +73,7 @@ class RequestPoolTests : public testing::Test {
 
 TEST(RequestPool, Constructor) {
     NiceMock<MockDiscoveryService> ds;
-    NiceMock<asapo::RequestHandlerFactory> request_handler_factory{asapo::RequestHandlerType::kTcp,&ds};
+    NiceMock<asapo::RequestHandlerFactory> request_handler_factory{asapo::RequestHandlerType::kTcp, &ds};
 
     asapo::RequestPool pool{4, &request_handler_factory};
 
@@ -97,7 +96,7 @@ TEST_F(RequestPoolTests, NRequestsInQueue) {
     ASSERT_THAT(nreq, Eq(0));
 }
 
-void ExpectSend(MockRequestHandler* mock_handler,int ntimes = 1) {
+void ExpectSend(MockRequestHandler* mock_handler, int ntimes = 1) {
     EXPECT_CALL(*mock_handler, ReadyProcessRequest()).Times(ntimes).WillRepeatedly(Return(true));
     EXPECT_CALL(*mock_handler, PrepareProcessingRequestLocked()).Times(ntimes);
     EXPECT_CALL(*mock_handler, ProcessRequestUnlocked_t(_)).Times(ntimes).WillRepeatedly(Return(nullptr));
@@ -121,7 +120,7 @@ TEST_F(RequestPoolTests, AddRequestCallsSendTwoRequests) {
 
     Request* request2 = new Request{GenericNetworkRequestHeader{}, nullptr, nullptr};
 
-    ExpectSend(mock_request_handler,2);
+    ExpectSend(mock_request_handler, 2);
 
 
 
-- 
GitLab