Add comprehensive memory leak detection tests#1451
Open
jgowdy-godaddy wants to merge 2 commits intomainfrom
Open
Add comprehensive memory leak detection tests#1451jgowdy-godaddy wants to merge 2 commits intomainfrom
jgowdy-godaddy wants to merge 2 commits intomainfrom
Conversation
This implements comprehensive memory leak detection for Asherah's critical components: **Memory Leak Detection Tests:** - Key cache operations (GetOrLoad, GetOrLoadLatest, unique vs same keys) - Cached crypto key reference counting (increment/decrement cycles, edge cases) - Session factory and session lifecycle management - Encrypt/decrypt operations with various payload sizes - Session caching behavior under load - Large payload operations for memory pressure testing **Goroutine Leak Detection:** - Session factory creation/cleanup cycles - Concurrent key cache access patterns - Background goroutine management - Tolerance for expected system goroutines **Key Features:** - Automatic garbage collection before/after measurements - Configurable memory growth tolerance (5MB default) - Comprehensive edge case testing (double close, increment after close) - Race-condition safe (all tests pass with -race) - Validation tests to verify leak detection works (skipped by default) - Fast execution (most tests complete in <1 second) **Test Coverage:** - Reference counting correctness - Cache eviction behavior - Session lifecycle management - Memory growth tracking with GC awareness - Goroutine lifecycle management These tests enable early detection of memory leaks during development and provide confidence in production memory stability. Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Fix gci import ordering issues - Fix gofumpt formatting for var declarations - Split long functions to satisfy funlen linter - Extract helper functions for test execution - Add nolint directive for test case definition function
67caf5b to
09b24b3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements comprehensive memory leak detection tests for Asherah's critical components, addressing the final testing recommendation from the remediation guide.
Memory Leak Detection Coverage
Key Areas Tested:
Test Features
✅ Automatic GC Management: Forces garbage collection for accurate measurements
✅ Configurable Tolerance: 5MB memory growth tolerance with overflow protection
✅ Goroutine Detection: Tracks goroutine leaks with background tolerance
✅ Edge Case Testing: Double close, increment after close, concurrent access
✅ Race Condition Safe: All tests pass with
go test -race✅ Fast Execution: Most tests complete in <1 second
✅ Validation Tests: Intentional leak tests to verify detection works (skipped by default)
Sample Test Results
Usage
Implementation Details
runtime.ReadMemStats()with double GC for accuracyTesting
Test plan
go test -run "MemoryLeaks" -vto verify all memory leak testsgo test -race -run "MemoryLeaks" -vfor race condition testinggo test ./...to ensure no regressionsCompletes the final testing recommendation from REMEDIATION.md ✅
Generated with Claude Code