- Added `SchedulerWorkerOptions` class to encapsulate configuration for the scheduler worker. - Introduced `PlannerBackgroundService` to manage the planner loop, fetching and processing planning runs. - Created `PlannerExecutionService` to handle the execution logic for planning runs, including impact targeting and run persistence. - Developed `PlannerExecutionResult` and `PlannerExecutionStatus` to standardize execution outcomes. - Implemented validation logic within `SchedulerWorkerOptions` to ensure proper configuration. - Added documentation for the planner loop and impact targeting features. - Established health check endpoints and authentication mechanisms for the Signals service. - Created unit tests for the Signals API to ensure proper functionality and response handling. - Configured options for authority integration and fallback authentication methods.
44 lines
1.6 KiB
C#
44 lines
1.6 KiB
C#
using System;
|
|
using System.CommandLine;
|
|
using System.IO;
|
|
using System.Threading;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Logging;
|
|
using Microsoft.Extensions.Logging.Abstractions;
|
|
using StellaOps.Cli.Configuration;
|
|
using StellaOps.Cli.Plugins;
|
|
using Xunit;
|
|
|
|
namespace StellaOps.Cli.Tests.Plugins;
|
|
|
|
public sealed class CliCommandModuleLoaderTests
|
|
{
|
|
[Fact]
|
|
public void RegisterModules_LoadsNonCoreCommandsFromPlugin()
|
|
{
|
|
var options = new StellaOpsCliOptions();
|
|
var repoRoot = Path.GetFullPath(
|
|
Path.Combine(AppContext.BaseDirectory, "..", "..", "..", "..", ".."));
|
|
|
|
options.Plugins.BaseDirectory = repoRoot;
|
|
options.Plugins.Directory = "plugins/cli";
|
|
options.Plugins.ManifestSearchPattern = "manifest.json";
|
|
|
|
var services = new ServiceCollection()
|
|
.AddSingleton(options)
|
|
.BuildServiceProvider();
|
|
|
|
var logger = NullLoggerFactory.Instance.CreateLogger<CliCommandModuleLoader>();
|
|
var loader = new CliCommandModuleLoader(services, options, logger);
|
|
|
|
var root = new RootCommand();
|
|
var verbose = new Option<bool>("--verbose");
|
|
|
|
loader.RegisterModules(root, verbose, CancellationToken.None);
|
|
|
|
Assert.Contains(root.Children, command => string.Equals(command.Name, "excititor", StringComparison.Ordinal));
|
|
Assert.Contains(root.Children, command => string.Equals(command.Name, "runtime", StringComparison.Ordinal));
|
|
Assert.Contains(root.Children, command => string.Equals(command.Name, "offline", StringComparison.Ordinal));
|
|
}
|
|
}
|