Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Update tests
  • Loading branch information
JamesNK committed May 27, 2025
commit 862a2d48002786f5ad8c6d1a2a6892ab3bf2619e
44 changes: 9 additions & 35 deletions test/FunctionalTests/Infrastructure/DynamicGrpcServiceRegistry.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,7 @@ public Method<TRequest, TResponse> AddUnaryMethod<TRequest, TResponse>(UnaryServ
where TResponse : class, IMessage, new()
{
var method = CreateMethod<TRequest, TResponse>(MethodType.Unary, methodName ?? Guid.NewGuid().ToString());

AddServiceCore(c =>
{
c.AddUnaryMethod(method, CreateMetadata(), new UnaryServerMethod<DynamicService, TRequest, TResponse>((service, request, context) => callHandler(request, context)));
});
AddServiceCore(builder => builder.AddMethod(method, callHandler));

return method;
}
Expand All @@ -59,11 +55,7 @@ public Method<TRequest, TResponse> AddServerStreamingMethod<TRequest, TResponse>
where TResponse : class, IMessage, new()
{
var method = CreateMethod<TRequest, TResponse>(MethodType.ServerStreaming, methodName ?? Guid.NewGuid().ToString());

AddServiceCore(c =>
{
c.AddServerStreamingMethod(method, CreateMetadata(), new ServerStreamingServerMethod<DynamicService, TRequest, TResponse>((service, request, stream, context) => callHandler(request, stream, context)));
});
AddServiceCore(builder => builder.AddMethod(method, callHandler));

return method;
}
Expand All @@ -73,11 +65,7 @@ public Method<TRequest, TResponse> AddClientStreamingMethod<TRequest, TResponse>
where TResponse : class, IMessage, new()
{
var method = CreateMethod<TRequest, TResponse>(MethodType.ClientStreaming, methodName ?? Guid.NewGuid().ToString());

AddServiceCore(c =>
{
c.AddClientStreamingMethod(method, CreateMetadata(), new ClientStreamingServerMethod<DynamicService, TRequest, TResponse>((service, stream, context) => callHandler(stream, context)));
});
AddServiceCore(builder => builder.AddMethod(method, callHandler));

return method;
}
Expand All @@ -87,34 +75,20 @@ public Method<TRequest, TResponse> AddDuplexStreamingMethod<TRequest, TResponse>
where TResponse : class, IMessage, new()
{
var method = CreateMethod<TRequest, TResponse>(MethodType.DuplexStreaming, methodName ?? Guid.NewGuid().ToString());

AddServiceCore(c =>
{
c.AddDuplexStreamingMethod(method, CreateMetadata(), new DuplexStreamingServerMethod<DynamicService, TRequest, TResponse>((service, input, output, context) => callHandler(input, output, context)));
});
AddServiceCore(builder => builder.AddMethod(method, callHandler));

return method;
}

private static List<object> CreateMetadata()
{
var metadata = new List<object>
{
new HttpMethodMetadata(new[] { "POST" }, acceptCorsPreflight: true)
};
return metadata;
}

private void AddServiceCore(Action<ServiceMethodProviderContext<DynamicService>> action)
private void AddServiceCore(Action<ServerServiceDefinition.Builder> addMethod)
{
// Set action for adding dynamic method
var serviceMethodProviders = _serviceProvider.GetServices<IServiceMethodProvider<DynamicService>>().ToList();
var dynamicServiceModelProvider = serviceMethodProviders.OfType<DynamicServiceModelProvider>().Single();
dynamicServiceModelProvider.CreateMethod = action;
var definitionBuilder = ServerServiceDefinition.CreateBuilder();
addMethod(definitionBuilder);
var serverServiceDefinition = definitionBuilder.Build();

// Add to dynamic endpoint route builder
var routeBuilder = new DynamicEndpointRouteBuilder(_serviceProvider);
routeBuilder.MapGrpcService<DynamicService>();
routeBuilder.MapGrpcService(serverServiceDefinition);

var endpoints = routeBuilder.DataSources.SelectMany(ds => ds.Endpoints).ToList();
_endpointDataSource.AddEndpoints(endpoints);
Expand Down
3 changes: 2 additions & 1 deletion test/FunctionalTests/Server/InterceptorOrderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
using FunctionalTestsWebsite.Infrastructure;
using Google.Protobuf.WellKnownTypes;
using Grpc.AspNetCore.FunctionalTests.Infrastructure;
using Grpc.AspNetCore.Server;
using Grpc.Core;
using Grpc.Core.Interceptors;
using Grpc.Tests.Shared;
Expand All @@ -39,7 +40,7 @@ protected override void ConfigureServices(IServiceCollection services)
options.Interceptors.Add<OrderedInterceptor>(0);
options.Interceptors.Add<OrderedInterceptor>(1);
})
.AddServiceOptions<DynamicService>(options =>
.AddServiceOptions<ServerServiceDefinitionMarker>(options =>
{
options.Interceptors.Add<OrderedInterceptor>(2);
options.Interceptors.Add<OrderedInterceptor>(3);
Expand Down

This file was deleted.

1 change: 0 additions & 1 deletion testassets/FunctionalTestsWebsite/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,6 @@ public void ConfigureServices(IServiceCollection services)
// When the site is run from the test project these types will be injected
// This will add a default types if the site is run standalone
services.TryAddSingleton<DynamicEndpointDataSource>();
services.TryAddEnumerable(ServiceDescriptor.Singleton<IServiceMethodProvider<DynamicService>, DynamicServiceModelProvider>());

// Add a Singleton service
services.AddSingleton<SingletonCounterService>();
Expand Down