File: LargeTelemetryGenerationOptions.cs
Web Access
Project: src\playground\Stress\Stress.ApiService\Stress.ApiService.csproj (Stress.ApiService)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace Stress.ApiService;
 
public sealed class LargeTelemetryGenerationOptions
{
    public bool GenerateTraces { get; init; } = true;
    public int TraceCount { get; init; } = LargeTelemetryGenerator.TraceCount;
    public int SpansPerTrace { get; init; } = LargeTelemetryGenerator.SpansPerTrace;
    public bool GenerateLargeTrace { get; init; } = true;
    public int LargeTraceSpanCount { get; init; } = LargeTelemetryGenerator.LargeTraceSpanCount;
    public bool GenerateStructuredLogs { get; init; } = true;
    public int StructuredLogCount { get; init; } = LargeTelemetryGenerator.StructuredLogCount;
    public bool GenerateConsoleLogs { get; init; } = true;
    public int ConsoleLogCount { get; init; } = LargeTelemetryGenerator.ConsoleLogCount;
    public bool GenerateMetrics { get; init; } = true;
    public int MetricDurationHours { get; init; } = LargeTelemetryGenerator.MetricDurationHours;
    public int MetricDimensionCount { get; init; } = LargeTelemetryGenerator.MetricDimensionCount;
 
    public string? GetValidationError()
    {
        if (!GenerateTraces && !GenerateLargeTrace && !GenerateStructuredLogs && !GenerateConsoleLogs && !GenerateMetrics)
        {
            return "At least one telemetry kind must be enabled.";
        }
        if (GenerateTraces && TraceCount <= 0)
        {
            return "TraceCount must be positive when trace generation is enabled.";
        }
        if (GenerateTraces && SpansPerTrace <= 0)
        {
            return "SpansPerTrace must be positive when trace generation is enabled.";
        }
        if (GenerateLargeTrace && LargeTraceSpanCount <= 0)
        {
            return "LargeTraceSpanCount must be positive when large trace generation is enabled.";
        }
        if (GenerateStructuredLogs && StructuredLogCount <= 0)
        {
            return "StructuredLogCount must be positive when structured log generation is enabled.";
        }
        if (GenerateConsoleLogs && ConsoleLogCount <= 0)
        {
            return "ConsoleLogCount must be positive when console log generation is enabled.";
        }
        if (GenerateMetrics && MetricDurationHours <= 0)
        {
            return "MetricDurationHours must be positive when metric generation is enabled.";
        }
        if (GenerateMetrics && MetricDimensionCount <= 0)
        {
            return "MetricDimensionCount must be positive when metric generation is enabled.";
        }
 
        return null;
    }
}