From d1e14e2d92cf425757673ebc086859478c02912f Mon Sep 17 00:00:00 2001 From: dclipca Date: Sat, 18 Jan 2025 18:06:55 +0200 Subject: [PATCH] misc --- .../Common/LmStudioTestBase.cs | 64 +++++++------------ .../Integration/Tests.cs | 12 +--- .../Unit/Tests.cs | 7 +- .../LmStudioSharpClient.cs | 13 ---- 4 files changed, 24 insertions(+), 72 deletions(-) diff --git a/SpongeEngine.LMStudioSharp.Tests/Common/LmStudioTestBase.cs b/SpongeEngine.LMStudioSharp.Tests/Common/LmStudioTestBase.cs index 53c51e4..c9dd11e 100644 --- a/SpongeEngine.LMStudioSharp.Tests/Common/LmStudioTestBase.cs +++ b/SpongeEngine.LMStudioSharp.Tests/Common/LmStudioTestBase.cs @@ -10,40 +10,29 @@ namespace SpongeEngine.LMStudioSharp.Tests.Common { public abstract class LmStudioTestBase : IDisposable, IAsyncLifetime { - protected readonly LmStudioSharpClient Client; protected readonly ITestOutputHelper Output; + protected readonly LmStudioSharpClient Client; protected readonly WireMockServer Server; - protected readonly ILogger Logger; - protected readonly string BaseUrl; - protected bool ServerAvailable; protected Model? DefaultModel; protected LmStudioTestBase(ITestOutputHelper output) { - Server = WireMockServer.Start(); - BaseUrl = Server.Urls[0]; - Logger = LoggerFactory - .Create(builder => builder.AddXUnit(output)) - .CreateLogger(GetType()); - - - Output = output; - Logger = LoggerFactory - .Create(builder => builder.AddXUnit(output)) - .CreateLogger(GetType()); - + Server = WireMockServer.Start(); Client = new LmStudioSharpClient(new LmStudioClientOptions() { - BaseUrl = BaseUrl, - HttpClient = new HttpClient - { + BaseUrl = Server.Urls[0], + HttpClient = new HttpClient + { BaseAddress = new Uri(TestConfig.NativeApiBaseUrl), }, JsonSerializerOptions = new JsonSerializerOptions() { DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } + }, + Logger = LoggerFactory + .Create(builder => builder.AddXUnit(output)) + .CreateLogger(GetType()), }); } @@ -56,33 +45,24 @@ public async Task InitializeAsync() { try { - ServerAvailable = await Client.IsAvailableAsync(); - if (ServerAvailable) - { - Output.WriteLine("LM Studio server is available"); + Output.WriteLine("LM Studio server is available"); - ModelsResponse modelsResponse = await Client.ListModelsAsync(); - if (modelsResponse.Data.Any()) - { - DefaultModel = new Model - { - Id = modelsResponse.Data[0].Id, - Object = modelsResponse.Data[0].Object, - // Map other properties as needed - }; - Output.WriteLine($"Found model: {DefaultModel.Id}"); - } - else + ModelsResponse modelsResponse = await Client.ListModelsAsync(); + if (modelsResponse.Data.Any()) + { + DefaultModel = new Model { - Output.WriteLine($"modelsResponse: {JsonSerializer.Serialize(modelsResponse)}"); - Output.WriteLine("No models available"); - throw new SkipException("No models available in LM Studio"); - } + Id = modelsResponse.Data[0].Id, + Object = modelsResponse.Data[0].Object, + // Map other properties as needed + }; + Output.WriteLine($"Found model: {DefaultModel.Id}"); } else { - Output.WriteLine("LM Studio server is not available"); - throw new SkipException("LM Studio server is not available"); + Output.WriteLine($"modelsResponse: {JsonSerializer.Serialize(modelsResponse)}"); + Output.WriteLine("No models available"); + throw new SkipException("No models available in LM Studio"); } } catch (Exception ex) when (ex is not SkipException) diff --git a/SpongeEngine.LMStudioSharp.Tests/Integration/Tests.cs b/SpongeEngine.LMStudioSharp.Tests/Integration/Tests.cs index b31237d..3426f58 100644 --- a/SpongeEngine.LMStudioSharp.Tests/Integration/Tests.cs +++ b/SpongeEngine.LMStudioSharp.Tests/Integration/Tests.cs @@ -11,14 +11,12 @@ namespace SpongeEngine.LMStudioSharp.Tests.Integration [Trait("API", "Native")] public class Tests : LmStudioTestBase { - public Tests(ITestOutputHelper output) : base(output) { } + public Tests(ITestOutputHelper output) : base(output) {} [SkippableFact] [Trait("Category", "Integration")] public async Task Complete_WithSimplePrompt_ShouldReturnResponse() { - Skip.If(!ServerAvailable, "LM Studio server is not available"); - // Arrange var request = new CompletionRequest { @@ -42,8 +40,6 @@ public async Task Complete_WithSimplePrompt_ShouldReturnResponse() [Trait("Category", "Integration")] public async Task StreamCompletion_ShouldStreamTokens() { - Skip.If(!ServerAvailable, "LM Studio server is not available"); - var request = new CompletionRequest { Model = "test-model", @@ -89,8 +85,6 @@ public async Task StreamCompletion_ShouldStreamTokens() [Trait("Category", "Integration")] public async Task Complete_WithStopSequence_ShouldReturnResponse() { - Skip.If(!ServerAvailable, "LM Studio server is not available"); - // Arrange var request = new CompletionRequest { @@ -115,8 +109,6 @@ public async Task Complete_WithStopSequence_ShouldReturnResponse() [Trait("Category", "Integration")] public async Task Complete_WithDifferentTemperatures_ShouldWork() { - Skip.If(!ServerAvailable, "LM Studio server is not available"); - // Test various temperature settings var temperatures = new[] { 0.1f, 0.7f, 1.5f }; foreach (var temp in temperatures) @@ -148,8 +140,6 @@ public async Task Complete_WithDifferentTemperatures_ShouldWork() [Trait("Category", "Integration")] public async Task ChatComplete_ShouldReturnResponse() { - Skip.If(!ServerAvailable, "LM Studio server is not available"); - // Arrange var request = new ChatRequest { diff --git a/SpongeEngine.LMStudioSharp.Tests/Unit/Tests.cs b/SpongeEngine.LMStudioSharp.Tests/Unit/Tests.cs index 6467f73..cbcc3ea 100644 --- a/SpongeEngine.LMStudioSharp.Tests/Unit/Tests.cs +++ b/SpongeEngine.LMStudioSharp.Tests/Unit/Tests.cs @@ -15,12 +15,7 @@ namespace SpongeEngine.LMStudioSharp.Tests.Unit { public class Tests : LmStudioTestBase { - public LmStudioSharpClient Client { get; } - - public Tests(ITestOutputHelper output) : base(output) - { - Client = new LmStudioSharpClient(new LmStudioClientOptions()); - } + public Tests(ITestOutputHelper output) : base(output) {} [Fact] public async Task ListModelsAsync_ShouldReturnModels() diff --git a/SpongeEngine.LMStudioSharp/LmStudioSharpClient.cs b/SpongeEngine.LMStudioSharp/LmStudioSharpClient.cs index 09c50aa..8758b45 100644 --- a/SpongeEngine.LMStudioSharp/LmStudioSharpClient.cs +++ b/SpongeEngine.LMStudioSharp/LmStudioSharpClient.cs @@ -136,19 +136,6 @@ public async IAsyncEnumerable StreamChatAsync(ChatRequest request, [Enum } } - public async Task IsAvailableAsync(CancellationToken cancellationToken = default) - { - try - { - var response = await Options.HttpClient.GetAsync(MODELS_ENDPOINT, cancellationToken); - return response.IsSuccessStatusCode; - } - catch - { - return false; - } - } - private async Task PostAsJsonAsync(string endpoint, T content, CancellationToken cancellationToken) { var json = JsonSerializer.Serialize(content, Options.JsonSerializerOptions);