feat(caching): Implement cache hit detection and response header management

- Added functionality to mark responses as cache hits to prevent incorrect X-Cache headers.
- Introduced setCacheHitFlag function to traverse response writer wrappers and set cache hit flag.
- Updated cachingResponseWriter to manage cache hit state and adjust X-Cache header accordingly.
- Enhanced ProcessRequest and ProcessResponse methods to utilize new caching logic.

feat(extension): Introduce ResponseWriterWrapper and ResponseFinalizer interfaces

- Added ResponseWriterWrapper interface for extensions to wrap response writers.
- Introduced ResponseFinalizer interface for finalizing responses after processing.

refactor(manager): Improve response writer wrapping and finalization

- Updated Manager.Handler to wrap response writers through all enabled extensions.
- Implemented finalization of response writers after processing requests.

test(caching): Add comprehensive integration tests for caching behavior

- Created caching_test.go with tests for cache hit/miss, TTL expiration, pattern-based caching, and more.
- Ensured that caching logic works correctly for various scenarios including query strings and error responses.

test(routing): Add integration tests for routing behavior

- Created routing_test.go with tests for route priority, case sensitivity, default routes, and return directives.
- Verified that routing behaves as expected with multiple regex routes and named groups.
This commit is contained in:
Илья Глазунов
2025-12-12 01:03:32 +03:00
parent 81ac5c4d29
commit bd0b381195
6 changed files with 1275 additions and 20 deletions
+19 -12
View File
@@ -40,12 +40,15 @@ tests/integration/
### 2. Routing Extension (`routing_test.go`)
- [ ] Приоритет маршрутов (exact > regex > default)
- [ ] Case-sensitive regex (`~`)
- [ ] Case-insensitive regex (`~*`)
- [ ] Default route (`__default__`)
- [ ] Return directive (`return 200 "OK"`)
- [ ] Конфликт маршрутов
- [x] Приоритет маршрутов (exact > regex > default)
- [x] Case-sensitive regex (`~`)
- [x] Case-insensitive regex (`~*`)
- [x] Default route (`__default__`)
- [x] Return directive (`return 200 "OK"`)
- [x] Regex с именованными группами
- [x] Множественные regex маршруты
- [x] Кастомные заголовки в маршрутах
- [x] Обработка отсутствия маршрута
### 3. Security Extension (`security_test.go`)
@@ -58,12 +61,16 @@ tests/integration/
### 4. Caching Extension (`caching_test.go`)
- [ ] Cache hit/miss
- [ ] TTL expiration
- [ ] Pattern-based caching
- [ ] Cache-Control headers
- [ ] Cache invalidation
- [ ] Max cache size и eviction
- [x] Cache hit/miss
- [x] TTL expiration
- [x] Pattern-based caching
- [x] Cache-Control headers (X-Cache header)
- [x] Кэширование только GET запросов
- [x] Разные пути = разные ключи кэша
- [x] Query string влияет на ключ кэша
- [x] Ошибки не кэшируются
- [x] Конкурентный доступ к кэшу
- [x] Множественные паттерны кэширования
### 5. Static Files (`static_files_test.go`)