Beispiel #1
0
        private async void RunAsync()
        {
            Console.WriteLine(string.Format("start run case [{0}]", _caseId));
            if (_aswClient == null || _restClient == null)
            {
                return;
            }

            while (true)
            {
                _currentJob = await _aswClient.GetJob(_caseId, _preJob);
                Logger.Info(string.Format("got job {0}[{1}]:{2}", _currentJob?.Code, Index, _currentJob?.Name));
                if (_currentJob == null)
                {
                    _aswClient.Report(_caseId);
                    return;
                }

                while (_currentJob.JobType != JobTypes.Finish)
                {
                    //Console.WriteLine(string.Format("[{0} {1}]", _currentJob.Name, _currentJob.Code));
                    _currentJob.JobResult = DoJob(_currentJob);
                    _preJob = _currentJob;

                    //update
                    //_aswClient.Report(_caseId);

                    if (_currentJob.JobResult != JobResults.RepeatNeeded)
                    {
                        //out of loop
                        Console.WriteLine(string.Format("{0:HH:mm:ss}-{1}[{2}]:{3}|{4}",
                                                DateTime.Now, _currentJob.Code, Index,
                                                _currentJob.Name, _currentJob.JobResult));
                        break;
                    }

                    //
                    //await Task.Delay(_currentJob.RepeatInterval);
                    Console.WriteLine(string.Format("{0:HH:mm:ss}-{1}[{2}]:{3}|{4}",
                                            DateTime.Now, _currentJob.Code, Index,
                                            _currentJob.Name, _currentJob.JobResult));
                }
            }
        }
Beispiel #2
0
        public JobResults DoJob(WebRequestJob job)
        {
            _restClient.BaseUrl = new Uri(job.BaseUrl);
            var request = new RestRequest(job.Resource, job.Method);

            string respContent = null;
            try
            {
                //header
                foreach (var h in job.Headers)
                {
                    request.AddHeader(h.Key, h.Value);
                }

                //parameters
                foreach (var p in job.Parameters)
                {
                    request.AddParameter(p.Key, p.Value);
                }

                _stopWatch.Restart();
                IRestResponse response = _restClient.Execute(request);
                _stopWatch.Stop();
                Logger.Req(string.Format("REQUEST SPEND {0}ms, {1}", _stopWatch.ElapsedMilliseconds,
                    response.StatusDescription));
                if (response.ResponseStatus == ResponseStatus.TimedOut)
                {
                    Console.WriteLine("Response Time Out, retry");
                    Logger.Info("Response Time Out");
                    return JobResults.RepeatNeeded;
                }
                else if (response.ResponseStatus == ResponseStatus.Error)
                {
                    Console.WriteLine("Response Error, retry after 5 secs");
                    Logger.Info("Response Error, retry after 5 secs");
                    Task.Delay(5000);
                    return JobResults.RepeatNeeded;
                }
                else
                {
                    respContent = response.Content;
                }

                return job.Do(respContent);

            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                return JobResults.Excepted;
            }
        }