Beispiel #1
0
        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);
        }