51 lines
2.0 KiB
C#
Raw Permalink Normal View History

// Copyright (c) Microsoft Corporation. All rights reserved.
// GrpcAgentRuntimeTests.cs
using FluentAssertions;
using Microsoft.AutoGen.Contracts;
using Microsoft.Extensions.Logging;
using Xunit;
namespace Microsoft.AutoGen.Core.Grpc.Tests;
[Trait("Category", "GRPC")]
public class GrpcAgentRuntimeTests : TestBase
{
[Fact]
public async Task GatewayShouldNotReceiveRegistrationsUntilRuntimeStart()
{
var fixture = new GrpcAgentRuntimeFixture();
var runtime = (GrpcAgentRuntime)await fixture.StartAsync(startRuntime: false, registerDefaultAgent: false);
Logger<BaseAgent> logger = new(new LoggerFactory());
await runtime.RegisterAgentFactoryAsync("MyAgent", async (id, runtime) =>
{
return await ValueTask.FromResult(new SubscribedProtobufAgent(id, runtime, logger));
});
await runtime.RegisterImplicitAgentSubscriptionsAsync<SubscribedProtobufAgent>("MyAgent");
fixture.GrpcRequestCollector.RegisterAgentTypeRequests.Should().BeEmpty();
fixture.GrpcRequestCollector.AddSubscriptionRequests.Should().BeEmpty();
await fixture.AgentsApp!.StartAsync().ConfigureAwait(true);
fixture.GrpcRequestCollector.RegisterAgentTypeRequests.Should().NotBeEmpty();
fixture.GrpcRequestCollector.RegisterAgentTypeRequests.Single().Type.Should().Be("MyAgent");
fixture.GrpcRequestCollector.AddSubscriptionRequests.Should().NotBeEmpty();
fixture.GrpcRequestCollector.Clear();
await runtime.RegisterAgentFactoryAsync("MyAgent2", async (id, runtime) =>
{
return await ValueTask.FromResult(new TestProtobufAgent(id, runtime, logger));
});
fixture.GrpcRequestCollector.RegisterAgentTypeRequests.Should().NotBeEmpty();
fixture.GrpcRequestCollector.RegisterAgentTypeRequests.Single().Type.Should().Be("MyAgent2");
fixture.GrpcRequestCollector.AddSubscriptionRequests.Should().BeEmpty();
fixture.Dispose();
}
}