解决MySql布尔型新旧版本兼容问题,采用枚举来表示布尔型的数据表。由正向工程赋值
大石头 authored at 2018-05-15 21:21:05
1.55 KiB
X
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using NewLife.Log;
using Xunit;
using NewLife.Reflection;
using System.Diagnostics;

namespace XUnitTest.Log
{
    public class PerfCounterTests
    {
        [Fact]
        public void Test()
        {
            var counter = new PerfCounter();

            XTrace.WriteLine("IsHighResolution={0}", Stopwatch.IsHighResolution);
            XTrace.WriteLine("Frequency={0:n0}", Stopwatch.Frequency);
            var tickFrequency = typeof(CounterHelper).GetValue("tickFrequency");
            XTrace.WriteLine("tickFrequency={0:n0}", tickFrequency);

            var ts = counter.StartCount();
            var count = 10000;
            Thread.SpinWait(count);

            var usCost = counter.StopCount(ts);
            XTrace.WriteLine("Thread.SpinWait({0}) = {1}us", count, usCost);

            //Assert.True(usCost >= 1000);
        }

        [Fact(DisplayName = "采样间隔异常配置不崩溃")]
        public void DoWork_AbnormalInterval()
        {
            var counter = new PerfCounter { Interval = 0, Duration = 60 };
            var mi = typeof(PerfCounter).GetMethod("DoWork", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
            Assert.NotNull(mi);

            // Interval=0 时旧实现 Duration*1000/Interval 除零崩溃
            mi!.Invoke(counter, [null]);
            // 第二次进入已启动秒表分支
            mi.Invoke(counter, [null]);

            Assert.True(counter.Times >= 0);
        }
    }
}