public static ChunkedOperation Create(HttpServer server, ChunkedOperationType type, bool sendAsync) { var(flags, status, error) = GetParameters(type); var handler = new GetHandler(ChunkTypeName(type), ChunkContent(type)); return(new ChunkedOperation(server, handler, type, sendAsync, flags, status, error)); }
public Task Run(TestContext ctx, CancellationToken cancellationToken, HttpServer server, [ChunkedOperationType] ChunkedOperationType type, bool sendAsync) { var runner = ChunkedOperation.Create(server, type, sendAsync); return(runner.Run(ctx, cancellationToken)); }
ChunkedOperation(HttpServer server, Handler handler, ChunkedOperationType type, bool sendAsync, HttpOperationFlags flags, HttpStatusCode expectedStatus, WebExceptionStatus expectedError) : base(server, handler, sendAsync, flags, expectedStatus, expectedError) { Type = type; }
public Task ServerErrorTests(TestContext ctx, HttpServer server, bool sendAsync, [ChunkedOperationType(ServerError = true)] ChunkedOperationType type, CancellationToken cancellationToken) { var runner = ChunkedOperation.Create(server, type, sendAsync); return(runner.Run(ctx, cancellationToken)); }
static HttpContent ChunkContent(ChunkedOperationType type) { if (type == ChunkedOperationType.ServerAbort) { return(new ServerAbortContent()); } else { return(new TestChunkedContent(type)); } }
public TestChunkedContent(ChunkedOperationType type) { Type = type; }
static string ChunkTypeName(ChunkedOperationType type) { return(type.ToString()); }
static (HttpOperationFlags flags, HttpStatusCode status, WebExceptionStatus error) GetParameters(ChunkedOperationType type) { switch (type) { case ChunkedOperationType.SyncRead: case ChunkedOperationType.NormalChunk: case ChunkedOperationType.BeginEndAsyncRead: case ChunkedOperationType.BeginEndAsyncReadNoWait: case ChunkedOperationType.ServerAbort: return(HttpOperationFlags.None, HttpStatusCode.OK, WebExceptionStatus.Success); case ChunkedOperationType.SyncReadTimeout: return(HttpOperationFlags.None, HttpStatusCode.OK, WebExceptionStatus.Timeout); case ChunkedOperationType.MissingTrailer: return(HttpOperationFlags.None, HttpStatusCode.OK, WebExceptionStatus.ResponseContentException); case ChunkedOperationType.TruncatedChunk: return(HttpOperationFlags.None, HttpStatusCode.OK, WebExceptionStatus.ResponseContentTruncated); default: throw new NotImplementedException(); } }