public async Task WriteMessageAsync_HasCustomCompressionLevel_WriteCompressedDataWithLevel() { // Arrange var mockCompressionProvider = new MockCompressionProvider(); var httpContext = new DefaultHttpContext(); httpContext.Request.Headers[GrpcProtocolConstants.MessageAcceptEncodingHeader] = "Mock"; var context = HttpContextServerCallContextHelper.CreateServerCallContext( httpContext, responseCompressionAlgorithm: "Mock", responseCompressionLevel: System.IO.Compression.CompressionLevel.Optimal, compressionProviders: new List <ICompressionProvider> { mockCompressionProvider }); context.Initialize(); var ms = new MemoryStream(); var pipeWriter = PipeWriter.Create(ms); // Act await pipeWriter.WriteMessageAsync(new TestData(new byte[] { 0x10 }), context, TestDataMarshaller.ContextualSerializer, canFlush : true); // Assert Assert.AreEqual(System.IO.Compression.CompressionLevel.Optimal, mockCompressionProvider.ArgumentCompression); var messageData = ms.ToArray(); Assert.AreEqual(1, messageData[0]); // compression Assert.AreEqual(21, messageData[4]); // message length byte[] result = Decompress(mockCompressionProvider, messageData); Assert.AreEqual(1, result.Length); Assert.AreEqual(0x10, result[0]); }
public async Task WriteMessageAsync_HasCustomCompressionLevel_WriteCompressedDataWithLevel() { // Arrange var mockCompressionProvider = new MockCompressionProvider(); var serviceOptions = new GrpcServiceOptions { ResponseCompressionAlgorithm = "Mock", ResponseCompressionLevel = System.IO.Compression.CompressionLevel.Optimal, CompressionProviders = { mockCompressionProvider } }; var httpContext = new DefaultHttpContext(); httpContext.Request.Headers[GrpcProtocolConstants.MessageAcceptEncodingHeader] = "Mock"; var context = HttpContextServerCallContextHelper.CreateServerCallContext(httpContext, serviceOptions); context.Initialize(); var ms = new MemoryStream(); var pipeWriter = PipeWriter.Create(ms); // Act await pipeWriter.WriteMessageAsync(new byte[] { 0x10 }, context, flush : true); // Assert Assert.AreEqual(System.IO.Compression.CompressionLevel.Optimal, mockCompressionProvider.ArgumentCompression); var messageData = ms.ToArray(); Assert.AreEqual(1, messageData[0]); // compression Assert.AreEqual(21, messageData[4]); // message length }