Skip to content
Snippets Groups Projects
Commit eb9dadb4 authored by Sergey Yakubov's avatar Sergey Yakubov
Browse files

config files for broker

parent f95f4d50
No related branches found
No related tags found
No related merge requests found
Showing
with 111 additions and 54 deletions
......@@ -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()
......
......@@ -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() {
......
......@@ -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)
}
......@@ -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)
......
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
}
......@@ -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})
......
......@@ -15,7 +15,7 @@ Cleanup() {
args=${@:1:$(($# - 1))}
broker=${@:$#}
$broker &
$broker settings.json &
brokerid=`echo $!`
sleep 0.3
......
......@@ -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
......
add_subdirectory(get_next)
add_subdirectory(read_config)
......@@ -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
)
......@@ -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 $!`
......
......@@ -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
......
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
)
#!/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"
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
{
"dbaddress":"127.0.0.1:27017",
"port":
}
\ No newline at end of file
{
"dbaddress":"127.0.0.1:27017",
"port":5005
}
\ No newline at end of file
......@@ -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>"
)
......@@ -15,7 +15,7 @@ Cleanup() {
args=${@:1:$(($# - 1))}
broker=${@:$#}
$broker &
$broker settings.json &
brokerid=`echo $!`
sleep 0.3
......
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment