53 lines
2.2 KiB
C#
53 lines
2.2 KiB
C#
using System.Text.Json;
|
|
using Fleet.Core;
|
|
using Fleet.Hosting;
|
|
using MoShiro.Protocol;
|
|
|
|
namespace MoShiro.Probe.Tests;
|
|
|
|
public sealed class OpenWrtUpdaterTests : IDisposable
|
|
{
|
|
private readonly string _directory = Path.Combine(Path.GetTempPath(), "moshiro-native-" + Guid.NewGuid().ToString("N"));
|
|
|
|
[Fact]
|
|
public void Offer_AndApply_WriteFixedFlags_NotRemoteManifestOrCommands()
|
|
{
|
|
var updater = new OpenWrtUpdater(_directory, Path.Combine(_directory, "status.json"), TimeProvider.System, NullNodeLog.Instance);
|
|
updater.Offer();
|
|
updater.RequestApply();
|
|
Assert.Equal("check", File.ReadAllText(Path.Combine(_directory, "check.request")));
|
|
Assert.Equal("check", File.ReadAllText(Path.Combine(_directory, "apply.request")));
|
|
Assert.Equal(2, Directory.GetFiles(_directory).Length);
|
|
}
|
|
|
|
[Fact]
|
|
public void Status_WritesHealthAndReadsHostStatus()
|
|
{
|
|
var store = new ConfigStore(_directory);
|
|
store.Write("status.json", "{\"state\":\"rolled_back\",\"at\":123}"u8.ToArray());
|
|
var updater = new OpenWrtUpdater(_directory, Path.Combine(_directory, "status.json"), TimeProvider.System, NullNodeLog.Instance);
|
|
Assert.Equal("rolled_back", updater.Status()?.State);
|
|
using JsonDocument health = JsonDocument.Parse(File.ReadAllBytes(Path.Combine(_directory, "health.json")));
|
|
Assert.Equal(BuildInfo.Version, health.RootElement.GetProperty("version").GetString());
|
|
Assert.Equal(Environment.ProcessId, health.RootElement.GetProperty("pid").GetInt32());
|
|
Assert.True(health.RootElement.GetProperty("at").GetInt64() > 0);
|
|
}
|
|
|
|
[Fact]
|
|
public void Status_MissingOrCorruptHostStatus_DoesNotStopCollector()
|
|
{
|
|
var updater = new OpenWrtUpdater(_directory, Path.Combine(_directory, "status.json"), TimeProvider.System, NullNodeLog.Instance);
|
|
Assert.Null(updater.Status());
|
|
new ConfigStore(_directory).Write("status.json", "not json"u8.ToArray());
|
|
Assert.Null(updater.Status());
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
if (Directory.Exists(_directory))
|
|
{
|
|
Directory.Delete(_directory, recursive: true);
|
|
}
|
|
}
|
|
}
|