Ejemplo n.º 1
0
        public async void TestRunAsync(List <string> args)
        {
            if (args.Count == 1)
            {
                if (args[0].Trim().ToLower() == "progress")
                {
                    if (_progress != null)
                    {
                        ShowProgress(_progress);
                    }
                    else
                    {
                        _console.WriteLine("Нет операции");
                    }
                    return;
                }
                else if (args[0].Trim().ToLower() == "stop")
                {
                    if (_testRun != null)
                    {
                        _testRun.Stop();
                        _console.WriteLine("Тестовый прогон остановлен");
                    }
                    else
                    {
                        _console.WriteLine("Нет операции");
                    }
                    return;
                }
            }

            if (args.Count < 2)
            {
                _console.WriteError("Неверное число аргументов");
                return;
            }

            int tickSourceID;
            int testConfigID;
            int?accountID = null;

            int r;

            if (int.TryParse(args[0].Trim(), out r))
            {
                tickSourceID = r;
            }
            else
            {
                _console.WriteError("Неверно указан id источника");
                return;
            }
            if (int.TryParse(args[1].Trim(), out r))
            {
                testConfigID = r;
            }
            else
            {
                _console.WriteError("Неверно указан id тестовой конфигурации");
                return;
            }

            if (args.Count >= 3)
            {
                if (int.TryParse(args[2].Trim(), out r))
                {
                    accountID = r;
                }
                else
                {
                    _console.WriteError("Неверно указан id счета");
                    return;
                }
            }

            _console.WriteLine("Загрузка данных ... ");
            _testRun  = new TestRun(_accountBL, _accountDA, _instrumBL, _insStoreBL, _tickSourceBL, _testConfigBL, _logger, _config, _posBL, _reposBL);
            _progress = new BgTaskProgress(_syncContext, "Тестовый прогон");

            try
            {
                bool isSuccess = await _testRun.Initialize(tickSourceID, testConfigID, accountID, _progress);

                if (isSuccess)
                {
                    var stat = _testRun.GetTickSourceStatistics();

                    _console.WriteLine(string.Format("Всего загружено дней: {0}, тиков: {1}", stat.TotalDaysCount.ToString(), stat.TotalTicksCount.ToString()));
                    _console.WriteLine(string.Format("Из них синтезировано дней: {0} ({1}%), тиков: {2} ({3}%)",
                                                     stat.SynDaysCount.ToString(),
                                                     (stat.TotalDaysCount != 0 ? (decimal)stat.SynDaysCount * 100 / stat.TotalDaysCount : 0).ToString("##0.0#"),
                                                     stat.SynTicksCount,
                                                     (stat.TotalTicksCount != 0 ? (decimal)stat.SynTicksCount * 100 / stat.TotalTicksCount : 0).ToString("##0.0#")));
                    _console.WriteLine("Тестовый прогон выполняется ... ");

                    _testRun.Start(TestRunFinished);
                }
                else
                {
                    _console.WriteLine("Ошибка при инициализации.");
                }
            }
            catch (Exception ex)
            {
                _console.WriteError(ex.ToString());
            }
        }