- Implemented RustFsArtifactObjectStore for managing artifacts in RustFS. - Added unit tests for RustFsArtifactObjectStore functionality. - Created a RustFS migrator tool to transfer objects from S3 to RustFS. - Introduced policy preview and report models for API integration. - Added fixtures and tests for policy preview and report functionality. - Included necessary metadata and scripts for cache_pkg package.
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System.Text.Json;
 | 
						|
using StellaOps.Bench.ScannerAnalyzers;
 | 
						|
using StellaOps.Bench.ScannerAnalyzers.Baseline;
 | 
						|
using StellaOps.Bench.ScannerAnalyzers.Reporting;
 | 
						|
using Xunit;
 | 
						|
 | 
						|
namespace StellaOps.Bench.ScannerAnalyzers.Tests;
 | 
						|
 | 
						|
public sealed class BenchmarkJsonWriterTests
 | 
						|
{
 | 
						|
    [Fact]
 | 
						|
    public async Task WriteAsync_EmitsMetadataAndScenarioDetails()
 | 
						|
    {
 | 
						|
        var metadata = new BenchmarkJsonMetadata("1.0", DateTimeOffset.Parse("2025-10-23T12:00:00Z"), "abc123", "ci");
 | 
						|
        var result = new ScenarioResult(
 | 
						|
            "scenario",
 | 
						|
            "Scenario",
 | 
						|
            SampleCount: 5,
 | 
						|
            MeanMs: 10,
 | 
						|
            P95Ms: 12,
 | 
						|
            MaxMs: 20,
 | 
						|
            Iterations: 5,
 | 
						|
            ThresholdMs: 5000);
 | 
						|
        var baseline = new BaselineEntry("scenario", 5, 5, 9, 11, 10);
 | 
						|
        var report = new BenchmarkScenarioReport(result, baseline, 1.2);
 | 
						|
 | 
						|
        var path = Path.Combine(Path.GetTempPath(), $"bench-{Guid.NewGuid():N}.json");
 | 
						|
        await BenchmarkJsonWriter.WriteAsync(path, metadata, new[] { report }, CancellationToken.None);
 | 
						|
 | 
						|
        using var document = JsonDocument.Parse(await File.ReadAllTextAsync(path));
 | 
						|
        var root = document.RootElement;
 | 
						|
 | 
						|
        Assert.Equal("1.0", root.GetProperty("schemaVersion").GetString());
 | 
						|
        Assert.Equal("abc123", root.GetProperty("commit").GetString());
 | 
						|
        var scenario = root.GetProperty("scenarios")[0];
 | 
						|
        Assert.Equal("scenario", scenario.GetProperty("id").GetString());
 | 
						|
        Assert.Equal(20, scenario.GetProperty("maxMs").GetDouble());
 | 
						|
        Assert.Equal(10, scenario.GetProperty("baseline").GetProperty("maxMs").GetDouble());
 | 
						|
        Assert.True(scenario.GetProperty("regression").GetProperty("breached").GetBoolean());
 | 
						|
    }
 | 
						|
}
 |