static void runBellyRub(string localConfig, bool headless, string path, bool leaveInBackground, string portString) { int port, channelPort; if (portString != null) { var portChunks = portString.Split(new[] {','}); if (portChunks.Length > 0) { if (!int.TryParse(portChunks[0], out port)) port = 0; } else { port = 0; } if (portChunks.Length > 1) { if (!int.TryParse(portChunks[1], out channelPort)) channelPort = 0; } else { channelPort = 0; } } else { port = 0; channelPort = 0; } var site = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "site"); var engine = new BellyEngine(site); Console.CancelKeyPress += (sender, e) => { engine.Stop(); while (engine.HasConnectedClients) { Thread.Sleep(50); } }; Browser browser = null; if (headless) { if (port > 0) { if (channelPort > 0) engine.StartHeadless(port, channelPort); else engine.StartHeadless(port); } else { engine.StartHeadless(); } Console.WriteLine("url: "+engine.ServerUrl); Console.WriteLine("waiting for client to connect.."); } else { engine.OnSendException((ex) => Console.WriteLine(ex.ToString())); if (port > 0) { if (channelPort > 0) browser = engine.Start(port, channelPort, new Point(100,100)); else browser = engine.Start(port, new Point(100,100)); } else { browser = engine.Start(new Point(100,100)); } } var proxy = new BellyRubProxy(path, engine, browser); engine.WaitForFirstClientToConnect(60); if (!leaveInBackground && browser != null) browser.BringToFront(); run(localConfig, path, proxy); proxy.SetClient(Client); if (headless) { Console.WriteLine("type exit to quit ContinuousTests"); while (Console.ReadLine() != "exit") { Thread.Sleep(10); } } else { while (engine.HasConnectedClients) { Thread.Sleep(50); } } engine.Stop(); exit(); }