Commit graph

5 commits

Author SHA1 Message Date
4e00c3cf5d
test: Make tests time-independent and increase timeouts for reliability
- Fix time-dependent tests to use relative dates instead of hardcoded values
- Increase timeout values to prevent flaky failures on slower systems/CI
- Use flexible string matching for time-related assertions
- Update Process.sleep and assert_receive timeouts for better reliability

Specific changes:
- TimeHelpers: Use pattern matching for variable time strings
- PacketsOldest: Replace hardcoded dates with relative calculations
- BroadcastTaskSupervisor: Increase timing assertion to 1s
- Movement tests: Increase refute_push_event timeout to 2s
- Integration tests: Increase all wait times by 50%
- StreamingPacketsPubSub: Increase receive timeouts

These changes ensure tests pass regardless of when they're executed
and are more resilient to performance variations in CI environments.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-02 10:07:47 -05:00
f60840c0e0
format 2025-07-29 12:44:40 -05:00
ee16f81ed9
Update Wallaby to 0.30.10 and suppress expected test error
- Update Wallaby from 0.30.0 to 0.30.10 to fix struct update deprecation warnings
- Suppress expected error output in BroadcastTaskSupervisor test using capture_log
- Keeps test output clean while still verifying error handling behavior
2025-07-29 12:44:12 -05:00
a8e7b17ee1
Optimize test suite performance - 32.5% faster execution
Reduced test execution time from 21.2s to 14.3s through multiple optimizations:

1. Reduced test data size:
   - Memory efficiency test: 5000→1000 packets, smaller payloads (saved ~3.2s)
   - More focused test scenarios without sacrificing coverage

2. Reduced sleep times across test suite:
   - GPS movement tests: 100-500ms → 10-100ms
   - Broadcast supervisor tests: 50ms → 10ms
   - Packet consumer tests: 100-500ms → 20-50ms
   - Saved ~1-2 seconds total

3. Enabled parallel test execution:
   - Set max_cases to System.schedulers_online() * 2
   - Made DeviceIdentificationTest async
   - Made PasscodeTest and ConvertTest async
   - Better CPU utilization

4. Reduced assertion timeouts:
   - Changed from 1000ms to 200-500ms where appropriate
   - Faster failure detection

These optimizations maintain test reliability while significantly reducing
execution time. The occasional timing-sensitive LiveView test failures are
addressed with slightly more generous timeouts where needed.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-21 09:23:07 -05:00
234fc2010f
Implement critical performance optimizations and error handling
This commit introduces several major performance improvements and adds
robust error handling for malformed HTTP requests:

Performance Optimizations:
- Add database migration with BRIN indexes for time-series data and partial
  indexes for recent queries, significantly improving query performance
- Create global StreamingPacketsPubSub system for real-time packet distribution
  with geographic bounds filtering using ETS for fast lookups
- Refactor PacketConsumer to use Stream module for memory-efficient processing,
  preventing memory accumulation during batch operations
- Implement dedicated BroadcastTaskSupervisor pool for async broadcast operations,
  preventing GenServer blocking on I/O
- Increase database connection pool from 25 to 45 (production) and 15 to 30 (dev)
  for better concurrency support

Error Handling:
- Add SentryFilter to prevent Bandit.HTTPError from missing Host headers from
  cluttering Sentry (common with bots/scanners)
- Configure custom 400 Bad Request error handling
- Filter out common bot/scanner paths from error reporting

All changes include comprehensive test coverage following TDD practices.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18 18:19:49 -05:00