static void Main(string[] args) { try { if (args == null || args.Length != 2) { throw new Exception("Please enter the directory and port for sharing."); } var directory = args[0]; if (!Directory.Exists(directory)) { throw new Exception("Directory not exits."); } var port = 0; if (!Int32.TryParse(args[1], out port) || port <= 0) { throw new Exception("Invalid Port."); } using (var socket = new SocketWebServer(directory, (ushort)port)) { var task = socket.Start(); task.Wait(); } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public void Setup() { _configurationHelperMock = new Mock <IConfigurationHelper>(); _configurationHelperMock.Setup(x => x.GetServer()).Returns(IPAddress.Parse(Constants.Localhost)); _configurationHelperMock.Setup(x => x.GetProtocol()).Returns(Constants.Http); var pageLoaderMock = new Mock <IPageLoader>(); _server = new SocketWebServer(pageLoaderMock.Object, new ProxyTcpListener(_configurationHelperMock.Object)); }
public void Run_2LongRequestsSentSimultaneously_ProcessedSimultaneously() { _configurationHelperMock.Setup(x => x.GetPort()).Returns(12351); var longTaskOnServerTime = 4000; var numberOfRequests = 2; var toleratedCompletionTime = longTaskOnServerTime * 1.4; var pageLoaderMock = new Mock <IPageLoader>(); pageLoaderMock.Setup(x => x.LoadContentFromLocalFile(It.IsAny <string>())).Callback(() => { Thread.Sleep(longTaskOnServerTime); _requestCount++; }); var socketWebServer = new SocketWebServer(pageLoaderMock.Object, new ProxyTcpListener(_configurationHelperMock.Object)); socketWebServer.Run(); var processingStarted = DateTime.Now; // Send asynchronously requests for (var i = 0; i < numberOfRequests; i++) { SendRequestWithoutResponse(); } // Wait for all of them to be processed by the server while (_requestCount != numberOfRequests) { Thread.Sleep(500); } var processingFinished = DateTime.Now; var approximateExecutionTime = (processingFinished - processingStarted).TotalSeconds; Assert.AreEqual(numberOfRequests, _requestCount); Assert.IsTrue(approximateExecutionTime < toleratedCompletionTime / 1000); }
public void Run_100RequestsSent_100RequestsReceivedOnServer() { _configurationHelperMock.Setup(x => x.GetPort()).Returns(12350); var pageLoaderMock = new Mock <IPageLoader>(); pageLoaderMock.Setup(x => x.LoadContentFromLocalFile(It.IsAny <string>())) .Callback(() => { _requestCount++; }); var socketWebServer = new SocketWebServer(pageLoaderMock.Object, new ProxyTcpListener(_configurationHelperMock.Object)); socketWebServer.Run(); for (var i = 0; i < 100; i++) { SendRequestWithResponse(); } Assert.AreEqual(100, _requestCount); }