Improvement: Speeding up slow tests (#707)

* Speeds up tests

* Reduces time.Sleeps, lowers CreateTestBot complexity. Breaks things

* Removal of unecessary config reads. Parallel tests. Lower times

* Speeds up recent trades results

* mini update

* zoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooom

* Removes the dupes

* Lint

* post cherrypick

* Fix rare kraken data race

* Fixes banking global issues. Fixes postgres trades

* rmline for appveyor test

* Expands timeout in event that channel is closed before send

* Fix data race

* No rows, no bows and definitely no shows

* Removes parallel from createsnapshot tests

* Extends timedmutext test a smidge. Exchange fatality

* Shorter end timeframe and bigger candle
This commit is contained in:
Scott
2021-07-07 12:42:03 +10:00
committed by GitHub
parent 7815d0a1f4
commit 63257ce4ca
70 changed files with 1834 additions and 1121 deletions

View File

@@ -1167,7 +1167,6 @@ func TestWsNewOffer(t *testing.T) {
if err != nil {
t.Error(err)
}
time.Sleep(time.Second)
}
// TestWsCancelOffer dials websocket, sends cancel offer request.
@@ -1182,7 +1181,6 @@ func TestWsCancelOffer(t *testing.T) {
if err != nil {
t.Error(err)
}
time.Sleep(time.Second)
}
func TestConvertSymbolToDepositMethod(t *testing.T) {
@@ -1313,7 +1311,8 @@ func TestGetHistoricCandles(t *testing.T) {
t.Fatal(err)
}
startTime := time.Now().Add(-time.Hour * 24)
_, err = b.GetHistoricCandles(currencyPair, asset.Spot, startTime, time.Now(), kline.OneMin)
endTime := time.Now().Add(-time.Hour * 20)
_, err = b.GetHistoricCandles(currencyPair, asset.Spot, startTime, endTime, kline.OneHour)
if err != nil {
t.Fatal(err)
}
@@ -1330,12 +1329,13 @@ func TestGetHistoricCandlesExtended(t *testing.T) {
t.Fatal(err)
}
startTime := time.Now().Add(-time.Hour * 24)
_, err = b.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, time.Now(), kline.OneHour)
endTime := time.Now().Add(-time.Hour * 20)
_, err = b.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, endTime, kline.OneHour)
if err != nil {
t.Fatal(err)
}
_, err = b.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, time.Now(), kline.OneMin*1337)
_, err = b.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, endTime, kline.OneMin*1337)
if err == nil {
t.Fatal(err)
}

View File

@@ -524,7 +524,7 @@ func (b *Bitfinex) GetWithdrawalsHistory(c currency.Code) (resp []exchange.Withd
// GetRecentTrades returns the most recent trades for a currency and asset
func (b *Bitfinex) GetRecentTrades(p currency.Pair, assetType asset.Item) ([]trade.Data, error) {
return b.GetHistoricTrades(p, assetType, time.Now().Add(-time.Hour), time.Now())
return b.GetHistoricTrades(p, assetType, time.Now().Add(-time.Minute*15), time.Now())
}
// GetHistoricTrades returns historic trade data within the timeframe provided

View File

@@ -51,7 +51,6 @@ func TestMain(m *testing.M) {
if err != nil {
log.Fatal("Bitmex setup error", err)
}
b.UpdateTradablePairs(true)
os.Exit(m.Run())
}
@@ -64,17 +63,12 @@ func TestStart(t *testing.T) {
func TestGetFullFundingHistory(t *testing.T) {
t.Parallel()
_, err := b.GetFullFundingHistory("", "", "", "", "", true, time.Time{}, time.Time{})
_, err := b.GetFullFundingHistory("", "", "", "", "", true, time.Now().Add(-time.Minute), time.Now())
if err != nil {
t.Error(err)
}
_, err = b.GetFullFundingHistory("", "", "", "", "", true, time.Now().Add(-time.Hour*8), time.Now())
if err != nil {
t.Error(err)
}
_, err = b.GetFullFundingHistory("LTCUSD", "1", "", "", "", true, time.Now().Add(time.Hour*-24), time.Now())
_, err = b.GetFullFundingHistory("LTCUSD", "1", "", "", "", true, time.Now().Add(-time.Minute), time.Now())
if err != nil {
t.Error(err)
}
@@ -82,6 +76,9 @@ func TestGetFullFundingHistory(t *testing.T) {
func TestGetUrgentAnnouncement(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
_, err := b.GetUrgentAnnouncement()
if err == nil {
t.Error("GetUrgentAnnouncement() Expected error")
@@ -90,6 +87,9 @@ func TestGetUrgentAnnouncement(t *testing.T) {
func TestGetAPIKeys(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
_, err := b.GetAPIKeys()
if err == nil {
t.Error("GetAPIKeys() Expected error")
@@ -98,6 +98,7 @@ func TestGetAPIKeys(t *testing.T) {
func TestRemoveAPIKey(t *testing.T) {
t.Parallel()
_, err := b.RemoveAPIKey(APIKeyParams{APIKeyID: "1337"})
if err == nil {
t.Error("RemoveAPIKey() Expected error")
@@ -106,6 +107,9 @@ func TestRemoveAPIKey(t *testing.T) {
func TestDisableAPIKey(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
_, err := b.DisableAPIKey(APIKeyParams{APIKeyID: "1337"})
if err == nil {
t.Error("DisableAPIKey() Expected error")
@@ -114,6 +118,9 @@ func TestDisableAPIKey(t *testing.T) {
func TestEnableAPIKey(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
_, err := b.EnableAPIKey(APIKeyParams{APIKeyID: "1337"})
if err == nil {
t.Error("EnableAPIKey() Expected error")
@@ -122,7 +129,7 @@ func TestEnableAPIKey(t *testing.T) {
func TestGetTrollboxMessages(t *testing.T) {
t.Parallel()
_, err := b.GetTrollboxMessages(ChatGetParams{Count: 5})
_, err := b.GetTrollboxMessages(ChatGetParams{Count: 1})
if err != nil {
t.Error("GetTrollboxMessages() error", err)
}
@@ -130,6 +137,9 @@ func TestGetTrollboxMessages(t *testing.T) {
func TestSendTrollboxMessage(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
_, err := b.SendTrollboxMessage(ChatSendParams{
ChannelID: 1337,
Message: "Hello,World!"})
@@ -156,6 +166,9 @@ func TestGetTrollboxConnectedUsers(t *testing.T) {
func TestGetAccountExecutions(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
_, err := b.GetAccountExecutions(&GenericRequestParams{})
if err == nil {
t.Error("GetAccountExecutions() Expected error")
@@ -164,6 +177,9 @@ func TestGetAccountExecutions(t *testing.T) {
func TestGetAccountExecutionTradeHistory(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
_, err := b.GetAccountExecutionTradeHistory(&GenericRequestParams{})
if err == nil {
t.Error("GetAccountExecutionTradeHistory() Expected error")
@@ -180,7 +196,9 @@ func TestGetFundingHistory(t *testing.T) {
func TestGetInstruments(t *testing.T) {
t.Parallel()
_, err := b.GetInstruments(&GenericRequestParams{})
_, err := b.GetInstruments(&GenericRequestParams{
Symbol: "XRPUSD",
})
if err != nil {
t.Error("GetInstruments() error", err)
}
@@ -260,6 +278,9 @@ func TestGetLiquidationOrders(t *testing.T) {
func TestGetCurrentNotifications(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
_, err := b.GetCurrentNotifications()
if err == nil {
t.Error("GetCurrentNotifications() Expected error")
@@ -268,6 +289,9 @@ func TestGetCurrentNotifications(t *testing.T) {
func TestAmendOrder(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
_, err := b.AmendOrder(&OrderAmendParams{})
if err == nil {
t.Error("AmendOrder() Expected error")
@@ -276,6 +300,9 @@ func TestAmendOrder(t *testing.T) {
func TestCreateOrder(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
_, err := b.CreateOrder(&OrderNewParams{Symbol: "XBTM15",
Price: 219.0,
ClientOrderID: "mm_bitmex_1a/oemUeQ4CAJZgP3fjHsA",
@@ -287,6 +314,9 @@ func TestCreateOrder(t *testing.T) {
func TestCancelOrders(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
_, err := b.CancelOrders(&OrderCancelParams{})
if err == nil {
t.Error("CancelOrders() Expected error")
@@ -295,6 +325,9 @@ func TestCancelOrders(t *testing.T) {
func TestCancelAllOrders(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
_, err := b.CancelAllExistingOrders(OrderCancelAllParams{})
if err == nil {
t.Error("CancelAllOrders(orderCancellation *order.Cancel) (order.CancelAllResponse, error)", err)
@@ -303,6 +336,9 @@ func TestCancelAllOrders(t *testing.T) {
func TestAmendBulkOrders(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
_, err := b.AmendBulkOrders(OrderAmendBulkParams{})
if err == nil {
t.Error("AmendBulkOrders() Expected error")
@@ -311,6 +347,9 @@ func TestAmendBulkOrders(t *testing.T) {
func TestCreateBulkOrders(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
_, err := b.CreateBulkOrders(OrderNewBulkParams{})
if err == nil {
t.Error("CreateBulkOrders() Expected error")
@@ -319,6 +358,9 @@ func TestCreateBulkOrders(t *testing.T) {
func TestCancelAllOrdersAfterTime(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
_, err := b.CancelAllOrdersAfterTime(OrderCancelAllAfterParams{})
if err == nil {
t.Error("CancelAllOrdersAfterTime() Expected error")
@@ -426,7 +468,7 @@ func TestGetTrade(t *testing.T) {
_, err := b.GetTrade(&GenericRequestParams{
Symbol: "XBT",
Reverse: false,
StartTime: time.Now().Add(-time.Hour).Format(time.RFC3339),
StartTime: time.Now().Add(-time.Minute).Format(time.RFC3339),
})
if err != nil {
t.Error("GetTrade() error", err)
@@ -437,7 +479,7 @@ func TestGetPreviousTrades(t *testing.T) {
t.Parallel()
_, err := b.GetPreviousTrades(&TradeGetBucketedParams{
Symbol: "XBTBTC",
Start: int32(time.Now().Add(-time.Hour * 24).Unix()),
Start: int32(time.Now().Add(-time.Hour).Unix()),
Columns: "open,high,low,close,volume",
})
if err == nil {
@@ -1043,7 +1085,7 @@ func TestGetHistoricTrades(t *testing.T) {
t.Fatal(err)
}
currencyPair := b.CurrencyPairs.Pairs[asset.Futures].Available[0]
_, err = b.GetHistoricTrades(currencyPair, asset.Futures, time.Now().Add(-time.Minute*15), time.Now())
_, err = b.GetHistoricTrades(currencyPair, asset.Futures, time.Now().Add(-time.Minute), time.Now())
if err != nil {
t.Error(err)
}

View File

@@ -453,7 +453,7 @@ func (b *Bitmex) GetWithdrawalsHistory(c currency.Code) (resp []exchange.Withdra
// GetRecentTrades returns the most recent trades for a currency and asset
func (b *Bitmex) GetRecentTrades(p currency.Pair, assetType asset.Item) ([]trade.Data, error) {
return b.GetHistoricTrades(p, assetType, time.Now().Add(-time.Hour), time.Now())
return b.GetHistoricTrades(p, assetType, time.Now().Add(-time.Minute*15), time.Now())
}
// GetHistoricTrades returns historic trade data within the timeframe provided

View File

@@ -737,7 +737,7 @@ func TestBTCMarkets_GetHistoricCandles(t *testing.T) {
}
func TestBTCMarkets_GetHistoricCandlesExtended(t *testing.T) {
start := time.Now().AddDate(0, 0, -1001)
start := time.Now().AddDate(0, 0, -2)
end := time.Now()
p, err := currency.NewPairFromString(BTCAUD)
if err != nil {

View File

@@ -653,7 +653,7 @@ func TestGetHistoricCandlesExtended(t *testing.T) {
if err != nil {
t.Fatal(err)
}
startTime := time.Now().Add(-time.Hour * 24)
startTime := time.Now().Add(-time.Hour * 2)
_, err = c.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, time.Now(), kline.OneHour)
if err != nil {
t.Fatal(err)

View File

@@ -348,13 +348,23 @@ func TestSetAPICredentialDefaults(t *testing.T) {
}
func TestSetAutoPairDefaults(t *testing.T) {
cfg := config.GetConfig()
err := cfg.LoadConfig(config.TestFile, true)
if err != nil {
t.Fatalf("TestSetAutoPairDefaults failed to load config file. Error: %s", err)
}
t.Parallel()
bs := "Bitstamp"
cfg := &config.Config{Exchanges: []config.ExchangeConfig{
{
Name: bs,
CurrencyPairs: &currency.PairsManager{},
Features: &config.FeaturesConfig{
Supports: config.FeaturesSupportedConfig{
RESTCapabilities: protocol.Features{
AutoPairUpdates: true,
},
},
},
},
}}
exch, err := cfg.GetExchangeConfig("Bitstamp")
exch, err := cfg.GetExchangeConfig(bs)
if err != nil {
t.Fatalf("TestSetAutoPairDefaults load config failed. Error %s", err)
}
@@ -369,7 +379,7 @@ func TestSetAutoPairDefaults(t *testing.T) {
exch.Features.Supports.RESTCapabilities.AutoPairUpdates = false
exch, err = cfg.GetExchangeConfig("Bitstamp")
exch, err = cfg.GetExchangeConfig(bs)
if err != nil {
t.Fatalf("TestSetAutoPairDefaults load config failed. Error %s", err)
}
@@ -1467,10 +1477,14 @@ func TestSetPairs(t *testing.T) {
}
func TestUpdatePairs(t *testing.T) {
cfg := config.GetConfig()
err := cfg.LoadConfig(config.TestFile, true)
if err != nil {
t.Fatal("TestUpdatePairs failed to load config")
t.Parallel()
cfg := &config.Config{
Exchanges: []config.ExchangeConfig{
{
Name: defaultTestExchange,
CurrencyPairs: &currency.PairsManager{},
},
},
}
exchCfg, err := cfg.GetExchangeConfig(defaultTestExchange)

View File

@@ -1119,7 +1119,7 @@ func TestGetHistoricCandles(t *testing.T) {
t.Fatal(err)
}
start := time.Date(2019, 11, 12, 0, 0, 0, 0, time.UTC)
end := start.AddDate(0, 0, 5)
end := start.AddDate(0, 0, 2)
_, err = f.GetHistoricCandles(currencyPair, asset.Spot, start, end, kline.OneDay)
if err != nil {
t.Fatal(err)
@@ -1133,8 +1133,8 @@ func TestGetHistoricCandlesExtended(t *testing.T) {
t.Fatal(err)
}
start := time.Date(2019, 11, 12, 0, 0, 0, 0, time.UTC)
end := start.AddDate(0, 0, 5)
_, err = f.GetHistoricCandlesExtended(currencyPair, asset.Spot, start, end, kline.OneMin)
end := start.AddDate(0, 0, 2)
_, err = f.GetHistoricCandlesExtended(currencyPair, asset.Spot, start, end, kline.OneDay)
if err != nil {
t.Fatal(err)
}

View File

@@ -471,7 +471,7 @@ func (f *FTX) GetWithdrawalsHistory(c currency.Code) (resp []exchange.Withdrawal
// GetRecentTrades returns the most recent trades for a currency and asset
func (f *FTX) GetRecentTrades(p currency.Pair, assetType asset.Item) ([]trade.Data, error) {
return f.GetHistoricTrades(p, assetType, time.Now().Add(-time.Hour), time.Now())
return f.GetHistoricTrades(p, assetType, time.Now().Add(-time.Minute*15), time.Now())
}
// GetHistoricTrades returns historic trade data within the timeframe provided

View File

@@ -750,7 +750,7 @@ func TestGetHistoricCandlesExtended(t *testing.T) {
if err != nil {
t.Fatal(err)
}
startTime := time.Now().Add(-time.Hour * 6)
startTime := time.Now().Add(-time.Minute * 2)
_, err = g.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, time.Now(), kline.OneMin)
if err != nil {
t.Fatal(err)

View File

@@ -1190,7 +1190,7 @@ func TestGetHistoricTrades(t *testing.T) {
tEnd := time.Date(2020, 6, 7, 0, 0, 0, 0, time.UTC)
if !mockTests {
tStart = time.Date(time.Now().Year(), time.Now().Month(), 1, 0, 0, 0, 0, time.UTC)
tEnd = time.Date(time.Now().Year(), time.Now().Month(), 1, 1, 0, 0, 0, time.UTC)
tEnd = time.Date(time.Now().Year(), time.Now().Month(), 1, 0, 15, 0, 0, time.UTC)
}
_, err = g.GetHistoricTrades(currencyPair, asset.Spot, tStart, tEnd)
if err != nil {

View File

@@ -465,7 +465,7 @@ func (h *HitBTC) GetWithdrawalsHistory(c currency.Code) (resp []exchange.Withdra
// GetRecentTrades returns the most recent trades for a currency and asset
func (h *HitBTC) GetRecentTrades(p currency.Pair, assetType asset.Item) ([]trade.Data, error) {
return h.GetHistoricTrades(p, assetType, time.Now().Add(-time.Hour), time.Now())
return h.GetHistoricTrades(p, assetType, time.Now().Add(-time.Minute*15), time.Now())
}
// GetHistoricTrades returns historic trade data within the timeframe provided

View File

@@ -135,7 +135,7 @@ func TestFGetKlineData(t *testing.T) {
if err != nil {
t.Error(err)
}
_, err = h.FGetKlineData(cp, "5min", 5, time.Time{}, time.Time{})
_, err = h.FGetKlineData(cp, "5min", 5, time.Now().Add(-time.Minute*5), time.Now())
if err != nil {
t.Error(err)
}
@@ -654,7 +654,8 @@ func TestFetchTradablePairs(t *testing.T) {
}
}
func TestUpdateTicker(t *testing.T) {
func TestUpdateTickerSpot(t *testing.T) {
t.Parallel()
sp, err := currency.NewPairFromString("BTC_USDT")
if err != nil {
t.Error(err)
@@ -663,6 +664,10 @@ func TestUpdateTicker(t *testing.T) {
if err != nil {
t.Error(err)
}
}
func TestUpdateTickerCMF(t *testing.T) {
t.Parallel()
cp1, err := currency.NewPairFromString("BTC-USD")
if err != nil {
t.Error(err)
@@ -671,6 +676,10 @@ func TestUpdateTicker(t *testing.T) {
if err != nil {
t.Error(err)
}
}
func TestUpdateTickerFutures(t *testing.T) {
t.Parallel()
tradablePairs, err := h.FetchTradablePairs(asset.Futures)
if err != nil {
t.Error(err)
@@ -688,7 +697,7 @@ func TestUpdateTicker(t *testing.T) {
}
}
func TestUpdateOrderbook(t *testing.T) {
func TestUpdateOrderbookSpot(t *testing.T) {
t.Parallel()
sp, err := currency.NewPairFromString("BTC_USDT")
if err != nil {
@@ -698,7 +707,11 @@ func TestUpdateOrderbook(t *testing.T) {
if err != nil {
t.Error(err)
}
cp1, err := currency.NewPairFromString("BTC_USD")
}
func TestUpdateOrderbookCMF(t *testing.T) {
t.Parallel()
cp1, err := currency.NewPairFromString("BTC-USD")
if err != nil {
t.Error(err)
}
@@ -706,6 +719,10 @@ func TestUpdateOrderbook(t *testing.T) {
if err != nil {
t.Error(err)
}
}
func TestUpdateOrderbookFuture(t *testing.T) {
t.Parallel()
tradablePairs, err := h.FetchTradablePairs(asset.Futures)
if err != nil {
t.Error(err)
@@ -1550,7 +1567,7 @@ func TestGetHistoricCandlesExtended(t *testing.T) {
if err != nil {
t.Fatal(err)
}
startTime := time.Now().Add(-time.Hour * 1)
startTime := time.Now().Add(-time.Minute * 2)
_, err = h.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, time.Now(), kline.OneMin)
if err != nil {
t.Fatal(err)

View File

@@ -32,6 +32,7 @@ var (
)
func TestValidateData(t *testing.T) {
t.Parallel()
err := validateData(nil)
if err == nil {
t.Error("error cannot be nil")
@@ -90,6 +91,7 @@ func TestValidateData(t *testing.T) {
}
func TestCreateKline(t *testing.T) {
t.Parallel()
c, err := CreateKline(nil,
OneMin,
currency.NewPair(currency.BTC, currency.USD),
@@ -135,24 +137,28 @@ func TestCreateKline(t *testing.T) {
}
func TestKlineWord(t *testing.T) {
t.Parallel()
if OneDay.Word() != "oneday" {
t.Fatalf("unexpected result: %v", OneDay.Word())
}
}
func TestKlineDuration(t *testing.T) {
t.Parallel()
if OneDay.Duration() != time.Hour*24 {
t.Fatalf("unexpected result: %v", OneDay.Duration())
}
}
func TestKlineShort(t *testing.T) {
t.Parallel()
if OneDay.Short() != "24h" {
t.Fatalf("unexpected result: %v", OneDay.Short())
}
}
func TestDurationToWord(t *testing.T) {
t.Parallel()
testCases := []struct {
name string
interval Interval
@@ -254,6 +260,7 @@ func TestDurationToWord(t *testing.T) {
}
func TestKlineErrors(t *testing.T) {
t.Parallel()
v := ErrorKline{
Interval: OneYear,
Pair: currency.NewPair(currency.BTC, currency.AUD),
@@ -278,6 +285,7 @@ func TestKlineErrors(t *testing.T) {
}
func TestTotalCandlesPerInterval(t *testing.T) {
t.Parallel()
start := time.Date(2019, 1, 1, 0, 0, 0, 0, time.UTC)
end := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC)
@@ -399,7 +407,8 @@ func TestTotalCandlesPerInterval(t *testing.T) {
}
func TestCalculateCandleDateRanges(t *testing.T) {
pt := time.Date(1999, 1, 1, 0, 0, 0, 0, time.UTC)
t.Parallel()
pt := time.Date(2019, 1, 1, 0, 0, 0, 0, time.UTC)
ft := time.Date(2222, 1, 1, 0, 0, 0, 0, time.UTC)
et := time.Date(2020, 1, 1, 1, 0, 0, 0, time.UTC)
nt := time.Time{}
@@ -424,31 +433,31 @@ func TestCalculateCandleDateRanges(t *testing.T) {
t.Errorf("received %v expected %v", err, common.ErrStartEqualsEnd)
}
v, err := CalculateCandleDateRanges(pt, et, OneMin, 300)
v, err := CalculateCandleDateRanges(pt, et, OneWeek, 300)
if err != nil {
t.Error(err)
}
if v.Ranges[0].Start.Ticks != time.Unix(915148800, 0).Unix() {
t.Errorf("expected %v received %v", 915148800, v.Ranges[0].Start.Ticks)
if !v.Ranges[0].Start.Time.Equal(time.Unix(1546214400, 0)) {
t.Errorf("expected %v received %v", 1546214400, v.Ranges[0].Start.Ticks)
}
v, err = CalculateCandleDateRanges(pt, et, OneDay, 100)
v, err = CalculateCandleDateRanges(pt, et, OneWeek, 100)
if err != nil {
t.Error(err)
}
if len(v.Ranges) != 77 {
t.Fatalf("expected %v received %v", 77, len(v.Ranges))
if len(v.Ranges) != 1 {
t.Fatalf("expected %v received %v", 1, len(v.Ranges))
}
if len(v.Ranges[0].Intervals) != 100 {
t.Errorf("expected %v received %v", 100, len(v.Ranges[0].Intervals))
if len(v.Ranges[0].Intervals) != 52 {
t.Errorf("expected %v received %v", 52, len(v.Ranges[0].Intervals))
}
v, err = CalculateCandleDateRanges(et, ft, OneDay, 5)
v, err = CalculateCandleDateRanges(et, ft, OneWeek, 5)
if err != nil {
t.Error(err)
}
if len(v.Ranges) != 14756 {
t.Errorf("expected %v received %v", 14756, len(v.Ranges))
if len(v.Ranges) != 2108 {
t.Errorf("expected %v received %v", 2108, len(v.Ranges))
}
if len(v.Ranges[0].Intervals) != 5 {
t.Errorf("expected %v received %v", 5, len(v.Ranges[0].Intervals))
@@ -458,12 +467,13 @@ func TestCalculateCandleDateRanges(t *testing.T) {
}
lenRanges := len(v.Ranges) - 1
lenIntervals := len(v.Ranges[lenRanges].Intervals) - 1
if !v.Ranges[lenRanges].Intervals[lenIntervals].End.Equal(ft.Round(OneDay.Duration())) {
if !v.Ranges[lenRanges].Intervals[lenIntervals].End.Equal(ft.Round(OneWeek.Duration())) {
t.Errorf("expected %v received %v", ft.Round(OneDay.Duration()), v.Ranges[lenRanges].Intervals[lenIntervals].End)
}
}
func TestItem_SortCandlesByTimestamp(t *testing.T) {
t.Parallel()
var tempKline = Item{
Exchange: "testExchange",
Pair: currency.NewPair(currency.BTC, currency.USDT),
@@ -742,6 +752,7 @@ func TestLoadCSV(t *testing.T) {
}
func TestVerifyResultsHaveData(t *testing.T) {
t.Parallel()
tt2 := time.Now().Round(OneDay.Duration())
tt1 := time.Now().Add(-time.Hour * 24).Round(OneDay.Duration())
dateRanges, err := CalculateCandleDateRanges(tt1, tt2, OneDay, 0)
@@ -770,6 +781,7 @@ func TestVerifyResultsHaveData(t *testing.T) {
}
func TestDataSummary(t *testing.T) {
t.Parallel()
tt1 := time.Now().Add(-time.Hour * 24).Round(OneDay.Duration())
tt2 := time.Now().Round(OneDay.Duration())
tt3 := time.Now().Add(time.Hour * 24).Round(OneDay.Duration())
@@ -797,6 +809,7 @@ func TestDataSummary(t *testing.T) {
}
func TestHasDataAtDate(t *testing.T) {
t.Parallel()
tt2 := time.Now().Round(OneDay.Duration())
tt1 := time.Now().Add(-time.Hour * 24 * 30).Round(OneDay.Duration())
dateRanges, err := CalculateCandleDateRanges(tt1, tt2, OneDay, 0)
@@ -826,6 +839,7 @@ func TestHasDataAtDate(t *testing.T) {
}
func TestIntervalsPerYear(t *testing.T) {
t.Parallel()
i := OneYear
if i.IntervalsPerYear() != 1.0 {
t.Error("expected 1")

View File

@@ -128,10 +128,10 @@ func TestUpdateAccountInfo(t *testing.T) {
}
func TestWrapperGetOrderInfo(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() {
t.Skip("skipping test: api keys not set")
}
t.Parallel()
_, err := k.GetOrderInfo("123", currency.Pair{}, asset.Futures)
if err != nil {
t.Error(err)
@@ -139,10 +139,10 @@ func TestWrapperGetOrderInfo(t *testing.T) {
}
func TestFuturesBatchOrder(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() || !canManipulateRealOrders {
t.Skip("skipping test: api keys not set or canManipulateRealOrders")
}
t.Parallel()
var data []PlaceBatchOrderData
var tempData PlaceBatchOrderData
tempData.PlaceOrderType = "cancel"
@@ -156,10 +156,10 @@ func TestFuturesBatchOrder(t *testing.T) {
}
func TestFuturesEditOrder(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() || !canManipulateRealOrders {
t.Skip("skipping test: api keys not set or canManipulateRealOrders")
}
t.Parallel()
_, err := k.FuturesEditOrder("test123", "", 5.2, 1, 0)
if err != nil {
t.Error(err)
@@ -167,10 +167,10 @@ func TestFuturesEditOrder(t *testing.T) {
}
func TestFuturesSendOrder(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() || !canManipulateRealOrders {
t.Skip("skipping test: api keys not set or canManipulateRealOrders")
}
t.Parallel()
cp, err := currency.NewPairFromString("PI_XBTUSD")
if err != nil {
t.Error(err)
@@ -182,10 +182,10 @@ func TestFuturesSendOrder(t *testing.T) {
}
func TestFuturesCancelOrder(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() || !canManipulateRealOrders {
t.Skip("skipping test: api keys not set or canManipulateRealOrders")
}
t.Parallel()
_, err := k.FuturesCancelOrder("test123", "")
if err != nil {
t.Error(err)
@@ -193,10 +193,10 @@ func TestFuturesCancelOrder(t *testing.T) {
}
func TestFuturesGetFills(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() {
t.Skip("skipping test: api keys not set")
}
t.Parallel()
_, err := k.FuturesGetFills(time.Now().Add(-time.Hour * 24))
if err != nil {
t.Error(err)
@@ -204,10 +204,10 @@ func TestFuturesGetFills(t *testing.T) {
}
func TestFuturesTransfer(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() {
t.Skip("skipping test: api keys not set")
}
t.Parallel()
_, err := k.FuturesTransfer("cash", "futures", "btc", 2)
if err != nil {
t.Error(err)
@@ -215,10 +215,10 @@ func TestFuturesTransfer(t *testing.T) {
}
func TestFuturesGetOpenPositions(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() {
t.Skip("skipping test: api keys not set")
}
t.Parallel()
_, err := k.FuturesGetOpenPositions()
if err != nil {
t.Error(err)
@@ -226,10 +226,10 @@ func TestFuturesGetOpenPositions(t *testing.T) {
}
func TestFuturesNotifications(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() {
t.Skip("skipping test: api keys not set")
}
t.Parallel()
_, err := k.FuturesNotifications()
if err != nil {
t.Error(err)
@@ -237,10 +237,10 @@ func TestFuturesNotifications(t *testing.T) {
}
func TestFuturesCancelAllOrders(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() || !canManipulateRealOrders {
t.Skip("skipping test: api keys not set or canManipulateRealOrders")
}
t.Parallel()
cp, err := currency.NewPairFromString("PI_XBTUSD")
if err != nil {
t.Error(err)
@@ -252,10 +252,10 @@ func TestFuturesCancelAllOrders(t *testing.T) {
}
func TestGetFuturesAccountData(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() {
t.Skip("skipping test: api keys not set")
}
t.Parallel()
_, err := k.GetFuturesAccountData()
if err != nil {
t.Error(err)
@@ -263,10 +263,10 @@ func TestGetFuturesAccountData(t *testing.T) {
}
func TestFuturesCancelAllOrdersAfter(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() || !canManipulateRealOrders {
t.Skip("skipping test: api keys not set or canManipulateRealOrders")
}
t.Parallel()
_, err := k.FuturesCancelAllOrdersAfter(50)
if err != nil {
t.Error(err)
@@ -274,10 +274,10 @@ func TestFuturesCancelAllOrdersAfter(t *testing.T) {
}
func TestFuturesOpenOrders(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() {
t.Skip("skipping test: api keys not set")
}
t.Parallel()
_, err := k.FuturesOpenOrders()
if err != nil {
t.Error(err)
@@ -285,10 +285,10 @@ func TestFuturesOpenOrders(t *testing.T) {
}
func TestFuturesRecentOrders(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() {
t.Skip("skipping test: api keys not set")
}
t.Parallel()
cp, err := currency.NewPairFromString("PI_XBTUSD")
if err != nil {
t.Error(err)
@@ -300,10 +300,10 @@ func TestFuturesRecentOrders(t *testing.T) {
}
func TestFuturesWithdrawToSpotWallet(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() || !canManipulateRealOrders {
t.Skip("skipping test: api keys not set or canManipulateRealOrders")
}
t.Parallel()
_, err := k.FuturesWithdrawToSpotWallet("xbt", 5)
if err != nil {
t.Error(err)
@@ -311,10 +311,10 @@ func TestFuturesWithdrawToSpotWallet(t *testing.T) {
}
func TestFuturesGetTransfers(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() {
t.Skip("skipping test: api keys not set")
}
t.Parallel()
_, err := k.FuturesGetTransfers(time.Now().Add(-time.Hour * 24))
if err != nil {
t.Error(err)
@@ -508,14 +508,6 @@ func TestGetTrades(t *testing.T) {
if err != nil {
t.Error("GetTrades() error", err)
}
cp2, err := currency.NewPairFromString("MADEUP")
if err != nil {
t.Error(err)
}
_, err = k.GetTrades(cp2)
if err == nil {
t.Error("expected error")
}
}
// TestGetSpread API endpoint test
@@ -680,6 +672,7 @@ func setFeeBuilder() *exchange.FeeBuilder {
// TestGetFeeByTypeOfflineTradeFee logic test
func TestGetFeeByTypeOfflineTradeFee(t *testing.T) {
t.Parallel()
var feeBuilder = setFeeBuilder()
k.GetFeeByType(feeBuilder)
if !areTestAPIKeysSet() {
@@ -694,6 +687,7 @@ func TestGetFeeByTypeOfflineTradeFee(t *testing.T) {
}
func TestGetFee(t *testing.T) {
t.Parallel()
var feeBuilder = setFeeBuilder()
if areTestAPIKeysSet() {
@@ -766,6 +760,7 @@ func TestGetFee(t *testing.T) {
// TestFormatWithdrawPermissions logic test
func TestFormatWithdrawPermissions(t *testing.T) {
t.Parallel()
expectedResult := exchange.AutoWithdrawCryptoWithSetupText + " & " + exchange.WithdrawCryptoWith2FAText + " & " + exchange.AutoWithdrawFiatWithSetupText + " & " + exchange.WithdrawFiatWith2FAText
withdrawPermissions := k.FormatWithdrawPermissions()
if withdrawPermissions != expectedResult {
@@ -797,6 +792,7 @@ func TestGetActiveOrders(t *testing.T) {
// TestGetOrderHistory wrapper test
func TestGetOrderHistory(t *testing.T) {
t.Parallel()
var getOrdersRequest = order.GetOrdersRequest{
Type: order.AnyType,
AssetType: asset.Spot,
@@ -812,6 +808,7 @@ func TestGetOrderHistory(t *testing.T) {
// TestGetOrderHistory wrapper test
func TestGetOrderInfo(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
@@ -837,6 +834,7 @@ func areTestAPIKeysSet() bool {
// TestSubmitOrder wrapper test
func TestSubmitOrder(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
@@ -863,6 +861,7 @@ func TestSubmitOrder(t *testing.T) {
// TestCancelExchangeOrder wrapper test
func TestCancelExchangeOrder(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
@@ -883,6 +882,7 @@ func TestCancelExchangeOrder(t *testing.T) {
// TestCancelExchangeOrder wrapper test
func TestCancelBatchExchangeOrder(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
@@ -911,6 +911,7 @@ func TestCancelBatchExchangeOrder(t *testing.T) {
// TestCancelAllExchangeOrders wrapper test
func TestCancelAllExchangeOrders(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
@@ -930,6 +931,7 @@ func TestCancelAllExchangeOrders(t *testing.T) {
// TestGetAccountInfo wrapper test
func TestGetAccountInfo(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() {
_, err := k.UpdateAccountInfo(asset.Spot)
if err != nil {
@@ -945,6 +947,7 @@ func TestGetAccountInfo(t *testing.T) {
}
func TestUpdateFuturesAccountInfo(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() {
t.Skip("API keys not set. Skipping the test")
}
@@ -957,6 +960,7 @@ func TestUpdateFuturesAccountInfo(t *testing.T) {
// TestModifyOrder wrapper test
func TestModifyOrder(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
@@ -968,6 +972,7 @@ func TestModifyOrder(t *testing.T) {
// TestWithdraw wrapper test
func TestWithdraw(t *testing.T) {
t.Parallel()
withdrawCryptoRequest := withdraw.Request{
Exchange: k.Name,
Crypto: withdraw.CryptoRequest{
@@ -994,6 +999,7 @@ func TestWithdraw(t *testing.T) {
// TestWithdrawFiat wrapper test
func TestWithdrawFiat(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
@@ -1016,6 +1022,7 @@ func TestWithdrawFiat(t *testing.T) {
// TestWithdrawInternationalBank wrapper test
func TestWithdrawInternationalBank(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() && !canManipulateRealOrders {
t.Skip("API keys set, canManipulateRealOrders false, skipping test")
}
@@ -1038,6 +1045,7 @@ func TestWithdrawInternationalBank(t *testing.T) {
// TestGetDepositAddress wrapper test
func TestGetDepositAddress(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() {
_, err := k.GetDepositAddress(currency.BTC, "")
if err != nil {
@@ -1053,6 +1061,7 @@ func TestGetDepositAddress(t *testing.T) {
// TestWithdrawStatus wrapper test
func TestWithdrawStatus(t *testing.T) {
t.Parallel()
if areTestAPIKeysSet() {
_, err := k.WithdrawStatus(currency.BTC, "")
if err != nil {
@@ -1068,6 +1077,7 @@ func TestWithdrawStatus(t *testing.T) {
// TestWithdrawCancel wrapper test
func TestWithdrawCancel(t *testing.T) {
t.Parallel()
_, err := k.WithdrawCancel(currency.BTC, "")
if areTestAPIKeysSet() && err == nil {
t.Error("WithdrawCancel() error cannot be nil")
@@ -1166,6 +1176,7 @@ func TestWsCancelAllOrders(t *testing.T) {
}
func TestWsPong(t *testing.T) {
t.Parallel()
pressXToJSON := []byte(`{
"event": "pong",
"reqid": 42
@@ -1177,6 +1188,7 @@ func TestWsPong(t *testing.T) {
}
func TestWsSystemStatus(t *testing.T) {
t.Parallel()
pressXToJSON := []byte(`{
"connectionID": 8628615390848610000,
"event": "systemStatus",
@@ -1190,6 +1202,7 @@ func TestWsSystemStatus(t *testing.T) {
}
func TestWsSubscriptionStatus(t *testing.T) {
t.Parallel()
pressXToJSON := []byte(`{
"channelID": 10001,
"channelName": "ticker",
@@ -1251,6 +1264,7 @@ func TestWsSubscriptionStatus(t *testing.T) {
}
func TestWsTicker(t *testing.T) {
t.Parallel()
pressXToJSON := []byte(`{
"channelID": 1337,
"channelName": "ticker",
@@ -1317,6 +1331,7 @@ func TestWsTicker(t *testing.T) {
}
func TestWsOHLC(t *testing.T) {
t.Parallel()
pressXToJSON := []byte(`{
"channelID": 13337,
"channelName": "ohlc",
@@ -1354,6 +1369,7 @@ func TestWsOHLC(t *testing.T) {
}
func TestWsTrade(t *testing.T) {
t.Parallel()
pressXToJSON := []byte(`{
"channelID": 133337,
"channelName": "trade",
@@ -1398,6 +1414,7 @@ func TestWsTrade(t *testing.T) {
}
func TestWsSpread(t *testing.T) {
t.Parallel()
pressXToJSON := []byte(`{
"channelID": 1333337,
"channelName": "spread",
@@ -1431,6 +1448,7 @@ func TestWsSpread(t *testing.T) {
}
func TestWsOrdrbook(t *testing.T) {
t.Parallel()
pressXToJSON := []byte(`{
"channelID": 13333337,
"channelName": "book",
@@ -1606,6 +1624,7 @@ func TestWsOrdrbook(t *testing.T) {
}
func TestWsOwnTrades(t *testing.T) {
t.Parallel()
pressXToJSON := []byte(`[
[
{
@@ -1678,6 +1697,7 @@ func TestWsOwnTrades(t *testing.T) {
}
func TestWsOpenOrders(t *testing.T) {
t.Parallel()
pressXToJSON := []byte(`[
[
{
@@ -1825,6 +1845,7 @@ func TestWsOpenOrders(t *testing.T) {
}
func TestWsAddOrderJSON(t *testing.T) {
t.Parallel()
pressXToJSON := []byte(`{
"descr": "buy 0.01770000 XBTUSD @ limit 4000",
"event": "addOrderStatus",
@@ -1838,6 +1859,7 @@ func TestWsAddOrderJSON(t *testing.T) {
}
func TestWsCancelOrderJSON(t *testing.T) {
t.Parallel()
pressXToJSON := []byte(`{
"event": "cancelOrderStatus",
"status": "ok"
@@ -1849,6 +1871,7 @@ func TestWsCancelOrderJSON(t *testing.T) {
}
func TestParseTime(t *testing.T) {
t.Parallel()
// Test REST example
r := convert.TimeFromUnixTimestampDecimal(1373750306.9819).UTC()
if r.Year() != 2013 ||
@@ -1867,11 +1890,12 @@ func TestParseTime(t *testing.T) {
}
func TestGetHistoricCandles(t *testing.T) {
t.Parallel()
currencyPair, err := currency.NewPairFromString("XBT-USD")
if err != nil {
t.Fatal(err)
}
_, err = k.GetHistoricCandles(currencyPair, asset.Spot, time.Now().AddDate(0, 0, -1), time.Now(), kline.OneMin)
_, err = k.GetHistoricCandles(currencyPair, asset.Spot, time.Now(), time.Now().Add(-time.Minute*3), kline.OneMin)
if err != nil {
t.Fatal(err)
}
@@ -1883,11 +1907,12 @@ func TestGetHistoricCandles(t *testing.T) {
}
func TestGetHistoricCandlesExtended(t *testing.T) {
t.Parallel()
currencyPair, err := currency.NewPairFromString("XBT-USD")
if err != nil {
t.Fatal(err)
}
_, err = k.GetHistoricCandlesExtended(currencyPair, asset.Spot, time.Now().AddDate(0, -6, 0), time.Now(), kline.OneDay)
_, err = k.GetHistoricCandlesExtended(currencyPair, asset.Spot, time.Now().Add(-time.Hour*48), time.Now(), kline.OneDay)
if err != nil {
t.Fatal(err)
}
@@ -1899,6 +1924,7 @@ func TestGetHistoricCandlesExtended(t *testing.T) {
}
func Test_FormatExchangeKlineInterval(t *testing.T) {
t.Parallel()
testCases := []struct {
name string
interval kline.Interval
@@ -1931,7 +1957,7 @@ func Test_FormatExchangeKlineInterval(t *testing.T) {
func TestGetRecentTrades(t *testing.T) {
t.Parallel()
currencyPair, err := currency.NewPairFromString("XBTUSD")
currencyPair, err := currency.NewPairFromString("BCHEUR")
if err != nil {
t.Fatal(err)
}
@@ -1983,6 +2009,7 @@ var testOb = orderbook.Base{
const krakenAPIDocChecksum = 974947235
func TestChecksumCalculation(t *testing.T) {
t.Parallel()
expected := "5005"
if v := trim("0.05005"); v != expected {
t.Fatalf("expected %s but received %s", expected, v)

View File

@@ -58,9 +58,12 @@ const (
// orderbookMutex Ensures if two entries arrive at once, only one can be
// processed at a time
var subscriptionChannelPair []WebsocketChannelData
var authToken string
var pingRequest = WebsocketBaseEventRequest{Event: stream.Ping}
var (
subscriptionChannelPair []WebsocketChannelData
authToken string
pingRequest = WebsocketBaseEventRequest{Event: stream.Ping}
m sync.Mutex
)
// Channels require a topic and a currency
// Format [[ticker,but-t4u],[orderbook,nce-btt]]
@@ -625,6 +628,8 @@ func (k *Kraken) addNewSubscriptionChannelData(response *wsSubscription) {
return
}
}
m.Lock()
defer m.Unlock()
subscriptionChannelPair = append(subscriptionChannelPair, WebsocketChannelData{
Subscription: response.Subscription.Name,
Pair: fPair,
@@ -634,6 +639,8 @@ func (k *Kraken) addNewSubscriptionChannelData(response *wsSubscription) {
// getSubscriptionChannelData retrieves WebsocketChannelData based on response ID
func getSubscriptionChannelData(id int64) (WebsocketChannelData, error) {
m.Lock()
defer m.Unlock()
for i := range subscriptionChannelPair {
if subscriptionChannelPair[i].ChannelID == nil {
continue

View File

@@ -492,7 +492,7 @@ func TestGetHistoricTrades(t *testing.T) {
if err != nil {
t.Fatal(err)
}
_, err = l.GetHistoricTrades(currencyPair, asset.Spot, time.Now().Add(-time.Hour*24), time.Now())
_, err = l.GetHistoricTrades(currencyPair, asset.Spot, time.Now().Add(-time.Minute*15), time.Now())
if err != nil && err != common.ErrFunctionNotSupported {
t.Error(err)
}

View File

@@ -427,7 +427,7 @@ func TestGetHistoricCandles(t *testing.T) {
func TestGetHistoricCandlesExtended(t *testing.T) {
t.Parallel()
startTime := time.Now().Add(-time.Hour)
startTime := time.Now().Add(-time.Minute * 2)
end := time.Now()
pair, err := currency.NewPairFromString("eth_btc")
if err != nil {

View File

@@ -356,7 +356,7 @@ func (l *Lbank) GetWithdrawalsHistory(c currency.Code) (resp []exchange.Withdraw
// GetRecentTrades returns the most recent trades for a currency and asset
func (l *Lbank) GetRecentTrades(p currency.Pair, assetType asset.Item) ([]trade.Data, error) {
return l.GetHistoricTrades(p, assetType, time.Now().Add(-time.Hour), time.Now())
return l.GetHistoricTrades(p, assetType, time.Now().Add(-time.Minute*15), time.Now())
}
// GetHistoricTrades returns historic trade data within the timeframe provided

View File

@@ -823,7 +823,6 @@ func TestOrderBookUpdateChecksumCalculator(t *testing.T) {
if err != nil {
t.Fatal(err)
}
time.Sleep(time.Second)
err = o.WsProcessOrderBook([]byte(update))
if err != nil {
t.Error(err)
@@ -841,7 +840,6 @@ func TestOrderBookUpdateChecksumCalculatorWith8DecimalPlaces(t *testing.T) {
if err != nil {
t.Fatal(err)
}
time.Sleep(time.Second)
err = o.WsProcessOrderBook([]byte(update))
if err != nil {
t.Error(err)

View File

@@ -1647,7 +1647,6 @@ func TestOrderBookUpdateChecksumCalculator(t *testing.T) {
if err != nil {
t.Fatal(err)
}
time.Sleep(time.Second)
err = o.WsHandleData([]byte(update))
if err != nil {
t.Error(err)
@@ -1662,7 +1661,6 @@ func TestOrderBookUpdateChecksumCalculatorWith8DecimalPlaces(t *testing.T) {
if err != nil {
t.Fatal(err)
}
time.Sleep(time.Second)
err = o.WsHandleData([]byte(update))
if err != nil {
t.Error(err)

View File

@@ -423,6 +423,7 @@ func TestOrderbookLastUpdateID(t *testing.T) {
// TestRunUpdateWithoutSnapshot logic test
func TestRunUpdateWithoutSnapshot(t *testing.T) {
t.Parallel()
var holder Orderbook
var snapShot1 orderbook.Base
asks := []orderbook.Item{
@@ -451,6 +452,7 @@ func TestRunUpdateWithoutSnapshot(t *testing.T) {
// TestRunUpdateWithoutAnyUpdates logic test
func TestRunUpdateWithoutAnyUpdates(t *testing.T) {
t.Parallel()
var obl Orderbook
var snapShot1 orderbook.Base
snapShot1.Asks = []orderbook.Item{}
@@ -472,6 +474,7 @@ func TestRunUpdateWithoutAnyUpdates(t *testing.T) {
// TestRunSnapshotWithNoData logic test
func TestRunSnapshotWithNoData(t *testing.T) {
t.Parallel()
var obl Orderbook
obl.ob = make(map[currency.Code]map[currency.Code]map[asset.Item]*orderbookHolder)
obl.dataHandler = make(chan interface{}, 1)
@@ -488,6 +491,7 @@ func TestRunSnapshotWithNoData(t *testing.T) {
// TestLoadSnapshot logic test
func TestLoadSnapshot(t *testing.T) {
t.Parallel()
var obl Orderbook
obl.dataHandler = make(chan interface{}, 100)
obl.ob = make(map[currency.Code]map[currency.Code]map[asset.Item]*orderbookHolder)
@@ -509,8 +513,8 @@ func TestLoadSnapshot(t *testing.T) {
}
}
// TestFlushbuffer logic test
func TestFlushbuffer(t *testing.T) {
// TestFlushBuffer logic test
func TestFlushBuffer(t *testing.T) {
obl, _, _, err := createSnapshot()
if err != nil {
t.Fatal(err)
@@ -526,6 +530,7 @@ func TestFlushbuffer(t *testing.T) {
// TestInsertingSnapShots logic test
func TestInsertingSnapShots(t *testing.T) {
t.Parallel()
var holder Orderbook
holder.dataHandler = make(chan interface{}, 100)
holder.ob = make(map[currency.Code]map[currency.Code]map[asset.Item]*orderbookHolder)
@@ -705,6 +710,7 @@ func TestGetOrderbook(t *testing.T) {
}
func TestSetup(t *testing.T) {
t.Parallel()
w := Orderbook{}
err := w.Setup(0, false, false, false, false, true, "", nil)
if !errors.Is(err, errUnsetExchangeName) {
@@ -736,6 +742,7 @@ func TestSetup(t *testing.T) {
}
func TestValidate(t *testing.T) {
t.Parallel()
w := Orderbook{}
err := w.validate(nil)
if !errors.Is(err, errUpdateIsNil) {
@@ -749,6 +756,7 @@ func TestValidate(t *testing.T) {
}
func TestEnsureMultipleUpdatesViaPrice(t *testing.T) {
t.Parallel()
holder, _, _, err := createSnapshot()
if err != nil {
t.Error(err)
@@ -782,6 +790,7 @@ func deploySliceOrdered(size int) orderbook.Items {
}
func TestUpdateByIDAndAction(t *testing.T) {
t.Parallel()
holder := orderbookHolder{}
asks := deploySliceOrdered(100)
@@ -990,6 +999,7 @@ func TestUpdateByIDAndAction(t *testing.T) {
}
func TestFlushOrderbook(t *testing.T) {
t.Parallel()
w := &Orderbook{}
err := w.Setup(5, false, false, false, false, false, "test", make(chan interface{}, 2))
if err != nil {

View File

@@ -6,6 +6,7 @@ import (
)
func TestMatch(t *testing.T) {
t.Parallel()
bm := &Match{}
if bm.Incoming("wow") {
t.Fatal("Should not have matched")

View File

@@ -87,6 +87,7 @@ func (d *dodgyConnection) Connect() error {
}
func TestSetup(t *testing.T) {
t.Parallel()
var w *Websocket
err := w.Setup(nil)
if err == nil {
@@ -164,7 +165,7 @@ func TestTrafficMonitorTimeout(t *testing.T) {
if err != nil {
t.Fatal(err)
}
ws.trafficTimeout = time.Millisecond
ws.trafficTimeout = time.Second * 2
ws.ShutdownC = make(chan struct{})
ws.trafficMonitor()
if !ws.IsTrafficMonitorRunning() {
@@ -187,6 +188,7 @@ func TestTrafficMonitorTimeout(t *testing.T) {
}
func TestIsDisconnectionError(t *testing.T) {
t.Parallel()
isADisconnectionError := isDisconnectionError(errors.New("errorText"))
if isADisconnectionError {
t.Error("Its not")
@@ -215,6 +217,7 @@ func TestIsDisconnectionError(t *testing.T) {
}
func TestConnectionMessageErrors(t *testing.T) {
t.Parallel()
var wsWrong = &Websocket{}
err := wsWrong.Connect()
if err == nil {
@@ -283,6 +286,7 @@ outer:
}
func TestWebsocket(t *testing.T) {
t.Parallel()
wsInit := Websocket{}
err := wsInit.Setup(&WebsocketSetup{
ExchangeName: "test",
@@ -440,6 +444,7 @@ func TestWebsocket(t *testing.T) {
// TestSubscribe logic test
func TestSubscribeUnsubscribe(t *testing.T) {
t.Parallel()
ws := *New()
err := ws.Setup(defaultSetup)
if err != nil {
@@ -498,6 +503,7 @@ func TestSubscribeUnsubscribe(t *testing.T) {
}
func TestResubscribe(t *testing.T) {
t.Parallel()
ws := *New()
err := ws.Setup(defaultSetup)
if err != nil {
@@ -534,6 +540,7 @@ func TestResubscribe(t *testing.T) {
// TestConnectionMonitorNoConnection logic test
func TestConnectionMonitorNoConnection(t *testing.T) {
t.Parallel()
ws := *New()
ws.DataHandler = make(chan interface{}, 1)
ws.ShutdownC = make(chan struct{}, 1)
@@ -567,6 +574,7 @@ func TestConnectionMonitorNoConnection(t *testing.T) {
// TestSliceCopyDoesntImpactBoth logic test
func TestGetSubscriptions(t *testing.T) {
t.Parallel()
w := Websocket{
subscriptions: []ChannelSubscription{
{
@@ -581,6 +589,7 @@ func TestGetSubscriptions(t *testing.T) {
// TestSetCanUseAuthenticatedEndpoints logic test
func TestSetCanUseAuthenticatedEndpoints(t *testing.T) {
t.Parallel()
ws := *New()
result := ws.CanUseAuthenticatedEndpoints()
if result {
@@ -595,6 +604,7 @@ func TestSetCanUseAuthenticatedEndpoints(t *testing.T) {
// TestDial logic test
func TestDial(t *testing.T) {
t.Parallel()
var testCases = []testStruct{
{Error: nil,
WC: WebsocketConnection{
@@ -642,6 +652,7 @@ func TestDial(t *testing.T) {
// TestSendMessage logic test
func TestSendMessage(t *testing.T) {
t.Parallel()
var testCases = []testStruct{
{Error: nil, WC: WebsocketConnection{
ExchangeName: "test1",
@@ -696,6 +707,7 @@ func TestSendMessage(t *testing.T) {
// TestSendMessageWithResponse logic test
func TestSendMessageWithResponse(t *testing.T) {
t.Parallel()
wc := &WebsocketConnection{
Verbose: true,
URL: "wss://ws.kraken.com",
@@ -757,6 +769,7 @@ func readMessages(wc *WebsocketConnection, t *testing.T) {
// TestSetupPingHandler logic test
func TestSetupPingHandler(t *testing.T) {
t.Parallel()
wc := &WebsocketConnection{
URL: websocketTestURL,
ResponseMaxLimit: time.Second * 5,
@@ -800,6 +813,7 @@ func TestSetupPingHandler(t *testing.T) {
// TestParseBinaryResponse logic test
func TestParseBinaryResponse(t *testing.T) {
t.Parallel()
wc := &WebsocketConnection{
URL: websocketTestURL,
ResponseMaxLimit: time.Second * 5,
@@ -849,6 +863,7 @@ func TestParseBinaryResponse(t *testing.T) {
// TestCanUseAuthenticatedWebsocketForWrapper logic test
func TestCanUseAuthenticatedWebsocketForWrapper(t *testing.T) {
t.Parallel()
ws := &Websocket{}
resp := ws.CanUseAuthenticatedWebsocketForWrapper()
if resp {
@@ -867,6 +882,7 @@ func TestCanUseAuthenticatedWebsocketForWrapper(t *testing.T) {
}
func TestGenerateMessageID(t *testing.T) {
t.Parallel()
wc := WebsocketConnection{}
var id int64
for i := 0; i < 10; i++ {
@@ -927,6 +943,7 @@ func TestCheckWebsocketURL(t *testing.T) {
}
func TestGetChannelDifference(t *testing.T) {
t.Parallel()
web := Websocket{}
newChans := []ChannelSubscription{
@@ -1022,6 +1039,7 @@ func (g *GenSubs) UNSUBME(unsubs []ChannelSubscription) error {
func connect() error { return nil }
func TestFlushChannels(t *testing.T) {
t.Parallel()
// Enabled pairs/setup system
newgen := GenSubs{EnabledPairs: []currency.Pair{
currency.NewPair(currency.BTC, currency.AUD),
@@ -1143,6 +1161,7 @@ func TestFlushChannels(t *testing.T) {
}
func TestDisable(t *testing.T) {
t.Parallel()
web := Websocket{
enabled: true,
connected: true,
@@ -1159,6 +1178,7 @@ func TestDisable(t *testing.T) {
}
func TestEnable(t *testing.T) {
t.Parallel()
web := Websocket{
connector: connect,
Wg: new(sync.WaitGroup),
@@ -1178,6 +1198,7 @@ func TestEnable(t *testing.T) {
}
func TestSetupNewConnection(t *testing.T) {
t.Parallel()
var nonsenseWebsock *Websocket
err := nonsenseWebsock.SetupNewConnection(ConnectionSetup{URL: "urlstring"})
if err == nil {
@@ -1232,6 +1253,7 @@ func TestSetupNewConnection(t *testing.T) {
}
func TestWebsocketConnectionShutdown(t *testing.T) {
t.Parallel()
wc := WebsocketConnection{}
err := wc.Shutdown()
if err != nil {

View File

@@ -203,17 +203,16 @@ func TestShutdown(t *testing.T) {
t.Parallel()
var p Processor
p.mutex.Lock()
p.bufferProcessorInterval = time.Second
p.bufferProcessorInterval = time.Millisecond
p.mutex.Unlock()
var wg sync.WaitGroup
wg.Add(1)
go p.Run(&wg)
wg.Wait()
time.Sleep(time.Millisecond)
if atomic.LoadInt32(&p.started) != 1 {
t.Error("expected it to start running")
}
time.Sleep(time.Second * 2)
time.Sleep(time.Millisecond * 20)
if atomic.LoadInt32(&p.started) != 0 {
t.Error("expected it to stop running")
}