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_MixedInsertAndUpdate : EndToEndTest { public TelemetryUpsertMcpToolUsage_MixedInsertAndUpdate(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } public override void Execute() { int toolAI3D = 0, toolBI3D = 0; this.WithSession(session => { var resolve = session.GetBL().ResolveMcpToolNameI3Ds(new[] { "tool_a", "tool_b" }); Assert.True(resolve.IsSuccess); toolAI3D = resolve.Data["tool_a"]; toolBI3D = resolve.Data["tool_b"]; }); this.Sql($@" INSERT INTO dbo.McpToolUsageTelemetry (UserID, ToolNameI3D, HardwareIDI3D, ToolMode, BucketStartUtc, [Count]) VALUES (11, {toolAI3D}, 0, 0, '2026-05-02T12:15:00', 4)"); var bucket = new DateTime(2026, 5, 2, 12, 15, 0, DateTimeKind.Utc); var increments = new List { new() { UserID = 11, ToolNameI3D = toolAI3D, ToolMode = McpToolMode.User, BucketStartUtc = bucket, Increment = 2 }, new() { UserID = 11, ToolNameI3D = toolBI3D, ToolMode = McpToolMode.User, BucketStartUtc = bucket, Increment = 1 }, new() { UserID = 12, ToolNameI3D = toolAI3D, ToolMode = McpToolMode.User, BucketStartUtc = bucket, Increment = 9 } }; this.WithSession(session => { var result = session.GetBL().UpsertMcpToolUsageBatch(increments); Assert.True(result.IsSuccess); }); Assert.Equal(6, this.Sql($"SELECT [Count] FROM dbo.McpToolUsageTelemetry WHERE UserID = 11 AND ToolNameI3D = {toolAI3D} AND ToolMode = 0 AND BucketStartUtc = '2026-05-02T12:15:00'")); Assert.Equal(1, this.Sql($"SELECT [Count] FROM dbo.McpToolUsageTelemetry WHERE UserID = 11 AND ToolNameI3D = {toolBI3D} AND ToolMode = 0 AND BucketStartUtc = '2026-05-02T12:15:00'")); Assert.Equal(9, this.Sql($"SELECT [Count] FROM dbo.McpToolUsageTelemetry WHERE UserID = 12 AND ToolNameI3D = {toolAI3D} AND ToolMode = 0 AND BucketStartUtc = '2026-05-02T12:15:00'")); Assert.Equal(3, this.Sql("SELECT COUNT(*) FROM dbo.McpToolUsageTelemetry WHERE BucketStartUtc = '2026-05-02T12:15:00'")); } } }