예제 #1
0
        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);
        }
예제 #2
0
        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());
        }
예제 #3
0
        public async Task GreeterService_SayHelloServerStreaming_ReturnsCorrectResponse()
        {
            // Arrange
            var service        = new GreeterService(new Logger <GreeterService>(new NullLoggerFactory()));
            var cts            = new CancellationTokenSource();
            var callContext    = TestServerCallContext.Create(cancellationToken: cts.Token);
            var responseStream = new TestServerStreamWriter <HelloReply>(callContext);

            // Act
            var call = service.SayHelloServerStreaming(new HelloRequest {
                Name = "Joe"
            }, responseStream, callContext);

            // Assert
            Assert.IsFalse(call.IsCompletedSuccessfully, "Method should run until cancelled.");
            cts.Cancel();
            await call;

            responseStream.Complete();
            var allMessages = new List <HelloReply>();

            // ReSharper disable once UseCancellationTokenForIAsyncEnumerable
            await foreach (var message in responseStream.ReadAllAsync())
            {
                allMessages.Add(message);
            }

            Assert.IsTrue(allMessages.Count >= 1);
            Assert.AreEqual("How are you Joe? 1", allMessages[0].Message);
        }
예제 #4
0
        public async Task GreeterService_SayHelloClientStreaming_ReturnsCorrectResponse()
        {
            // Arrange
            var service       = new GreeterService(new Logger <GreeterService>(new NullLoggerFactory()));
            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);
        }
예제 #5
0
        public ActionResult <string> Get(string name)
        {
            var greeterService = new GreeterService();
            var result         = greeterService.GetGreetText(name ?? "Micros");

            return(result);
        }
예제 #6
0
        public async Task StreamingFromServiceTest()
        {
            var service        = new GreeterService(NullLoggerFactory.Instance);
            var cts            = new CancellationTokenSource();
            var callcontext    = TestServerCallContext.Create(cancellationToken: cts.Token);
            var responseStream = new TestServerStreamWriter <ExampleResponse>(callcontext);

            try
            {
                // act
                using var call = service.StreamingFromService(new ExampleRequest { PageIndex = 1, PageSize = 10, IsDescending = false }, responseStream, callcontext);

                // assert
                Assert.IsFalse(call.IsCompletedSuccessfully, "Method should run until cancelled.");
                _ = Task.Delay(10000);
                cts.Cancel();
                await call;
            }
            catch (Exception ex)
            {
                Console.WriteLine($"ex {ex.Message}");
            }

            responseStream.Complete();
            var allMessage = new List <ExampleResponse>();

            await foreach (var message in responseStream.ReadAllAsync())
            {
                allMessage.Add(message);
            }

            Assert.IsTrue(allMessage.Count > 0);
        }
예제 #7
0
        public void ReplyTest()
        {
            var reply = new GreeterService().SayHello(new HelloRequest {
                Name = "test"
            }, null !);

            Assert.Equal("Hello test", reply.Result.Message);
        }
        public async Task Service_greets_sender_client_stream(GreeterService sut, ServerCallContext context, [Frozen] IEnumerable <HelloRequest> requests, IAsyncStreamReader <HelloRequest> requestStream)
        {
            var response = await sut.SayHelloClientStream(requestStream, context);

            foreach (var req in requests)
            {
                StringAssert.Contains(req.Name, response.Message);
            }
        }
        public async Task Service_greets_sender_duplex(GreeterService sut, ServerCallContext context, [Frozen] IEnumerable <HelloRequest> requests, IAsyncStreamReader <HelloRequest> requestStream, IServerStreamWriter <HelloReply> responseStream)
        {
            await sut.SayHelloDuplex(requestStream, responseStream, context);

            foreach (var req in requests)
            {
                Mock.Get(responseStream).Verify(p => p.WriteAsync(It.Is <HelloReply>(r => r.Message.EndsWith(req.Name))), Times.Once());
            }
        }
예제 #10
0
        public async Task SayHelloTest()
        {
            // arrange
            var service = new GreeterService(NullLoggerFactory.Instance);

            // act
            var response = await service.SayHello(new HelloRequest { Name = "test" }, TestServerCallContext.Create());

            // Assert
            Assert.AreEqual("Hello test", response.Message);
        }
예제 #11
0
        public async Task GreeterService_SayHelloUnary_ReturnsCorrectResponse()
        {
            // Arrange
            var service = new GreeterService(new Logger <GreeterService>(new NullLoggerFactory()));

            // Act
            var response = await service.SayHelloUnary(new HelloRequest { Name = "Joe" }, TestServerCallContext.Create());

            // Assert
            Assert.AreEqual("Hello Joe", response.Message);
        }
예제 #12
0
        public void GetGreetingWithNameReturnsGoodAfternoonName(string name)
        {
            // Arrange
            var service = new GreeterService();

            // Act
            var greeting = service.GetGreeting(name);

            // Assert
            greeting.Should().Be($"Good afternoon, {name}");
        }
예제 #13
0
        public void P_GetGreetText_WhenValidNameSent_ThenReturnsGreetText()
        {
            //Arrange
            var greeterService = new GreeterService();
            var expectedOutput = "Hello Micros!";
            //Act
            var greetText = greeterService.GetGreetText("Micros");

            //Assert
            Assert.True(greetText == expectedOutput);
        }
예제 #14
0
        public static void Main(string[] args)
        {
            Server server = new Server
            {
                Services = { GreeterService.BindService(new GreeterImpl()) },
                Ports    = { new ServerPort(Address, Port, ServerCredentials.Insecure) }
            };

            server.Start();
            Console.WriteLine("\nGreeter Server listening on " + Address + ":" + Port);
            Console.WriteLine("Press any key to stop the server...\n");
            Console.ReadKey();
            server.ShutdownAsync().Wait();
        }
예제 #15
0
        public async Task Given_RandomName_When_CallingSayHello_Return_GreetingMessage()
        {
            // Arrange
            var loggerMock  = new Moq.Mock <ILogger <GreeterService> >();
            var contextMock = new Moq.Mock <ServerCallContext>();
            var service     = new GreeterService(loggerMock.Object);
            var request     = new HelloRequest()
            {
                Name = _fixture.Create <string>()
            };
            // Act
            var result = await service.SayHello(request, contextMock.Object);

            // Assert
            Assert.Equal($"Hello {request.Name}", result.Message);
        }
예제 #16
0
        public void When_Greeted_After_12_Returns_GoodAfternoon()
        {
            //Arrange
            var mockery = new Moq.Mock <IDateTimeService>();

            mockery.Setup(s => s.GetCurrent()).Returns(new DateTime(2016, 1, 10, 15, 0, 0));
            var mockDateTimeService = mockery.Object;

            var greeterService  = new GreeterService(mockDateTimeService);
            var name            = "Magesh";
            var expectedMessage = "Hi Magesh, Good Afternoon!";

            //Act
            var greetMessage = greeterService.Greet(name);

            //Assert
            Assert.AreEqual(expectedMessage, greetMessage);
        }
예제 #17
0
        public async Task Given_EmptyName_When_CallingSayHello_Return_Error()
        {
            // Arrange
            var loggerMock  = new Moq.Mock <ILogger <GreeterService> >();
            var contextMock = new Moq.Mock <ServerCallContext>();
            var service     = new GreeterService(loggerMock.Object);
            var request     = new HelloRequest()
            {
                Name = string.Empty
            };
            // Act
            var exception = await Assert.ThrowsAsync <RpcException>(async() =>
            {
                await service.SayHello(request, contextMock.Object);
            });

            // Assert
            Assert.Equal(StatusCode.InvalidArgument, exception.StatusCode);
        }
예제 #18
0
        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());
        }
예제 #19
0
        static void Main(string[] args)
        {
            #region  务实现

            HelloRequest request = new HelloRequest();
            request.Name = "Simon";

            var reply = new GreeterService(_logger).SayHello(request, null);
            Console.WriteLine("服务1:");
            Console.WriteLine("Grpc ServerListening On Port 5001,Out put:" + reply.Result.Message);//Grpc ServerListening On Port 8088,Out put:Hello Simon
            #endregion

            #region Demo 服务实现

            ResponseModel respModel = new ResponseModel();
            respModel.Id   = 2;
            respModel.Name = "Acadsoc";

            var resp = new DemoService().DemoMethod(null, null);
            Console.WriteLine("服务2:根据获取名称");
            Console.WriteLine(resp.Result);

            #endregion

            #region 获取人员信息


            RequestUserId uid = new RequestUserId {
                Id = 2
            };
            var person = new PersonInfoService().GetPersonInfoById(uid, null);
            Console.WriteLine("服务3:根据ID获取对象信息");
            Console.WriteLine("获取用户信息为:" + JsonConvert.SerializeObject(person));

            // 获取用户信息为:{ "Result":{ "Person":{ "Id":2,"Name":"Lily","Age":30,"Gender":1,"Weight":158.5,"EmailVerified":false,"Phone":[],"Salary":3200.0,"MyAdd":[]} },"Id":1,"Exception":null,"Status":5,"IsCanceled":false,"IsCompleted":true,"IsCompletedSuccessfully":true,"CreationOptions":0,"AsyncState":null,"IsFaulted":false}

            #endregion

            Console.WriteLine("任意键退出...");
            Console.ReadKey();
        }
예제 #20
0
        //private static readonly Channel _channel;
        //private static GreeterService _client;

        public HelloServerClient(GreeterService greeterService)
        {
            _greeterService = greeterService;
        }
 public HomeController(ILogger <HomeController> logger)
 {
     _logger  = logger;
     _service = new GreeterService();
 }
        public async Task Service_greets_sender_server_stream(GreeterService sut, ServerCallContext context, IServerStreamWriter <HelloReply> responseStream, string name)
        {
            await sut.SayHelloServerStream(new HelloRequest { Name = name }, responseStream, context);

            Mock.Get(responseStream).Verify(p => p.WriteAsync(It.Is <HelloReply>(r => r.Message.EndsWith(name))), Times.Exactly(10));
        }
            static Task SayHellosBufferHint(HelloRequest request, IServerStreamWriter <HelloReply> responseStream, ServerCallContext context)
            {
                context.WriteOptions = new WriteOptions(WriteFlags.BufferHint);

                return(GreeterService.SayHellosCore(request, responseStream));
            }
        public async Task Service_greets_sender_unary(GreeterService sut, string name, ServerCallContext context)
        {
            var response = await sut.SayHelloUnary(new HelloRequest { Name = name }, context);

            Assert.That(response.Message, Does.EndWith(name));
        }