public async Task SayHelloClientStreamingTest() { // Arrange var mockGreeter = new Mock <IGreeter>(); mockGreeter.Setup(m => m.Greet(It.IsAny <string>())).Returns((string s) => $"Hello {s}"); var service = new TesterService(mockGreeter.Object); var callContext = TestServerCallContext.Create(); var requestStream = new TestAsyncStreamReader <HelloRequest>(callContext); // Act using var call = service.SayHelloClientStreaming(requestStream, callContext); requestStream.AddMessage(new HelloRequest { Name = "James" }); requestStream.AddMessage(new HelloRequest { Name = "Jo" }); requestStream.AddMessage(new HelloRequest { Name = "Lee" }); requestStream.Complete(); // Assert var response = await call; Assert.Equal("Hello James, Jo, Lee", response.Message); }
public async Task SayHelloClientStreamingTest() { // Arrange var service = new TesterService(NullLoggerFactory.Instance); var callContext = TestServerCallContext.Create(); var requestStream = new TestAsyncStreamReader <HelloRequest>(callContext); // Act var call = service.SayHelloClientStreaming(requestStream, callContext); requestStream.AddMessage(new HelloRequest { Name = "James" }); requestStream.AddMessage(new HelloRequest { Name = "Jo" }); requestStream.AddMessage(new HelloRequest { Name = "Lee" }); requestStream.Complete(); // Assert var response = await call; Assert.AreEqual("Hello James, Jo, Lee", response.Message); }
public async Task StreamingFromClientTest() { // init var server = new GreeterService(NullLoggerFactory.Instance); var callContext = TestServerCallContext.Create(); var requestStream = new TestAsyncStreamReader <ExampleRequest>(callContext); // act using var call = server.StreamingFromClient(requestStream, callContext); requestStream.AddMessage(new ExampleRequest { PageIndex = 1, PageSize = 10, IsDescending = false }); requestStream.AddMessage(new ExampleRequest { PageIndex = 2, PageSize = 10, IsDescending = false }); requestStream.AddMessage(new ExampleRequest { PageIndex = 3, PageSize = 10, IsDescending = false }); requestStream.AddMessage(new ExampleRequest { PageIndex = 4, PageSize = 10, IsDescending = false }); requestStream.Complete(); // Assert var response = await call; Assert.IsTrue(response.Age > 1); }
public async Task GreeterService_SayHelloBidirectionalStreaming_ReturnsCorrectResponse() { // Arrange var service = new GreeterService(new Logger <GreeterService>(new NullLoggerFactory())); var callContext = TestServerCallContext.Create(); var requestStream = new TestAsyncStreamReader <HelloRequest>(callContext); var responseStream = new TestServerStreamWriter <HelloReply>(callContext); // Act var call = service.SayHelloBidirectionalStreaming(requestStream, responseStream, callContext); // Assert requestStream.AddMessage(new HelloRequest { Name = "James" }); Assert.AreEqual("Hello James", (await responseStream.ReadNextAsync()) !.Message); requestStream.AddMessage(new HelloRequest { Name = "Jo" }); Assert.AreEqual("Hello Jo", (await responseStream.ReadNextAsync()) !.Message); requestStream.AddMessage(new HelloRequest { Name = "Lee" }); Assert.AreEqual("Hello Lee", (await responseStream.ReadNextAsync()) !.Message); requestStream.Complete(); await call; responseStream.Complete(); Assert.IsNull(await responseStream.ReadNextAsync()); }
public async Task Create_ConfiguredGrpcEndpoint_EndpointReturnedFromReflectionService() { // Arrange var endpointRouteBuilder = new TestEndpointRouteBuilder(); var services = ServicesHelpers.CreateServices(); services.AddGrpcReflection(); services.AddRouting(); services.AddSingleton <EndpointDataSource>(s => { return(new CompositeEndpointDataSource(endpointRouteBuilder.DataSources)); }); var serviceProvider = services.BuildServiceProvider(validateScopes: true); endpointRouteBuilder.ServiceProvider = serviceProvider; endpointRouteBuilder.MapGrpcService <GreeterService>(); // Act var service = serviceProvider.GetRequiredService <ReflectionServiceImpl>(); var reader = new TestAsyncStreamReader { Current = new ServerReflectionRequest { ListServices = "" // list all services } }; var writer = new TestServerStreamWriter <ServerReflectionResponse>(); var context = HttpContextServerCallContextHelper.CreateServerCallContext(); await service.ServerReflectionInfo(reader, writer, context); // Assert Assert.AreEqual(1, writer.Responses.Count); Assert.AreEqual(1, writer.Responses[0].ListServicesResponse.Service.Count); var serviceResponse = writer.Responses[0].ListServicesResponse.Service[0]; Assert.AreEqual("greet.Greeter", serviceResponse.Name); }
public async Task StreamingBothWaysTest() { // init var server = new GreeterService(NullLoggerFactory.Instance); var callContext = TestServerCallContext.Create(); var requstStream = new TestAsyncStreamReader <ExampleRequest>(callContext); var responseStream = new TestServerStreamWriter <ExampleResponse>(callContext); // act using var call = server.StreamingBothWays(requstStream, responseStream, callContext); requstStream.AddMessage(new ExampleRequest { PageIndex = 1, PageSize = 10, IsDescending = false }); Assert.IsTrue((await responseStream.ReadNextAsync()).Age > 1); requstStream.Complete(); await call; responseStream.Complete(); Assert.IsNull(await responseStream.ReadNextAsync()); }
public async Task Create_ConfiguredGrpcEndpoint_EndpointReturnedFromReflectionService() { // Arrange var services = new ServiceCollection(); services.AddGrpc(); services.AddLogging(); var serviceProvider = services.BuildServiceProvider(); var endpointRouteBuilder = new TestEndpointRouteBuilder(serviceProvider); endpointRouteBuilder.MapGrpcService <GreeterService>(); var dataSource = new CompositeEndpointDataSource(endpointRouteBuilder.DataSources); var activator = new ReflectionGrpcServiceActivator(dataSource, NullLoggerFactory.Instance); // Act var service = activator.Create(); var reader = new TestAsyncStreamReader { Current = new ServerReflectionRequest { ListServices = "" // list all services } }; var writer = new TestServerStreamWriter(); var context = HttpContextServerCallContextHelper.CreateServerCallContext(); await service.ServerReflectionInfo(reader, writer, context); // Assert Assert.AreEqual(1, writer.Responses.Count); Assert.AreEqual(1, writer.Responses[0].ListServicesResponse.Service.Count); var serviceResponse = writer.Responses[0].ListServicesResponse.Service[0]; Assert.AreEqual("Greet.Greeter", serviceResponse.Name); }
public void Chat_WorldIsSet(int id, string expectedWorldName) { var testMessage = new ChatMessage { Author = "Dummy Author", Content = "dummy text", AuthorId = 0, AuthorId2 = 0, Avatar = string.Empty, Id = 0, World = string.Empty, WorldId = id, AdditionalFlags = 0, }; var fakeServerCallContext = TestServerCallContext.Create("Chat", null, DateTime.UtcNow.AddHours(1), new Metadata(), CancellationToken.None, "127.0.0.1", null, null, (metadata) => TaskUtils.CompletedTask, () => new WriteOptions(), (writeOptions) => { }); var fakeReader = new TestAsyncStreamReader <ChatMessage>(testMessage); var fakeWriter = new TestServerStreamWriter <ChatMessage>(); _ = _connection.Chat(fakeReader, fakeWriter, fakeServerCallContext); fakeWriter.ReturnOnWrite().Wait(); Assert.AreEqual(testMessage.World, expectedWorldName); }
public void Chat_InputPassesToOutput() { var testMessage = new ChatMessage { Author = "Dummy Author", Content = "dummy text", AuthorId = 0, AuthorId2 = 0, Avatar = string.Empty, Id = 0, World = string.Empty, WorldId = (int)PseudoWorld.Discord, AdditionalFlags = 0, }; var fakeServerCallContext = TestServerCallContext.Create("Chat", null, DateTime.UtcNow.AddHours(1), new Metadata(), CancellationToken.None, "127.0.0.1", null, null, (metadata) => TaskUtils.CompletedTask, () => new WriteOptions(), (writeOptions) => { }); var fakeReader = new TestAsyncStreamReader <ChatMessage>(testMessage); var fakeWriter = new TestServerStreamWriter <ChatMessage>(); Task.Run(() => _connection.Chat(fakeReader, fakeWriter, fakeServerCallContext)); fakeWriter.ReturnOnWrite().Wait(); // Internally, the transmitter calls a callback event which writes to this writer. Assert.AreEqual(testMessage, fakeWriter.Current); }
public async Task SayHelloBidirectionStreamingTest() { // Arrange var mockGreeter = new Mock <IGreeter>(); mockGreeter.Setup(m => m.Greet(It.IsAny <string>())).Returns((string s) => $"Hello {s}"); var service = new TesterService(mockGreeter.Object); var callContext = TestServerCallContext.Create(); var requestStream = new TestAsyncStreamReader <HelloRequest>(callContext); var responseStream = new TestServerStreamWriter <HelloReply>(callContext); // Act using var call = service.SayHelloBidirectionalStreaming(requestStream, responseStream, callContext); // Assert requestStream.AddMessage(new HelloRequest { Name = "James" }); Assert.Equal("Hello James", (await responseStream.ReadNextAsync()) !.Message); requestStream.AddMessage(new HelloRequest { Name = "Jo" }); Assert.Equal("Hello Jo", (await responseStream.ReadNextAsync()) !.Message); requestStream.AddMessage(new HelloRequest { Name = "Lee" }); Assert.Equal("Hello Lee", (await responseStream.ReadNextAsync()) !.Message); requestStream.Complete(); await call; responseStream.Complete(); Assert.Null(await responseStream.ReadNextAsync()); }
private static async Task <TestServerStreamWriter <ServerReflectionResponse> > ConfigureReflectionServerAndCallAsync(Action <IEndpointRouteBuilder> action) { // Arrange var endpointRouteBuilder = new TestEndpointRouteBuilder(); var services = ServicesHelpers.CreateServices(); services.AddGrpcReflection(); services.AddRouting(); services.AddSingleton <EndpointDataSource>(s => { return(new CompositeEndpointDataSource(endpointRouteBuilder.DataSources)); }); var serviceProvider = services.BuildServiceProvider(validateScopes: true); endpointRouteBuilder.ServiceProvider = serviceProvider; action(endpointRouteBuilder); // Act var service = serviceProvider.GetRequiredService <ReflectionServiceImpl>(); var reader = new TestAsyncStreamReader { Current = new ServerReflectionRequest { ListServices = "" // list all services } }; var writer = new TestServerStreamWriter <ServerReflectionResponse>(); var context = HttpContextServerCallContextHelper.CreateServerCallContext(); await service.ServerReflectionInfo(reader, writer, context); return(writer); }
public async Task SayHelloBidirectionStreamingTest() { // Arrange var service = new TesterService(CreateGreeterMock().Object); var callContext = TestServerCallContext.Create(); var requestStream = new TestAsyncStreamReader <HelloRequest>(callContext); var responseStream = new TestServerStreamWriter <HelloReply>(callContext); // Act using var call = service.SayHelloBidirectionalStreaming(requestStream, responseStream, callContext); // Assert requestStream.AddMessage(new HelloRequest { Name = "James" }); Assert.AreEqual("Hello James", (await responseStream.ReadNextAsync()) !.Message); requestStream.AddMessage(new HelloRequest { Name = "Jo" }); Assert.AreEqual("Hello Jo", (await responseStream.ReadNextAsync()) !.Message); requestStream.AddMessage(new HelloRequest { Name = "Lee" }); Assert.AreEqual("Hello Lee", (await responseStream.ReadNextAsync()) !.Message); requestStream.Complete(); await call; responseStream.Complete(); Assert.IsNull(await responseStream.ReadNextAsync()); }