From eb9dadb4588397853d7bc925badfa6ccefeb70ba Mon Sep 17 00:00:00 2001 From: Sergey Yakubov <sergey.yakubov@desy.de> Date: Fri, 16 Feb 2018 13:53:09 +0100 Subject: [PATCH] config files for broker --- broker/src/hidra2_broker/main/broker.go | 21 +++++++-- broker/src/hidra2_broker/server/server.go | 9 +++- .../hidra2_broker/server/server_nottested.go | 45 ++----------------- .../src/hidra2_broker/server/server_test.go | 4 +- broker/src/hidra2_broker/utils/helpers.go | 18 +++++++- examples/worker/getnext_broker/CMakeLists.txt | 1 + examples/worker/getnext_broker/check_linux.sh | 2 +- .../worker/getnext_broker/check_windows.bat | 2 +- tests/broker/CMakeLists.txt | 1 + tests/broker/get_next/CMakeLists.txt | 1 + tests/broker/get_next/check_linux.sh | 3 +- tests/broker/get_next/check_windows.bat | 2 +- tests/broker/read_config/CMakeLists.txt | 9 ++++ tests/broker/read_config/check_linux.sh | 15 +++++++ tests/broker/read_config/check_windows.bat | 19 ++++++++ tests/broker/read_config/settings_bad.json | 4 ++ tests/settings/broker_settings.json | 4 ++ .../next_multithread_broker/CMakeLists.txt | 1 + .../next_multithread_broker/check_linux.sh | 2 +- .../next_multithread_broker/check_windows.bat | 2 +- 20 files changed, 111 insertions(+), 54 deletions(-) create mode 100644 tests/broker/read_config/CMakeLists.txt create mode 100644 tests/broker/read_config/check_linux.sh create mode 100644 tests/broker/read_config/check_windows.bat create mode 100644 tests/broker/read_config/settings_bad.json create mode 100644 tests/settings/broker_settings.json diff --git a/broker/src/hidra2_broker/main/broker.go b/broker/src/hidra2_broker/main/broker.go index 9e4dc10f7..c72a93a3b 100644 --- a/broker/src/hidra2_broker/main/broker.go +++ b/broker/src/hidra2_broker/main/broker.go @@ -6,16 +6,31 @@ import ( "hidra2_broker/database" "hidra2_broker/server" "log" + "os" ) func NewDefaultDatabase() database.Agent { return new(database.Mongodb) } +func PrintUsage() { + log.Fatal("Usage: " + os.Args[0] + " <config file>") +} + func main() { - err:=server.InitDB(NewDefaultDatabase()) - if err!= nil { - log.Fatal(err.Error()) + if len(os.Args) != 2 { + PrintUsage() + } + + fname := os.Args[1] + err := server.ReadConfig(fname) + if err != nil { + log.Fatal(err.Error()) + } + + err = server.InitDB(NewDefaultDatabase()) + if err != nil { + log.Fatal(err.Error()) } defer server.CleanupDB() server.Start() diff --git a/broker/src/hidra2_broker/server/server.go b/broker/src/hidra2_broker/server/server.go index f369c6480..7e85cbca7 100644 --- a/broker/src/hidra2_broker/server/server.go +++ b/broker/src/hidra2_broker/server/server.go @@ -6,9 +6,16 @@ import ( var db database.Agent +type serverSettings struct { + DbAddress string + Port int +} + +var settings serverSettings + func InitDB(dbAgent database.Agent) error { db = dbAgent - return db.Connect("127.0.0.1:27017") + return db.Connect(settings.DbAddress) } func CleanupDB() { diff --git a/broker/src/hidra2_broker/server/server_nottested.go b/broker/src/hidra2_broker/server/server_nottested.go index 461d25649..cf6bd72f7 100644 --- a/broker/src/hidra2_broker/server/server_nottested.go +++ b/broker/src/hidra2_broker/server/server_nottested.go @@ -6,51 +6,14 @@ import ( "hidra2_broker/utils" "log" "net/http" - "fmt" - "time" - "sync" + "strconv" ) func Start() { -// test(os.Args[1]) -// return mux := utils.NewRouter(listRoutes) - log.Fatal(http.ListenAndServe("127.0.0.1:5005", http.HandlerFunc(mux.ServeHTTP))) + log.Fatal(http.ListenAndServe("localhost:"+strconv.Itoa(settings.Port), http.HandlerFunc(mux.ServeHTTP))) } -func test(db_name string) { - nattempts := 50000 - nconns := 8 - start := time.Now() - nattempts = nattempts / nconns - counts := make([]int, nconns) - nbad := make([]int, nconns) - ngood := make([]int, nconns) - - var waitGroup sync.WaitGroup - waitGroup.Add(nconns) - - a := func(i int) { - for ; counts[i] < nattempts; counts[i]++ { - _,code := getNextRecord(db_name) - if code != utils.StatusOK { - nbad[i]++ - } else { - ngood[i]++ - } - } - waitGroup.Done() - } - - for i := 0; i < nconns; i++ { - go a(i) - } - waitGroup.Wait() - sum := 0 - for i := range counts { - sum += counts[i] - } - elapsed := time.Since(start) - fmt.Println("rate:", float64(sum)/elapsed.Seconds()) - fmt.Println("good,bad:", ngood, nbad) +func ReadConfig(fname string) error { + return utils.ReadJsonFromFile(fname, &settings) } diff --git a/broker/src/hidra2_broker/server/server_test.go b/broker/src/hidra2_broker/server/server_test.go index 52c835ad0..9d6d3d730 100644 --- a/broker/src/hidra2_broker/server/server_test.go +++ b/broker/src/hidra2_broker/server/server_test.go @@ -34,8 +34,10 @@ func TestInitDBWithWrongAddress(t *testing.T) { mock_db.ExpectedCalls = nil + settings.DbAddress = "0.0.0.0:0000" + for _, test := range initDBTests { - mock_db.On("Connect", mock.AnythingOfType("string")).Return(test.answer) + mock_db.On("Connect", "0.0.0.0:0000").Return(test.answer) err := InitDB(mock_db) diff --git a/broker/src/hidra2_broker/utils/helpers.go b/broker/src/hidra2_broker/utils/helpers.go index cadb8a908..02bb46796 100644 --- a/broker/src/hidra2_broker/utils/helpers.go +++ b/broker/src/hidra2_broker/utils/helpers.go @@ -1,6 +1,9 @@ package utils -import "encoding/json" +import ( + json "encoding/json" + "io/ioutil" +) func StringInSlice(a string, list []string) bool { for _, b := range list { @@ -19,3 +22,16 @@ func MapToJson(res interface{}) ([]byte, error) { return nil, err } } + +func ReadJsonFromFile(fname string, config interface{}) error { + content, err := ioutil.ReadFile(fname) + if err != nil { + return err + } + + err = json.Unmarshal(content, config) + if err != nil { + return err + } + return nil +} diff --git a/examples/worker/getnext_broker/CMakeLists.txt b/examples/worker/getnext_broker/CMakeLists.txt index 481cda44d..58f244cf8 100644 --- a/examples/worker/getnext_broker/CMakeLists.txt +++ b/examples/worker/getnext_broker/CMakeLists.txt @@ -10,6 +10,7 @@ set_target_properties(${TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY get_target_property(VAR ${TARGET_NAME} RUNTIME_OUTPUT_DIRECTORY) +configure_file(${CMAKE_SOURCE_DIR}/tests/settings/broker_settings.json settings.json COPYONLY) add_script_test("${TARGET_NAME}" "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME} $<TARGET_PROPERTY:hidra2-broker,EXENAME>") set (dir examples/worker/${TARGET_NAME}) diff --git a/examples/worker/getnext_broker/check_linux.sh b/examples/worker/getnext_broker/check_linux.sh index 3a676574e..d4b766bc4 100644 --- a/examples/worker/getnext_broker/check_linux.sh +++ b/examples/worker/getnext_broker/check_linux.sh @@ -15,7 +15,7 @@ Cleanup() { args=${@:1:$(($# - 1))} broker=${@:$#} -$broker & +$broker settings.json & brokerid=`echo $!` sleep 0.3 diff --git a/examples/worker/getnext_broker/check_windows.bat b/examples/worker/getnext_broker/check_windows.bat index 3936d42ff..b3025ffce 100644 --- a/examples/worker/getnext_broker/check_windows.bat +++ b/examples/worker/getnext_broker/check_windows.bat @@ -7,7 +7,7 @@ SET mongo_exe="c:\Program Files\MongoDB\Server\3.6\bin\mongo.exe" set full_name="%2" set short_name="%~nx2" -start /B "" "%full_name%" +start /B "" "%full_name%" settings.json ping 1.0.0.0 -n 1 -w 100 > nul diff --git a/tests/broker/CMakeLists.txt b/tests/broker/CMakeLists.txt index 26b4e7f91..c37417477 100644 --- a/tests/broker/CMakeLists.txt +++ b/tests/broker/CMakeLists.txt @@ -1,2 +1,3 @@ add_subdirectory(get_next) +add_subdirectory(read_config) diff --git a/tests/broker/get_next/CMakeLists.txt b/tests/broker/get_next/CMakeLists.txt index 92811c872..4eb27c114 100644 --- a/tests/broker/get_next/CMakeLists.txt +++ b/tests/broker/get_next/CMakeLists.txt @@ -3,5 +3,6 @@ set(TARGET_NAME hidra2-broker) ################################ # Testing ################################ +configure_file(${CMAKE_SOURCE_DIR}/tests/settings/broker_settings.json settings.json COPYONLY) add_script_test("${TARGET_NAME}-getnext" "$<TARGET_PROPERTY:${TARGET_NAME},EXENAME>" nomem ) diff --git a/tests/broker/get_next/check_linux.sh b/tests/broker/get_next/check_linux.sh index 915e3c083..fb0b7f887 100644 --- a/tests/broker/get_next/check_linux.sh +++ b/tests/broker/get_next/check_linux.sh @@ -15,8 +15,7 @@ Cleanup() { echo "db.data.insert({"_id":2})" | mongo ${database_name} echo "db.data.insert({"_id":1})" | mongo ${database_name} - -$@ & +$@ settings.json & sleep 0.3 brokerid=`echo $!` diff --git a/tests/broker/get_next/check_windows.bat b/tests/broker/get_next/check_windows.bat index 7ba081978..ffdcef0b7 100644 --- a/tests/broker/get_next/check_windows.bat +++ b/tests/broker/get_next/check_windows.bat @@ -7,7 +7,7 @@ echo db.data.insert({"_id":2}) | %mongo_exe% %database_name% || goto :error set full_name="%1" set short_name="%~nx1" -start /B "" "%full_name%" +start /B "" "%full_name%" settings.json ping 1.0.0.0 -n 1 -w 100 > nul diff --git a/tests/broker/read_config/CMakeLists.txt b/tests/broker/read_config/CMakeLists.txt new file mode 100644 index 000000000..a8949ad81 --- /dev/null +++ b/tests/broker/read_config/CMakeLists.txt @@ -0,0 +1,9 @@ +set(TARGET_NAME hidra2-broker) + +################################ +# Testing +################################ +configure_file(${CMAKE_SOURCE_DIR}/tests/settings/broker_settings.json settings_good.json COPYONLY) +configure_file(settings_bad.json settings_bad.json COPYONLY) +add_script_test("${TARGET_NAME}-readconfig" "$<TARGET_PROPERTY:${TARGET_NAME},EXENAME>" nomem + ) diff --git a/tests/broker/read_config/check_linux.sh b/tests/broker/read_config/check_linux.sh new file mode 100644 index 000000000..e491171a3 --- /dev/null +++ b/tests/broker/read_config/check_linux.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +set -e +database_name=data + +$@ settings_good.json & +sleep 0.3 +brokerid=`echo $!` +kill -9 $brokerid + +# check if gives error with bad json file +$@ settings_bad.json 2>&1 | grep "invalid" + +# check if gives error non-existing file +$@ settings_notexist.json 2>&1 | grep "no such" diff --git a/tests/broker/read_config/check_windows.bat b/tests/broker/read_config/check_windows.bat new file mode 100644 index 000000000..ec384f82f --- /dev/null +++ b/tests/broker/read_config/check_windows.bat @@ -0,0 +1,19 @@ + + +set full_name="%1" +set short_name="%~nx1" + +start /B "" "%full_name%" settings_good.json + +ping 1.0.0.0 -n 1 -w 100 > nul +Taskkill /IM "%short_name%" /F + +"%full_name%" settings_bad.json 2>&1 | findstr invalid || goto :error + +"%full_name%" settings_notexist.json 2>&1 | findstr such || goto :error + + +exit /b 0 + +:error +exit /b 1 diff --git a/tests/broker/read_config/settings_bad.json b/tests/broker/read_config/settings_bad.json new file mode 100644 index 000000000..01598594a --- /dev/null +++ b/tests/broker/read_config/settings_bad.json @@ -0,0 +1,4 @@ +{ + "dbaddress":"127.0.0.1:27017", + "port": +} \ No newline at end of file diff --git a/tests/settings/broker_settings.json b/tests/settings/broker_settings.json new file mode 100644 index 000000000..841f19946 --- /dev/null +++ b/tests/settings/broker_settings.json @@ -0,0 +1,4 @@ +{ + "dbaddress":"127.0.0.1:27017", + "port":5005 +} \ No newline at end of file diff --git a/tests/worker/next_multithread_broker/CMakeLists.txt b/tests/worker/next_multithread_broker/CMakeLists.txt index d2eadd2cd..e97403117 100644 --- a/tests/worker/next_multithread_broker/CMakeLists.txt +++ b/tests/worker/next_multithread_broker/CMakeLists.txt @@ -11,6 +11,7 @@ target_link_libraries(${TARGET_NAME} test_common hidra2-worker ${CMAKE_THREAD_L ################################ # Testing ################################ +configure_file(${CMAKE_SOURCE_DIR}/tests/settings/broker_settings.json settings.json COPYONLY) add_script_test("${TARGET_NAME}" "$<TARGET_FILE:${TARGET_NAME}> $<TARGET_PROPERTY:hidra2-broker,EXENAME>" ) diff --git a/tests/worker/next_multithread_broker/check_linux.sh b/tests/worker/next_multithread_broker/check_linux.sh index f7a7105f0..d1f5e2a23 100644 --- a/tests/worker/next_multithread_broker/check_linux.sh +++ b/tests/worker/next_multithread_broker/check_linux.sh @@ -15,7 +15,7 @@ Cleanup() { args=${@:1:$(($# - 1))} broker=${@:$#} -$broker & +$broker settings.json & brokerid=`echo $!` sleep 0.3 diff --git a/tests/worker/next_multithread_broker/check_windows.bat b/tests/worker/next_multithread_broker/check_windows.bat index 895deb5f3..7fbbd8931 100644 --- a/tests/worker/next_multithread_broker/check_windows.bat +++ b/tests/worker/next_multithread_broker/check_windows.bat @@ -7,7 +7,7 @@ SET mongo_exe="c:\Program Files\MongoDB\Server\3.6\bin\mongo.exe" set full_name="%2" set short_name="%~nx2" -start /B "" "%full_name%" +start /B "" "%full_name%" settings.json ping 1.0.0.0 -n 1 -w 100 > nul -- GitLab