Refactor inference engine and task management: Remove obsolete inference engine and ONNX engine files, update inference processing to utilize batch handling, and enhance task management structure in documentation. Adjust paths for task specifications to align with new directory organization.

This commit is contained in:
Oleksandr Bezdieniezhnykh
2026-03-28 01:04:28 +02:00
parent 1e4ef299f9
commit 5be53739cd
60 changed files with 111875 additions and 208 deletions
@@ -0,0 +1,82 @@
# Negative Input Tests
**Task**: AZ-144_test_negative
**Name**: Negative Input Tests
**Description**: Implement E2E tests verifying proper error responses for invalid inputs, unavailable engine, and missing configuration
**Complexity**: 2 points
**Dependencies**: AZ-138_test_infrastructure
**Component**: Integration Tests
**Jira**: AZ-144
**Epic**: AZ-137
## Problem
The system must handle invalid and edge-case inputs gracefully, returning appropriate HTTP error codes without crashing. Tests must verify error responses for empty files, corrupt data, engine unavailability, and missing configuration.
## Outcome
- Empty image returns 400 Bad Request
- Corrupt/non-image data returns 400 Bad Request
- Detection when engine unavailable returns 503 or 422
- Missing classes.json prevents normal operation
- Service remains healthy after all negative inputs
## Scope
### Included
- FT-N-01: Empty image returns 400
- FT-N-02: Invalid image data returns 400
- FT-N-03: Detection when engine unavailable returns 503
- FT-N-05: Missing classes.json prevents startup
### Excluded
- Duplicate media_id (covered in async/SSE tests)
- Service outage scenarios (covered in resilience tests)
- Malformed multipart payloads (covered in security tests)
## Acceptance Criteria
**AC-1: Empty image**
Given the detections service is running
When POST /detect is called with a zero-byte file
Then response is 400 Bad Request with error message
**AC-2: Corrupt image**
Given the detections service is running
When POST /detect is called with random binary data
Then response is 400 Bad Request (not 500)
**AC-3: Engine unavailable**
Given mock-loader is configured to fail model requests
When POST /detect is called
Then response is 503 or 422 with no crash or unhandled exception
**AC-4: Missing classes.json**
Given detections service started without classes.json volume mount
When the service runs or a detection is attempted
Then service either fails to start or returns empty/error results without crashing
## Non-Functional Requirements
**Reliability**
- Service must remain operational after processing invalid inputs (AC-1, AC-2)
## Integration Tests
| AC Ref | Initial Data/Conditions | What to Test | Expected Behavior | NFR References |
|--------|------------------------|-------------|-------------------|----------------|
| AC-1 | Service running | POST /detect with empty file | 400 Bad Request | Max 5s |
| AC-2 | Service running | POST /detect with corrupt binary | 400 Bad Request | Max 5s |
| AC-3 | mock-loader returns 503 | POST /detect with valid image | 503 or 422 | Max 30s |
| AC-4 | No classes.json mounted | Start service or detect | Fail gracefully | Max 30s |
## Constraints
- AC-4 requires a separate Docker Compose configuration without the classes.json volume
- AC-3 requires mock-loader control API to simulate failure
## Risks & Mitigation
**Risk 1: AC-4 service start behavior**
- *Risk*: Behavior when classes.json is missing may vary (fail at start vs. fail at detection)
- *Mitigation*: Test both paths; accept either as valid graceful handling