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());
            }
        }
Пример #2
0
        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");
        }
Пример #3
0
 public static bool ServerInit()
 {
     try
     {
         IsRunningTest     = false;
         IsRunningTestLock = new object();
         Tests             = new Dictionary <string, TestInstanceLoader>();
         LoadDlls();
         return(true);
     }
     catch (Exception ex)
     {
         LogManger.WriteError("Init Failed:" + ex.ToString());
         return(false);
     }
 }
Пример #4
0
 /// <summary>
 /// 开始测试
 /// </summary>
 /// <param name="testName"></param>
 /// <returns></returns>
 public bool StartTest(string testName)
 {
     try
     {
         //判断是否存在正在运行中的测试
         lock (IsRunningTestLock)
         {
             if (!IsRunningTest)
             {
                 IsRunningTest = true;
             }
             else
             {
                 return(false);
             }
         }
         //寻找是否有测试用例
         if (!Tests.Keys.Contains(testName))
         {
             throw new Exception("Cannot find test named " + testName);
         }
         //加载
         var testInstance = Tests[testName].Load();
         ServerTestInstance = new ServerTestInstance(testInstance, testName, MessageContext);
         ServerTestInstance.CompleteEvent += (object e) =>
         {
             lock (IsRunningTestLock)
             {
                 IsRunningTest = false;
             }
             MessageContext.Info("测试已经结束");
             MessageContext.SendEvent("TestComplete", new string[] { });
         };
         Thread t = new Thread(new ThreadStart(ServerTestInstance.Run));
         t.Start();
         return(true);
     }
     catch (Exception ex)
     {
         lock (IsRunningTestLock)
         {
             IsRunningTest = false;
         }
         LogManger.WriteError("Start test failed:" + ex.ToString());
         return(false);
     }
 }
 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);
     }
 }
Пример #6
0
        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);
        }
Пример #7
0
 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");
     }
 }