Files
Ngino/tests/Ngino.Client.Tests/TunnelClientModelTests.cs

63 lines
2.4 KiB
C#

using System.Text.Json;
using Ngino.Client;
using Xunit;
namespace Ngino.Client.Tests;
public sealed class TunnelClientModelTests
{
private static readonly Uri Upstream = new("http://localhost:11434");
[Fact]
public void ExtractModelNames_ReadsActiveOllamaPsModelNames()
{
using var document = JsonDocument.Parse(
"""
{
"models": [
{ "name": "qwen3.5:0.8b", "model": "qwen3.5:0.8b" },
{ "name": "llama3.2:latest", "model": "llama3.2:latest" },
{ "name": " QWEN3.5:0.8B " }
]
}
""");
var models = TunnelClient.ExtractModelNames(document.RootElement);
Assert.Equal(["llama3.2:latest", "qwen3.5:0.8b"], models);
}
[Fact]
public async Task BuildModelCommandRequest_LoadUsesOllamaPreloadRequest()
{
using var request = TunnelClient.BuildModelCommandRequest(Upstream, "load", " qwen3.5:0.8b ");
var body = await request.Content!.ReadAsStringAsync();
using var document = JsonDocument.Parse(body);
Assert.Equal(HttpMethod.Post, request.Method);
Assert.Equal("http://localhost:11434/api/generate", request.RequestUri!.AbsoluteUri);
Assert.Equal("qwen3.5:0.8b", document.RootElement.GetProperty("model").GetString());
Assert.False(document.RootElement.TryGetProperty("prompt", out _));
Assert.False(document.RootElement.GetProperty("stream").GetBoolean());
Assert.Equal(-1, document.RootElement.GetProperty("keep_alive").GetInt32());
}
[Theory]
[InlineData("load", -1)]
[InlineData("unload", 0)]
public async Task BuildEmbeddingModelCommandRequest_UsesOllamaEmbedWarmupRequest(
string command,
int expectedKeepAlive)
{
using var request = TunnelClient.BuildEmbeddingModelCommandRequest(Upstream, command, " bge-m3:latest ");
var body = await request.Content!.ReadAsStringAsync();
using var document = JsonDocument.Parse(body);
Assert.Equal(HttpMethod.Post, request.Method);
Assert.Equal("http://localhost:11434/api/embed", request.RequestUri!.AbsoluteUri);
Assert.Equal("bge-m3:latest", document.RootElement.GetProperty("model").GetString());
Assert.Equal("Ngino warmup", document.RootElement.GetProperty("input").GetString());
Assert.Equal(expectedKeepAlive, document.RootElement.GetProperty("keep_alive").GetInt32());
}
}