Пример #1
0
        public async Task WhenServerClosesConnectionAfterSingleHttpRequest_ThenRelayEnds(
            [LinuxInstance(InitializeScript = InstallApache)] InstanceRequest vm,
            [Credential] CredentialRequest credential)
        {
            await vm.AwaitReady();

            var stream = ConnectToWebServer(
                vm.Locator,
                await credential.GetCredentialAsync());

            byte[] request = new ASCIIEncoding().GetBytes(
                "GET / HTTP/1.0\r\n\r\n");
            await stream.WriteAsync(request, 0, request.Length, this.tokenSource.Token);

            byte[] buffer = new byte[stream.MinReadSize];

            var response = new HttpResponseAccumulator();
            int bytesRead;

            while ((bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length, this.tokenSource.Token)) > 0)
            {
                response.Accumulate(buffer, 0, bytesRead);
            }

            await stream.CloseAsync(this.tokenSource.Token);

            Assert.AreEqual(response.ExpectedBytes, response.TotalBytesRead);
        }
Пример #2
0
        public async Task WhenServerClosesConnectionMultipleHttpRequests_ThenRelayEnds(
            [LinuxInstance(InitializeScript = InstallApache)] ResourceTask <InstanceLocator> vm,
            [Credential(Role = PredefinedRole.IapTunnelUser)] ResourceTask <ICredential> credential)
        {
            var locator = await vm;
            var stream  = ConnectToWebServer(
                locator,
                await credential);

            for (int i = 0; i < 3; i++)
            {
                byte[] request = new ASCIIEncoding().GetBytes(
                    $"GET /?_={i} HTTP/1.1\r\nHost:www\r\nConnection: keep-alive\r\n\r\n");
                await stream.WriteAsync(request, 0, request.Length, this.tokenSource.Token);

                byte[] buffer = new byte[stream.MinReadSize];

                var response = new HttpResponseAccumulator();
                int bytesRead;
                while ((bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length, this.tokenSource.Token)) > 0)
                {
                    response.Accumulate(buffer, 0, bytesRead);

                    if (response.IsComplete)
                    {
                        IapTraceSources.Default.TraceVerbose("Got full response");
                        break;
                    }
                }

                Assert.AreEqual(response.ExpectedBytes, response.TotalBytesRead);
            }

            await stream.CloseAsync(this.tokenSource.Token);
        }
Пример #3
0
        public async Task WhenServerClosesConnectionMultipleHttpRequests_ThenRelayEnds(
            [LinuxInstance(InitializeScript = InstallApache)] InstanceRequest vm)
        {
            await vm.AwaitReady();

            var stream = ConnectToWebServer(vm.InstanceReference);

            for (int i = 0; i < 3; i++)
            {
                byte[] request = new ASCIIEncoding().GetBytes(
                    $"GET /?_={i} HTTP/1.1\r\nHost:www\r\nConnection: keep-alive\r\n\r\n");
                await stream.WriteAsync(request, 0, request.Length, this.tokenSource.Token);

                byte[] buffer = new byte[stream.MinReadSize];

                var response = new HttpResponseAccumulator();
                int bytesRead;
                while ((bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length, this.tokenSource.Token)) > 0)
                {
                    response.Accumulate(buffer, 0, bytesRead);

                    if (response.IsComplete)
                    {
                        TraceSources.Compute.TraceVerbose("Got full response");
                        break;
                    }
                }

                Assert.AreEqual(response.ExpectedBytes, response.TotalBytesRead);
            }

            await stream.CloseAsync(this.tokenSource.Token);
        }
Пример #4
0
        public async Task WhenClientClosesConnectionAfterSingleHttpRequest_ThenRelayEnds(
            [LinuxInstance(InitializeScript = InstallApache)] InstanceRequest vm)
        {
            await vm.AwaitReady();

            var stream = ConnectToWebServer(vm.InstanceReference);

            byte[] request = new ASCIIEncoding().GetBytes(
                $"GET / HTTP/1.1\r\nHost:www\r\nConnection: keep-alive\r\n\r\n");
            await stream.WriteAsync(request, 0, request.Length, this.tokenSource.Token);

            byte[] buffer = new byte[stream.MinReadSize];

            // Read a bit.
            var response  = new HttpResponseAccumulator();
            int bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length, this.tokenSource.Token);

            response.Accumulate(buffer, 0, bytesRead);

            await stream.CloseAsync(this.tokenSource.Token);
        }
Пример #5
0
        public async Task WhenClientClosesConnectionAfterSingleHttpRequest_ThenRelayEnds(
            [LinuxInstance(InitializeScript = InstallApache)] ResourceTask <InstanceLocator> vm,
            [Credential(Role = PredefinedRole.IapTunnelUser)] ResourceTask <ICredential> credential)
        {
            var locator = await vm;
            var stream  = ConnectToWebServer(
                locator,
                await credential);

            byte[] request = new ASCIIEncoding().GetBytes(
                $"GET / HTTP/1.1\r\nHost:www\r\nConnection: keep-alive\r\n\r\n");
            await stream.WriteAsync(request, 0, request.Length, this.tokenSource.Token);

            byte[] buffer = new byte[stream.MinReadSize];

            // Read a bit.
            var response  = new HttpResponseAccumulator();
            int bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length, this.tokenSource.Token);

            response.Accumulate(buffer, 0, bytesRead);

            await stream.CloseAsync(this.tokenSource.Token);
        }