< Summary

Information
Class: Orchestrator.Commands.Observability.Experiments.RunSliceCommand
Assembly: Orchestrator
File(s): /home/runner/work/KicktippAi/KicktippAi/src/Orchestrator/Commands/Observability/Experiments/RunSliceCommand.cs
Line coverage
85%
Covered lines: 23
Uncovered lines: 4
Coverable lines: 27
Total lines: 53
Line coverage: 85.1%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
ExecuteAsync()100%1176.47%

File(s)

/home/runner/work/KicktippAi/KicktippAi/src/Orchestrator/Commands/Observability/Experiments/RunSliceCommand.cs

#LineLine coverage
 1using System.Text.Json;
 2using Microsoft.Extensions.Logging;
 3using Orchestrator.Infrastructure.Factories;
 4using Orchestrator.Infrastructure.Langfuse;
 5using Spectre.Console;
 6using Spectre.Console.Cli;
 7
 8namespace Orchestrator.Commands.Observability.Experiments;
 9
 10public sealed class RunSliceCommand : AsyncCommand<RunSliceSettings>
 11{
 12    private readonly IAnsiConsole _console;
 13    private readonly PreparedExperimentRunExecutor _executor;
 14    private readonly ILogger<RunSliceCommand> _logger;
 15
 116    public RunSliceCommand(
 117        IAnsiConsole console,
 118        IFirebaseServiceFactory firebaseServiceFactory,
 119        IOpenAiServiceFactory openAiServiceFactory,
 120        ILangfusePublicApiClient langfuseClient,
 121        ILogger<RunSliceCommand> logger)
 22    {
 123        _console = console;
 124        _executor = new PreparedExperimentRunExecutor(firebaseServiceFactory, openAiServiceFactory, langfuseClient);
 125        _logger = logger;
 126    }
 27
 28    protected override async Task<int> ExecuteAsync(CommandContext context, RunSliceSettings settings, CancellationToken
 29    {
 30        try
 31        {
 132            var summary = await _executor.ExecuteAsync(
 133                "slice",
 134                new PreparedExperimentRunRequest(
 135                    settings.ManifestPath,
 136                    settings.RunName,
 137                    settings.RunDescription,
 138                    settings.RunMetadataFile,
 139                    settings.ReplaceRun,
 140                    settings.ToRunOptions()),
 141                cancellationToken);
 42
 143            _console.WriteLine(JsonSerializer.Serialize(summary, PreparedExperimentCommandSupport.JsonOptions));
 144            return 0;
 45        }
 046        catch (Exception ex)
 47        {
 048            _logger.LogError(ex, "Error executing run-slice command");
 049            _console.MarkupLine($"[red]Error:[/] {Markup.Escape(ex.Message)}");
 050            return 1;
 51        }
 152    }
 53}