public void Read(IByteStream stream, IContext context, bool isssl) { List <FrameRequest> list = new List <FrameRequest>(); while (true) { try { FrameRequest request = FrameRequest.Parse(stream); if (request == null) { break; } list.Add(request); if (request.Fin) { break; } } catch (NotSupportedException ex) { Common.AgentLogger.Instance.Err(string.Format("WebSocketState错误:{0}", ex.Message)); break; } } foreach (FrameRequest request in list) { context.FireNextRead(request); } }
/// <summary> /// 收到服务端的数据 /// </summary> /// <param name="frame"></param> protected override async void OnText(FrameRequest frame) { var json = Encoding.UTF8.GetString(frame.Content); var notify = JsonConvert.DeserializeObject <WsNotifyData <WsGameAnswer> >(json); if (notify.Cmd == WsCmd.GameAnser) { var gameAnswer = notify.Data; Console.WriteLine(gameAnswer); if (gameAnswer.Index >= 0) { var delay = TimeSpan.FromMilliseconds(gameAnswer.DelayMilliseconds); var next = TimeSpan.FromSeconds(0.3d); await this.AutotapOptionsAsync(gameAnswer.Index, delay, next, next, next, next, next, next); } else { var index = new Random().Next(0, 3); var delay = TimeSpan.FromMilliseconds(gameAnswer.DelayMilliseconds).Add(TimeSpan.FromSeconds(4d)); await this.AutotapOptionsAsync(index, delay); } Console.WriteLine(); } else if (notify.Cmd == WsCmd.GameOver && this.autoContinue == true) { await this.AutotapOptionsAsync(2, TimeSpan.FromSeconds(10d)); await this.AutotapOptionsAsync(4, TimeSpan.FromSeconds(4d)); } }
/// <summary> /// 收到服务端的数据 /// </summary> /// <param name="frame"></param> protected override async void OnText(FrameRequest frame) { var json = Encoding.UTF8.GetString(frame.Content); var notify = JsonConvert.DeserializeObject <WsNotifyData <WsGameAnswer> >(json); if (notify.Cmd == WsCmd.GameAnser) { var searchResult = notify.Data.SearchResult; Console.WriteLine(searchResult); if (searchResult.Best != null) { var index = searchResult.Best.Index; var delay = TimeSpan.FromMilliseconds(notify.Data.GameDelayMSeconds); await this.AutotapOptionsAsync(index, delay, TimeSpan.FromSeconds(0.5d)); } else { var index = new Random().Next(0, 3); var delay = TimeSpan.FromMilliseconds(notify.Data.GameDelayMSeconds + 4000); await this.AutotapOptionsAsync(index, delay); } Console.WriteLine(); } else if (notify.Cmd == WsCmd.GameOver && this.autoContinue == true) { await this.AutotapOptionsAsync(2, TimeSpan.FromSeconds(6d)); await this.AutotapOptionsAsync(4, TimeSpan.FromSeconds(4d)); } }
public void ExecuteMethodCorrectlyExecutesFrameRequest(string testMessage, string testActionDataPayload) { //Arrange KarassDependenciesSpy dependenciesSpy = new KarassDependenciesSpy(); FrameStructDummy frameActionData = new FrameStructDummy { Test = testActionDataPayload }; FrameRequest frameRequest = new FrameRequest(frameActionData); KarassFrameSpy <FrameStructDummy> frameAction = new KarassFrameSpy <FrameStructDummy>(dependenciesSpy); dependenciesSpy.Register <IKarassFrame <FrameStructDummy> >(() => frameAction); FrameFactory frameFactory = new FrameFactory(dependenciesSpy); frameFactory.RegisterRoute <FrameStructDummy, IKarassFrame <FrameStructDummy> >(); //Act frameFactory.Execute(frameRequest, testMessage); //Assert Assert.True(dependenciesSpy.RegisterCallCount == 1); Assert.True(dependenciesSpy.GetCallCount == 1); Assert.True(frameAction.ExecuteCallCount == 1); Assert.True(frameAction.RequestData.Test == testActionDataPayload); Assert.True(frameAction.Message == testMessage); Assert.True(frameAction.Dependencies == dependenciesSpy); }
public async void Put([FromBody] FrameRequest request) { using (Stream stream = request.Frame.OpenReadStream()) { await _emotion.ProcessFrame(stream, request.CamID, request.Timestamp); } }
/// <summary> /// 把收到的内容当作ip,并绑定到ws会话 /// </summary> /// <param name="context">上下文</param> /// <param name="frame">数据</param> protected override void OnText(IContenxt context, FrameRequest frame) { var ipAddress = Encoding.UTF8.GetString(frame.Content); Console.WriteLine($"websocket客户端将ip绑定到{ipAddress}"); context.Session.Tag.Set("ip", ipAddress); }
public void ThenOnlyContainsFirstFrame() { FrameRequest frameOne = _mockFramesFactory.GetInvalidFrameRequest(); FrameRequest frameTwo = _mockFramesFactory.GetInvalidFrameRequest(); FrameRequest frameThree = _mockFramesFactory.GetInvalidFrameRequest(); FrameRequest frameFour = _mockFramesFactory.GetInvalidFrameRequest(); Karass karass = KarassFactory.Get( new List <List <Action> >(), new List <List <Action> >(), new List <FrameRequest[]> { new[] { frameOne, frameTwo, frameThree, frameFour } }); KanKan kanKan = new KanKan(karass, new FrameFactoryDummy()); Assert.True(kanKan.CurrentState.NextFrames.Contains(frameOne)); Assert.False(kanKan.CurrentState.NextFrames.Contains(frameTwo)); Assert.False(kanKan.CurrentState.NextFrames.Contains(frameThree)); Assert.False(kanKan.CurrentState.NextFrames.Contains(frameFour)); }
public void TeardownActionsAreCalled() { bool teardownCalled = false; bool frameCalled = false; bool FrameSpy(string message) { frameCalled = true; return(true); } void TeardownSpy() { teardownCalled = true; } FrameRequest frameRequest = _mockFramesFactory.GetValidFrameRequest(FrameSpy); Karass karass = _karassFactory.Get( new List <List <Action> >(), CreateActionListWith(TeardownSpy), new List <FrameRequest[]> { new[] { frameRequest } }); KanKan kankan = new KanKan(karass, _frameFactory); kankan.MoveNext(); Assert.True(frameCalled); kankan.MoveNext(); Assert.True(teardownCalled); }
protected sealed override void OnBinary(IContenxt context, FrameRequest frame) { var text = Encoding.UTF8.GetString(frame.Content); //var ip = ((System.Net.IPEndPoint)context.Session.RemoteEndPoint).Address.ToString(); var ip = context.Session.RemoteEndPoint.ToString(); //Debug.Log(text); try { var jsonResult = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(text); var uuid = jsonResult["uuid"].ToString(); if (Globle.WSClients.ContainsKey(uuid)) { Globle.WSClients[uuid].message = text; Globle.WSClients[uuid].result = jsonResult; Globle.WSClients[uuid].lastUpdated = DateTime.Now.Date; } else { var WSC = new WSClientClass(); WSC.ip = ip; WSC.message = text; WSC.uuid = jsonResult["uuid"].ToString(); WSC.result = jsonResult; WSC.lastUpdated = DateTime.Now.Date; WSC.isRemote = false; Globle.WSClients.Add(uuid, WSC); Globle.WSClientsChanged = true; } } catch { } }
public void Setup() { _dependencies = new KarassDependencies(); _frameFactory = new FrameFactory(_dependencies); _mockFramesFactory = new MockFramesFactory(_frameFactory); _firstFrameRequest = _mockFramesFactory.GetValidFrameRequest(FirstFrameSpy); _secondFrameRequest = _mockFramesFactory.GetValidFrameRequest(SecondFrameSpy); }
public void MessageSendToMultipleKanKan(string message) { IKarassMessage karassMessage = new KarassMessage(); string karassOneFrameMessage = string.Empty; bool KarassOneFrameSpy(string m) { karassOneFrameMessage = m; return(true); } FrameRequest karassOneFrameRequest = _mockFramesFactory.GetValidFrameRequest(KarassOneFrameSpy); string karassTwoFrameMessage = string.Empty; bool KarassTwoFrameSpy(string m) { karassTwoFrameMessage = m; return(true); } FrameRequest karassTwoFrameRequest = _mockFramesFactory.GetValidFrameRequest(KarassTwoFrameSpy); string karassThreeFrameMessage = string.Empty; bool KarassThreeFrameSpy(string m) { karassThreeFrameMessage = m; return(true); } FrameRequest karassThreeFrameRequest = _mockFramesFactory.GetValidFrameRequest(KarassThreeFrameSpy); KarassFactory karassFactory = new KarassFactory(); Karass karassOne = karassFactory.Get(new List <Action>(), new List <Action>(), new [] { karassOneFrameRequest }); Karass karassTwo = karassFactory.Get(new List <Action>(), new List <Action>(), new [] { karassTwoFrameRequest }); Karass karassThree = karassFactory.Get(new List <Action>(), new List <Action>(), new [] { karassThreeFrameRequest }); KanKanCore.KanKan kanKanOne = new KanKanCore.KanKan(karassOne, _frameFactory, karassMessage); KanKanCore.KanKan kanKanTwo = new KanKanCore.KanKan(karassTwo, _frameFactory, karassMessage); KanKanCore.KanKan kanKanThree = new KanKanCore.KanKan(karassThree, _frameFactory, karassMessage); karassMessage.SetMessage(message); kanKanOne.MoveNext(); kanKanTwo.MoveNext(); kanKanThree.MoveNext(); Assert.True(karassOneFrameMessage == message); Assert.True(karassTwoFrameMessage == message); Assert.True(karassThreeFrameMessage == message); }
protected sealed override void OnBinary(IContenxt context, FrameRequest frame) { try { var text = Encoding.UTF8.GetString(frame.Content); var jsonResult = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(text); var ipMessage = jsonResult["ipMessage"]; //var uip = ((System.Net.IPEndPoint)context.Session.RemoteEndPoint).Address.ToString(); var uuip = context.Session.RemoteEndPoint.ToString(); var hostname = ((System.Net.IPEndPoint)context.Session.RemoteEndPoint).Address.ToString(); if (jsonResult["hostName"] != null) { hostname = jsonResult["hostName"].ToString(); } //预处理IP var IPMessage = new Dictionary <string, string>(); foreach (JProperty jp in ipMessage) { var ip = hostname + " : " + jp.Name; var request = jp.Value.ToString(); if (IPMessage.ContainsKey(ip)) { IPMessage[ip] = request; } else { IPMessage.Add(ip, request); } } //Console.WriteLine(uip); //处理IP主机 if (Globle.ServeIPMessage.ContainsKey(uuip)) { Globle.ServeIPMessage[uuip] = IPMessage; } else { Globle.ServeIPMessage.Add(uuip, IPMessage); } //var session = (WebSocketSession)context.Session.Wrapper; //session.SendBinary(byteArray); //item.SendBinary(byteArray); } catch (Exception ex) { var log = "[WSS]服务端发生错误 " + ex.Message + ":" + ex.StackTrace; Console.WriteLine(log); //Globle.AddDataLog(log); } }
public static void RequestArgb32VideoFrameFromExternalSourceCallback(IntPtr userData, /*ExternalVideoTrackSourceHandle*/ IntPtr sourceHandle, uint requestId, long timestampMs) { var args = Utils.ToWrapper <Argb32VideoFrameRequestCallbackArgs>(userData); var request = new FrameRequest { Source = args.Source, RequestId = requestId, TimestampMs = timestampMs }; args.FrameRequestCallback.Invoke(in request); }
public void WhenAddedThenFrameSetsContainFrames() { FrameRequest frameSetOneFrameOne = MockFramesFactory.GetInvalidFrameRequest(); FrameRequest frameSetOneFrameTwo = MockFramesFactory.GetInvalidFrameRequest(); FrameRequest[] frameSetArrayOne = { frameSetOneFrameOne, frameSetOneFrameTwo }; List <FrameRequest[]> frameSetOne = new List <FrameRequest[]> { frameSetArrayOne }; FrameRequest frameSetTwoFrameOne = MockFramesFactory.GetInvalidFrameRequest(); FrameRequest frameSetTwoFrameTwo = MockFramesFactory.GetInvalidFrameRequest(); FrameRequest[] frameSetArrayTwo = { frameSetTwoFrameOne, frameSetTwoFrameTwo }; List <FrameRequest[]> frameSetTwo = new List <FrameRequest[]> { frameSetArrayTwo }; Karass karassOne = KarassFactory.Get( new List <List <Action> >(), new List <List <Action> >(), frameSetOne); Karass karassTwo = KarassFactory.Get( new List <List <Action> >(), new List <List <Action> >(), frameSetTwo); Karass combinedKarass = karassOne + karassTwo; Assert.True(combinedKarass.FramesCollection.Count == 2); Assert.True(combinedKarass.FramesCollection.Contains(frameSetArrayOne)); Assert.True(combinedKarass.FramesCollection.Contains(frameSetArrayTwo)); Assert.True(combinedKarass.FramesCollection.Any(_ => _.Contains(frameSetOneFrameOne))); Assert.True(combinedKarass.FramesCollection.Any(_ => _.Contains(frameSetOneFrameTwo))); Assert.True(combinedKarass.FramesCollection.Any(_ => _.Contains(frameSetTwoFrameOne))); Assert.True(combinedKarass.FramesCollection.Any(_ => _.Contains(frameSetTwoFrameTwo))); }
private static List <FrameRequest[]> GetFakeFrames(int frameCount) { MockFramesFactory mockFramesFactory = new MockFramesFactory(new FrameFactoryDummy()); FrameRequest[] frames = new FrameRequest[frameCount]; for (int i = 0; i < frameCount; i++) { frames[i] = mockFramesFactory.GetInvalidFrameRequest(); } return(new List <FrameRequest[]>() { frames }); }
public override void ChildRead(IContext context, object msg) { ChannelBase channel = context.Channel; FrameRequest request = msg as FrameRequest; if (request != null) { switch (request.Frame) { case FrameCodes.Connected: context.FireNextRead(msg); channel.AddListener(CHANNEL_READ_IDLE, (EventArgs e) => { string id = Guid.NewGuid().ToString(); byte[] content = Encoding.UTF8.GetBytes(id); FrameResponse ping = new FrameResponse(FrameCodes.Ping, content); channel.SendAsync(ping); ITriggerRunnable run = new TimeOut <object>(it => { context.Channel.Dispose(); }, null, 2000); _timeout.Enqueue(run); context.Loop.Execute(run); }); break; case FrameCodes.Close: context.FireNextRead(msg); channel.Dispose(); break; case FrameCodes.Ping: FrameResponse pong = new FrameResponse(FrameCodes.Pong, request.Content); channel.SendAsync(pong); break; case FrameCodes.Pong: ClearTimeout(context); break; default: context.FireNextRead(msg); break; } } else { context.FireNextRead(msg); } }
public bool Execute(FrameRequest frameRequest, string message) { object karassFrameObject = Dependencies.GetType().GetMethod("Get") .MakeGenericMethod(_routing[frameRequest.RequestType]) .Invoke(Dependencies, Array.Empty <object>()); object returnValue = karassFrameObject.GetType().GetMethod("Execute") .Invoke(karassFrameObject, new[] { message, frameRequest.RequestObject }); return((bool)returnValue); }
public void ThenTheFrameIsInCurrentFrames() { FrameRequest frame = _mockFramesFactory.GetInvalidFrameRequest(); Karass karass = KarassFactory.Get( new List <List <Action> >(), new List <List <Action> >(), new List <FrameRequest[]> { new[] { frame } }); KanKan kanKan = new KanKan(karass, new FrameFactoryDummy()); Assert.True(kanKan.CurrentState.NextFrames.Contains(frame)); }
public void ThenOnlyTheFirstFramesAreInCurrentFrames() { FrameRequest setOneFrameOne = _mockFramesFactory.GetInvalidFrameRequest(); FrameRequest setOneFrameTwo = _mockFramesFactory.GetInvalidFrameRequest(); FrameRequest setOneFrameThree = _mockFramesFactory.GetInvalidFrameRequest(); FrameRequest setTwoFrameOne = _mockFramesFactory.GetInvalidFrameRequest(); FrameRequest setTwoFrameTwo = _mockFramesFactory.GetInvalidFrameRequest(); FrameRequest setTwoFrameThree = _mockFramesFactory.GetInvalidFrameRequest(); Karass karass = KarassFactory.Get( new List <List <Action> >(), new List <List <Action> >(), new List <FrameRequest[]> { new[] { setOneFrameOne, setOneFrameTwo, setOneFrameThree }, new[] { setTwoFrameOne, setTwoFrameTwo, setTwoFrameThree } }); KanKan kanKan = new KanKan(karass, new FrameFactoryDummy()); Assert.True(kanKan.CurrentState.NextFrames.Contains(setOneFrameOne)); Assert.True(kanKan.CurrentState.NextFrames.Contains(setTwoFrameOne)); Assert.False(kanKan.CurrentState.NextFrames.Contains(setOneFrameTwo)); Assert.False(kanKan.CurrentState.NextFrames.Contains(setTwoFrameTwo)); Assert.False(kanKan.CurrentState.NextFrames.Contains(setOneFrameTwo)); Assert.False(kanKan.CurrentState.NextFrames.Contains(setTwoFrameTwo)); }
protected override void OnText(FrameRequest frame) { try { var text = Encoding.UTF8.GetString(frame.Content); Debug.Log(text); //var ip = ((System.Net.IPEndPoint)context.Session.RemoteEndPoint).Address.ToString(); //var ip = context.Session.RemoteEndPoint.ToString(); try { /*var jsonResult = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(text); * var uuid = "USB: " + jsonResult["uuid"].ToString(); * if (Globle.WSClients.ContainsKey(uuid)) * { * Globle.WSClients[uuid].message = text; * Globle.WSClients[uuid].result = jsonResult; * Globle.WSClients[uuid].lastUpdated = DateTime.Now.Date; * } * else * { * var WSC = new WSClientClass(); * WSC.ip = "USB"; * WSC.message = text; * WSC.uuid = jsonResult["uuid"].ToString(); * WSC.result = jsonResult; * WSC.lastUpdated = DateTime.Now.Date; * WSC.isRemote = false; * WSC.isUSB = true; * Globle.WSClients.Add(uuid, WSC); * Globle.WSClientsChanged = true; * }*/ } catch { } } catch (Exception ex) { Globle.AddDataLog("USB", Globle.LangController.GetLang("LOG.DanmakuClientException", ex.Message, ex.StackTrace)); } }
protected override void OnBinary(FrameRequest frame) { try { var text = Encoding.UTF8.GetString(frame.Content); var jsonResult = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(text); var ipMessage = jsonResult["ipMessage"]; foreach (JProperty jp in ipMessage) { var ip = ("P2P") + " : " + jp.Name; var request = jp.Value.ToString(); var jsonResultMessage = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(jp.Value.ToString()); if (Globle.WSClients.ContainsKey(ip)) { Globle.WSClients[ip].message = request; Globle.WSClients[ip].result = jsonResultMessage; Globle.WSClients[ip].lastUpdated = DateTime.Now.Date; } else { var WSC = new WSClientClass(); WSC.ip = ip; WSC.message = request; WSC.uuid = jsonResultMessage["uuid"].ToString(); WSC.result = jsonResultMessage; WSC.lastUpdated = DateTime.Now.Date; WSC.isRemote = true; Globle.WSClients.Add(ip, WSC); Globle.WSClientsChanged = true; } } } catch (Exception ex) { Globle.AddDataLog("WSC", Globle.LangController.GetLang("LOG.WSCClientException", ex.Message, ex.StackTrace)); } }
public void ThenBothFramesAreInCurrentFrames() { FrameRequest setOneFrame = _mockFramesFactory.GetInvalidFrameRequest(); FrameRequest setTwoFrame = _mockFramesFactory.GetInvalidFrameRequest(); Karass karass = KarassFactory.Get( new List <List <Action> >(), new List <List <Action> >(), new List <FrameRequest[]> { new[] { setOneFrame }, new[] { setTwoFrame } }); KanKan kanKan = new KanKan(karass, new FrameFactory(new KarassDependencies())); Assert.True(kanKan.CurrentState.NextFrames.Contains(setOneFrame)); Assert.True(kanKan.CurrentState.NextFrames.Contains(setTwoFrame)); }
public FrameRequestEventArgs(FrameRequest fr) { Source = fr.Source; RequestId = fr.RequestId; TimestampMs = fr.TimestampMs; }
public void ThenFrameSetsAreRunIndependently() { FrameRequest frameSetOneRequestOne = _mockFramesFactory.GetValidFrameRequest(FrameSetOneFrameOneSpy); FrameRequest frameSetOneRequestTwo = _mockFramesFactory.GetValidFrameRequest(FrameSetOneFrameTwoSpy); FrameRequest frameSetOneRequestThree = _mockFramesFactory.GetValidFrameRequest(FrameSetOneFrameThreeSpy); FrameRequest frameSetTwpRequestOne = _mockFramesFactory.GetValidFrameRequest(FrameSetTwoFrameOneSpy); FrameRequest frameSetTwoRequestTwo = _mockFramesFactory.GetValidFrameRequest(FrameSetTwoFrameTwoSpy); bool setOneSetupRun = false; void FrameSetOneSetupSpy() { setOneSetupRun = true; } bool setOneTeardownRun = false; void FrameSetOneTeardownSpy() { setOneTeardownRun = true; } bool setOneFrameOneRun = false; bool FrameSetOneFrameOneSpy(string message) { setOneFrameOneRun = true; return(true); } bool setOneFrameTwoRun = false; bool FrameSetOneFrameTwoSpy(string message) { setOneFrameTwoRun = true; return(true); } bool setOneFrameThreeRun = false; bool FrameSetOneFrameThreeSpy(string message) { setOneFrameThreeRun = true; return(true); } bool setTwoSetupRun = false; void FrameSetTwoSetupSpy() { setTwoSetupRun = true; } bool setTwoTeardownRun = false; void FrameSetTwoTeardownSpy() { setTwoTeardownRun = true; } bool setTwoFrameOneRun = false; bool FrameSetTwoFrameOneSpy(string message) { setTwoFrameOneRun = true; return(true); } bool setTwoFrameTwoRun = false; bool FrameSetTwoFrameTwoSpy(string message) { setTwoFrameTwoRun = true; return(true); } Karass karassOne = KarassFactory.Get(CreateActionListWith(FrameSetOneSetupSpy), CreateActionListWith(FrameSetOneTeardownSpy), new List <FrameRequest[]> { new[] { frameSetOneRequestOne, frameSetOneRequestTwo, frameSetOneRequestThree } }); Karass karassTwo = KarassFactory.Get(CreateActionListWith(FrameSetTwoSetupSpy), CreateActionListWith(FrameSetTwoTeardownSpy), new List <FrameRequest[]> { new[] { frameSetTwpRequestOne, frameSetTwoRequestTwo } }); KanKan kankan = new KanKan(karassOne + karassTwo, _frameFactory); Assert.True(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestOne)); Assert.True(kankan.CurrentState.NextFrames.Contains(frameSetTwpRequestOne)); Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestTwo)); Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetTwoRequestTwo)); Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestThree)); kankan.MoveNext(); Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestOne)); Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetTwpRequestOne)); Assert.True(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestTwo)); Assert.True(kankan.CurrentState.NextFrames.Contains(frameSetTwoRequestTwo)); Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestThree)); CheckFirstFrame(setOneSetupRun, setTwoSetupRun, setOneTeardownRun, setTwoTeardownRun, setOneFrameOneRun, setTwoFrameOneRun, setOneFrameTwoRun, setOneFrameThreeRun, setTwoFrameTwoRun); kankan.MoveNext(); Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestOne)); Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetTwpRequestOne)); Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestTwo)); Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetTwoRequestTwo)); Assert.True(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestThree)); CheckSecondFrame(setOneSetupRun, setTwoSetupRun, setOneTeardownRun, setTwoTeardownRun, setOneFrameOneRun, setTwoFrameOneRun, setOneFrameTwoRun, setTwoFrameTwoRun, setOneFrameThreeRun); kankan.MoveNext(); Assert.False(kankan.CurrentState.NextFrames.Any()); CheckThirdFrame(setOneSetupRun, setTwoSetupRun, setOneTeardownRun, setTwoTeardownRun, setOneFrameOneRun, setTwoFrameOneRun, setOneFrameTwoRun, setTwoFrameTwoRun, setOneFrameThreeRun); }
public void ThenNextFramesCorrectlyProgressThroughFrames() { FrameRequest frameRequestOne = _mockFramesFactory.GetValidFrameRequest(FrameOneSpy); FrameRequest frameRequestTwo = _mockFramesFactory.GetValidFrameRequest(FrameTwoSpy); FrameRequest frameRequestThree = _mockFramesFactory.GetValidFrameRequest(FrameThreeSpy); bool frameOneRun = false; bool FrameOneSpy(string s) { frameOneRun = true; return(true); } bool frameTwoRun = false; bool FrameTwoSpy(string s) { frameTwoRun = true; return(true); } bool frameThreeRun = false; bool FrameThreeSpy(string s) { frameThreeRun = true; return(true); } bool setupRun = false; void SetupSpy() { setupRun = true; } bool tearDownRun = false; void TeardownSpy() { tearDownRun = true; } Karass karass = KarassFactory.Get( CreateActionListWith(SetupSpy), CreateActionListWith(TeardownSpy), new List <FrameRequest[]> { new[] { frameRequestOne, frameRequestTwo, frameRequestThree } }); KanKan kankan = new KanKan(karass, _frameFactory); Assert.True(kankan.CurrentState.NextFrames.Contains(frameRequestOne)); Assert.False(kankan.CurrentState.NextFrames.Contains(frameRequestTwo)); Assert.False(kankan.CurrentState.NextFrames.Contains(frameRequestThree)); kankan.MoveNext(); Assert.False(kankan.CurrentState.NextFrames.Contains(frameRequestOne)); Assert.True(kankan.CurrentState.NextFrames.Contains(frameRequestTwo)); Assert.False(kankan.CurrentState.NextFrames.Contains(frameRequestThree)); CheckFirstFrame(setupRun, frameOneRun, tearDownRun, frameTwoRun, frameThreeRun); kankan.MoveNext(); Assert.False(kankan.CurrentState.NextFrames.Contains(frameRequestOne)); Assert.False(kankan.CurrentState.NextFrames.Contains(frameRequestTwo)); Assert.True(kankan.CurrentState.NextFrames.Contains(frameRequestThree)); CheckSecondFrame(setupRun, frameOneRun, tearDownRun, frameTwoRun, frameThreeRun); kankan.MoveNext(); Assert.False(kankan.CurrentState.NextFrames.Any()); CheckThirdFrame(setupRun, frameOneRun, tearDownRun, frameTwoRun, frameThreeRun); }
public bool Execute(FrameRequest frameRequest, string message) { return(true); }
public WebSocketState(IContext context, IStateSource source, HttpConfig config) { _source = source; _config = config; context.FireNextRead(FrameRequest.CreateConnectedRequest()); }
/// <summary> /// 把收到的内容当作ip,并绑定到ws会话 /// </summary> /// <param name="context">上下文</param> /// <param name="frame">数据</param> protected override void OnText(IContenxt context, FrameRequest frame) { var ipAddress = Encoding.UTF8.GetString(frame.Content); context.Session.Tag.Set("ip", ipAddress); }
public void ThenNextFramesIsCorrectlyUpdated() { FrameRequest setOneFrameOneSpyRequest = _mockFramesFactory.GetValidFrameRequest(SetOneFrameOneSpy); FrameRequest setOneFrameTwoSpyRequest = _mockFramesFactory.GetValidFrameRequest(SetOneFrameTwoSpy); FrameRequest setTwoFrameOneSpyRequest = _mockFramesFactory.GetValidFrameRequest(SetTwoFrameOneSpy); FrameRequest setTwoFrameTwoSpyRequest = _mockFramesFactory.GetValidFrameRequest(SetTwoFrameTwoSpy); bool setOneFrameOneRun = false; bool SetOneFrameOneSpy(string s) { setOneFrameOneRun = true; return(true); } bool setOneFrameTwoRun = false; bool SetOneFrameTwoSpy(string s) { setOneFrameTwoRun = true; return(true); } bool setTwoFrameOneRun = false; bool SetTwoFrameOneSpy(string s) { setTwoFrameOneRun = true; return(true); } bool setTwoFrameTwoRun = false; bool SetTwoFrameTwoSpy(string s) { setTwoFrameTwoRun = true; return(true); } Karass karass = _karassFactory.Get(new List <List <Action> >(), new List <List <Action> >(), new List <FrameRequest[]> { new[] { setOneFrameOneSpyRequest, setOneFrameTwoSpyRequest }, new[] { setTwoFrameOneSpyRequest, setTwoFrameTwoSpyRequest } }); KanKan kankan = new KanKan(karass, _frameFactory); Assert.True(kankan.CurrentState.NextFrames.Count == 2); Assert.True(kankan.CurrentState.NextFrames.Contains(setOneFrameOneSpyRequest)); Assert.True(kankan.CurrentState.NextFrames.Contains(setTwoFrameOneSpyRequest)); kankan.MoveNext(); Assert.True(kankan.CurrentState.NextFrames.Count == 2); Assert.True(kankan.CurrentState.NextFrames.Contains(setOneFrameTwoSpyRequest)); Assert.True(kankan.CurrentState.NextFrames.Contains(setTwoFrameTwoSpyRequest)); Assert.True(setOneFrameOneRun); Assert.False(setOneFrameTwoRun); Assert.True(setTwoFrameOneRun); Assert.False(setTwoFrameTwoRun); kankan.MoveNext(); Assert.False(kankan.CurrentState.NextFrames.Any()); Assert.True(setOneFrameOneRun); Assert.True(setOneFrameTwoRun); Assert.True(setTwoFrameOneRun); Assert.True(setTwoFrameTwoRun); }
public void ThenKarassWillRunCorrectly() { bool karassOneSetupRun = false; void KarassOneSetupSpy() { karassOneSetupRun = true; } bool karassOneTeardownRun = false; void KarassOneTeardownSpy() { karassOneTeardownRun = true; } bool karassOneFrameOneRun = false; bool KarassOneFrameOneSpy(string message) { karassOneFrameOneRun = true; return(true); } FrameRequest karassOneFrameOneSpyRequest = _mockFramesFactory.GetValidFrameRequest(KarassOneFrameOneSpy); Karass karassOne = _karassFactory.Get(KarassOneSetupSpy, KarassOneTeardownSpy, new List <FrameRequest[]> { new[] { karassOneFrameOneSpyRequest } }); bool karassTwoSetupRun = false; void KarassTwoSetupSpy() { karassTwoSetupRun = true; } bool karassTwoTeardownRun = false; void KarassTwoTeardownSpy() { karassTwoTeardownRun = true; } bool karassTwoFrameOneRun = false; bool karassTwoFrameTwoRun = false; bool karassTwoFrameThreeRun = false; bool KarassTwoFrameOneSpy(string message) { karassTwoFrameOneRun = true; return(true); } bool KarassTwoFrameTwoSpy(string message) { karassTwoFrameTwoRun = true; return(true); } bool KarassTwoFrameThreeSpy(string message) { karassTwoFrameThreeRun = true; return(true); } FrameRequest karassTwoFrameOneSpyRequest = _mockFramesFactory.GetValidFrameRequest(KarassTwoFrameOneSpy); FrameRequest karassTwoFrameTwoSpyRequest = _mockFramesFactory.GetValidFrameRequest(KarassTwoFrameTwoSpy); FrameRequest karassTwoFrameThreeSpyRequest = _mockFramesFactory.GetValidFrameRequest(KarassTwoFrameThreeSpy); Karass karassTwo = _karassFactory.Get(KarassTwoSetupSpy, KarassTwoTeardownSpy, new List <FrameRequest[]> { new[] { karassTwoFrameOneSpyRequest, karassTwoFrameTwoSpyRequest, karassTwoFrameThreeSpyRequest, } }); bool karassThreeSetupRun = false; void KarassThreeSetupSpy() { karassThreeSetupRun = true; } bool karassThreeTeardownRun = false; void KarassThreeTeardownSpy() { karassThreeTeardownRun = true; } bool karassThreeFrameOneRun = false; bool KarassThreeFrameOneSpy(string message) { karassThreeFrameOneRun = true; return(true); } FrameRequest karassThreeFrameOneSpyRequest = _mockFramesFactory.GetValidFrameRequest(KarassThreeFrameOneSpy); Karass karassThree = _karassFactory.Get(KarassThreeSetupSpy, KarassThreeTeardownSpy, new List <FrameRequest[]> { new[] { karassThreeFrameOneSpyRequest } }); bool karassFourSetupRun = false; void KarassFourSetupSpy() { karassFourSetupRun = true; } bool karassFourTeardownRun = false; void KarassFourTeardownSpy() { karassFourTeardownRun = true; } bool karassFourFrameOneRun = false; bool karassFourFrameTwoRun = false; bool KarassFourFrameOneSpy(string message) { karassFourFrameOneRun = true; return(true); } bool KarassFourFrameTwoSpy(string message) { karassFourFrameTwoRun = true; return(true); } FrameRequest karassFourFrameOneSpyRequest = _mockFramesFactory.GetValidFrameRequest(KarassFourFrameOneSpy); FrameRequest karassFourFrameTwoSpyRequest = _mockFramesFactory.GetValidFrameRequest(KarassFourFrameTwoSpy); Karass karassFour = _karassFactory.Get(KarassFourSetupSpy, KarassFourTeardownSpy, new List <FrameRequest[]> { new[] { karassFourFrameOneSpyRequest, karassFourFrameTwoSpyRequest } }); KanKan kankan = new KanKan( new IKarass[] { karassOne, karassTwo, karassThree, karassFour }, _frameFactory); bool moveNext = kankan.MoveNext(); CheckFirstFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun, karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun, moveNext, karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun, karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun); moveNext = kankan.MoveNext(); CheckSecondFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun, karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun, karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun, karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun, moveNext); moveNext = kankan.MoveNext(); CheckThirdFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun, karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun, karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun, karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun, moveNext); moveNext = kankan.MoveNext(); CheckFourthFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun, karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun, karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun, karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun, moveNext); moveNext = kankan.MoveNext(); CheckFifthFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun, karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun, karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun, karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun, moveNext); moveNext = kankan.MoveNext(); CheckSixthFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun, karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun, karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun, karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun, moveNext); moveNext = kankan.MoveNext(); CheckSeventhFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun, karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun, karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun, karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun, moveNext); }