You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

GrpcAgentServiceFixture.cs 3.0 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // Copyright (c) Microsoft Corporation. All rights reserved.
  2. // GrpcAgentServiceFixture.cs
  3. using Grpc.Core;
  4. using Microsoft.AutoGen.Protobuf;
  5. using Microsoft.Extensions.DependencyInjection;
  6. namespace Microsoft.AutoGen.Core.Grpc.Tests;
  7. public sealed class GrpcAgentServiceCollector
  8. {
  9. public List<AddSubscriptionRequest> AddSubscriptionRequests { get; } = new();
  10. public List<RemoveSubscriptionRequest> RemoveSubscriptionRequests { get; } = new();
  11. public List<RegisterAgentTypeRequest> RegisterAgentTypeRequests { get; } = new();
  12. internal void Clear()
  13. {
  14. this.AddSubscriptionRequests.Clear();
  15. this.RemoveSubscriptionRequests.Clear();
  16. this.RegisterAgentTypeRequests.Clear();
  17. }
  18. }
  19. /// <summary>
  20. /// This fixture is largely just a loopback as we are testing the client side logic of the GrpcAgentRuntime in isolation from the rest of the system.
  21. /// </summary>
  22. public class GrpcAgentServiceFixture : AgentRpc.AgentRpcBase
  23. {
  24. private GrpcAgentServiceCollector requestCollector;
  25. public GrpcAgentServiceFixture(IServiceProvider serviceProvider)
  26. {
  27. this.requestCollector = serviceProvider.GetService<GrpcAgentServiceCollector>() ?? new();
  28. }
  29. public override async Task OpenChannel(IAsyncStreamReader<Message> requestStream, IServerStreamWriter<Message> responseStream, ServerCallContext context)
  30. {
  31. try
  32. {
  33. var workerProcess = new TestGrpcWorkerConnection(requestStream, responseStream, context);
  34. await workerProcess.Connect().ConfigureAwait(true);
  35. }
  36. catch
  37. {
  38. if (context.CancellationToken.IsCancellationRequested)
  39. {
  40. return;
  41. }
  42. throw;
  43. }
  44. }
  45. public List<AddSubscriptionRequest> AddSubscriptionRequests => this.requestCollector.AddSubscriptionRequests;
  46. public override async Task<AddSubscriptionResponse> AddSubscription(AddSubscriptionRequest request, ServerCallContext context)
  47. {
  48. this.AddSubscriptionRequests.Add(request);
  49. return new AddSubscriptionResponse();
  50. }
  51. public List<RemoveSubscriptionRequest> RemoveSubscriptionRequests => this.requestCollector.RemoveSubscriptionRequests;
  52. public override async Task<RemoveSubscriptionResponse> RemoveSubscription(RemoveSubscriptionRequest request, ServerCallContext context)
  53. {
  54. this.RemoveSubscriptionRequests.Add(request);
  55. return new RemoveSubscriptionResponse();
  56. }
  57. public override async Task<GetSubscriptionsResponse> GetSubscriptions(GetSubscriptionsRequest request, ServerCallContext context) => new GetSubscriptionsResponse { };
  58. public List<RegisterAgentTypeRequest> RegisterAgentTypeRequests => this.requestCollector.RegisterAgentTypeRequests;
  59. public override async Task<RegisterAgentTypeResponse> RegisterAgent(RegisterAgentTypeRequest request, ServerCallContext context)
  60. {
  61. this.RegisterAgentTypeRequests.Add(request);
  62. return new RegisterAgentTypeResponse();
  63. }
  64. }