/// <summary> /// 测试GRPC。 /// </summary> private static void GrpcTest() { var grpcChannel = GrpcChannel.ForAddress("http://localhost:5000"); // 使用Https。 //var grpcChannel = GrpcChannel.ForAddress("https://localhost:5001"); var client = new Duplicater.DuplicaterClient(grpcChannel); var task1 = EnterTest(client); var task2 = DuplicateCheckTest(client); Task.WaitAll(task1, task2); }
/// <summary> /// 入判重测试。 /// </summary> /// <param name="client"></param> /// <returns></returns> private static async Task EnterTest(Duplicater.DuplicaterClient client) { var entry = client.EntryDuplicate(); var randomBuilder = new RandomBulider(0, 2000, _randomMax); var token = new CancellationToken(); var response = Task.Run(async() => { while (await entry.ResponseStream.MoveNext(token)) { if (entry.ResponseStream.Current.Result) { Console.WriteLine($"{entry.ResponseStream.Current.Msg}"); } else { Console.WriteLine($"{entry.ResponseStream.Current.Msg}入判重失败。"); } } Console.WriteLine("响应完成。"); }); var request = Task.Run(async() => { foreach (var tag in randomBuilder.Next()) { SpinWait.SpinUntil(() => false, 100); var msg = tag.ToString(); await entry.RequestStream.WriteAsync(new EntryRequest { Tag = msg }); } }); await request; Console.WriteLine("等待释放链接。"); await entry.RequestStream.CompleteAsync(); await response; entry.Dispose(); Console.WriteLine("测试入判重完成"); }
/// <summary> /// 判断是否已存在。 /// </summary> /// <param name="client">客户端。</param> /// <returns>返回结果。</returns> private static async Task DuplicateCheckTest(Duplicater.DuplicaterClient client) { var dulicate = client.DuplicateCheck(); var token = new CancellationToken(); var response = Task.Run(async() => { while (await dulicate.ResponseStream.MoveNext(token)) { if (dulicate.ResponseStream.Current.Result) { Console.WriteLine($"已存在,忽略。"); } else { Console.WriteLine("不存在,执行操作任务。"); } } Console.WriteLine("响应完成。"); }); var request = Task.Run(async() => { var randomBuider = new RandomBulider(0, 2000, _randomMax); foreach (var tag in randomBuider.Next()) { SpinWait.SpinUntil(() => false, 100); await dulicate.RequestStream.WriteAsync(new DuplicateCheckRequest { Tag = tag.ToString() }); } }); await request; Console.WriteLine("是否判重。"); await dulicate.RequestStream.CompleteAsync(); await response; dulicate.Dispose(); Console.WriteLine("测试查判重完成。"); }