mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-24 15:10:19 +00:00
engine: fix potential difference between exchange config name and default name (#1041)
* engine: make sure upper and lower case names standardize from config to default and return error if sync item never matches * nits: Add tests for @gloriouscode Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
This commit is contained in:
@@ -846,6 +846,9 @@ func (bot *Engine) LoadExchange(name string, wg *sync.WaitGroup) error {
|
||||
}
|
||||
}
|
||||
|
||||
// NOTE: This will standardize name to default and apply it to the config.
|
||||
exchCfg.Name = exch.GetName()
|
||||
|
||||
exchCfg.Enabled = true
|
||||
err = exch.Setup(exchCfg)
|
||||
if err != nil {
|
||||
|
||||
@@ -39,6 +39,7 @@ var (
|
||||
errNoSyncItemsEnabled = errors.New("no sync items enabled")
|
||||
errUnknownSyncItem = errors.New("unknown sync item")
|
||||
errSyncPairNotFound = errors.New("exchange currency pair syncer not found")
|
||||
errCouldNotSyncNewData = errors.New("could not sync new data")
|
||||
)
|
||||
|
||||
// setupSyncManager starts a new CurrencyPairSyncer
|
||||
@@ -421,7 +422,7 @@ func (m *syncManager) Update(exchangeName string, p currency.Pair, a asset.Item,
|
||||
createdCounter)
|
||||
m.initSyncWG.Done()
|
||||
}
|
||||
|
||||
return nil
|
||||
case SyncItemOrderbook:
|
||||
origHadData := m.currencyPairs[x].Orderbook.HaveData
|
||||
m.currencyPairs[x].Orderbook.LastUpdated = time.Now()
|
||||
@@ -439,7 +440,7 @@ func (m *syncManager) Update(exchangeName string, p currency.Pair, a asset.Item,
|
||||
createdCounter)
|
||||
m.initSyncWG.Done()
|
||||
}
|
||||
|
||||
return nil
|
||||
case SyncItemTrade:
|
||||
origHadData := m.currencyPairs[x].Trade.HaveData
|
||||
m.currencyPairs[x].Trade.LastUpdated = time.Now()
|
||||
@@ -457,10 +458,11 @@ func (m *syncManager) Update(exchangeName string, p currency.Pair, a asset.Item,
|
||||
createdCounter)
|
||||
m.initSyncWG.Done()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
return fmt.Errorf("%w for %s %s %s", errCouldNotSyncNewData, exchangeName, p, a)
|
||||
}
|
||||
|
||||
func (m *syncManager) worker() {
|
||||
|
||||
@@ -247,3 +247,77 @@ func TestWaitForInitialSync(t *testing.T) {
|
||||
t.Fatalf("received %v, but expected: %v", err, nil)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSyncManagerUpdate(t *testing.T) {
|
||||
t.Parallel()
|
||||
var m *syncManager
|
||||
err := m.Update("", currency.EMPTYPAIR, 1, 47, nil)
|
||||
if !errors.Is(err, ErrNilSubsystem) {
|
||||
t.Fatalf("received %v, but expected: %v", err, ErrNilSubsystem)
|
||||
}
|
||||
|
||||
m = &syncManager{}
|
||||
err = m.Update("", currency.EMPTYPAIR, 1, 47, nil)
|
||||
if !errors.Is(err, ErrSubSystemNotStarted) {
|
||||
t.Fatalf("received %v, but expected: %v", err, ErrSubSystemNotStarted)
|
||||
}
|
||||
|
||||
m.started = 1
|
||||
// not started initial sync
|
||||
err = m.Update("", currency.EMPTYPAIR, 1, 47, nil)
|
||||
if !errors.Is(err, nil) {
|
||||
t.Fatalf("received %v, but expected: %v", err, nil)
|
||||
}
|
||||
|
||||
m.initSyncStarted = 1
|
||||
// orderbook not enabled
|
||||
err = m.Update("", currency.EMPTYPAIR, 1, 1, nil)
|
||||
if !errors.Is(err, nil) {
|
||||
t.Fatalf("received %v, but expected: %v", err, nil)
|
||||
}
|
||||
|
||||
m.config.SynchronizeOrderbook = true
|
||||
// ticker not enabled
|
||||
err = m.Update("", currency.EMPTYPAIR, 1, 0, nil)
|
||||
if !errors.Is(err, nil) {
|
||||
t.Fatalf("received %v, but expected: %v", err, nil)
|
||||
}
|
||||
|
||||
m.config.SynchronizeTicker = true
|
||||
// trades not enabled
|
||||
err = m.Update("", currency.EMPTYPAIR, 1, 2, nil)
|
||||
if !errors.Is(err, nil) {
|
||||
t.Fatalf("received %v, but expected: %v", err, nil)
|
||||
}
|
||||
|
||||
m.config.SynchronizeTrades = true
|
||||
err = m.Update("", currency.EMPTYPAIR, 1, 1336, nil)
|
||||
if !errors.Is(err, errUnknownSyncItem) {
|
||||
t.Fatalf("received %v, but expected: %v", err, errUnknownSyncItem)
|
||||
}
|
||||
|
||||
err = m.Update("", currency.EMPTYPAIR, 1, 1, nil)
|
||||
if !errors.Is(err, errCouldNotSyncNewData) {
|
||||
t.Fatalf("received %v, but expected: %v", err, errCouldNotSyncNewData)
|
||||
}
|
||||
|
||||
m.currencyPairs = append(m.currencyPairs, currencyPairSyncAgent{AssetType: 1})
|
||||
m.initSyncWG.Add(3)
|
||||
// orderbook match
|
||||
err = m.Update("", currency.EMPTYPAIR, 1, 1, errors.New("test"))
|
||||
if !errors.Is(err, nil) {
|
||||
t.Fatalf("received %v, but expected: %v", err, nil)
|
||||
}
|
||||
|
||||
// ticker match
|
||||
err = m.Update("", currency.EMPTYPAIR, 1, 0, errors.New("test"))
|
||||
if !errors.Is(err, nil) {
|
||||
t.Fatalf("received %v, but expected: %v", err, nil)
|
||||
}
|
||||
|
||||
// trades match
|
||||
err = m.Update("", currency.EMPTYPAIR, 1, 2, errors.New("test"))
|
||||
if !errors.Is(err, nil) {
|
||||
t.Fatalf("received %v, but expected: %v", err, nil)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user