节点在线、应用在线、配置在线使用令牌查询
大石头 authored at 2021-12-16 19:49:30
1.00 KiB
Stardust
using System;
using System.ComponentModel;
using Stardust.Data.Monitors;
using Xunit;

namespace ServerTest.Monitors;

/// <summary>应用统计长连接排除测试</summary>
public class AppStatExcludeWebSocketTests
{
    [Fact]
    [DisplayName("应用级统计排除长连接埋点,避免连接时长污染平均耗时")]
    public void ExcludeWebSocket_SkipsConnectionSpans()
    {
        // 长连接端点由 TraceItem 归类为 ws,应用级聚合据此排除
        Assert.True(TraceItem.IsWebSocket("/app/notify"));
        Assert.Equal("ws", TraceItem.GetKind("/app/notify"));

        // 普通接口与基础设施埋点不受影响
        Assert.False(TraceItem.IsWebSocket("/App/Ping"));
        Assert.Equal("api", TraceItem.GetKind("/App/Ping"));
        Assert.False(TraceItem.IsWebSocket("NewLife.Redis:XREADGROUP-GROUP"));
        // Redis 阻塞读另归 block(见阻塞类命令测试),不算长连接
        Assert.Equal("block", TraceItem.GetKind("NewLife.Redis:XREADGROUP-GROUP"));
    }
}