diff --git a/engine/engine.go b/engine/engine.go index 0e438f50..5be45325 100644 --- a/engine/engine.go +++ b/engine/engine.go @@ -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 { diff --git a/engine/sync_manager.go b/engine/sync_manager.go index e4d74d39..cd950e12 100644 --- a/engine/sync_manager.go +++ b/engine/sync_manager.go @@ -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() { diff --git a/engine/sync_manager_test.go b/engine/sync_manager_test.go index 153dcb6a..89d8e2f0 100644 --- a/engine/sync_manager_test.go +++ b/engine/sync_manager_test.go @@ -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) + } +}