public async Task SayHelloServerStreamingTest() { // Arrange var client = new Tester.TesterClient(Channel); var cts = new CancellationTokenSource(); var hasMessages = false; var callCancelled = false; // Act using var call = client.SayHelloServerStreaming(new HelloRequest { Name = "Joe" }, cancellationToken: cts.Token); try { await foreach (var message in call.ResponseStream.ReadAllAsync()) { hasMessages = true; cts.Cancel(); } } catch (RpcException ex) when(ex.StatusCode == StatusCode.Cancelled) { callCancelled = true; } // Assert Assert.IsTrue(hasMessages); Assert.IsTrue(callCancelled); }
public async Task SayHelloBidirectionStreamingTest() { // Arrange var client = new Tester.TesterClient(Channel); var names = new[] { "James", "Jo", "Lee" }; var messages = new List <string>(); // Act using (var call = client.SayHelloBidirectionalStreaming()) { foreach (var name in names) { await call.RequestStream.WriteAsync(new HelloRequest { Name = name }); Assert.IsTrue(await call.ResponseStream.MoveNext()); messages.Add(call.ResponseStream.Current.Message); } await call.RequestStream.CompleteAsync(); } // Assert Assert.AreEqual(1, messages.Count); Assert.AreEqual("Hello James", messages[0]); }
public async Task ClientStreamingTest_Success() { // Arrange var client = new Tester.TesterClient(Channel); var names = new[] { "James", "Jo", "Lee" }; HelloReply response; // Act using (var call = client.SayHelloClientStreaming()) { foreach (var name in names) { await call.RequestStream.WriteAsync(new HelloRequest { Name = name }).DefaultTimeout(); await Task.Delay(50); } await call.RequestStream.CompleteAsync().DefaultTimeout(); response = await call.ResponseAsync.DefaultTimeout(); } // Assert Assert.AreEqual("Hello James, Jo, Lee", response.Message); }
public async Task BidirectionStreamingTest_Error() { // Arrange var client = new Tester.TesterClient(Channel); // Act var ex = await ExceptionAssert.ThrowsAsync <RpcException>(async() => { var names = new[] { "James", "Jo", "Lee" }; using (var call = client.SayHelloBidirectionalStreamingError()) { foreach (var name in names) { await call.RequestStream.WriteAsync(new HelloRequest { Name = name }).DefaultTimeout(); Assert.IsTrue(await call.ResponseStream.MoveNext().DefaultTimeout()); } await call.RequestStream.CompleteAsync().DefaultTimeout(); Assert.IsFalse(await call.ResponseStream.MoveNext().DefaultTimeout()); } }).DefaultTimeout(); // Assert Assert.AreEqual(StatusCode.NotFound, ex.StatusCode); }
private static async Task Main(string[] args) { var sw = new Stopwatch(); if (args.Length < 1) { Console.Out.WriteLine("Usage: dotnet run --project FlowControlTest.Client server_host:port"); return; } var channel = new Channel(args[0], ChannelCredentials.Insecure); var client = new Tester.TesterClient(channel); var call = client.StreamData(); for (var i = 0; i < 1000000; ++i) { sw.Start(); await call.RequestStream.WriteAsync(new TestRequest { Data = new string('a', 10000) }); sw.Stop(); Console.Out.WriteLine("Sent request {0} in {1}s", i, sw.Elapsed); sw.Reset(); } await call.RequestStream.CompleteAsync(); await call.ResponseAsync; await channel.ShutdownAsync(); }
public async Task ClientStreamingTest_Error() { // Arrange var client = new Tester.TesterClient(Channel); // Act using var call = client.SayHelloClientStreamingError(); var ex = await ExceptionAssert.ThrowsAsync <InvalidOperationException>(async() => { var names = new[] { "James", "Jo", "Lee" }; { foreach (var name in names) { await call.RequestStream.WriteAsync(new HelloRequest { Name = name }).DefaultTimeout(); await Task.Delay(50); } } }).DefaultTimeout(); // Assert Assert.AreEqual(StatusCode.NotFound, call.GetStatus().StatusCode); }
public IActionResult Index() { using var channel = GrpcChannel.ForAddress("https://localhost:5001"); var client = new Tester.TesterClient(channel); var reply = client.GetTests( new TestRequest { OrderBy = "1" }); return(View()); }
public async Task SayHelloUnaryTest() { // Arrange var client = new Tester.TesterClient(Channel); // Act var response = await client.SayHelloUnaryAsync(new HelloRequest { Name = "Joe" }); // Assert Assert.AreEqual("Hello Joe", response.Message); }
public async Task UnaryTest_Error() { // Arrange var client = new Tester.TesterClient(Channel); // Act var ex = await ExceptionAssert.ThrowsAsync <RpcException>(() => client.SayHelloUnaryErrorAsync(new HelloRequest { Name = "Joe" }).ResponseAsync).DefaultTimeout(); // Assert Assert.AreEqual(StatusCode.NotFound, ex.StatusCode); }
public async Task ServerStreamingTest_Throw() { // Arrange var client = new Tester.TesterClient(Channel); // Act using var call = client.SayHelloServerStreamingError(new HelloRequest { Name = "Joe" }); // Assert Assert.IsTrue(await call.ResponseStream.MoveNext().DefaultTimeout()); var ex = await ExceptionAssert.ThrowsAsync <RpcException>(() => call.ResponseStream.MoveNext()).DefaultTimeout(); Assert.AreEqual(StatusCode.NotFound, ex.StatusCode); }
public async Task SayHelloClientStreamingTest() { // Arrange var client = new Tester.TesterClient(Channel); var names = new[] { "James", "Jo", "Lee" }; HelloReply response; // Act using var call = client.SayHelloClientStreaming(); foreach (var name in names) { await call.RequestStream.WriteAsync(new HelloRequest { Name = name }); } await call.RequestStream.CompleteAsync(); response = await call; // Assert Assert.Equal("Hello James, Jo, Lee", response.Message); }
public async Task ClientStreamingTest_Error() { // Arrange var client = new Tester.TesterClient(Channel); // Act using var call = client.SayHelloClientStreamingError(); var ex = await ExceptionAssert.ThrowsAsync <Exception>(async() => { while (true) { await call.RequestStream.WriteAsync(new HelloRequest { Name = "Name!" }).DefaultTimeout(); await Task.Delay(50); } }).DefaultTimeout(); // Assert Assert.IsTrue(ex is InvalidOperationException || ex is RpcException); Assert.AreEqual(StatusCode.NotFound, call.GetStatus().StatusCode); }
public Worker(Tester.TesterClient client, IGreetRepository greetRepository) { _client = client; _greetRepository = greetRepository; }
public TestingClientService(Tester.TesterClient client, Channel channel) { _client = client; ClientChannel = channel; }
static async Task Main(string[] args) { var consumerConfig = new ConsumerConfig { GroupId = $"dbserver1.dbo.Person.{Guid.NewGuid():N}.group.id", BootstrapServers = "192.168.110.241:9092", AutoOffsetReset = AutoOffsetReset.Earliest, }; using (var c = new ConsumerBuilder <string, string>(consumerConfig).Build()) { c.Subscribe("dbserver1.dbo.Person"); try { while (true) { try { var cr = c.Consume(); var a = JsonSerializer.Serialize(cr.Message); Mensagem b = null; if (cr.Message.Value != null) { b = JsonSerializer.Deserialize <Mensagem>(cr.Message?.Value); } var chave = JsonSerializer.Deserialize <KeyIndentification>(cr.Key); var offset = cr.TopicPartitionOffset; if (b == null) { Console.WriteLine($"DELETADO - {chave.payload.Id}"); } else { if (b.payload?.after != null && b.payload?.before == null) { using var channel = GrpcChannel.ForAddress("https://localhost:5001"); var tester = new Tester.TesterClient(channel); var response = await tester.SalvarUsuarioAsync( new ModeloRequest { Endereco = b.payload?.after.Address, Id = b.payload.after.Id, IntNull = new Random().Next(1, 10) % 2 == 0 ? b.payload?.after.Id : (int?)null, Nome = b.payload?.after.Name, Telefone = b.payload?.after.Phone, Obj = new OutroModelo { Texto = "texto" } } ); Console.WriteLine($"INCLUSÃO - ID:{b.payload?.after.Id}\nNOME:{b.payload?.after.Name}\nENDERECO:{b.payload?.after.Address}\nTELEFONE:{b.payload?.after.Phone}"); } else { if (b.payload?.after == null) { Console.WriteLine($"ALTERAÇÃO - ID:{b.payload?.before.Id}\nNOME:{b.payload?.before.Name}\nENDERECO:{b.payload?.before.Address}\nTELEFONE:{b.payload?.before.Phone}"); } else { Console.WriteLine($"ALTERAÇÃO - ID:{b.payload?.after.Id}\nNOME:{b.payload?.after.Name}\nENDERECO:{b.payload?.after.Address}\nTELEFONE:{b.payload?.after.Phone}"); } } } Console.WriteLine("======================================================== \n"); } catch (Exception e) { Console.WriteLine(e); throw e; } } } catch (Exception ex) { Console.WriteLine(ex); } } }