public void SyncAccountDataAsync_holdings_sameHoldings() { IInstrumDA instrumDA = new InstrumDAMock(); IAccountDA accountDA = new AccountDAMock(); SyncPipeServerMock sps = new SyncPipeServerMock(); IReplicationBL replBL = new ReplicationBLMock(); ImportLeech import = new ImportLeech(instrumDA, accountDA, null, null, replBL); var r_accounts = sps.GetAccountList().Result; var r_instrums = sps.GetInstrumList().Result; // добавили две записи в разные accounts var r_h1 = sps.AddHolding(r_accounts[0].AccountID, r_instrums[0].InsID, 100); var r_h2 = sps.AddHolding(r_accounts[1].AccountID, r_instrums[1].InsID, 200); // синхронизировали import.SyncAccountDataAsync(sps).Wait(); // узнаем локальные accountID var repl_acc = replBL.GetReplications(Common.Data.ReplObjects.Account); int l_acc0ID = repl_acc[r_accounts[0].AccountID]; int l_acc1ID = repl_acc[r_accounts[1].AccountID]; // сравниваем CompareHoldings(sps.GetHoldingList(r_accounts[0].AccountID).Result, accountDA.GetHoldings(l_acc0ID), replBL); CompareHoldings(sps.GetHoldingList(r_accounts[1].AccountID).Result, accountDA.GetHoldings(l_acc1ID), replBL); // поменяем записи r_h1.LotCount = 1000; r_h2.LotCount = 2000; // синхронизировали import.SyncAccountDataAsync(sps).Wait(); // сравниваем CompareHoldings(sps.GetHoldingList(r_accounts[0].AccountID).Result, accountDA.GetHoldings(l_acc0ID), replBL); CompareHoldings(sps.GetHoldingList(r_accounts[1].AccountID).Result, accountDA.GetHoldings(l_acc1ID), replBL); // еще добавили запись var r_h3 = sps.AddHolding(r_accounts[1].AccountID, r_instrums[2].InsID, 300); // синхронизировали import.SyncAccountDataAsync(sps).Wait(); // сравниваем CompareHoldings(sps.GetHoldingList(r_accounts[0].AccountID).Result, accountDA.GetHoldings(l_acc0ID), replBL); CompareHoldings(sps.GetHoldingList(r_accounts[1].AccountID).Result, accountDA.GetHoldings(l_acc1ID), replBL); // удалили записи sps.RemoveHolding(r_h1); sps.RemoveHolding(r_h2); // синхронизировали import.SyncAccountDataAsync(sps).Wait(); // сравниваем CompareHoldings(sps.GetHoldingList(r_accounts[0].AccountID).Result, accountDA.GetHoldings(l_acc0ID), replBL); CompareHoldings(sps.GetHoldingList(r_accounts[1].AccountID).Result, accountDA.GetHoldings(l_acc1ID), replBL); }
public void SyncAccountDataAsync_instrums_sameInstrums() { IAccountDA accountDA = new AccountDAMock(); IInstrumDA instrumDA = new InstrumDAMock(); SyncPipeServerMock sps = new SyncPipeServerMock(); IReplicationBL replBL = new ReplicationBLMock(); ImportLeech import = new ImportLeech(instrumDA, accountDA, null, null, replBL); import.SyncAccountDataAsync(sps).Wait(); var r_instrums = sps.GetInstrumList().Result; CompareInstrums(r_instrums, instrumDA.GetInstrums(), replBL); // изменим instrum r_instrums[0].ShortName = "***"; r_instrums[0].Name = "+++"; r_instrums[0].LotSize = 10; r_instrums[0].Decimals = 3; import.SyncAccountDataAsync(sps).Wait(); CompareInstrums(r_instrums, instrumDA.GetInstrums(), replBL); // новый инструмент var newIns = sps.AddInstrum("ttt", "sn"); import.SyncAccountDataAsync(sps).Wait(); CompareInstrums(sps.GetInstrumList().Result, instrumDA.GetInstrums(), replBL); // удалим инструмент sps.RemoveInstrum(newIns.InsID); import.SyncAccountDataAsync(sps).Wait(); // при удалении инструмента в удаленной базе, // в локальной базе мы его не удаляем, // а удаляем лишь репликацию bool isReplFound = replBL.GetReplications(Common.Data.ReplObjects.Instrum).ContainsKey(newIns.InsID); Assert.False(isReplFound); // в удаленной базе должно быть на 1 меньше Assert.Equal(sps.GetInstrumList().Result.Count(), instrumDA.GetInstrums().Count() - 1); }
public void SyncAccountDataAsync_cash_sameCash() { IInstrumDA instrumDA = new InstrumDAMock(); IAccountDA accountDA = new AccountDAMock(); SyncPipeServerMock sps = new SyncPipeServerMock(); IReplicationBL replBL = new ReplicationBLMock(); ImportLeech import = new ImportLeech(instrumDA, accountDA, null, null, replBL); var r_accounts = sps.GetAccountList().Result; var r_instrums = sps.GetInstrumList().Result; // добавили две записи в разные accounts var r_h1 = sps.AddCash(r_accounts[0].AccountID, 100); var r_h2 = sps.AddCash(r_accounts[1].AccountID, 200); // синхронизировали import.SyncAccountDataAsync(sps).Wait(); // узнаем локальные accountID var repl_acc = replBL.GetReplications(Common.Data.ReplObjects.Account); int l_acc0ID = repl_acc[r_accounts[0].AccountID]; int l_acc1ID = repl_acc[r_accounts[1].AccountID]; // сравниваем var rCash = sps.GetCash(r_accounts[0].AccountID).Result; var lCash = accountDA.GetCash(l_acc0ID); CompareCash(rCash, lCash); // изменили данные rCash.Initial += 10.0m; rCash.Current += 20.0m; rCash.Buy += 30.0m; rCash.BuyComm += 40.0m; rCash.Sell += 50.0m; rCash.SellComm += 60.0m; // синхронизировали import.SyncAccountDataAsync(sps).Wait(); // сравниваем var rCash1 = sps.GetCash(r_accounts[0].AccountID).Result; var lCash1 = accountDA.GetCash(l_acc0ID); CompareCash(rCash1, lCash1); }
public void SyncAccountDataAsync_data_sameData() { IInstrumDA instrumDA = new InstrumDAMock(); IAccountDA accountDA = new AccountDAMock(); SyncPipeServerMock sps = new SyncPipeServerMock(); IReplicationBL replBL = new ReplicationBLMock(); var r_accounts = sps.GetAccountList().Result; var r_instrums = sps.GetInstrumList().Result; var so1 = sps.AddStopOrder(r_accounts[0].AccountID, r_instrums[0].InsID, Platform.BuySell.Buy, Platform.StopOrderType.StopLoss, 1000, 1); var ord1 = sps.AddOrder(so1); var trd1 = sps.AddTrade(ord1); var ord2 = sps.AddOrder(r_accounts[1].AccountID, r_instrums[1].InsID, Platform.BuySell.Sell, 1000, 1); var trd2 = sps.AddTrade(ord2); // действительно добавили записи Assert.True(sps.GetStopOrders(r_accounts[0].AccountID, 0).Result.Count() == 1); Assert.True(sps.GetOrders(r_accounts[0].AccountID, 0).Result.Count() == 1); Assert.True(sps.GetTrades(r_accounts[0].AccountID, 0).Result.Count() == 1); Assert.True(sps.GetStopOrders(r_accounts[1].AccountID, 0).Result.Count() == 0); Assert.True(sps.GetOrders(r_accounts[1].AccountID, 0).Result.Count() == 1); Assert.True(sps.GetTrades(r_accounts[1].AccountID, 0).Result.Count() == 1); ImportLeech import = new ImportLeech(instrumDA, accountDA, null, null, replBL); import.SyncAccountDataAsync(sps).Wait(); // узнаем локальные accountID var repl_acc = replBL.GetReplications(Common.Data.ReplObjects.Account); int l_acc0ID = repl_acc[r_accounts[0].AccountID]; int l_acc1ID = repl_acc[r_accounts[1].AccountID]; CompareStopOrders(sps.GetStopOrders(r_accounts[0].AccountID, 0).Result, accountDA.GetStopOrders(l_acc0ID), replBL); CompareStopOrders(sps.GetStopOrders(r_accounts[1].AccountID, 0).Result, accountDA.GetStopOrders(l_acc1ID), replBL); CompareOrders(sps.GetOrders(r_accounts[0].AccountID, 0).Result, accountDA.GetOrders(l_acc0ID), replBL); CompareOrders(sps.GetOrders(r_accounts[1].AccountID, 0).Result, accountDA.GetOrders(l_acc1ID), replBL); CompareTrades(sps.GetTrades(r_accounts[0].AccountID, 0).Result, accountDA.GetTrades(l_acc0ID), replBL); CompareTrades(sps.GetTrades(r_accounts[1].AccountID, 0).Result, accountDA.GetTrades(l_acc1ID), replBL); // еще добавили данных var so3 = sps.AddStopOrder(r_accounts[0].AccountID, r_instrums[0].InsID, Platform.BuySell.Sell, Platform.StopOrderType.TakeProfit, 2000, 2); var ord3 = sps.AddOrder(so3); var trd3 = sps.AddTrade(ord3); var ord4 = sps.AddOrder(r_accounts[1].AccountID, r_instrums[1].InsID, Platform.BuySell.Buy, 3000, 3); var trd4 = sps.AddTrade(ord4); // снова синхронизировали import.SyncAccountDataAsync(sps).Wait(); // и снова сравнили CompareStopOrders(sps.GetStopOrders(r_accounts[0].AccountID, 0).Result, accountDA.GetStopOrders(l_acc0ID), replBL); CompareStopOrders(sps.GetStopOrders(r_accounts[1].AccountID, 0).Result, accountDA.GetStopOrders(l_acc1ID), replBL); CompareOrders(sps.GetOrders(r_accounts[0].AccountID, 0).Result, accountDA.GetOrders(l_acc0ID), replBL); CompareOrders(sps.GetOrders(r_accounts[1].AccountID, 0).Result, accountDA.GetOrders(l_acc1ID), replBL); CompareTrades(sps.GetTrades(r_accounts[0].AccountID, 0).Result, accountDA.GetTrades(l_acc0ID), replBL); CompareTrades(sps.GetTrades(r_accounts[1].AccountID, 0).Result, accountDA.GetTrades(l_acc1ID), replBL); // изменили записи so3.Status = StopOrderStatus.Reject; ord3.Status = OrderStatus.Reject; // снова синхронизировали import.SyncAccountDataAsync(sps).Wait(); // и снова сравнили CompareStopOrders(sps.GetStopOrders(r_accounts[0].AccountID, 0).Result, accountDA.GetStopOrders(l_acc0ID), replBL); CompareStopOrders(sps.GetStopOrders(r_accounts[1].AccountID, 0).Result, accountDA.GetStopOrders(l_acc1ID), replBL); CompareOrders(sps.GetOrders(r_accounts[0].AccountID, 0).Result, accountDA.GetOrders(l_acc0ID), replBL); CompareOrders(sps.GetOrders(r_accounts[1].AccountID, 0).Result, accountDA.GetOrders(l_acc1ID), replBL); CompareTrades(sps.GetTrades(r_accounts[0].AccountID, 0).Result, accountDA.GetTrades(l_acc0ID), replBL); CompareTrades(sps.GetTrades(r_accounts[1].AccountID, 0).Result, accountDA.GetTrades(l_acc1ID), replBL); }