using System; using System.Collections.Generic; using Centron.BusinessLogic; using Centron.BusinessLogic.Telemetry; using Centron.Data.Entities.Telemetry; using Centron.Tests.EndToEnd.Infrastructure; using Xunit; using Xunit.Abstractions; namespace Centron.Tests.EndToEnd.Tests.Telemetry { public class TelemetryUpsertMcpToolUsage_DistinguishesByAllKeyColumns : EndToEndTest { public TelemetryUpsertMcpToolUsage_DistinguishesByAllKeyColumns(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } public override void Execute() { int toolI3D = 0; this.WithSession(session => { var resolve = session.GetBL().ResolveMcpToolNameI3Ds(new[] { "tool" }); Assert.True(resolve.IsSuccess); toolI3D = resolve.Data["tool"]; }); var bucketA = new DateTime(2026, 5, 2, 12, 15, 0, DateTimeKind.Utc); var bucketB = new DateTime(2026, 5, 2, 12, 30, 0, DateTimeKind.Utc); var increments = new List { new() { UserID = 11, ToolNameI3D = toolI3D, ToolMode = McpToolMode.User, BucketStartUtc = bucketA, Increment = 1 }, new() { UserID = 11, ToolNameI3D = toolI3D, ToolMode = McpToolMode.Agent, BucketStartUtc = bucketA, Increment = 1 }, new() { UserID = 11, ToolNameI3D = toolI3D, ToolMode = McpToolMode.User, BucketStartUtc = bucketB, Increment = 1 } }; this.WithSession(session => { var result = session.GetBL().UpsertMcpToolUsageBatch(increments); Assert.True(result.IsSuccess); }); Assert.Equal(3, this.Sql($"SELECT COUNT(*) FROM dbo.McpToolUsageTelemetry WHERE UserID = 11 AND ToolNameI3D = {toolI3D}")); } } }