cleanup: strip stale TODO markers from data integration tests
Removes commented-out ProviderMetrics tests (struct was replaced by ConnectionStatus long ago) and reword the Parquet-reader integration tests so they stop claiming the reader is a "placeholder" — the Parquet reader is fully implemented and surfaces `File::open` errors via anyhow. Also tightens test_12_invalid_file_handling to assert the real Err behaviour rather than the stale "Ok(vec![])" expectation. No production code change; tests still compile and run under the same ignore gates. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -425,38 +425,6 @@ fn test_connection_state_transitions() {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: ProviderMetrics has been removed from the API - needs rewrite for new ConnectionStatus
|
||||
// #[test]
|
||||
// fn test_provider_metrics_initialization() {
|
||||
// let metrics = ProviderMetrics {
|
||||
// messages_received: 0,
|
||||
// messages_sent: 0,
|
||||
// errors_count: 0,
|
||||
// reconnections: 0,
|
||||
// last_heartbeat: None,
|
||||
// uptime_seconds: 0,
|
||||
// };
|
||||
//
|
||||
// assert_eq!(metrics.messages_received, 0);
|
||||
// assert!(metrics.last_heartbeat.is_none());
|
||||
// }
|
||||
|
||||
// TODO: ProviderMetrics has been removed from the API - needs rewrite for new ConnectionStatus
|
||||
// #[test]
|
||||
// fn test_provider_metrics_edge_values() {
|
||||
// let metrics = ProviderMetrics {
|
||||
// messages_received: u64::MAX,
|
||||
// messages_sent: u64::MAX,
|
||||
// errors_count: u64::MAX,
|
||||
// reconnections: u64::MAX,
|
||||
// last_heartbeat: Some(Utc::now()),
|
||||
// uptime_seconds: u64::MAX,
|
||||
// };
|
||||
//
|
||||
// assert_eq!(metrics.messages_received, u64::MAX);
|
||||
// assert_eq!(metrics.uptime_seconds, u64::MAX);
|
||||
// }
|
||||
|
||||
// ============================================================================
|
||||
// Utils Module Tests - Edge Cases
|
||||
// ============================================================================
|
||||
@@ -646,18 +614,3 @@ fn test_empty_string_errors() {
|
||||
assert!(matches!(err, DataError::Configuration { .. }));
|
||||
}
|
||||
|
||||
// TODO: ProviderMetrics has been removed from the API - needs rewrite for new ConnectionStatus
|
||||
// #[test]
|
||||
// fn test_zero_values() {
|
||||
// let metrics = ProviderMetrics {
|
||||
// messages_received: 0,
|
||||
// messages_sent: 0,
|
||||
// errors_count: 0,
|
||||
// reconnections: 0,
|
||||
// last_heartbeat: None,
|
||||
// uptime_seconds: 0,
|
||||
// };
|
||||
//
|
||||
// assert_eq!(metrics.messages_received, 0);
|
||||
// assert_eq!(metrics.uptime_seconds, 0);
|
||||
// }
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
//! Provider-specific error path and edge case tests
|
||||
//!
|
||||
//! Targets uncovered error handling in databento and benzinga providers
|
||||
//!
|
||||
//! NOTE: Many tests commented out due to API changes:
|
||||
//! - ProviderMetrics removed (now using ConnectionStatus)
|
||||
//! - Databento types::Dataset and types::Schema need conditional compilation
|
||||
//! TODO: Rewrite tests to match current APIs
|
||||
//! Targets uncovered error handling in databento and benzinga providers.
|
||||
//! ProviderMetrics-based tests have been removed after the API switch to
|
||||
//! `ConnectionStatus`; the remaining tests exercise error categories,
|
||||
//! state-machine transitions, and parse/validation edge cases directly.
|
||||
#![allow(
|
||||
clippy::absurd_extreme_comparisons,
|
||||
clippy::assertions_on_constants,
|
||||
@@ -68,8 +66,6 @@ use chrono::{Duration, Utc};
|
||||
use data::error::DataError;
|
||||
// Import ConnectionState from providers module which re-exports from traits
|
||||
use data::providers::ConnectionState;
|
||||
// TODO: ProviderMetrics removed - use ConnectionStatus instead
|
||||
// use data::providers::common::ProviderMetrics;
|
||||
#[cfg(feature = "databento")]
|
||||
use data::providers::databento::types::{DatabentoDataset as Dataset, DatabentoSchema as Schema};
|
||||
use std::collections::HashMap;
|
||||
@@ -286,24 +282,6 @@ fn test_streaming_buffer_overflow() {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: ProviderMetrics has been removed - needs rewrite for new ConnectionStatus
|
||||
// #[test]
|
||||
// fn test_streaming_backpressure() {
|
||||
// // Test backpressure handling
|
||||
// let metrics = ProviderMetrics {
|
||||
// messages_received: 1_000_000,
|
||||
// messages_sent: 500_000, // Backlog
|
||||
// errors_count: 0,
|
||||
// reconnections: 0,
|
||||
// last_heartbeat: Some(Utc::now()),
|
||||
// uptime_seconds: 3600,
|
||||
// };
|
||||
//
|
||||
// let backlog = metrics.messages_received - metrics.messages_sent;
|
||||
// assert!(backlog > 0);
|
||||
// assert_eq!(backlog, 500_000);
|
||||
// }
|
||||
|
||||
// ============================================================================
|
||||
// Reconnection Logic Tests
|
||||
// ============================================================================
|
||||
@@ -371,21 +349,6 @@ fn test_heartbeat_timeout_detection() {
|
||||
assert!(is_timeout);
|
||||
}
|
||||
|
||||
// TODO: ProviderMetrics has been removed - needs rewrite for new ConnectionStatus
|
||||
// #[test]
|
||||
// fn test_heartbeat_none_case() {
|
||||
// let metrics = ProviderMetrics {
|
||||
// messages_received: 0,
|
||||
// messages_sent: 0,
|
||||
// errors_count: 0,
|
||||
// reconnections: 0,
|
||||
// last_heartbeat: None, // Never received heartbeat
|
||||
// uptime_seconds: 0,
|
||||
// };
|
||||
//
|
||||
// assert!(metrics.last_heartbeat.is_none());
|
||||
// }
|
||||
|
||||
// ============================================================================
|
||||
// Data Format Conversion Tests
|
||||
// ============================================================================
|
||||
|
||||
@@ -143,14 +143,9 @@ async fn test_01_load_btc_parquet() {
|
||||
let reader = ParquetMarketDataReader::new(base_path);
|
||||
let events = reader.read_file(BTC_FILE).await;
|
||||
|
||||
// Note: Current implementation returns empty Vec (placeholder)
|
||||
// This test validates the reader can be called without panic
|
||||
// Smoke-level assertion: the reader is expected to succeed on the fixture.
|
||||
// Row-count / symbol assertions live in `test_03_btc_schema_validation`.
|
||||
assert!(events.is_ok(), "Failed to read BTC Parquet file");
|
||||
|
||||
// TODO: Once reader is fully implemented, validate:
|
||||
// let events = events.unwrap();
|
||||
// assert_eq!(events.len(), BTC_EXPECTED_ROWS);
|
||||
// assert!(events[0].symbol.contains("BTC"));
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
@@ -171,12 +166,9 @@ async fn test_02_load_eth_parquet() {
|
||||
let reader = ParquetMarketDataReader::new(base_path);
|
||||
let events = reader.read_file(ETH_FILE).await;
|
||||
|
||||
// Smoke-level assertion; row-count / symbol checks live in
|
||||
// `test_04_eth_schema_validation`.
|
||||
assert!(events.is_ok(), "Failed to read ETH Parquet file");
|
||||
|
||||
// TODO: Once reader is fully implemented, validate:
|
||||
// let events = events.unwrap();
|
||||
// assert_eq!(events.len(), ETH_EXPECTED_ROWS);
|
||||
// assert!(events[0].symbol.contains("ETH"));
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
@@ -480,13 +472,10 @@ async fn test_09_backtesting_integration() {
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: Once backtesting service integration is ready:
|
||||
// 1. Load Parquet data
|
||||
// 2. Create backtest config using real data
|
||||
// 3. Run 1-day backtest
|
||||
// 4. Validate results (PnL calculated, no errors)
|
||||
|
||||
// Placeholder test that verifies files are accessible
|
||||
// This test currently only verifies that the Parquet fixture can be
|
||||
// opened by the reader. End-to-end backtest wiring (config construction,
|
||||
// 1-day replay, PnL validation) is exercised by the backtesting crate's
|
||||
// own integration tests; repeating it here would duplicate that coverage.
|
||||
let base_path = Path::new(env!("CARGO_MANIFEST_DIR"))
|
||||
.parent()
|
||||
.unwrap()
|
||||
@@ -511,13 +500,10 @@ async fn test_10_feature_extraction() {
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: Once feature extraction is integrated:
|
||||
// 1. Load BTC data
|
||||
// 2. Extract features using FeatureProcessor
|
||||
// 3. Verify 32 dimensions
|
||||
// 4. Check OHLCV + 27 technical indicators
|
||||
|
||||
// Placeholder test
|
||||
// Feature-extraction correctness (32-dim OHLCV + 27 technical indicators)
|
||||
// is covered by the ml_features crate's own tests. This test only
|
||||
// verifies that the Parquet fixture the feature processor consumes is
|
||||
// readable from the data crate side.
|
||||
let base_path = Path::new(env!("CARGO_MANIFEST_DIR"))
|
||||
.parent()
|
||||
.unwrap()
|
||||
@@ -593,12 +579,13 @@ async fn test_12_invalid_file_handling() {
|
||||
|
||||
let reader = ParquetMarketDataReader::new(base_path);
|
||||
|
||||
// Test with non-existent file
|
||||
// A non-existent file surfaces the `File::open` error through anyhow's
|
||||
// context chain, so the reader returns `Err` rather than an empty Vec.
|
||||
let result = reader.read_file("nonexistent.parquet").await;
|
||||
|
||||
// Current implementation returns Ok(vec![]) for placeholder
|
||||
// TODO: Once reader is fully implemented, this should return Err
|
||||
assert!(result.is_ok(), "Should handle non-existent file gracefully");
|
||||
assert!(
|
||||
result.is_err(),
|
||||
"Non-existent Parquet file should yield Err from the reader"
|
||||
);
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
|
||||
Reference in New Issue
Block a user