From 4e4dea840dcc39a1fa8df6534a17c5829c223312 Mon Sep 17 00:00:00 2001
From: Sergey Yakubov <sergey.yakubov@desy.de>
Date: Mon, 1 Oct 2018 11:34:32 +0200
Subject: [PATCH] finished c++ versioning

---
 common/cpp/include/common/version.h.in                    | 8 ++++++--
 .../producer/dummy-data-producer/dummy_data_producer.cpp  | 2 +-
 examples/worker/getnext_broker/getnext_broker.cpp         | 2 +-
 examples/worker/process_folder/process_folder.cpp         | 2 +-
 producer/event_monitor_producer/src/main_eventmon.cpp     | 4 ++--
 receiver/src/main.cpp                                     | 3 ++-
 receiver/src/request_handler_authorize.cpp                | 3 +++
 receiver/unittests/test_request_handler_authorizer.cpp    | 6 +++++-
 8 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/common/cpp/include/common/version.h.in b/common/cpp/include/common/version.h.in
index 15ecfac7b..1ca92fd87 100644
--- a/common/cpp/include/common/version.h.in
+++ b/common/cpp/include/common/version.h.in
@@ -2,13 +2,17 @@
 #define ASAPO_VERSION_H
 
 #include <iostream>
+#include "string.h"
 
 namespace asapo {
 
 const char kVersion[] = "@VERSION@";
 
-inline void PrintVersion(std::string prefix) {
- std::cout << prefix << ", version " << kVersion << std::endl;
+inline void ExitAfterPrintVersionIfNeeded(std::string prefix,int argc, char* argv[]) {
+    if (argc == 2 && strcmp(argv[1], "-v") == 0) {
+        std::cout << prefix << ", version " << kVersion << std::endl;
+        exit(0);
+    }
 }
 
 }
diff --git a/examples/producer/dummy-data-producer/dummy_data_producer.cpp b/examples/producer/dummy-data-producer/dummy_data_producer.cpp
index c2936de2f..80b010f4c 100644
--- a/examples/producer/dummy-data-producer/dummy_data_producer.cpp
+++ b/examples/producer/dummy-data-producer/dummy_data_producer.cpp
@@ -35,7 +35,7 @@ void PrintCommandArguments(const Args& args) {
 
 
 void ProcessCommandArguments(int argc, char* argv[], Args* args) {
-    asapo::PrintVersion("Dummy Data Producer");
+    asapo::ExitAfterPrintVersionIfNeeded("Dummy Data Producer", argc, argv);
     if (argc != 8) {
         std::cout <<
                   "Usage: " << argv[0] <<
diff --git a/examples/worker/getnext_broker/getnext_broker.cpp b/examples/worker/getnext_broker/getnext_broker.cpp
index 0a08959dc..84cbe726f 100644
--- a/examples/worker/getnext_broker/getnext_broker.cpp
+++ b/examples/worker/getnext_broker/getnext_broker.cpp
@@ -79,7 +79,7 @@ int ReadAllData(const Params& params, uint64_t* duration_ms) {
 }
 
 int main(int argc, char* argv[]) {
-    asapo::PrintVersion("GetNext Broker Example");
+    asapo::ExitAfterPrintVersionIfNeeded("GetNext Broker Example", argc, argv);
     if (argc != 6) {
         std::cout << "Usage: " + std::string{argv[0]} +" <server> <run_name> <nthreads> <token> <timeout ms>" << std::endl;
         exit(EXIT_FAILURE);
diff --git a/examples/worker/process_folder/process_folder.cpp b/examples/worker/process_folder/process_folder.cpp
index 5adb1bc1f..63a6955dd 100644
--- a/examples/worker/process_folder/process_folder.cpp
+++ b/examples/worker/process_folder/process_folder.cpp
@@ -84,7 +84,7 @@ void PrintStatistics(const Statistics& statistics) {
 
 
 int main(int argc, char* argv[]) {
-    asapo::PrintVersion("Process Folder Broker Example");
+    asapo::ExitAfterPrintVersionIfNeeded("Process Folder Broker Example", argc, argv);
 
     std::string folder = ProcessCommandArguments(argc, argv);
     auto broker = CreateBroker(folder);
diff --git a/producer/event_monitor_producer/src/main_eventmon.cpp b/producer/event_monitor_producer/src/main_eventmon.cpp
index 3e4d677f7..4191bfbd4 100644
--- a/producer/event_monitor_producer/src/main_eventmon.cpp
+++ b/producer/event_monitor_producer/src/main_eventmon.cpp
@@ -74,7 +74,7 @@ void SignalHandler(int signal) {
 
 
 int main (int argc, char* argv[]) {
-    asapo::PrintVersion("ASAPO Event Monitor");
+    asapo::ExitAfterPrintVersionIfNeeded("ASAPO Event Monitor", argc, argv);
 
     auto err = ReadConfigFile(argc, argv);
     if (err) {
@@ -96,7 +96,7 @@ int main (int argc, char* argv[]) {
     auto producer = CreateProducer();
     asapo::EventDetectorFactory factory;
     auto event_detector = factory.CreateEventDetector();
-
+    logger->Info(std::string("starting ASAPO Event Monitor, version ") + asapo::kVersion);
     err = event_detector->StartMonitoring();
     if (err) {
         logger->Error(err->Explain());
diff --git a/receiver/src/main.cpp b/receiver/src/main.cpp
index c0e6af486..72d45a960 100644
--- a/receiver/src/main.cpp
+++ b/receiver/src/main.cpp
@@ -17,7 +17,7 @@ asapo::Error ReadConfigFile(int argc, char* argv[]) {
 }
 
 int main (int argc, char* argv[]) {
-    asapo::PrintVersion("ASAPO Receiver");
+    asapo::ExitAfterPrintVersionIfNeeded("ASAPO Receiver", argc, argv);
 
     auto err = ReadConfigFile(argc, argv);
     const auto& logger = asapo::GetDefaultReceiverLogger();
@@ -35,6 +35,7 @@ int main (int argc, char* argv[]) {
 
     auto* receiver = new asapo::Receiver();
 
+    logger->Info(std::string("starting receiver, version ") + asapo::kVersion);
     logger->Info("listening on " + address);
     receiver->Listen(address, &err);
     if(err) {
diff --git a/receiver/src/request_handler_authorize.cpp b/receiver/src/request_handler_authorize.cpp
index 597584601..00f932b82 100644
--- a/receiver/src/request_handler_authorize.cpp
+++ b/receiver/src/request_handler_authorize.cpp
@@ -48,6 +48,9 @@ Error RequestHandlerAuthorize::Authorize(Request* request, const char* beamtime_
     (err = parser.GetString("Beamline", &beamline_));
     if (err) {
         return ErrorFromServerResponse(err, code);
+    } else {
+        log__->Debug(std::string("authorized connection from ") + request->GetOriginUri() + " beamline: " +
+                     beamline_ + ", beamtime id: " + beamtime_id_);
     }
 
     return nullptr;
diff --git a/receiver/unittests/test_request_handler_authorizer.cpp b/receiver/unittests/test_request_handler_authorizer.cpp
index 3fabc8000..f6523f281 100644
--- a/receiver/unittests/test_request_handler_authorizer.cpp
+++ b/receiver/unittests/test_request_handler_authorizer.cpp
@@ -110,8 +110,12 @@ class AuthorizerHandlerTests : public Test {
                                                      HasSubstr(expected_beamtime_id),
                                                      HasSubstr(expected_producer_uri),
                                                      HasSubstr(expected_authorization_server))));
+            } else {
+                EXPECT_CALL(mock_logger, Debug(AllOf(HasSubstr("authorized"),
+                                                     HasSubstr(expected_beamtime_id),
+                                                     HasSubstr(expected_beamline),
+                                                     HasSubstr(expected_producer_uri))));
             }
-
         }
 
 
-- 
GitLab