func main() { if len(os.Args) > 1 { cfg.Init("pit", os.Args[1]) log.SetLogger( log.Levels[cfg.GetStr("logger", "level")], cfg.GetStr("logger", "log_file"), cfg.GetInt("logger", "max_log_size_mb"), ) } else { cfg.Init("pit", "dev") } runtime.GOMAXPROCS(runtime.NumCPU()) usersModel := users.GetModel( cfg.GetStr("aws", "prefix"), cfg.GetStr("aws", "region")) accountsManager := accountsmanager.Init( cfg.GetStr("rec-api", "base-url"), cfg.GetStr("mail", "addr"), cfg.GetStr("mail", "server"), cfg.GetInt("mail", "port"), usersModel) shardsManager := shardsmanager.Init( cfg.GetStr("aws", "prefix"), cfg.GetStr("aws", "region"), cfg.GetStr("aws", "s3-backups-path"), int(cfg.GetInt("rec-api", "port")), usersModel, cfg.GetStr("mail", "addr")) api.Init( shardsManager, accountsManager, cfg.GetStr("rec-api", "static"), int(cfg.GetInt("rec-api", "port")), int(cfg.GetInt("rec-api", "ssl-port")), cfg.GetStr("rec-api", "ssl-cert"), cfg.GetStr("rec-api", "ssl-key")) log.Info("System started...") c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt, os.Kill, syscall.SIGTERM) // Block until a signal is received. <-c log.Info("Stopping all the services") shardsManager.Stop() }
func TestPlaceOrder(t *testing.T) { cfg.Init("v", "dev") api, err := InitOandaApi( cfg.GetStr("oanda", "endpoint"), cfg.GetStr("oanda", "token"), int(cfg.GetInt("oanda", "account-id")), strings.Split(cfg.GetStr("oanda", "currencies"), ","), cfg.GetStr("oanda", "exanges-log"), ) if err != nil { t.Error("Problem connecting with oanda, Error:", err) } curr := api.GetBaseCurrency() if curr != "EUR" { t.Error("The configured value on the test account was EUR, but:", curr, "was returned") } currs := api.GetCurrencies() log.Debug(currs) order, err := api.Buy("USD", 1, 1.3, true, time.Now().Unix()) if err != nil { t.Error("Problem placing an order, Error:", err) } err = api.CloseOrder(order, time.Now().Unix()) if err != nil { t.Error("Problem closing an order, Error:", err) } order, err = api.Sell("USD", 1, 1.0, true, time.Now().Unix()) if err != nil { t.Error("Problem placing an order, Error:", err) } err = api.CloseOrder(order, time.Now().Unix()) if err != nil { t.Error("Problem closing an order, Error:", err) } order, err = api.Buy("USD", 1, 1.3, false, time.Now().Unix()) if err != nil { t.Error("Problem placing an order, Error:", err) } err = api.CloseOrder(order, time.Now().Unix()) if err != nil { t.Error("Problem closing an order, Error:", err) } order, err = api.Sell("USD", 1, 1.0, false, time.Now().Unix()) if err != nil { t.Error("Problem placing an order, Error:", err) } err = api.CloseOrder(order, time.Now().Unix()) if err != nil { t.Error("Problem closing an order, Error:", err) } }