Packages
snakepit
0.3.1
0.13.0
0.12.0
0.11.1
0.11.0
0.10.1
0.10.0
0.9.1
0.9.0
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.11
0.6.10
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
High-performance pooler and session manager for external language integrations. Supports Python, Node.js, Ruby, and more with gRPC streaming, session management, and production-ready process cleanup.
Current section
Files
Jump to
Current section
Files
docs/specs/testOverhaul/tasks.md
# Implementation Plan
- [ ] 1. Integrate Supertester as Test Dependency
- Add Supertester to Snakepit and configure for OTP-compliant testing
- Follow comprehensive-otp-testing-standards.md patterns
- _Requirements: 1.1, 3.1, 8.1_
- [ ] 1.1 Add Supertester dependency to mix.exs
- Add `{:supertester, github: "nshkrdotcom/supertester", only: :test}` to deps
- Run `mix deps.get` to fetch Supertester
- Verify Supertester modules are available in test environment
- Configure ExUnit to use Supertester's test tags (:benchmark, :chaos)
- _Requirements: 1.1, 1.2_
- [ ] 1.2 Configure test_helper.exs for Supertester
- Import Supertester configuration settings
- Set up ExUnit configuration for async tests
- Configure capture_log and other test settings
- Ensure Arsenal application starts before tests (if needed)
- _Requirements: 1.1, 3.1_
- [ ] 1.3 Create test/support directory structure
- Create test/support directory for Snakepit-specific helpers
- Ensure support files are compiled with tests
- Add support path to elixirc_paths in mix.exs
- _Requirements: 1.1, 8.1_
- [ ] 2. Create Snakepit Test Support Modules
- Build Snakepit-specific helpers on top of Supertester
- Follow OTP testing standards strictly
- _Requirements: 1.2, 3.1, 5.1_
- [ ] 2.1 Implement Snakepit.TestHelpers
- Create with_isolated_pool/2 using Supertester.OTPHelpers
- Implement wait_for_worker_count/3 without Process.sleep
- Add test_adapter_config/1 for mock adapter setup
- Create pool-specific assertion helpers
- Import all necessary Supertester modules
- _Requirements: 2.1, 3.1, 3.2_
- [ ] 2.2 Implement Snakepit.MockAdapter
- Create mock adapter implementing Snakepit.Adapter behaviour
- Use Supertester.OTPHelpers for process management
- Implement command recording and response injection
- Add delay simulation using OTP timers (not sleep)
- Create failure injection capabilities
- _Requirements: 5.1, 5.2, 5.3_
- [ ] 2.3 Create test scenario generators
- Implement common test scenarios using Supertester.DataGenerators
- Create workload patterns for performance testing
- Add session affinity test scenarios
- Build pool saturation scenarios
- _Requirements: 4.1, 6.1, 7.1_
- [ ] 3. Implement Unit Tests with Supertester
- Replace minimal tests with comprehensive Supertester-based tests
- Achieve >90% coverage using OTP patterns
- _Requirements: 1.1, 1.3, 2.1_
- [ ] 3.1 Create Snakepit.Pool unit tests
- Test pool initialization using setup_isolated_genserver
- Test worker management with Supertester.OTPHelpers
- Test request distribution using cast_and_sync
- Verify queue management without Process.sleep
- Use assert_genserver_state for state verification
- _Requirements: 2.1, 2.2, 2.3, 3.1_
- [ ] 3.2 Create Snakepit.Worker unit tests
- Test worker lifecycle using monitor_process_lifecycle
- Test worker state management with OTP patterns
- Verify worker-pool communication using Supertester helpers
- Test failure scenarios with wait_for_process_death
- _Requirements: 2.2, 2.4, 3.3_
- [ ] 3.3 Create Snakepit.Session unit tests
- Test session creation with unique_session_id
- Verify session affinity using Supertester isolation
- Test session lifecycle with cleanup_on_exit
- Handle concurrent sessions with concurrent_calls
- _Requirements: 4.1, 4.2, 4.3, 4.5_
- [ ] 3.4 Create Snakepit.Bridge.Protocol unit tests
- Test protocol encoding/decoding with Supertester assertions
- Verify error handling using OTP patterns
- Test message validation without timing dependencies
- _Requirements: 1.1, 5.3_
- [ ] 3.5 Create adapter unit tests
- Test GenericPython adapter with Supertester mocking
- Test GenericJavaScript adapter behavior
- Verify adapter lifecycle using OTP helpers
- Test error propagation with proper assertions
- _Requirements: 5.1, 5.2, 5.4, 5.5_
- [ ] 3.6 Create registry unit tests
- Test ProcessRegistry with Supertester.MessageHelpers
- Verify Registry worker tracking using OTP patterns
- Test WorkerStarterRegistry with proper synchronization
- Ensure cleanup using Supertester helpers
- _Requirements: 2.2, 3.3_
- [ ] 4. Implement Integration Tests
- Test component interactions using Supertester patterns
- Verify supervision and fault tolerance
- _Requirements: 1.1, 3.1, 3.4_
- [ ] 4.1 Create pool-worker integration tests
- Test using Supertester.SupervisorHelpers
- Verify supervisor restart strategies
- Test cascading failures with chaos helpers
- Validate process isolation and cleanup
- _Requirements: 2.1, 3.2, 3.4_
- [ ] 4.2 Create session-pool integration tests
- Test session affinity during worker failures
- Verify session recovery using wait_for_process_restart
- Test concurrent session operations
- Validate session cleanup on pool shutdown
- _Requirements: 4.1, 4.2, 4.4_
- [ ] 4.3 Create bridge protocol integration tests
- Test end-to-end command execution
- Verify protocol handling with real adapters
- Test error propagation through layers
- Use Supertester timing utilities
- _Requirements: 5.1, 5.3_
- [ ] 4.4 Create supervisor integration tests
- Test WorkerSupervisor with test_child_restart_strategies
- Verify supervision tree integrity
- Test application startup/shutdown
- Use assert_all_children_alive
- _Requirements: 3.2, 3.4, 3.5_
- [ ] 5. Implement Performance Tests
- Use Supertester.PerformanceHelpers exclusively
- Establish baselines and detect regressions
- _Requirements: 6.1, 6.2, 6.3_
- [ ] 5.1 Create throughput benchmarks
- Use benchmark_operations from Supertester
- Test with varying worker counts
- Apply workload_pattern_test for different patterns
- Measure queue impact on throughput
- _Requirements: 6.1, 6.2_
- [ ] 5.2 Create latency benchmarks
- Use measure_request_latency from Supertester
- Calculate percentiles with calculate_percentiles
- Benchmark session overhead
- Test latency under saturation
- _Requirements: 6.1, 6.2_
- [ ] 5.3 Create stress tests
- Use concurrent_load_test for sustained load
- Apply ramp_up_test for increasing load
- Test with create_memory_pressure
- Verify graceful degradation
- _Requirements: 6.2, 6.3_
- [ ] 5.4 Implement performance regression detection
- Use performance_regression_detector
- Create baseline with collect_performance_metrics
- Set up benchmark_with_thresholds
- Integrate with CI/CD pipeline
- _Requirements: 6.4, 6.5_
- [ ] 6. Implement Chaos Engineering Tests
- Use Supertester.ChaosHelpers for resilience testing
- Follow chaos testing patterns from code standards
- _Requirements: 7.1, 7.2, 7.3_
- [ ] 6.1 Create worker failure chaos tests
- Use inject_process_failure for controlled failures
- Test recovery with verify_system_recovery
- Apply chaos_test_orchestrator for scenarios
- Monitor with monitor_chaos_impact
- _Requirements: 7.1, 7.4, 7.5_
- [ ] 6.2 Create network chaos tests
- Use simulate_network_corruption
- Test timeout handling without sleep
- Verify recovery from partitions
- Use Supertester's network simulation
- _Requirements: 7.2, 7.5_
- [ ] 6.3 Create resource exhaustion tests
- Apply create_memory_pressure scenarios
- Test queue overflow behavior
- Verify resource cleanup
- Use collect_resilience_metrics
- _Requirements: 7.3, 7.4_
- [ ] 7. Create Test Documentation
- Document Supertester usage for Snakepit
- Align with comprehensive-otp-testing-standards.md
- _Requirements: 8.1, 8.2, 8.3_
- [ ] 7.1 Document test helper usage
- Create guide for Snakepit.TestHelpers
- Document MockAdapter usage patterns
- Explain Supertester integration points
- Provide troubleshooting guide
- _Requirements: 8.1, 8.2_
- [ ] 7.2 Create example test suites
- Provide unit test examples using Supertester
- Show integration test patterns
- Demonstrate performance testing
- Include chaos test examples
- _Requirements: 8.2, 8.3_
- [ ] 7.3 Document CI/CD integration
- Set up GitHub Actions with Supertester
- Configure test.pattern_check task
- Add coverage reporting
- Document failure diagnosis
- _Requirements: 8.4, 8.5_
- [ ] 8. Validate and Optimize Test Suite
- Ensure all tests follow OTP standards
- Verify zero Process.sleep usage
- _Requirements: 1.1, 1.4, 3.1_
- [ ] 8.1 Validate test coverage
- Run coverage analysis with mix test --cover
- Ensure >90% coverage across all modules
- Identify and fill any gaps
- Verify Supertester helper usage
- _Requirements: 1.1, 1.4_
- [ ] 8.2 Validate OTP compliance
- Run pattern check for Process.sleep
- Verify all tests use async: true
- Check proper Supertester helper usage
- Ensure isolation patterns followed
- _Requirements: 3.1, 3.5_
- [ ] 8.3 Optimize test execution
- Measure test suite execution time
- Ensure <30 second execution
- Optimize slow tests
- Verify no test interdependencies
- _Requirements: 1.3, 3.1_
- [ ] 8.4 Create quality metrics
- Set up test execution reporting
- Track coverage trends
- Monitor test reliability
- Document success metrics
- _Requirements: 1.5, 8.5_
- [ ] 9. Final Integration Steps
- Complete Snakepit integration with Supertester
- Ensure alignment with other repositories using Supertester
- _Requirements: 1.1, 5.5, 8.5_
- [ ] 9.1 Update project documentation
- Add testing section to README
- Document Supertester dependency
- Reference code standards
- Update contribution guidelines
- _Requirements: 8.1, 8.5_
- [ ] 9.2 Configure CI/CD pipeline
- Set up GitHub Actions workflow
- Add test quality gates
- Configure performance baselines
- Enable regression detection
- _Requirements: 6.4, 8.4_
- [ ] 9.3 Create migration guide
- Document migration from old tests
- Provide conversion examples
- List common pitfalls
- Reference Supertester docs
- _Requirements: 8.3, 8.5_