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/CollectorEngineTests.cs

102 lines
3.0 KiB
C#

using System;
using System.Collections.Generic;
using Xunit;
using CncCollector.Core;
using CncCollector.Config;
namespace CncCollector.Tests
{
/// <summary>
/// 测试 CncCollector.Core.CollectorEngine 类的基础行为。
/// 由于直接连接数据库,测试时使用无效连接字符串以触发错误处理路径
/// </summary>
public class CollectorEngineTests
{
private CollectorConfig CreateInvalidConfig()
{
return new CollectorConfig
{
BusinessConnection = "Server=invalid;Database=invalid;User Id=invalid;Password=invalid;",
LogConnection = "Server=invalid;Database=invalid;User Id=invalid;Password=invalid;",
ApiPort = 5800
};
}
[Fact]
public void _()
{
var config = CreateInvalidConfig();
var engine = new CollectorEngine(config);
Assert.False(engine.IsRunning);
Assert.Equal(0, engine.WorkerCount);
}
[Fact]
public void IsRunning__false()
{
var config = CreateInvalidConfig();
var engine = new CollectorEngine(config);
Assert.False(engine.IsRunning);
}
[Fact]
public void GetStatus__()
{
var config = CreateInvalidConfig();
var engine = new CollectorEngine(config);
var status = engine.GetStatus();
Assert.NotNull(status);
Assert.True(status.ContainsKey("isRunning"));
Assert.True(status.ContainsKey("startTime"));
Assert.True(status.ContainsKey("uptimeSeconds"));
Assert.True(status.ContainsKey("workerCount"));
Assert.True(status.ContainsKey("workers"));
}
[Fact]
public void Start_DB_()
{
var config = CreateInvalidConfig();
var engine = new CollectorEngine(config);
// 应该不会抛出异常,即使数据库连接失败
engine.Start();
// 启动后应该进入运行态(实现可能会因为加载地址失败而没有工作地址,但不会崩溃)
Assert.True(engine.IsRunning);
}
[Fact]
public void Stop__()
{
var config = CreateInvalidConfig();
var engine = new CollectorEngine(config);
// 未启动调用 Stop 不应抛出异常
engine.Stop();
}
[Fact]
public void Refresh__()
{
var config = CreateInvalidConfig();
var engine = new CollectorEngine(config);
// 未启动时刷新应当不抛出异常
engine.Refresh();
}
[Fact]
public void UptimeSeconds__0()
{
var config = CreateInvalidConfig();
var engine = new CollectorEngine(config);
Assert.Equal(0, engine.UptimeSeconds);
}
}
}