mirror of
https://github.com/ivuorinen/gibidify.git
synced 2026-01-26 03:24:05 +00:00
166 lines
4.6 KiB
Go
166 lines
4.6 KiB
Go
package benchmark
|
|
|
|
import (
|
|
"runtime"
|
|
"testing"
|
|
)
|
|
|
|
// TestFileCollectionBenchmark tests the file collection benchmark.
|
|
func TestFileCollectionBenchmark(t *testing.T) {
|
|
result, err := FileCollectionBenchmark("", 10)
|
|
if err != nil {
|
|
t.Fatalf("FileCollectionBenchmark failed: %v", err)
|
|
}
|
|
|
|
if result.Name != "FileCollection" {
|
|
t.Errorf("Expected name 'FileCollection', got %s", result.Name)
|
|
}
|
|
|
|
// Debug information
|
|
t.Logf("Files processed: %d", result.FilesProcessed)
|
|
t.Logf("Duration: %v", result.Duration)
|
|
t.Logf("Bytes processed: %d", result.BytesProcessed)
|
|
|
|
if result.FilesProcessed <= 0 {
|
|
t.Errorf("Expected files processed > 0, got %d", result.FilesProcessed)
|
|
}
|
|
|
|
if result.Duration <= 0 {
|
|
t.Errorf("Expected duration > 0, got %v", result.Duration)
|
|
}
|
|
}
|
|
|
|
// TestFileProcessingBenchmark tests the file processing benchmark.
|
|
func TestFileProcessingBenchmark(t *testing.T) {
|
|
result, err := FileProcessingBenchmark("", "json", 2)
|
|
if err != nil {
|
|
t.Fatalf("FileProcessingBenchmark failed: %v", err)
|
|
}
|
|
|
|
if result.FilesProcessed <= 0 {
|
|
t.Errorf("Expected files processed > 0, got %d", result.FilesProcessed)
|
|
}
|
|
|
|
if result.Duration <= 0 {
|
|
t.Errorf("Expected duration > 0, got %v", result.Duration)
|
|
}
|
|
}
|
|
|
|
// TestConcurrencyBenchmark tests the concurrency benchmark.
|
|
func TestConcurrencyBenchmark(t *testing.T) {
|
|
concurrencyLevels := []int{1, 2}
|
|
suite, err := ConcurrencyBenchmark("", "json", concurrencyLevels)
|
|
if err != nil {
|
|
t.Fatalf("ConcurrencyBenchmark failed: %v", err)
|
|
}
|
|
|
|
if suite.Name != "ConcurrencyBenchmark" {
|
|
t.Errorf("Expected name 'ConcurrencyBenchmark', got %s", suite.Name)
|
|
}
|
|
|
|
if len(suite.Results) != len(concurrencyLevels) {
|
|
t.Errorf("Expected %d results, got %d", len(concurrencyLevels), len(suite.Results))
|
|
}
|
|
|
|
for i, result := range suite.Results {
|
|
if result.FilesProcessed <= 0 {
|
|
t.Errorf("Result %d: Expected files processed > 0, got %d", i, result.FilesProcessed)
|
|
}
|
|
}
|
|
}
|
|
|
|
// TestFormatBenchmark tests the format benchmark.
|
|
func TestFormatBenchmark(t *testing.T) {
|
|
formats := []string{"json", "yaml"}
|
|
suite, err := FormatBenchmark("", formats)
|
|
if err != nil {
|
|
t.Fatalf("FormatBenchmark failed: %v", err)
|
|
}
|
|
|
|
if suite.Name != "FormatBenchmark" {
|
|
t.Errorf("Expected name 'FormatBenchmark', got %s", suite.Name)
|
|
}
|
|
|
|
if len(suite.Results) != len(formats) {
|
|
t.Errorf("Expected %d results, got %d", len(formats), len(suite.Results))
|
|
}
|
|
|
|
for i, result := range suite.Results {
|
|
if result.FilesProcessed <= 0 {
|
|
t.Errorf("Result %d: Expected files processed > 0, got %d", i, result.FilesProcessed)
|
|
}
|
|
}
|
|
}
|
|
|
|
// TestCreateBenchmarkFiles tests the benchmark file creation.
|
|
func TestCreateBenchmarkFiles(t *testing.T) {
|
|
tempDir, cleanup, err := createBenchmarkFiles(5)
|
|
if err != nil {
|
|
t.Fatalf("createBenchmarkFiles failed: %v", err)
|
|
}
|
|
defer cleanup()
|
|
|
|
if tempDir == "" {
|
|
t.Error("Expected non-empty temp directory")
|
|
}
|
|
|
|
// Verify files were created
|
|
// This is tested indirectly through the benchmark functions
|
|
}
|
|
|
|
// BenchmarkFileCollection benchmarks the file collection process.
|
|
func BenchmarkFileCollection(b *testing.B) {
|
|
for i := 0; i < b.N; i++ {
|
|
result, err := FileCollectionBenchmark("", 50)
|
|
if err != nil {
|
|
b.Fatalf("FileCollectionBenchmark failed: %v", err)
|
|
}
|
|
if result.FilesProcessed <= 0 {
|
|
b.Errorf("Expected files processed > 0, got %d", result.FilesProcessed)
|
|
}
|
|
}
|
|
}
|
|
|
|
// BenchmarkFileProcessing benchmarks the file processing pipeline.
|
|
func BenchmarkFileProcessing(b *testing.B) {
|
|
for i := 0; i < b.N; i++ {
|
|
result, err := FileProcessingBenchmark("", "json", runtime.NumCPU())
|
|
if err != nil {
|
|
b.Fatalf("FileProcessingBenchmark failed: %v", err)
|
|
}
|
|
if result.FilesProcessed <= 0 {
|
|
b.Errorf("Expected files processed > 0, got %d", result.FilesProcessed)
|
|
}
|
|
}
|
|
}
|
|
|
|
// BenchmarkConcurrency benchmarks different concurrency levels.
|
|
func BenchmarkConcurrency(b *testing.B) {
|
|
concurrencyLevels := []int{1, 2, 4}
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
suite, err := ConcurrencyBenchmark("", "json", concurrencyLevels)
|
|
if err != nil {
|
|
b.Fatalf("ConcurrencyBenchmark failed: %v", err)
|
|
}
|
|
if len(suite.Results) != len(concurrencyLevels) {
|
|
b.Errorf("Expected %d results, got %d", len(concurrencyLevels), len(suite.Results))
|
|
}
|
|
}
|
|
}
|
|
|
|
// BenchmarkFormats benchmarks different output formats.
|
|
func BenchmarkFormats(b *testing.B) {
|
|
formats := []string{"json", "yaml", "markdown"}
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
suite, err := FormatBenchmark("", formats)
|
|
if err != nil {
|
|
b.Fatalf("FormatBenchmark failed: %v", err)
|
|
}
|
|
if len(suite.Results) != len(formats) {
|
|
b.Errorf("Expected %d results, got %d", len(formats), len(suite.Results))
|
|
}
|
|
}
|
|
}
|