feat(AuthClientTests): Es wurde eine clientPool-Warteschlange erstellt, um die Injektion von Abhängigkeiten und die Bereitstellung von Diensten zu trennen.

- Dies macht die Messung realistischer.
This commit is contained in:
Developer 02 2025-02-04 10:48:04 +01:00
parent 8e979fa14d
commit 5886e076f4

View File

@ -4,6 +4,7 @@ using DigitalData.Auth.Client;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System.Reflection;
namespace DigitalData.Auth.Tests.Client;
@ -14,7 +15,9 @@ public class AuthClientTests
private Func<Action<ClientParams>, ServiceProvider> Build;
private WebApplication? _app = null;
private readonly WebApplication? _app = null;
private readonly Queue<IAuthClient> _clientPool = new();
private static int AvailablePort
{
@ -35,7 +38,19 @@ public class AuthClientTests
.AddAuthHubClient(options)
.BuildServiceProvider();
// Create and run test server
var testCount = GetType().GetMethods(BindingFlags.Public | BindingFlags.Instance)
.Where(m => m.GetCustomAttributes(typeof(TestAttribute), false).Length != 0 ||
m.GetCustomAttributes(typeof(TestCaseAttribute), false).Any())
.Count();
for(int i = 0; i < testCount; i++)
{
using var provider = Build(opt => opt.Url = _hubUrl);
var client = provider.GetRequiredService<IAuthClient>();
_clientPool.Append(client);
}
/* Create and run test server */
// Create builder and add SignalR service
var builder = WebApplication.CreateBuilder();
builder.Services.AddSignalR();
@ -66,8 +81,7 @@ public class AuthClientTests
public async Task StartAsync_ShouldConnectSuccessfully()
{
// Arrange
using var provider = Build(opt => opt.Url = _hubUrl);
var client = provider.GetRequiredService<IAuthClient>();
var client = _clientPool.Dequeue();
// Act
await client.TryStartAsync();
@ -87,11 +101,7 @@ public class AuthClientTests
// Arrange
string rcv_user = string.Empty;
string rcv_msg = string.Empty;
// Sender client
using var provider_sender = Build(opt => opt.Url = _hubUrl);
var sender_client = provider_sender.GetRequiredService<IAuthClient>();
await sender_client.TryStartAsync();
var sender_client = _clientPool.Dequeue();
// Receiver client
using var provider_receiver = Build(opt =>