Exemple #1
0
        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));
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }