Skip to content

Instantly share code, notes, and snippets.

@gloriousCode
Created July 22, 2020 01:49
Show Gist options
  • Save gloriousCode/90901cc21a2a66a443089b2741336e0c to your computer and use it in GitHub Desktop.
Save gloriousCode/90901cc21a2a66a443089b2741336e0c to your computer and use it in GitHub Desktop.
func TestTheThing1(t *testing.T) {
var err error
Bot, err = New()
if err != nil {
t.Fatalf("Failed to initialise engine. Err: %s", err)
}
Bot.Settings = Settings{
DisableExchangeAutoPairUpdates: true,
EnableExchangeHTTPRateLimiter: true,
EnableExchangeWebsocketSupport: true,
}
var wg sync.WaitGroup
for x := range exchange.Exchanges {
name := exchange.Exchanges[x]
exchCfg, err := Bot.Config.GetExchangeConfig(name)
if err != nil {
t.Errorf("Failed to load exchange %s. Err: %s", name, err)
}
exchCfg.Verbose = true
exchCfg.Websocket = convert.BoolPtr(false)
err = LoadExchange(name, true, &wg)
if err != nil {
t.Errorf("Failed to load exchange %s. Err: %s", name, err)
}
}
wg.Wait()
server := grpc.NewServer()
s := RPCServer{}
gctrpc.RegisterGoCryptoTraderServer(server, &s)
exchangesButts := GetExchanges()
_, err = Bot.Config.GetExchangeConfig("im not real")
if err == nil {
t.Errorf("expected error")
}
for i := range exchangesButts {
_, err := Bot.Config.GetExchangeConfig(exchangesButts[i].GetName())
if err != nil {
t.Errorf("Failed to load exchange %s. Err: %s", exchangesButts[i].GetName(), err)
}
assetTypes := exchangesButts[i].GetAssetTypes()
for j := range assetTypes {
_, err = s.SetExchangeAsset(nil, &gctrpc.SetExchangeAssetRequest{
Exchange: exchangesButts[i].GetName(),
Asset: assetTypes[j].String(),
Enable: false,
})
if err != nil && err.Error() != "asset already disabled" && err.Error() != "asset type not found" {
t.Errorf("%s %s %s", exchangesButts[i].GetName(), assetTypes[j].String(), err)
}
_, err = s.SetExchangeAsset(nil, &gctrpc.SetExchangeAssetRequest{
Exchange: exchangesButts[i].GetName(),
Asset: assetTypes[j].String(),
Enable: true,
})
if err != nil && err.Error() != "asset already enabled" && err.Error() != "asset type not found" {
t.Errorf("%s %s %s", exchangesButts[i].GetName(), assetTypes[j].String(), err)
}
}
}
}
func TestTheThing2(t *testing.T) {
var err error
Bot, err = New()
if err != nil {
t.Fatalf("Failed to initialise engine. Err: %s", err)
}
Bot.Settings = Settings{
DisableExchangeAutoPairUpdates: true,
EnableExchangeHTTPRateLimiter: true,
EnableExchangeWebsocketSupport: true,
}
var wg sync.WaitGroup
for x := range exchange.Exchanges {
name := exchange.Exchanges[x]
exchCfg, err := Bot.Config.GetExchangeConfig(name)
if err != nil {
t.Errorf("Failed to load exchange %s. Err: %s", name, err)
}
exchCfg.Verbose = true
exchCfg.Websocket = convert.BoolPtr(false)
err = LoadExchange(name, true, &wg)
if err != nil {
t.Errorf("Failed to load exchange %s. Err: %s", name, err)
}
}
wg.Wait()
server := grpc.NewServer()
s := RPCServer{}
gctrpc.RegisterGoCryptoTraderServer(server, &s)
exchangesButts := GetExchanges()
for i := range exchangesButts {
exchCfg, err := Bot.Config.GetExchangeConfig(exchangesButts[i].GetName())
if err != nil {
t.Errorf("Failed to load exchange %s. Err: %s", exchangesButts[i].GetName(), err)
}
_, err = s.SetExchangePair(nil, &gctrpc.SetExchangePairRequest{
Exchange: exchangesButts[i].GetName(),
AssetType: asset.Spot.String(),
Pairs: []*gctrpc.CurrencyPair{{
Delimiter: "lol",
Base: "bae",
Quote: "quo",
},
},
Enable: false,
})
if err == nil {
t.Error("expected error")
}
assetTypes := exchangesButts[i].GetAssetTypes()
for j := range assetTypes {
pairs, err := exchangesButts[i].GetAvailablePairs(assetTypes[j])
if err != nil {
t.Error(err)
}
if len(pairs) > 0 {
bae := ""
if !pairs[0].Base.IsEmpty() {
bae = pairs[0].Base.String()
}
quo := ""
if !pairs[0].Quote.IsEmpty() {
quo = pairs[0].Quote.String()
}
del := ""
if bae != "" && quo != "" {
del = pairs[0].Delimiter
}
_, err = s.SetExchangePair(nil, &gctrpc.SetExchangePairRequest{
Exchange: exchangesButts[i].GetName(),
AssetType: assetTypes[j].String(),
Pairs: []*gctrpc.CurrencyPair{{
Delimiter: del,
Base: bae,
Quote: quo,
},
},
Enable: false,
})
if err != nil && err.Error() != "specified pair is not enabled" {
t.Error(err)
}
_, err = s.SetExchangePair(nil, &gctrpc.SetExchangePairRequest{
Exchange: exchangesButts[i].GetName(),
AssetType: assetTypes[j].String(),
Pairs: []*gctrpc.CurrencyPair{{
Delimiter: del,
Base: bae,
Quote: quo,
},
},
Enable: true,
})
if err != nil && err.Error() != "specified pair is enabled" {
t.Error(err)
}
_, err = s.SetAllExchangePairs(nil, &gctrpc.SetExchangeAllPairsRequest{Enable: true, Exchange: exchangesButts[i].GetName()})
if err != nil {
t.Error(err)
}
_, err = s.SetAllExchangePairs(nil, &gctrpc.SetExchangeAllPairsRequest{Enable: false, Exchange: exchangesButts[i].GetName()})
if err != nil {
t.Error(err)
}
if exchCfg.Features.Supports.RESTCapabilities.AutoPairUpdates {
_, err = s.UpdateExchangeSupportedPairs(nil, &gctrpc.UpdateExchangeSupportedPairsRequest{
Exchange: exchangesButts[i].GetName(),
})
if err != nil && err.Error() != "cannot auto pair update for exchange, a manual update is needed" {
t.Error(err)
}
}
_, err = s.GetExchangeAssets(nil, &gctrpc.GetExchangeAssetsRequest{
Exchange: exchangesButts[i].GetName(),
})
if err != nil {
t.Error(err)
}
_, err = s.SetExchangePair(nil, &gctrpc.SetExchangePairRequest{
Exchange: exchangesButts[i].GetName(),
AssetType: assetTypes[j].String(),
Pairs: []*gctrpc.CurrencyPair{{
Delimiter: del,
Base: bae,
Quote: quo,
},
},
Enable: true,
})
if err != nil && err.Error() != "specified pair is enabled" {
t.Error(err)
}
}
}
}
}
func TestTheThing3(t *testing.T) {
var err error
Bot, err = New()
if err != nil {
t.Fatalf("Failed to initialise engine. Err: %s", err)
}
Bot.Settings = Settings{
DisableExchangeAutoPairUpdates: true,
EnableExchangeHTTPRateLimiter: true,
}
var wg sync.WaitGroup
for x := range exchange.Exchanges {
name := exchange.Exchanges[x]
exchCfg, err := Bot.Config.GetExchangeConfig(name)
if err != nil {
t.Errorf("Failed to load exchange %s. Err: %s", name, err)
}
exchCfg.Websocket = convert.BoolPtr(false)
err = LoadExchange(name, true, &wg)
if err != nil {
t.Errorf("Failed to load exchange %s. Err: %s", name, err)
}
}
wg.Wait()
server := grpc.NewServer()
s := RPCServer{}
gctrpc.RegisterGoCryptoTraderServer(server, &s)
exchangesButts := GetExchanges()
for i := range exchangesButts {
exchCfg, err := Bot.Config.GetExchangeConfig(exchangesButts[i].GetName())
if err != nil {
t.Errorf("Failed to load exchange %s. Err: %s", exchangesButts[i].GetName(), err)
}
if exchCfg.Features.Supports.Websocket {
_, err = s.WebsocketSetEnabled(nil, &gctrpc.WebsocketSetEnabledRequest{Exchange: exchangesButts[i].GetName(), Enable: true})
if err != nil && !strings.Contains(err.Error(), "websocket is already ") {
t.Error(err)
}
_, err = s.WebsocketSetURL(nil, &gctrpc.WebsocketSetURLRequest{Exchange:exchangesButts[i].GetName(), Url: "wss://echo.websocket.org"})
if err != nil {
t.Error(err)
}
_, err = s.WebsocketSetURL(nil, &gctrpc.WebsocketSetURLRequest{Exchange:exchangesButts[i].GetName(), Url: ""})
if err != nil {
t.Error(err)
}
ws, err := exchangesButts[i].GetWebsocket()
if err != nil {
t.Error(err)
}
time.Sleep(time.Second)
if ws != nil && ws.Conn != nil {
err = ws.Conn.Shutdown()
if err != nil {
t.Error(err)
}
}
}
}
}
func TestTheThing4(t *testing.T) {
var err error
Bot, err = New()
if err != nil {
t.Fatalf("Failed to initialise engine. Err: %s", err)
}
Bot.Settings = Settings{
DisableExchangeAutoPairUpdates: true,
EnableExchangeHTTPRateLimiter: true,
}
var wg sync.WaitGroup
for x := range exchange.Exchanges {
name := exchange.Exchanges[x]
exchCfg, err := Bot.Config.GetExchangeConfig(name)
if err != nil {
t.Errorf("Failed to load exchange %s. Err: %s", name, err)
}
exchCfg.Websocket = convert.BoolPtr(false)
err = LoadExchange(name, true, &wg)
if err != nil {
t.Errorf("Failed to load exchange %s. Err: %s", name, err)
}
}
wg.Wait()
server := grpc.NewServer()
s := RPCServer{}
gctrpc.RegisterGoCryptoTraderServer(server, &s)
exchangesButts := GetExchanges()
for i := range exchangesButts {
exchCfg, err := Bot.Config.GetExchangeConfig(exchangesButts[i].GetName())
if err != nil {
t.Errorf("Failed to load exchange %s. Err: %s", exchangesButts[i].GetName(), err)
}
if exchCfg.Features.Supports.Websocket {
_, err = s.WebsocketSetEnabled(nil, &gctrpc.WebsocketSetEnabledRequest{Exchange: exchangesButts[i].GetName(), Enable: true})
if err != nil && !strings.Contains(err.Error(), "websocket is already ") {
t.Error(err)
}
_, err = s.WebsocketGetInfo(nil, &gctrpc.WebsocketGetInfoRequest{Exchange: exchangesButts[i].GetName()})
if err != nil {
t.Error(err)
}
ws, err := exchangesButts[i].GetWebsocket()
if err != nil {
t.Error(err)
}
if ws != nil && ws.Conn != nil {
err = ws.Conn.Shutdown()
if err != nil {
t.Error(err)
}
}
}
}
}
func TestTheThing5(t *testing.T) {
var err error
Bot, err = New()
if err != nil {
t.Fatalf("Failed to initialise engine. Err: %s", err)
}
Bot.Settings = Settings{
DisableExchangeAutoPairUpdates: true,
EnableExchangeHTTPRateLimiter: true,
}
var wg sync.WaitGroup
for x := range exchange.Exchanges {
name := exchange.Exchanges[x]
exchCfg, err := Bot.Config.GetExchangeConfig(name)
if err != nil {
t.Errorf("Failed to load exchange %s. Err: %s", name, err)
}
exchCfg.Websocket = convert.BoolPtr(false)
err = LoadExchange(name, true, &wg)
if err != nil {
t.Errorf("Failed to load exchange %s. Err: %s", name, err)
}
}
wg.Wait()
server := grpc.NewServer()
s := RPCServer{}
gctrpc.RegisterGoCryptoTraderServer(server, &s)
exchangesButts := GetExchanges()
for i := range exchangesButts {
exchCfg, err := Bot.Config.GetExchangeConfig(exchangesButts[i].GetName())
if err != nil {
t.Errorf("Failed to load exchange %s. Err: %s", exchangesButts[i].GetName(), err)
}
if exchCfg.Features.Supports.Websocket {
_, err = s.WebsocketSetEnabled(nil, &gctrpc.WebsocketSetEnabledRequest{Exchange: exchangesButts[i].GetName(), Enable: true})
if err != nil && !strings.Contains(err.Error(), "websocket is already ") {
t.Error(err)
}
_, err = s.WebsocketGetSubscriptions(nil, &gctrpc.WebsocketGetSubscriptionsRequest{Exchange: exchangesButts[i].GetName()})
if err != nil {
t.Error(err)
}
time.Sleep(time.Second)
_, err = s.WebsocketSetEnabled(nil, &gctrpc.WebsocketSetEnabledRequest{Exchange: exchangesButts[i].GetName(), Enable: false})
if err != nil && !strings.Contains(err.Error(), "websocket is already ") {
t.Error(err)
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment