节点在线、应用在线、配置在线使用令牌查询
大石头 authored at 2021-12-16 19:49:30
2.70 KiB
Stardust
using System.Net.Http;
using System.Threading.Tasks;
using NewLife.Log;
using Stardust.Monitors;
using Xunit;

// 所有测试用例放入一个汇编级集合,除非单独指定Collection特性
[assembly: CollectionBehavior(CollectionBehavior.CollectionPerAssembly)]

namespace ClientTest.Monitors;

[TestCaseOrderer("NewLife.UnitTest.DefaultOrderer", "NewLife.UnitTest")]
public class DiagnosticTests
{
    [Fact]
    public async Task TestHttp()
    {
        XTrace.WriteLine(nameof(TestHttp));

        //var tracer = NewLife.Log.DefaultTracer.Instance;
        var tracer = new DefaultTracer { Period = 11 };

        var observer = new DiagnosticListenerObserver { Tracer = tracer };
        observer.Subscribe(new HttpDiagnosticListener());

        var http = new HttpClient();
        await http.GetStringAsync("http://newlifex.com?id=1234");

        var builders = tracer.TakeAll();
        Assert.True(builders.Length > 0);
        Assert.Single(builders[0].Samples);
        Assert.Null(builders[0].ErrorSamples);
    }

    [Fact]
    public async Task TestHttp2()
    {
        XTrace.WriteLine(nameof(TestHttp2));

        if (!await TestEnvironment.CanGetAsync("http://newlifex.com").ConfigureAwait(false)) return;

        //var tracer = NewLife.Log.DefaultTracer.Instance;
        var tracer = new DefaultTracer { Period = 22 };

        var observer = new DiagnosticListenerObserver { Tracer = tracer };
        observer.Subscribe("HttpHandlerDiagnosticListener", "System.Net.Http.HttpRequestOut.Start", "System.Net.Http.HttpRequestOut.Stop", "System.Net.Http.Exception");

        var http = new HttpClient();
        await http.GetStringAsync("http://newlifex.com?id=1234");

        var builders = tracer.TakeAll();
        Assert.True(builders.Length <= 1);
        if (builders.Length == 1)
        {
            Assert.Single(builders[0].Samples);
            Assert.Null(builders[0].ErrorSamples);
        }
    }

    [Fact]
    public async Task TestHttp3()
    {
        XTrace.WriteLine(nameof(TestHttp3));

        if (!await TestEnvironment.CanGetAsync("http://newlifex.com").ConfigureAwait(false)) return;

        //var tracer = NewLife.Log.DefaultTracer.Instance;
        var tracer = new DefaultTracer { Period = 33 };

        var observer = new DiagnosticListenerObserver { Tracer = tracer };
        observer.Subscribe("HttpHandlerDiagnosticListener", null, null, null);

        var http = new HttpClient();
        await http.GetStringAsync("http://newlifex.com?id=1234");

        var builders = tracer.TakeAll();
        Assert.True(builders.Length <= 1);
        if (builders.Length == 1)
        {
            Assert.Single(builders[0].Samples);
            Assert.Null(builders[0].ErrorSamples);
        }
    }
}