mirror of
https://github.com/lukaszraczylo/traefikoidc.git
synced 2026-10-18 04:47:28 +00:00
Cleanup [dec2025] (#101)
* Cleanup excessive comments. * Remove leftovers hanging around from previous refactor * Improve test coverage
This commit is contained in:
@@ -0,0 +1,161 @@
|
||||
package traefikoidc
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"sync"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func BenchmarkMemoryLeakFixes(b *testing.B) {
|
||||
suite := NewMemoryLeakFixesTestSuite()
|
||||
|
||||
b.Run("OptimizedCacheLifecycle", func(b *testing.B) {
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
cache := NewOptimizedCache()
|
||||
cache.Set("bench-key", "bench-value", time.Minute)
|
||||
_, _ = cache.Get("bench-key")
|
||||
cache.Close()
|
||||
}
|
||||
})
|
||||
|
||||
b.Run("BackgroundTaskLifecycle", func(b *testing.B) {
|
||||
logger := GetSingletonNoOpLogger()
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
taskFunc := func() {}
|
||||
task := NewBackgroundTask("bench-task", 100*time.Millisecond, taskFunc, logger)
|
||||
task.Start()
|
||||
task.Stop()
|
||||
}
|
||||
})
|
||||
|
||||
b.Run("LazyBackgroundTaskLifecycle", func(b *testing.B) {
|
||||
logger := GetSingletonNoOpLogger()
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
taskFunc := func() {}
|
||||
task := NewLazyBackgroundTask("bench-lazy-task", 100*time.Millisecond, taskFunc, logger)
|
||||
task.StartIfNeeded()
|
||||
task.Stop()
|
||||
}
|
||||
})
|
||||
|
||||
b.Run("LazyCacheLifecycle", func(b *testing.B) {
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
cache := NewLazyCache()
|
||||
cache.Set("bench-key", "bench-value", time.Minute)
|
||||
_, _ = cache.Get("bench-key")
|
||||
}
|
||||
})
|
||||
|
||||
b.Run("MetadataCacheLifecycle", func(b *testing.B) {
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
var wg sync.WaitGroup
|
||||
cache := NewMetadataCache(&wg)
|
||||
cache.Close()
|
||||
}
|
||||
})
|
||||
|
||||
b.Run("SecureDataCleanup", func(b *testing.B) {
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
cache := NewOptimizedCache()
|
||||
sensitiveData := []byte(suite.factory.GenerateRandomString(64))
|
||||
cache.Set("sensitive-key", sensitiveData, time.Minute)
|
||||
cache.Close()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func BenchmarkMemoryUsage(b *testing.B) {
|
||||
b.Run("Cache_Operations", func(b *testing.B) {
|
||||
b.ReportAllocs()
|
||||
cache := NewCache()
|
||||
defer cache.Close()
|
||||
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
key := fmt.Sprintf("bench-key-%d", i)
|
||||
cache.Set(key, "value", time.Minute)
|
||||
cache.Get(key)
|
||||
cache.Delete(key)
|
||||
}
|
||||
})
|
||||
|
||||
b.Run("Session_Creation", func(b *testing.B) {
|
||||
b.ReportAllocs()
|
||||
sm, _ := NewSessionManager(
|
||||
"test-encryption-key-32-bytes-long-enough",
|
||||
false,
|
||||
"",
|
||||
"",
|
||||
0,
|
||||
NewLogger("error"),
|
||||
)
|
||||
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
req := httptest.NewRequest("GET", "/", nil)
|
||||
_, _ = sm.GetSession(req)
|
||||
}
|
||||
})
|
||||
|
||||
b.Run("Buffer_Pool", func(b *testing.B) {
|
||||
b.ReportAllocs()
|
||||
pool := NewBufferPool(4096)
|
||||
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
buf := pool.Get()
|
||||
buf.WriteString("benchmark data")
|
||||
pool.Put(buf)
|
||||
}
|
||||
})
|
||||
|
||||
b.Run("Gzip_Pool", func(b *testing.B) {
|
||||
b.ReportAllocs()
|
||||
pool := NewGzipWriterPool()
|
||||
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
w := pool.Get()
|
||||
var buf bytes.Buffer
|
||||
w.Reset(&buf)
|
||||
w.Write([]byte("benchmark compression data"))
|
||||
w.Close()
|
||||
pool.Put(w)
|
||||
}
|
||||
})
|
||||
|
||||
b.Run("Plugin_Request", func(b *testing.B) {
|
||||
b.ReportAllocs()
|
||||
config := CreateConfig()
|
||||
config.ProviderURL = "https://accounts.google.com"
|
||||
config.SessionEncryptionKey = "test-encryption-key-32-bytes-long"
|
||||
config.ClientID = "test-client"
|
||||
config.ClientSecret = "test-secret"
|
||||
|
||||
next := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
w.WriteHeader(http.StatusOK)
|
||||
})
|
||||
|
||||
handler, _ := New(context.Background(), next, config, "bench")
|
||||
plugin := handler.(*TraefikOidc)
|
||||
defer plugin.Close()
|
||||
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
req := httptest.NewRequest("GET", "/", nil)
|
||||
w := httptest.NewRecorder()
|
||||
plugin.ServeHTTP(w, req)
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user