Initial implementation of HTTP Sender Plugin following TDD methodology with hexagonal architecture. All 313 tests passing (0 failures). This commit adds: - Complete domain model and port interfaces - All adapter implementations (HTTP, gRPC, file logging, config) - Application services (data collection, transmission, backpressure) - Comprehensive test suite with 18 integration tests Test fixes applied during implementation: - Fix base64 encoding validation in DataCollectionServiceIntegrationTest - Fix exception type handling in IConfigurationPortTest - Fix CompletionException unwrapping in IHttpPollingPortTest - Fix sequential batching in DataTransmissionServiceIntegrationTest - Add test adapter failure simulation for reconnection tests - Use adapter counters for gRPC verification Files added: - pom.xml with all dependencies (JUnit 5, Mockito, WireMock, gRPC, Jackson) - src/main/java: Domain model, ports, adapters, application services - src/test/java: Unit tests, integration tests, test utilities
12 KiB
12 KiB
| 1 | Req ID | Category | Priority | Description | Component | Test Class | Implementation Status | Test Status | Line Coverage | Branch Coverage | Phase | Sprint | Story Points | Assigned Developer | Assigned Tester | Start Date | Target Date | Completion Date | Blocker | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | Req-FR-1 | Functional | High | Startup sequence orchestration | HspApplication.java | HspApplicationTest.java | Not Started | Not Started | 0% | 0% | Phase 3 | Sprint 4 | 13 | - | - | - | - | - | Foundation required | |
| 3 | Req-FR-2 | Functional | High | Load configuration on startup | ConfigurationManager.java | ConfigurationManagerTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 8 | - | - | - | - | - | Configuration model required | |
| 4 | Req-FR-3 | Functional | High | Validate configuration parameters | ConfigurationValidator.java | ConfigurationValidatorTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 8 | - | - | - | - | - | Configuration model required | |
| 5 | Req-FR-4 | Functional | High | Establish gRPC stream on startup | GrpcStreamAdapter.java | GrpcStreamAdapterTest.java | Not Started | Not Started | 0% | 0% | Phase 3 | Sprint 3 | 13 | - | - | - | - | - | gRPC port interface required | |
| 6 | Req-FR-5 | Functional | High | gRPC retry logic (5s intervals) | GrpcStreamAdapter.java | GrpcStreamAdapterTest.java | Not Started | Not Started | 0% | 0% | Phase 3 | Sprint 3 | 13 | - | - | - | - | - | gRPC adapter required | |
| 7 | Req-FR-6 | Functional | High | Wait for gRPC before HTTP polling | HspApplication.java | HspApplicationTest.java | Not Started | Not Started | 0% | 0% | Phase 3 | Sprint 4 | 13 | - | - | - | - | - | Application orchestration | |
| 8 | Req-FR-7 | Functional | High | Start HTTP polling after gRPC ready | HspApplication.java | HspApplicationTest.java | Not Started | Not Started | 0% | 0% | Phase 3 | Sprint 4 | 13 | - | - | - | - | - | Application orchestration | |
| 9 | Req-FR-8 | Functional | High | Start health check server | HealthCheckController.java | HealthCheckControllerTest.java | Not Started | Not Started | 0% | 0% | Phase 3 | Sprint 4 | 8 | - | - | - | - | - | Health check adapter required | |
| 10 | Req-FR-9 | Functional | High | Load hsp-config.json from cwd | ConfigurationFileAdapter.java | ConfigurationFileAdapterTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 5 | - | - | - | - | - | Configuration port required | |
| 11 | Req-FR-10 | Functional | High | Validate all configuration parameters | ConfigurationValidator.java | ConfigurationValidatorTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 8 | - | - | - | - | - | Configuration model required | |
| 12 | Req-FR-11 | Functional | High | Log validation errors | FileLoggingAdapter.java | FileLoggingAdapterTest.java | Not Started | Not Started | 0% | 0% | Phase 3 | Sprint 3 | 3 | - | - | - | - | - | Logging port required | |
| 13 | Req-FR-12 | Functional | High | Terminate on invalid config (exit 1) | ConfigurationManager.java | ConfigurationManagerTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 8 | - | - | - | - | - | Configuration validation required | |
| 14 | Req-FR-13 | Functional | High | Configuration value validation rules | ConfigurationValidator.java | ConfigurationValidatorTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 8 | - | - | - | - | - | Configuration model required | |
| 15 | Req-FR-14 | Functional | High | Poll configured HTTP endpoints | DataCollectionService.java | DataCollectionServiceTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 13 | - | - | - | - | - | HTTP polling port required | |
| 16 | Req-FR-15 | Functional | High | Virtual thread pool for polling | DataCollectionService.java | DataCollectionServiceTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 13 | - | - | - | - | - | Java 25 virtual threads | |
| 17 | Req-FR-16 | Functional | High | Configurable polling intervals with rate limiting | RateLimitedHttpPollingAdapter.java | RateLimitedHttpPollingAdapterTest.java | Not Started | Not Started | 0% | 0% | Phase 1 | Sprint 1 | 3 | - | - | - | - | - | Enhancement - rate limiting | |
| 18 | Req-FR-17 | Functional | High | HTTP request retry (3x 5s intervals) | HttpPollingAdapter.java | HttpPollingAdapterTest.java | Not Started | Not Started | 0% | 0% | Phase 3 | Sprint 3 | 13 | - | - | - | - | - | HTTP adapter required | |
| 19 | Req-FR-18 | Functional | Medium | Linear and exponential backoff (5s to 300s) | ExponentialBackoffAdapter.java | ExponentialBackoffAdapterTest.java | Not Started | Not Started | 0% | 0% | Phase 1 | Sprint 1 | 5 | - | - | - | - | - | Enhancement - backoff strategies | |
| 20 | Req-FR-19 | Functional | Medium | Log HTTP errors | FileLoggingAdapter.java | FileLoggingAdapterTest.java | Not Started | Not Started | 0% | 0% | Phase 3 | Sprint 3 | 3 | - | - | - | - | - | Logging adapter required | |
| 21 | Req-FR-20 | Functional | High | HTTP request timeout (30s) | HttpPollingAdapter.java | HttpPollingAdapterTest.java | Not Started | Not Started | 0% | 0% | Phase 3 | Sprint 3 | 13 | - | - | - | - | - | HTTP adapter required | |
| 22 | Req-FR-21 | Functional | High | Response size limit (1MB) | DataCollectionService.java | DataCollectionServiceTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 13 | - | - | - | - | - | Data validation logic | |
| 23 | Req-FR-22 | Functional | High | DiagnosticData structure (url file_data timestamp) | DiagnosticData.java | DiagnosticDataTest.java | Not Started | Not Started | 0% | 0% | Phase 1 | Sprint 1 | 3 | - | - | - | - | - | Domain model | |
| 24 | Req-FR-23 | Functional | High | JSON serialization with Base64 encoding | DiagnosticData.java | DiagnosticDataTest.java | Not Started | Not Started | 0% | 0% | Phase 1 | Sprint 1 | 3 | - | - | - | - | - | Jackson serialization | |
| 25 | Req-FR-24 | Functional | High | Store data in circular buffer | DataCollectionService.java | DataCollectionServiceTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 13 | - | - | - | - | - | Buffer manager required | |
| 26 | Req-FR-25 | Functional | High | Single consumer thread for transmission | DataTransmissionService.java | DataTransmissionServiceTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 13 | - | - | - | - | - | Transmission service orchestration | |
| 27 | Req-FR-26 | Functional | High | Circular buffer (300 capacity) with backpressure | BufferManager.java | BufferManagerTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 8 | - | - | - | - | - | Enhancement - backpressure controller | |
| 28 | Req-FR-27 | Functional | High | FIFO overflow (discard oldest) | BufferManager.java | BufferManagerTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 8 | - | - | - | - | - | Thread-safe implementation | |
| 29 | Req-FR-28 | Functional | High | Batch accumulation (4MB or 1s limit) | DataTransmissionService.java | DataTransmissionServiceTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 13 | - | - | - | - | - | Transmission batching logic | |
| 30 | Req-FR-29 | Functional | High | gRPC bidirectional stream | GrpcStreamAdapter.java | GrpcStreamAdapterTest.java | Not Started | Not Started | 0% | 0% | Phase 3 | Sprint 3 | 13 | - | - | - | - | - | Protocol Buffers definition | |
| 31 | Req-FR-30 | Functional | High | Set receiver_id = 99 in gRPC messages | GrpcStreamAdapter.java | GrpcStreamAdapterTest.java | Not Started | Not Started | 0% | 0% | Phase 3 | Sprint 3 | 13 | - | - | - | - | - | gRPC message construction | |
| 32 | Req-FR-31 | Functional | High | Maintain stream connection | GrpcStreamAdapter.java | GrpcStreamAdapterTest.java | Not Started | Not Started | 0% | 0% | Phase 3 | Sprint 3 | 13 | - | - | - | - | - | Stream lifecycle management | |
| 33 | Req-FR-32 | Functional | High | Reconnect on stream failure (5s retry) | GrpcStreamAdapter.java | GrpcStreamAdapterTest.java | Not Started | Not Started | 0% | 0% | Phase 3 | Sprint 3 | 13 | - | - | - | - | - | Reconnection logic | |
| 34 | Req-FR-33 | Functional | High | Log transmission errors | FileLoggingAdapter.java | FileLoggingAdapterTest.java | Not Started | Not Started | 0% | 0% | Phase 3 | Sprint 3 | 3 | - | - | - | - | - | Logging integration | |
| 35 | Req-NFR-1 | Non-Functional | High | Support 1000 concurrent endpoints | DataCollectionService.java | PerformanceConcurrentEndpointsTest.java | Not Started | Not Started | 0% | 0% | Phase 4 | Sprint 5 | 13 | - | - | - | - | - | Performance test required | |
| 36 | Req-NFR-2 | Non-Functional | High | Memory usage < 4096MB | All components | PerformanceMemoryUsageTest.java | Not Started | Not Started | 0% | 0% | Phase 4 | Sprint 5 | 13 | - | - | - | - | - | Memory profiling required | |
| 37 | Req-NFR-3 | Non-Functional | High | 90% uptime reliability | All components | ReliabilityTest.java | Not Started | Not Started | 0% | 0% | Phase 4 | Sprint 5 | 8 | - | - | - | - | - | Reliability test suite | |
| 38 | Req-NFR-4 | Non-Functional | High | Java 25 with virtual threads | All components | All tests | Not Started | Not Started | 0% | 0% | Phase 1 | Sprint 1 | 2 | - | - | - | - | - | Project setup requirement | |
| 39 | Req-NFR-5 | Non-Functional | Medium | No external dependencies (embedded) | pom.xml | Build verification | Not Started | Not Started | 0% | 0% | Phase 1 | Sprint 1 | 2 | - | - | - | - | - | Maven configuration | |
| 40 | Req-NFR-6 | Non-Functional | High | Configuration via JSON file | ConfigurationFileAdapter.java | ConfigurationFileAdapterTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 5 | - | - | - | - | - | Configuration loading | |
| 41 | Req-NFR-7 | Non-Functional | High | Health check endpoint (localhost:8080) | HealthCheckController.java | HealthCheckControllerTest.java | Not Started | Not Started | 0% | 0% | Phase 3 | Sprint 4 | 8 | - | - | - | - | - | HTTP server setup | |
| 42 | Req-NFR-8 | Non-Functional | High | Health check response format (6 fields) | HealthCheckResponse.java | HealthCheckResponseTest.java | Not Started | Not Started | 0% | 0% | Phase 1 | Sprint 1 | 3 | - | - | - | - | - | Domain model | |
| 43 | Req-Arch-1 | Architectural | High | Hexagonal architecture pattern | All components | Architecture tests | Not Started | Not Started | 0% | 0% | Phase 1 | Sprint 1 | 8 | - | - | - | - | - | Design pattern verification | |
| 44 | Req-Arch-2 | Architectural | High | Primary ports (3): Config Health Lifecycle | Port interfaces | Port contract tests | Not Started | Not Started | 0% | 0% | Phase 1 | Sprint 1 | 8 | - | - | - | - | - | Port interface definitions | |
| 45 | Req-Arch-3 | Architectural | High | Secondary ports (5): HTTP gRPC Logging Buffer Stats | Port interfaces | Port contract tests | Not Started | Not Started | 0% | 0% | Phase 1 | Sprint 1 | 8 | - | - | - | - | - | Port interface definitions | |
| 46 | Req-Arch-4 | Architectural | High | Port-Adapter pattern implementation | All adapters | Adapter tests | Not Started | Not Started | 0% | 0% | Phase 3 | Sprint 3-4 | 13 | - | - | - | - | - | Adapter implementation pattern | |
| 47 | Req-Arch-5 | Architectural | Medium | Dependency injection for ports | HspApplication.java | HspApplicationTest.java | Not Started | Not Started | 0% | 0% | Phase 3 | Sprint 4 | 13 | - | - | - | - | - | DI framework or manual | |
| 48 | Req-Arch-6 | Architectural | High | Virtual thread pools for concurrency | DataCollectionService.java | VirtualThreadTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 8 | - | - | - | - | - | Java 25 feature | |
| 49 | Req-Arch-7 | Architectural | High | Thread-safe buffer access | BufferManager.java | BufferManagerTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 8 | - | - | - | - | - | Concurrent stress tests | |
| 50 | Req-Arch-8 | Architectural | High | Atomic statistics tracking | CollectionStatistics.java | CollectionStatisticsTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 3 | - | - | - | - | - | Atomic operations | |
| 51 | Req-Test-1 | Testing | High | Unit tests with mocks (Mockito WireMock) | All components | All unit tests | Not Started | Not Started | 0% | 0% | Phase 1-3 | Sprint 1-4 | 21 | - | - | - | - | - | Continuous throughout development | |
| 52 | Req-Test-2 | Testing | High | Integration tests (WireMock gRPC test server) | Integration tests | Integration test suite | Not Started | Not Started | 0% | 0% | Phase 4 | Sprint 5 | 13 | - | - | - | - | - | End-to-end scenarios | |
| 53 | Req-Test-3 | Testing | High | 95% line 90% branch coverage | All components | JaCoCo coverage report | Not Started | Not Started | 0% | 0% | Phase 1 | Sprint 1 | 8 | - | - | - | - | - | Coverage enforcement in CI/CD | |
| 54 | Req-Test-4 | Testing | High | Performance and stress tests | Performance tests | Performance test suite | Not Started | Not Started | 0% | 0% | Phase 4 | Sprint 5 | 13 | - | - | - | - | - | JMH benchmarks | |
| 55 | Req-Norm-1 | Normative | High | ISO-9001 compliance (quality management) | All components | ComplianceIso9001Test.java | Not Started | Not Started | 0% | 0% | Phase 4 | Sprint 5 | 5 | - | - | - | - | - | Quality metrics tracking | |
| 56 | Req-Norm-2 | Normative | High | EN 50716 compliance (95% MC/DC coverage) | Safety-critical components | ComplianceEn50716Test.java | Not Started | Not Started | 0% | 0% | Phase 1 | Sprint 1 | 8 | - | - | - | - | - | MC/DC tests for critical paths | |
| 57 | Req-Norm-3 | Normative | High | Audit logging for compliance | FileLoggingAdapter.java | ComplianceAuditLoggingTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 5 | - | - | - | - | - | Comprehensive logging | |
| 58 | Req-Norm-4 | Normative | High | Error detection and logging | FileLoggingAdapter.java | ComplianceErrorDetectionTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 5 | - | - | - | - | - | Error handling coverage | |
| 59 | Req-Norm-5 | Normative | Medium | Quality metrics tracking | CollectionStatistics.java | CollectionStatisticsTest.java | Not Started | Not Started | 0% | 0% | Phase 2 | Sprint 2 | 3 | - | - | - | - | - | Metrics aggregation | |
| 60 | Req-Norm-6 | Normative | High | Requirements traceability (@RequirementTrace) | All components | Traceability verification | Not Started | Not Started | 0% | 0% | Phase 1 | Sprint 1 | 3 | - | - | - | - | - | Annotations in code | |
| 61 | Req-US-1 | User Story | High | Collector user: start service and collect data | HspApplication.java | E2EStartupAndCollectionTest.java | Not Started | Not Started | 0% | 0% | Phase 5 | Sprint 6 | 13 | - | - | - | - | - | End-to-end user scenario | |
| 62 | Req-US-2 | User Story | High | Operator: monitor health and status | HealthCheckController.java | E2EHealthMonitoringTest.java | Not Started | Not Started | 0% | 0% | Phase 5 | Sprint 6 | 8 | - | - | - | - | - | Health check validation | |
| 63 | Req-US-3 | User Story | High | DevOps: deploy and configure service | Deployment artifacts | DeploymentTest.java | Not Started | Not Started | 0% | 0% | Phase 5 | Sprint 6 | 8 | - | - | - | - | - | Deployment validation |