You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
haoliang-net/tests/CncCollector.Tests/ConfigLoaderTests.cs

77 lines
3.3 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using Xunit;
using CncCollector.Config;
namespace CncCollector.Tests
{
/// <summary>
/// ConfigLoader 静态类测试(数据库连接部分通过异常处理实现,不抛出异常)
/// </summary>
public class ConfigLoaderTests
{
[Fact(DisplayName = "LoadRuntimeConfig_无效连接字符串_不抛异常")]
public void LoadRuntimeConfig__()
{
var cfg = new CollectorConfig();
// 使用无效连接串,理论上应被内部 catch 捕获,不抛异常
ConfigLoader.LoadRuntimeConfig("Server=invalid;Database=nosuchdb;User Id=x;Password=y;", cfg);
}
[Fact(DisplayName = "LoadRuntimeConfig_Null配置对象_不抛异常")]
public void LoadRuntimeConfig_Null_()
{
// 第二个参数为 null方法内部需要处理空对象场景不会抛出异常
ConfigLoader.LoadRuntimeConfig("Server=invalid;Database=nosuchdb;User Id=x;Password=y;", null);
}
[Fact(DisplayName = "LoadRuntimeConfig_默认配置对象_属性值不变")]
public void LoadRuntimeConfig__()
{
var cfg = new CollectorConfig();
ConfigLoader.LoadRuntimeConfig("Server=invalid;Database=nosuchdb;User Id=x;Password=y;", cfg);
// 连接失败时应保持默认值
Assert.Equal(5800, cfg.ApiPort);
Assert.Equal("collector_api_key_2026", cfg.ApiKey);
Assert.Equal(10, cfg.HeartbeatIntervalSeconds);
Assert.Equal(30, cfg.ConfigPollIntervalSeconds);
Assert.Equal("01:00", cfg.DailySummaryTime);
Assert.Equal("CncCollector", cfg.ServiceId);
Assert.Equal(3, cfg.CollectRetryCount);
Assert.Equal(30, cfg.CollectRetryIntervalSeconds);
Assert.Equal(5, cfg.CollectFailAlertThreshold);
}
[Fact(DisplayName = "LoadRuntimeConfig_各配置项映射正确")]
public void LoadRuntimeConfig_()
{
// 设定一个初始对象的自定义值,模拟数据库连接失败时保持这些初始值
var cfg = new CollectorConfig
{
ApiPort = 12345,
ApiKey = "custom_key",
HeartbeatIntervalSeconds = 99,
ConfigPollIntervalSeconds = 77,
DailySummaryTime = "04:44",
ServiceId = "CustomSvc",
CollectRetryCount = 7,
CollectRetryIntervalSeconds = 11,
CollectFailAlertThreshold = 9
};
ConfigLoader.LoadRuntimeConfig("Server=invalid;Database=nosuchdb;User Id=x;Password=y;", cfg);
// 由于数据库连接失败,全部属性应保持初始值
Assert.Equal(12345, cfg.ApiPort);
Assert.Equal("custom_key", cfg.ApiKey);
Assert.Equal(99, cfg.HeartbeatIntervalSeconds);
Assert.Equal(77, cfg.ConfigPollIntervalSeconds);
Assert.Equal("04:44", cfg.DailySummaryTime);
Assert.Equal("CustomSvc", cfg.ServiceId);
Assert.Equal(7, cfg.CollectRetryCount);
Assert.Equal(11, cfg.CollectRetryIntervalSeconds);
Assert.Equal(9, cfg.CollectFailAlertThreshold);
}
}
}