상속: MonoBehaviour
예제 #1
0
        public async Task ProcessRequest_MaxParallelism_RequestsAreThrottled()
        {
            int maxParallelism = 3;
            int count          = 0;
            Func <HttpRequestMessage, CancellationToken, Task <HttpResponseMessage> > process = async(req, ct) =>
            {
                if (Interlocked.Increment(ref count) > maxParallelism)
                {
                    throw new Exception("Kaboom!");
                }

                await Task.Delay(100);

                Interlocked.Decrement(ref count);

                return(new HttpResponseMessage(HttpStatusCode.OK));
            };
            var config = new HttpConfiguration
            {
                MaxConcurrentRequests = maxParallelism
            };
            var manager = new HttpRequestManager(config, _traceWriter);

            // expect all requests to succeed
            var tasks = new List <Task <HttpResponseMessage> >();

            for (int i = 0; i < 20; i++)
            {
                var request = new HttpRequestMessage();
                tasks.Add(manager.ProcessRequestAsync(request, process, CancellationToken.None));
            }
            await Task.WhenAll(tasks);

            Assert.True(tasks.All(p => p.Result.StatusCode == HttpStatusCode.OK));
        }
예제 #2
0
        private void _onBtnSureHandler(GameObject go)
        {
            if (input_identify.text == "")
            {
                Console.WriteLine("请入验证码");
                MessageHint.Show("请入验证码");
                return;
            }

            //input_phone.text == "" || input_phone.text.Length < 11
            if (GameModel.IsTelephone(input_phone.text) == false)
            {
                Console.WriteLine("请输入正确的手机号");
                MessageHint.Show("手机号错误,请重新输入");
                input_phone.text = "";
                return;
            }

            if (input_scret.text == "")
            {
                Console.WriteLine("请输入密码");
                MessageHint.Show("请输入密码");
                return;
            }

            var scretModel = new PlayerRegistVo();

            scretModel.code     = input_identify.text;
            scretModel.password = input_scret.text;
            scretModel.phone    = input_phone.text;

            //var tpm = new JsonData ();
            //tpm["code"]=scretModel.code ;
            //tpm["password"]=scretModel.password;
            //tpm ["phone"] = scretModel.phone;
            //var newData = new JsonData ();
            //newData ["jsonString"] = tpm;


            var backdata = "";
            var tmpG     = Coding <PlayerRegistVo> .encode(scretModel);

            Console.WriteLine("jsonString:" + tmpG);

            Console.WriteLine("修改密码成功sssssssss");
            HttpRequestManager.GetInstance().GetModifyData(tmpG, _HandlerSuccess);

            Console.WriteLine(backdata);

            //			var backdatavo = Coding<PlayerRegistBackVo>.decode (backdata);
            //
            //			if(backdatavo.status==0)//chenggong
            //			{
            //				MessageHint.Show (backdatavo.msg);
            //			}
            //			else
            //			{
            //				MessageHint.Show (backdatavo.msg);
            //			}
        }
예제 #3
0
        private static void GetUpdates(Action openWindow, string getUpdatesUrl)
        {
            if (string.IsNullOrEmpty(getUpdatesUrl))
            {
                return;
            }

            BackgroundTaskRunner.StartBackgroundTask(HttpRequestManager.SendRequest(getUpdatesUrl, (www, textResult) =>
            {
                try
                {
                    var update = UpdateData.CreateFromJSON(textResult);
                    if (update != null)
                    {
                        ProductPreferenceBase.CreateDefaultLastUpdateText().SetEditorPersistedValue(update.Text);
                        if (!string.IsNullOrWhiteSpace(update.Text))
                        {
                            openWindow();
                        }
                    }
                }
                catch
                {
                    //don't show error
                }
            }));
        }
예제 #4
0
        public void DownloadMarketCapFiles()
        {
            string currentFile = string.Empty;

            try
            {
                String[] categories = File.ReadAllLines(MCapFile);
                if (!Directory.Exists(MCapCacheDir))
                {
                    Directory.CreateDirectory(MCapCacheDir);
                }
                foreach (var category in categories)
                {
                    if (File.Exists(MCapCacheDir + category))
                    {
                        continue;
                    }

                    var request = new HttpRequestManager()
                    {
                        Uri = $"{MCStocks}marketinfo/marketcap/bse/" + category
                    };
                    currentFile = request.Uri;
                    File.WriteAllText(MCapCacheDir + category, request.GetData());
                    Console.WriteLine($"Downloaded file: {currentFile}");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString() + $"\n{currentFile}");
            }
        }
예제 #5
0
        private void _OnShowBottom()
        {
            _btnserver.SetActiveEx(false);

            Audio.AudioManager.Instance.StartMusic();
            EventTriggerListener.Get(_btnLogin.gameObject).onClick       += _OnLoginHandler;
            EventTriggerListener.Get(_btnWeChatLogin.gameObject).onClick += _OnWeChatLoginHandler;
            EventTriggerListener.Get(_btnRegist.gameObject).onClick      += _OnRegistHandler;

            EventTriggerListener.Get(_btnModify.gameObject).onClick += _OnModifyHandler;
            EventTriggerListener.Get(_btnserver.gameObject).onClick += _OnShowServerHandler;
            EventTriggerListener.Get(_btnfankui.gameObject).onClick += _OnfankuiHandler;

            EventTriggerListener.Get(btn_showPhone.gameObject).onClick       += _OnShowPhoneBaordHandler;
            EventTriggerListener.Get(btn_closePhoneBoard.gameObject).onClick += _OnClosePhoneBoardHandler;

            _currentSever = System.Convert.ToString(_localConfig.LoadValue("curServer", ""));

            _loginUsername.text = System.Convert.ToString(_localConfig.LoadValue(savedPhone, ""));

            //EventTriggerListener.Get (btn_login.gameObject).onClick+=_OnLoginHandler;
            //var squence = DOTween.Sequence ();
            //squence.Append (img_tipword.transform.DOLocalMoveY (-240, 1f));
            //squence.Append (img_tipword.transform.DOLocalMoveY (-200,1f));
            //squence.SetLoops(int.MaxValue);

            NetWorkScript.getInstance();

            if (_currentSever == "")
            {
                //SetServerName ("请选择服务器",false);
            }
            _HidePhoneBoard();
            HttpRequestManager.GetInstance().GetCheckVersionData();
        }
예제 #6
0
        private void _OnSureHandler(GameObject go)
        {
            var data = new JsonData();

            if (input_name.text == "")
            {
                MessageHint.Show("请输入姓名");
                return;
            }

            if (headpath == "")
            {
                MessageHint.Show("请选择人物头像");
                return;
            }

            data["gender"]    = this.sexname;
            data["playerImg"] = this.headpath;
            data["nick"]      = input_name.text;

            if (_controller.windowType == 0)
            {
                HttpRequestManager.GetInstance().GetPlayerInfor(data.ToJson(), _CreateRoleSuccess);
            }
            else
            {
                var tmpInfor = GameModel.GetInstance.tmpModifyPlayerInfor;
                tmpInfor.nickName = input_name.text;
                tmpInfor.sex      = int.Parse(this.sexname);
                tmpInfor.headImg  = this.headpath;
                NetWorkScript.getInstance().ModifyPlayerInfor(input_name.text, tmpInfor.sex, headpath, GameModel.GetInstance.myHandInfor.uuid);
            }
        }
예제 #7
0
        //
        public void Setup(Action <Exception> cb)
        {
            // Cleanup any existing internal modules
            if (MessageStream != null)
            {
                MessageStream.Dispose();
            }


            // Instantiate Singletons
            UnityApplicationState.Instantiate();
            HttpRequestManager.Instantiate();


            // Create a shared cookie container
            Cookies = new CookieContainer();


            // Initialize mage internal modules
            EventManager  = new EventManager();
            CommandCenter = new Command.CommandCenter();
            MessageStream = new MessageStream();

            Session   = new Session();
            Archivist = new Archivist();


            // Set endpoints
            CommandCenter.SetEndpoint(baseUrl, appName, headers);
            MessageStream.SetEndpoint(baseUrl, headers);

            cb(null);
        }
예제 #8
0
파일: Program.cs 프로젝트: kongbb/xinji
 static void Main(string[] args)
 {
     string jsonString = @"{""Id"":3,""Message"":""Hello Roger!""}";
     TestObjectDto t = JsonConvert.DeserializeObject<TestObjectDto>(jsonString);
     HttpRequestManager manager = new HttpRequestManager("http://cg.webapi/");
     string response = manager.Get("api/TestApi/GetMessageById/1");
 }
예제 #9
0
        /// <summary>
        /// 设置玩家信息
        /// </summary>
        /// <param name="go"></param>
        private void SaveInforHandler(GameObject go)
        {
            if (setName.text == "")
            {
                MessageHint.Show("姓名不能为空");
                return;
            }

            if (nian.options[nian.value].text == "")
            {
                MessageHint.Show("年份不能为空");
                return;
            }

            if (yue.options[yue.value].text == "")
            {
                MessageHint.Show("月份不能为空");
                return;
            }

            if (ri.options[ri.value].text == "")
            {
                MessageHint.Show("日期不能为空");
                return;
            }

            var dataStr = string.Format("{0}.{1}.{2}", nian.options[nian.value].text, yue.options[yue.value].text, ri.options[ri.value].text);

            int tmpsex = 1;

            if (isSexMan == false)
            {
                tmpsex = 0;
            }


            var tarBirthday = string.Format("{0}.{1}.{2}", nianInt, yueInt, riInt);
            var tarName     = setName.text;

            var myInfor = GameModel.GetInstance.myHandInfor;

            if (myInfor.nickName == tarName && tarBirthday == myInfor.birthday && tmpsex == myInfor.sex)
            {
                //Console.Error.WriteLine("当前的信息是一致的");
                set.gameObject.SetActive(false);
                return;
            }


            var tmpdata = new LitJson.JsonData();

            tmpdata["name"]          = tarName;
            tmpdata["gender"]        = tmpsex;
            tmpdata["birthday"]      = tarBirthday;
            tmpdata["constellation"] = this.RushStar();
            tmpdata["playerId"]      = myInfor.uuid;

            HttpRequestManager.GetInstance().UpdatePlayerInfor(tmpdata.ToJson(), _UpdateInforBack);
            set.gameObject.SetActive(false);
        }
        public async Task CorrectlyGetHtmlWhen_SimulatingWhoScoredSeasonParticipantRequest()
        {
            HttpRequestManager _httpmanager = new HttpRequestManager();
            var realisedcookie = "";
            var cookieResp     = await _httpmanager.Get("https://www.whoscored.com/");

            foreach (var sc in cookieResp.Headers.Where(x => x.Key == "Set-Cookie"))
            {
                foreach (var scv in sc.Value)
                {
                    var v = scv.Split(';')[0];
                    realisedcookie = $"{v}; {realisedcookie}";
                }
            }

            var ctx = new HttpRequestContext();

            ctx.Method    = "GET";
            ctx.Host      = "www.whoscored.com";
            ctx.Accept    = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9";
            ctx.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36";
            ctx.AddHeader("Accept-Encoding", "gzip, deflate, br");
            ctx.AddHeader("Accept-Language", "en-GB,en;q=0.");
            ctx.AddCookie("Cookie", WebUtility.UrlEncode(realisedcookie));
            ctx.Timeout = 120000;
            var detailResp = await _httpmanager.Get("https://www.whoscored.com/Regions/252/Tournaments/2/Seasons/7361", ctx);

            Debug.Write(detailResp.Content.ReadAsStringAsync().Result);
            Assert.IsTrue(detailResp.Content.ReadAsStringAsync().Result.Contains("Premier League tables"));
        }
예제 #11
0
        public async Task <Res> DoGet <Req, Res>(Req RequestObject) where Req : GenericRequest
            where Res : GenericResponse
        {
            var Manager  = new HttpRequestManager <Req, Res>();
            var Response = await Manager.DoGet(RequestObject);

            return(Response);
        }
예제 #12
0
 private void PicSave(GameObject obj)
 {
     if (picHead.sprite != null)
     {
         // head.sprite = picHead.sprite;
         //setHead.sprite = picHead.sprite;
         HttpRequestManager.GetInstance().UpLoadImage(picHead.sprite.texture, UploadImgSuccess);
     }
 }
예제 #13
0
 public void SendPostTest()
 {
     string url = "https://myqa.materalcmx.com/api/User/Login";
     Dictionary <string, string> urlParams = new Dictionary <string, string>
     {
         ["Account"]  = "Admin",
         ["Password"] = "******",
     };
     string result = HttpRequestManager.SendPost(url, urlParams);
 }
예제 #14
0
        public List <TipologiaSoccorsoAereo> Get()
        {
            var APImanager = new HttpRequestManager <List <TipologiaSoccorsoAereo> >(_client, _memoryCache, _writeLog, _httpContext, _configuration);

            APImanager.Configure();

            var result = APImanager.GetAsync(new Uri(Costanti.AFM + "requestType"), "*****@*****.**", "DNGFNC98R17D662Q").Result;

            return(result);
        }
예제 #15
0
        private void WaitForNodeToFinishWorking()
        {
            var working = true;

            while (working)
            {
                working = HttpRequestManager.IsNodeWorking();
                Thread.Sleep(TimeSpan.FromMilliseconds(200));
            }
        }
예제 #16
0
 public void SendPostTest()
 {
     string url = "http://localhost:60647/api/User/Login";
     Dictionary <string, string> urlParams = new Dictionary <string, string>
     {
         ["Account"]  = "Admin",
         ["Password"] = "******",
     };
     string result = HttpRequestManager.SendPost(url, urlParams);
 }
예제 #17
0
        private void WaitForNodeToStartWorking()
        {
            var working = false;

            while (!working)
            {
                working = HttpRequestManager.IsNodeWorking();
                Thread.Sleep(TimeSpan.FromMilliseconds(200));
            }
        }
예제 #18
0
        public void Annulla(Models.Classi.ServiziEsterni.AFM.AnnullaRichiestaSoccorsoAereo richiesta, string CodiceRichiesta)
        {
            var APImanager = new HttpRequestManager <ErroreRichiestaSoccorsoAereo>(_client, _memoryCache, _writeLog, _httpContext, _configuration);

            APImanager.Configure();

            var jsonString = JsonConvert.SerializeObject(richiesta);
            var content    = new StringContent(jsonString);

            var result = APImanager.PostAsync(new Uri(Costanti.AFM + "rescueRequest/" + CodiceRichiesta + "/abort"), content, "*****@*****.**", "DNGFNC98R17D662Q").Result;
        }
예제 #19
0
        public void Inserisci(NuovaRichiestaSoccorsoAereo richiesta)
        {
            var APImanager = new HttpRequestManager <ErroreRichiestaSoccorsoAereo>(_client, _memoryCache, _writeLog, _httpContext, _configuration);

            APImanager.Configure();

            var jsonString = JsonConvert.SerializeObject(richiesta);
            var content    = new StringContent(jsonString);

            var result = APImanager.PutAsync(new Uri(Costanti.AFM + "rescueRequest"), content, "*****@*****.**", "DNGFNC98R17D662Q").Result;
        }
예제 #20
0
        /// <summary>
        /// Checks the phone data.自测手机号
        /// </summary>
        private void _checkPhoneData()
        {
            if (GameModel.IsTelephone(input_phone.text) == true)
            {
                JsonData sendData = new JsonData();
                sendData ["phone"] = input_phone.text;

                Console.WriteLine(sendData.ToJson());

                HttpRequestManager.GetInstance().CheckPhoneNum(sendData.ToJson());
            }
        }
예제 #21
0
        public async Task PublishMessageScheduled_Success()
        {
            //Grab JSON data from file
            var data = System.IO.File.ReadAllText(@"Samples\SaveAgencyScheduled_Valid.json");
            //Create message
            var message = JObject.Parse(data);
            //Submit request to in-memory server
            var response = await HttpRequestManager.SubmitRequest(_publishUrl, null, HttpMethod.Post, JsonConvert.SerializeObject(message));

            //Check if response code 200
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
        }
예제 #22
0
        protected override void OnHostCreated()
        {
            // whenever the host is created (or recreated) we build a cache map of
            // all http function routes
            InitializeHttpFunctions(Instance.Functions);

            // since the request manager is created based on configurable
            // settings, it has to be recreated when host config changes
            _httpRequestManager = new WebScriptHostRequestManager(Instance.ScriptConfig.HttpConfiguration, PerformanceManager, _metricsLogger, _config.TraceWriter);

            base.OnHostCreated();
        }
예제 #23
0
        public void CreateRequestShouldReturnCancelStatusWhenJobHasStartedAndBeenCanceled()
        {
            WaitForNodeToFinishWorking();
            var startedTest                 = DateTime.UtcNow;
            var manualResetEventSlim        = new ManualResetEventSlim();
            var checkTablesInManagerDbTimer = new CheckTablesInManagerDbTimer(ManagerDbConnectionString, 100);


            bool sentCancel = false;

            checkTablesInManagerDbTimer.GetJobItems += (sender, items) =>
            {
                if (items.Any() &&
                    items.All(job => job.Ended == null) && sentCancel == false)
                {
                    sentCancel = true;
                    HttpRequestManager.CancelJob(items.First().JobId);
                }
                if (items.Any() &&
                    items.All(job => job.Ended != null))
                {
                    manualResetEventSlim.Set();
                }
            };
            checkTablesInManagerDbTimer.JobTimer.Start();


            var jobQueueItem =
                JobHelper.GenerateTestJobRequests(1, 60).First();
            var jobId = HttpRequestManager.AddJob(jobQueueItem);


            manualResetEventSlim.Wait(TimeSpan.FromSeconds(10));

            Assert.IsTrue(!checkTablesInManagerDbTimer.ManagerDbRepository.JobQueueItems.Any(), "Job queue must be empty.");
            Assert.IsTrue(checkTablesInManagerDbTimer.ManagerDbRepository.Jobs.Any(), "Jobs must have been added.");
            Assert.IsTrue(checkTablesInManagerDbTimer.ManagerDbRepository.Jobs.Any(job => job.Result.StartsWith("Canceled", StringComparison.InvariantCultureIgnoreCase)));

            checkTablesInManagerDbTimer.Dispose();

            var endedTest = DateTime.UtcNow;

            var description =
                string.Format("Creates Cancel Job with {0} manager and {1} nodes.",
                              NumberOfManagers,
                              NumberOfNodes);

            DatabaseHelper.AddPerformanceData(ManagerDbConnectionString,
                                              description,
                                              startedTest,
                                              endedTest);
        }
예제 #24
0
 private void Update()
 {
     if (cameraset.create == true)  //取れたら動く(updateなのでちょいこわ)
     {
         if (gps_x != 0 && gps_y != 0)
         {
             cameraset.create = false;
             post             = GameObject.Find("Post");
             HttpRequestManager p1 = post.GetComponent <HttpRequestManager>();
             p1.Post(gps_x, gps_y);
         }
     }
 }
예제 #25
0
 private void _ShowGameFeelByIndex(int index)
 {
     if (_controller.IsRequestGameFeel(index))
     {
         var tmpData = new JsonData();
         tmpData["page"] = index;
         HttpRequestManager.GetInstance().GetFeelingShareData(tmpData.ToJson(), _controller.UpdateGameFeels);
     }
     else
     {
         UpdateGameFeeling(index, _controller.GameFeelPages);
     }
 }
예제 #26
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public override bool CheckLogin()
        {
            string url          = "";
            string AppKey       = "";
            string AppId        = "";
            bool   isOldVersion = false;

            GameChannel gameChannel = ZyGameBaseConfigManager.GameSetting.GetChannelSetting(ChannelType.channelDanle);

            if (gameChannel != null)
            {
                url          = gameChannel.Url;
                isOldVersion = "0.1".Equals(gameChannel.Version);
                GameSdkSetting setting = gameChannel.GetSetting(_retailID);
                if (setting != null)
                {
                    AppKey = setting.AppKey;
                    AppId  = setting.AppId;
                }
            }
            else
            {
                TraceLog.ReleaseWrite("The sdkChannelV2 Danle section is null.");
            }
            string sig    = AMD5(_token + "|" + AppKey);
            string Url    = Url = string.Format("{0}?app_id={1}&mid={2}&token={3}&sig={4}", url, AppId, _mid, _token, sig);
            string result = HttpRequestManager.GetStringData(Url, "GET");

            DanleSDK sdk = null;

            try
            {
                sdk = JsonUtils.Deserialize <DanleSDK>(result);
            }
            catch (Exception ex)
            {
                new BaseLog().SaveLog(ex);
                return(false);
            }
            if (sdk == null || sdk.error_code != 0)
            {
                TraceLog.ReleaseWrite("Danlesdk login fail:{0},request url:{1}", result, Url);
                return(false);
            }

            string[] arr = SnsManager.LoginByRetail(_retailID, sdk.memberId);
            this.UserID     = arr[0];
            this.PassportID = arr[1];
            SessionID       = GetSessionId();
            return(true);
        }
        public void ShouldBeAbleToCreateManySuccessJobRequestTest()
        {
            var startedTest          = DateTime.UtcNow;
            var manualResetEventSlim = new ManualResetEventSlim();

            var createNewJobRequests =
                JobHelper.GenerateTestJobRequests(50, 1);


            var checkTablesInManagerDbTimer =
                new CheckTablesInManagerDbTimer(ManagerDbConnectionString, 2000);

            checkTablesInManagerDbTimer.GetJobItems += (sender, jobs) =>
            {
                if (jobs.Count == createNewJobRequests.Count &&
                    jobs.All(job => job.Started != null && job.Ended != null))
                {
                    manualResetEventSlim.Set();
                }
            };
            checkTablesInManagerDbTimer.JobTimer.Start();


            foreach (var newJobRequest in createNewJobRequests)
            {
                var jobId = HttpRequestManager.AddJob(newJobRequest);
            }

            manualResetEventSlim.Wait(TimeSpan.FromMinutes(5));

            var jobsToAssert = checkTablesInManagerDbTimer.ManagerDbRepository.Jobs;

            Assert.IsTrue(jobsToAssert.Count == createNewJobRequests.Count);
            Assert.IsTrue(jobsToAssert.All(job => job.Result.StartsWith("Success", StringComparison.InvariantCultureIgnoreCase)));

            checkTablesInManagerDbTimer.Dispose();

            var endedTest = DateTime.UtcNow;

            var description =
                string.Format("Creates {0} FAST = 1 second jobs with {1} manager and {2} nodes.",
                              createNewJobRequests.Count,
                              NumberOfManagers,
                              NumberOfNodes);

            DatabaseHelper.AddPerformanceData(ManagerDbConnectionString,
                                              description,
                                              startedTest,
                                              endedTest);
        }
        public async Task ProcessRequest_MaxOutstandingRequestsExceeded_RequestsAreRejected()
        {
            int maxQueueLength = 10;
            Func <HttpRequestMessage, CancellationToken, Task <HttpResponseMessage> > process = async(req, ct) =>
            {
                await Task.Delay(100);

                return(new HttpResponseMessage(HttpStatusCode.OK));
            };
            var config = new HttpExtensionConfiguration
            {
                MaxOutstandingRequests = maxQueueLength,
                MaxConcurrentRequests  = 1
            };
            var manager = new HttpRequestManager(config, _loggerFactory);

            // expect requests past the threshold to be rejected
            var tasks = new List <Task <HttpResponseMessage> >();

            for (int i = 0; i < 25; i++)
            {
                var request = new HttpRequestMessage();
                tasks.Add(manager.ProcessRequestAsync(request, process, CancellationToken.None));
            }
            await Task.WhenAll(tasks);

            int countSuccess = tasks.Count(p => p.Result.StatusCode == HttpStatusCode.OK);

            Assert.Equal(maxQueueLength, countSuccess);
            int rejectCount = 25 - countSuccess;

            Assert.Equal(rejectCount, tasks.Count(p => p.Result.StatusCode == (HttpStatusCode)429));

            IEnumerable <LogMessage> logMessages = _loggerProvider.GetAllLogMessages();

            Assert.Equal(rejectCount, logMessages.Count());
            Assert.True(logMessages.All(p => string.Compare("Http request queue limit of 10 has been exceeded.", p.FormattedMessage) == 0));

            // send a number of requests not exceeding the limit
            // expect all to succeed
            tasks = new List <Task <HttpResponseMessage> >();
            for (int i = 0; i < maxQueueLength; i++)
            {
                var request = new HttpRequestMessage();
                tasks.Add(manager.ProcessRequestAsync(request, process, CancellationToken.None));
            }
            await Task.WhenAll(tasks);

            Assert.True(tasks.All(p => p.Result.StatusCode == HttpStatusCode.OK));
        }
예제 #29
0
 private void _ShowSelfShareByIndex(int index)
 {
     if (_controller.IsRequestSelfFeel(index))
     {
         var tmpData = new JsonData();
         tmpData["page"]     = index;
         tmpData["playerId"] = GameModel.GetInstance.myHandInfor.uuid;
         HttpRequestManager.GetInstance().GetFeelSelfData(tmpData.ToJson(), _controller.UpdateSelfFeels);
     }
     else
     {
         UpdateSelfFeeling(index, _controller.SelfFeelPages);
     }
 }
예제 #30
0
        private void InitializeHttp()
        {
            // get the registered http configuration from the extension registry
            var extensions = Instance.ScriptConfig.HostConfig.GetService <IExtensionRegistry>();
            var httpConfig = extensions.GetExtensions <IExtensionConfigProvider>().OfType <HttpExtensionConfiguration>().Single();

            // whenever the host is created (or recreated) we build a cache map of
            // all http function routes
            InitializeHttpFunctions(Instance.Functions, httpConfig);

            // since the request manager is created based on configurable
            // settings, it has to be recreated when host config changes
            _httpRequestManager = new WebScriptHostRequestManager(httpConfig, PerformanceManager, _metricsLogger, _config.TraceWriter);
        }
예제 #31
0
        public void JobShouldHaveStatusFailedIfFailedTest()
        {
            WaitForNodeToFinishWorking();
            var startedTest                 = DateTime.UtcNow;
            var manualResetEventSlim        = new ManualResetEventSlim();
            var checkTablesInManagerDbTimer =
                new CheckTablesInManagerDbTimer(ManagerDbConnectionString, 100);


            checkTablesInManagerDbTimer.GetJobItems += (sender, items) =>
            {
                if (items.Any() &&
                    items.All(job => job.Ended != null))
                {
                    if (!manualResetEventSlim.IsSet)
                    {
                        manualResetEventSlim.Set();
                    }
                }
            };
            checkTablesInManagerDbTimer.JobTimer.Start();


            var failingJobQueueItem =
                JobHelper.GenerateFailingJobParamsRequests(1).First();
            var jobId = HttpRequestManager.AddJob(failingJobQueueItem);


            manualResetEventSlim.Wait(TimeSpan.FromSeconds(10));

            Assert.IsTrue(!checkTablesInManagerDbTimer.ManagerDbRepository.JobQueueItems.Any(), "Job queue must be empty.");
            Assert.IsTrue(checkTablesInManagerDbTimer.ManagerDbRepository.Jobs.Any(), "Jobs must have been added.");
            Assert.IsTrue(checkTablesInManagerDbTimer.ManagerDbRepository.
                          Jobs.Any(job => job.Result.StartsWith("fail", StringComparison.InvariantCultureIgnoreCase)));

            var endedTest = DateTime.UtcNow;

            var description =
                string.Format("Creates FAILED jobs with {0} manager and {1} nodes.",
                              NumberOfManagers,
                              NumberOfNodes);

            DatabaseHelper.AddPerformanceData(ManagerDbConnectionString,
                                              description,
                                              startedTest,
                                              endedTest);


            checkTablesInManagerDbTimer.Dispose();
        }
예제 #32
0
 public CgBaseController()
 {
     RequestManager = new HttpRequestManager(WebHostConfigurationManager.Current.GetApiDomainUrl);
 }
예제 #33
0
 void Start()
 {
     instance = this;
 }