public void Listen() { try { //监听请求 LogManger.WriteInfo("Server is listening"); while (true) { var clientSocket = this.serverSocket.Accept(); LogManger.WriteInfo("New connect:" + clientSocket.RemoteEndPoint.ToString()); Thread clientThread = new Thread(new ParameterizedThreadStart((object param) => { bool sendMessage = true; //创建用户操作服务器的实例 ServerManger serverManger = new ServerManger(); try { TcpMessage message = new TcpMessage(); var socket = param as Socket; //创建TCP消息上下文 message.NewMessage += (object e, NewMessageArgs args) => { Thread.Sleep(20); if (sendMessage == true) { socket.Send(Encoding.UTF8.GetBytes("MSG:" + args.FormatString)); } }; serverManger.MessageContext = message; while (true) { byte[] buffer = new byte[256]; var length = socket.Receive(buffer); //断连 if (length == 0) { return; } string data = Encoding.UTF8.GetString(buffer); LogManger.WriteInfo(clientSocket.RemoteEndPoint.ToString() + ":" + data); socket.Send(Encoding.UTF8.GetBytes(Parse(data, serverManger))); } } catch (Exception ex) { //强制停止 serverManger.StopTest(); //关闭送信开关 sendMessage = false; LogManger.WriteError("Listen error:" + ex.ToString()); } })); clientThread.Start(clientSocket); } } catch (Exception ex) { LogManger.WriteError("Listen error:" + ex.ToString()); } }
private void RunTestCase(TestCase testCase) { LogManger.WriteInfo("Start test case:" + testCase.Name + " Platform:" + nowDriver.ToString()); IWebDriver driver = SetWebDriver(nowDriver); //开始子测试 //告知客户端当前正在进行的测试用例 this.tcpMessageContext.SendEvent("SetRunningTestCauseName", new string[] { testCase.Name }); //给客户端输出日志 this.tcpMessageContext.Info("Now running " + testCase.Name); foreach (var item in testCase.Tests) { lock (isStartLock) { if (!isStart) { break; } } RunTest(testCase.Name, item.Key, item.Value, driver); } //结束测试 driver.Quit(); LogManger.WriteInfo("Test case:" + testCase.Name + " is complete"); }
public bool ServerInit() { try { //开启Tcp服务器 LogManger.WriteInfo("Start Server,IP port 1919"); serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); serverSocket.Bind(new IPEndPoint(IPAddress.Any, PORT)); serverSocket.Listen(100); return(true); } catch (Exception ex) { LogManger.WriteError("Cannot start server:" + ex.ToString()); return(false); } }
private void RunTest(string testcauseName, string name, Func <IWebDriver, Log, Assert> testScript, IWebDriver chooseDriver) { lock (isStartLock) { if (!isStart) { return; } } //开始测试 LogManger.WriteInfo("Start test:" + name); //创建日志上下文 Log scriptLogContext = new Log(); scriptLogContext.TestCaseName = name; //绑定新日志事件 scriptLogContext.NewLog += (object e, NewLogArgs args) => { LogManger.WriteTestLog(args.FormatString); switch (args.Type) { case SeleniumAutoTestCommon.LogType.Warning: tcpMessageContext.Warn("From user ->" + args.Msg); break; case SeleniumAutoTestCommon.LogType.Debug: tcpMessageContext.Debug("From user ->" + args.Msg); break; case SeleniumAutoTestCommon.LogType.Info: tcpMessageContext.Info("From user ->" + args.Msg); break; case SeleniumAutoTestCommon.LogType.Error: tcpMessageContext.Error("From user ->" + args.Msg); break; } }; //开始 var assest = RunTestAndReturnResult(testScript, scriptLogContext, chooseDriver); //回报消息 switch (assest.Result) { case AssestResult.Error: tcpMessageContext.AssertError(testcauseName, name); break; case AssestResult.Success: tcpMessageContext.AssertSuccess(testcauseName, name, assest.UsedTime); break; case AssestResult.Failed: tcpMessageContext.AssertFailed(testcauseName, name, assest.UsedTime, assest.TrueValue, assest.FalseValue); break; } //结束 LogManger.WriteTestLog("Test result:" + assest.Result + " Time:" + assest.UsedTime.ToString()); LogManger.WriteInfo("Test complete:" + name); }
static void Main(string[] args) { LogManger.WriteInfo("Start server.."); LogManger.WriteInfo("Server init.."); if (ServerManger.ServerInit()) { LogManger.WriteInfo("Start tcp server.."); TCPServer tcpserver = new TCPServer(); if (tcpserver.ServerInit()) { LogManger.WriteInfo("Tcp server init is complete"); LogManger.WriteInfo("Start listening.."); tcpserver.Listen(); } else { LogManger.WriteInfo("Tcp server init was failed"); } } else { LogManger.WriteInfo("Start server was failed"); } }