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); }
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); }
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); }
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); }
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); }