예제 #1
0
        private void TestProcedureApi(IO.Swagger.Client.Configuration configuration, string threadName)
        {
            IArxOperationBase maskOperation      = new LoadMaskOperationWebApi(_logger, configuration);
            IArxOperationBase searchDocOperation = new SearchDocumentOperationWebApi(_logger, configuration);
            IArxOperationBase storeOperation     = new ArxStoreOperationWebApi(_logger, configuration);
            IArxOperationBase f2Operation        = new F2OperationWebApi(_logger, configuration);

            for (int i = 0; i < RepeatCount; i++)
            {
                var dtStart = DateTime.Now;

                string msgLog = string.Format("<{2}> Execution {0} of {1}", (i + 1), RepeatCount, threadName);

                DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() => { _logger.Info(msgLog); }));

                var mp = new MaskParameter {
                    MaskId = "84e5ea23a77f482883c663d6900546cf"
                };
                var maskResult = maskOperation.Execute(mp);

                var storeResult = (DocnumberResult)storeOperation.Execute(mp);

                var sdp = new DocnumberParameter {
                    Docnumber = storeResult.Docnumber
                };
                var searchDocResult = searchDocOperation.Execute(sdp);

                var f2p = new DocnumberParameter {
                    Docnumber = storeResult.Docnumber
                };
                var f2Result = f2Operation.Execute(f2p);

                _timeTestProcedure.Add((DateTime.Now - dtStart).TotalMilliseconds);
            }

            _timeMask.AddRange(maskOperation.ExcuteDurationMsList);
            _timeSearch.AddRange(searchDocOperation.ExcuteDurationMsList);
            _timeStore.AddRange(storeOperation.ExcuteDurationMsList);
            _timeF2.AddRange(f2Operation.ExcuteDurationMsList);

            DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() =>
            {
                _logger.Info(string.Format("REPORT <{0}>\r\nMASK\r\n{1}\r\nSTORE\r\n{2}\r\nSEARCH\r\n{3}\r\nF2\r\n{4}",
                                           threadName,
                                           TimeCalculator.EvaluateTime(maskOperation.ExcuteDurationMsList.ToArray()).ToString(),
                                           TimeCalculator.EvaluateTime(storeOperation.ExcuteDurationMsList.ToArray()).ToString(),
                                           TimeCalculator.EvaluateTime(searchDocOperation.ExcuteDurationMsList.ToArray()).ToString(),
                                           TimeCalculator.EvaluateTime(f2Operation.ExcuteDurationMsList.ToArray()).ToString()
                                           ));
            }));
        }
예제 #2
0
        private Task TaskWebApi()
        {
            var task = new Task(() =>
            {
                DispatcherHelper.UIDispatcher.Invoke(() => IsBusy = true);

                var listTaskTest = new List <Task>();

                DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() => { _logger.Info("Execute login test"); }));


                try
                {
                    var authApi = new IO.Swagger.Api.AuthenticationApi(Url);

                    var tokenRequestDto = new AuthenticationTokenRequestDTO(Username, Password, CLIENTID, CLIENTSECRET, null, null, null, null, null, null, null);
                    var tokenResponse   = authApi.AuthenticationGetToken(tokenRequestDto);

                    var configuration = new IO.Swagger.Client.Configuration()
                    {
                        ApiKey = new Dictionary <string, string>()
                        {
                            { "Authorization", tokenResponse.AccessToken }
                        },
                        ApiKeyPrefix = new Dictionary <string, string>()
                        {
                            { "Authorization", "Bearer" }
                        },
                        BasePath = Url
                    };

                    for (int i = 0; i < ThreadCount; i++)
                    {
                        DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() => { _logger.Info(string.Format(" - Create procedure connection {0} of {1}", (i + 1), ThreadCount)); }));

                        var taskClient = new Task(() => TestProcedureApi(configuration, string.Format("Thread{0}", i + 1)), TaskCreationOptions.LongRunning);

                        taskClient.Start();
                        listTaskTest.Add(taskClient);

                        Thread.Sleep(1000);
                    }

                    listTaskTest.ForEach(x => x.Wait());

                    DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() =>
                    {
                        _logger.Info(string.Format("REPORT\r\nMASK\r\n{0}\r\nSTORE\r\n{1}\r\nSEARCH\r\n{2}\r\nF2\r\n{3}\r\nCycle\r\n{4}",
                                                   TimeCalculator.EvaluateTime(_timeMask.ToArray()).ToString(),
                                                   TimeCalculator.EvaluateTime(_timeStore.ToArray()).ToString(),
                                                   TimeCalculator.EvaluateTime(_timeSearch.ToArray()).ToString(),
                                                   TimeCalculator.EvaluateTime(_timeF2.ToArray()).ToString(),
                                                   TimeCalculator.EvaluateTime(_timeTestProcedure.ToArray()).ToString()
                                                   ));
                    }));

                    MessageBox.Show("Test procedure completed", "Execute completed", MessageBoxButton.OK, MessageBoxImage.Information);
                }
                catch (Exception exception)
                {
                    DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() =>
                    {
                        _logger.Error(exception.Message);
                    }));

                    MessageBox.Show(exception.Message, "Execute error", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    DispatcherHelper.UIDispatcher.Invoke(() => IsBusy = false);
                }
            }
                                );

            return(task);
        }
예제 #3
0
        private Task TaskWcf()
        {
            var task = new Task(() =>
            {
                DispatcherHelper.UIDispatcher.Invoke(() => IsBusy = true);

                var wcfConnectorList = new List <WCFConnectorManager>();
                var listTaskTest     = new List <Task>();
                try
                {
                    DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() => { _logger.Info("Execute login test"); }));

                    var arxLogonRequest = new ArxLogonRequest
                    {
                        Username        = Username,
                        Password        = Password,
                        LogonProviderId = DEFAULTLOGINPROVIDER, // Default ARXivar
                        ClientId        = CLIENTID,             // Configured in AUTH service
                        ClientSecret    = CLIENTSECRET          // Configured in AUTH service
                    };

                    using (var wcfConn = new WCFConnectorManager(Url, new ArxAccessTokenLogonRequest()))
                    {
                        var logon = wcfConn.Logon(Url, arxLogonRequest);
                        if (logon.LogOnError != ArxLogOnErrorType.None)
                        {
                            throw new Exception("Test login error: " + logon.LogOnError);
                        }

                        DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() =>
                        {
                            _logger.Info("Create wcf connections..");
                        }));

                        for (int i = 0; i < ThreadCount; i++)
                        {
                            DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() =>
                            {
                                _logger.Info(string.Format(" - Create wcf connection {0} of {1}", (i + 1), ThreadCount));
                            }));

                            var wcfConnThread = new WCFConnectorManager(Url, new ArxAccessTokenLogonRequest());
                            var logonThread   = wcfConnThread.Logon(Url, arxLogonRequest);
                            if (logonThread.LogOnError != ArxLogOnErrorType.None)
                            {
                                throw new Exception("Test login error: " + logon.LogOnError);
                            }

                            wcfConnectorList.Add(wcfConnThread);
                        }

                        DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() =>
                        {
                            _logger.Info("Create procedure test");
                        }));

                        for (int i = 0; i < ThreadCount; i++)
                        {
                            DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() =>
                            {
                                _logger.Info(string.Format(" - Create procedure connection {0} of {1}", (i + 1), ThreadCount));
                            }));

                            var taskClient = new Task(() => TestProcedureWcf(wcfConnectorList[i], string.Format("Thread{0}", i + 1)),
                                                      TaskCreationOptions.LongRunning);

                            taskClient.Start();
                            listTaskTest.Add(taskClient);

                            Thread.Sleep(1000);
                        }

                        listTaskTest.ForEach(x => x.Wait());

                        DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() => {
                            _logger.Info(string.Format("REPORT\r\nMASK\r\n{0}\r\nSTORE\r\n{1}\r\nSEARCH\r\n{2}\r\nF2\r\n{3}\r\nCycle\r\n{4}",
                                                       TimeCalculator.EvaluateTime(_timeMask.ToArray()).ToString(),
                                                       TimeCalculator.EvaluateTime(_timeStore.ToArray()).ToString(),
                                                       TimeCalculator.EvaluateTime(_timeSearch.ToArray()).ToString(),
                                                       TimeCalculator.EvaluateTime(_timeF2.ToArray()).ToString(),
                                                       TimeCalculator.EvaluateTime(_timeTestProcedure.ToArray()).ToString()
                                                       ));
                        }));

                        MessageBox.Show("Test procedure completed", "Execute completed", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                }
                catch (Exception exception)
                {
                    DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() =>
                    {
                        _logger.Error(exception.Message);
                    }));

                    MessageBox.Show(exception.Message, "Execute error", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    foreach (var item in wcfConnectorList)
                    {
                        item.Dispose();
                    }
                    DispatcherHelper.UIDispatcher.Invoke(() => IsBusy = false);
                }
            });

            return(task);
        }