-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest-verify.xml
More file actions
1 lines (1 loc) · 33 KB
/
test-verify.xml
File metadata and controls
1 lines (1 loc) · 33 KB
1
<?xml version="1.0" encoding="utf-8"?><testsuites name="pytest tests"><testsuite name="pytest" errors="0" failures="0" skipped="10" tests="244" time="5.748" timestamp="2026-02-04T14:01:12.752311+00:00" hostname="runnervmkj6or"><testcase classname="tests.integration.test_backup_monitor.TestBackupMonitorIntegration" name="test_backup_monitor_initialization" time="0.002" /><testcase classname="tests.integration.test_backup_monitor.TestBackupMonitorIntegration" name="test_backup_monitor_initialization_without_config" time="0.001" /><testcase classname="tests.integration.test_backup_monitor.TestBackupMonitorIntegration" name="test_backup_monitor_start_with_valid_directory" time="0.002" /><testcase classname="tests.integration.test_backup_monitor.TestBackupMonitorIntegration" name="test_backup_monitor_start_without_backup_directory" time="0.002" /><testcase classname="tests.integration.test_backup_monitor.TestBackupMonitorIntegration" name="test_backup_monitor_start_with_nonexistent_directory" time="0.002" /><testcase classname="tests.integration.test_backup_monitor.TestBackupMonitorIntegration" name="test_backup_monitor_stop" time="0.001" /><testcase classname="tests.integration.test_backup_monitor.TestBackupMonitorIntegration" name="test_backup_monitor_file_watching" time="0.001" /><testcase classname="tests.integration.test_backup_monitor.TestBackupMonitorIntegration" name="test_backup_monitor_scan_existing_backups_empty" time="0.001" /><testcase classname="tests.integration.test_backup_monitor.TestBackupMonitorIntegration" name="test_backup_monitor_scan_existing_backups_with_devices" time="0.002" /><testcase classname="tests.integration.test_backup_monitor.TestBackupMonitorIntegration" name="test_backup_monitor_scan_ignores_files" time="0.002" /><testcase classname="tests.integration.test_backup_monitor.TestBackupMonitorIntegration" name="test_backup_monitor_full_workflow" time="0.002" /><testcase classname="tests.integration.test_backup_monitor.TestBackupMonitorIntegration" name="test_backup_monitor_handles_callback_on_changes" time="0.001" /><testcase classname="tests.integration.test_backup_monitor.TestBackupMonitorIntegration" name="test_backup_monitor_integration_with_device_extractor" time="0.002" /><testcase classname="tests.integration.test_backup_monitor.TestBackupMonitorIntegration" name="test_backup_monitor_respects_watch_interval" time="0.001" /><testcase classname="tests.integration.test_real_attack_detection.TestRealAttackDetection" name="test_detect_tcp_fallback_from_real_logs" time="0.001" /><testcase classname="tests.integration.test_real_attack_detection.TestRealAttackDetection" name="test_detect_api_rate_limiting_from_real_logs" time="0.001" /><testcase classname="tests.integration.test_real_attack_detection.TestRealAttackDetection" name="test_detect_server_hopping_from_real_logs" time="0.003" /><testcase classname="tests.integration.test_real_attack_detection.TestRealAttackDetection" name="test_certificate_validation_from_real_logs" time="0.010" /><testcase classname="tests.integration.test_real_attack_detection.TestRealAttackDetection" name="test_complete_attack_sequence" time="0.002" /><testcase classname="tests.integration.test_real_attack_detection.TestAlertingIntegration" name="test_send_alert_for_critical_threat" time="0.001" /><testcase classname="tests.integration.test_real_attack_detection.TestAlertingIntegration" name="test_send_alert_for_high_threat" time="0.001" /><testcase classname="tests.integration.test_real_attack_detection.TestAlertingIntegration" name="test_alert_throttling" time="0.001" /><testcase classname="tests.integration.test_real_attack_detection.TestAlertingIntegration" name="test_alert_severity_filtering" time="0.001" /><testcase classname="tests.integration.test_real_attack_detection.TestAlertingIntegration" name="test_custom_alert_formatting" time="0.001" /><testcase classname="tests.integration.test_real_attack_detection.TestEndToEndMonitoring" name="test_process_logs_and_alert_workflow" time="0.002" /><testcase classname="tests.integration.test_real_attack_detection.TestEndToEndMonitoring" name="test_graceful_handling_of_malformed_logs" time="0.001" /><testcase classname="tests.integration.test_real_attack_detection.TestEndToEndMonitoring" name="test_state_persistence_across_log_entries" time="0.001" /><testcase classname="tests.integration.test_real_attack_detection.TestThreatDetectionAccuracy" name="test_no_false_positives_for_normal_operation" time="0.001" /><testcase classname="tests.integration.test_real_attack_detection.TestThreatDetectionAccuracy" name="test_threat_level_accuracy" time="0.001" /><testcase classname="tests.integration.test_vpn_integrity_monitor.TestVPNIntegrityMonitor" name="test_detect_tcp_fallback_attack" time="0.001" /><testcase classname="tests.integration.test_vpn_integrity_monitor.TestVPNIntegrityMonitor" name="test_udp_normal_operation" time="0.001" /><testcase classname="tests.integration.test_vpn_integrity_monitor.TestVPNIntegrityMonitor" name="test_detect_api_cooldown_tracking" time="0.002" /><testcase classname="tests.integration.test_vpn_integrity_monitor.TestVPNIntegrityMonitor" name="test_detect_rapid_server_hopping" time="0.001" /><testcase classname="tests.integration.test_vpn_integrity_monitor.TestVPNIntegrityMonitor" name="test_validate_certificate_from_logs" time="0.001" /><testcase classname="tests.integration.test_vpn_integrity_monitor.TestVPNIntegrityMonitor" name="test_detect_unknown_certificate" time="0.001" /><testcase classname="tests.integration.test_vpn_integrity_monitor.TestVPNIntegrityMonitor" name="test_rapid_reconnection_detection" time="0.001" /><testcase classname="tests.integration.test_vpn_integrity_monitor.TestVPNIntegrityMonitor" name="test_end_to_end_attack_detection" time="0.002" /><testcase classname="tests.integration.test_vpn_integrity_monitor.TestVPNIntegrityMonitor" name="test_json_log_format_parsing" time="0.001" /><testcase classname="tests.integration.test_vpn_integrity_monitor.TestVPNIntegrityMonitor" name="test_malformed_log_handling" time="0.001" /><testcase classname="tests.integration.test_vpn_integrity_monitor.TestVPNIntegrityMonitor" name="test_state_tracking_persistence" time="0.001" /><testcase classname="tests.integration.test_vpn_integrity_monitor.TestVPNIntegrityMonitor" name="test_threat_detection_dataclass" time="0.001" /><testcase classname="tests.integration.test_vpn_integrity_monitor.TestVPNIntegrityMonitor" name="test_rapid_multi_server_hopping_pattern" time="0.001" /><testcase classname="tests.integration.test_vpn_integrity_monitor.TestVPNIntegrityMonitor" name="test_combined_attack_sequence" time="0.005" /><testcase classname="tests.unit.test_api_abuse.TestAPIRequestTracking" name="test_track_api_requests" time="0.001" /><testcase classname="tests.unit.test_api_abuse.TestAPIRequestTracking" name="test_track_multiple_apps" time="0.001" /><testcase classname="tests.unit.test_api_abuse.TestAPIRequestTracking" name="test_track_request_with_error" time="0.001" /><testcase classname="tests.unit.test_api_abuse.TestRateLimitDetection" name="test_identify_rate_limiting_cooldown" time="0.001" /><testcase classname="tests.unit.test_api_abuse.TestRateLimitDetection" name="test_identify_generic_rate_limit" time="0.001" /><testcase classname="tests.unit.test_api_abuse.TestRateLimitDetection" name="test_no_rate_limit_in_normal_log" time="0.001" /><testcase classname="tests.unit.test_api_abuse.TestRateLimitDetection" name="test_rate_limit_cooldown_servers_endpoint" time="0.001" /><testcase classname="tests.unit.test_api_abuse.TestLocationTracking" name="test_detect_location_tracking" time="0.005" /><testcase classname="tests.unit.test_api_abuse.TestLocationTracking" name="test_normal_location_usage_no_alert" time="0.001" /><testcase classname="tests.unit.test_api_abuse.TestLocationTracking" name="test_geo_api_also_tracked" time="0.001" /><testcase classname="tests.unit.test_api_abuse.TestBurstDetection" name="test_detect_burst_pattern" time="0.001" /><testcase classname="tests.unit.test_api_abuse.TestBurstDetection" name="test_normal_request_rate_no_burst" time="0.001" /><testcase classname="tests.unit.test_api_abuse.TestBackgroundActivityDetection" name="test_detect_background_activity" time="0.001" /><testcase classname="tests.unit.test_api_abuse.TestBackgroundActivityDetection" name="test_daytime_activity_no_alert" time="0.001" /><testcase classname="tests.unit.test_api_abuse.TestRequestStatistics" name="test_calculate_request_frequency" time="0.001" /><testcase classname="tests.unit.test_api_abuse.TestRequestStatistics" name="test_statistics_for_unknown_app" time="0.001" /><testcase classname="tests.unit.test_api_abuse.TestRequestStatistics" name="test_unique_endpoints_count" time="0.001" /><testcase classname="tests.unit.test_api_abuse.TestRequestStatistics" name="test_rate_limited_flag" time="0.001" /><testcase classname="tests.unit.test_api_abuse.TestComprehensivePatternAnalysis" name="test_analyze_multiple_threats" time="0.002" /><testcase classname="tests.unit.test_api_abuse.TestComprehensivePatternAnalysis" name="test_no_threats_for_normal_usage" time="0.001" /><testcase classname="tests.unit.test_backup_analysis.TestBackupAnalysis" name="test_parse_manifest_database" time="0.004" /><testcase classname="tests.unit.test_backup_analysis.TestBackupAnalysis" name="test_extract_vpn_profiles" time="0.004" /><testcase classname="tests.unit.test_backup_analysis.TestBackupAnalysis" name="test_get_installed_apps" time="0.004" /><testcase classname="tests.unit.test_backup_analysis.TestBackupAnalysis" name="test_extract_network_configuration" time="0.004" /><testcase classname="tests.unit.test_backup_analysis.TestBackupAnalysis" name="test_validate_backup_with_real_structure" time="0.003" /><testcase classname="tests.unit.test_backup_analysis.TestBackupAnalysis" name="test_extract_device_info_from_real_backup" time="0.004" /><testcase classname="tests.unit.test_backup_analysis.TestProfileExtraction" name="test_detect_unsigned_profile" time="0.001" /><testcase classname="tests.unit.test_backup_analysis.TestProfileExtraction" name="test_validate_profile_signature" time="0.004" /><testcase classname="tests.unit.test_backup_analysis.TestProfileExtraction" name="test_extract_security_profiles" time="0.007" /><testcase classname="tests.unit.test_backup_analysis.TestProfileExtraction" name="test_profile_threat_assessment" time="0.001" /><testcase classname="tests.unit.test_backup_analysis.TestProfileExtraction" name="test_suspicious_vpn_profile_name_detection" time="0.001" /><testcase classname="tests.unit.test_backup_analysis.TestProfileExtraction" name="test_mdm_profile_without_organization" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestCarrierDetectorInitialization" name="test_detector_init_default" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestCarrierDetectorInitialization" name="test_detector_init_with_config" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestCarrierDetectorInitialization" name="test_detector_profile_history_initialized" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestESIMProfileDetection" name="test_detect_unauthorized_esim_profile" time="0.005" /><testcase classname="tests.unit.test_carrier_detection.TestESIMProfileDetection" name="test_identify_localhost_routing_in_vpn_profile" time="0.011" /><testcase classname="tests.unit.test_carrier_detection.TestESIMProfileDetection" name="test_detect_private_ip_vpn_routing" time="0.002" /><testcase classname="tests.unit.test_carrier_detection.TestESIMProfileDetection" name="test_parse_ios_carrier_bundle" time="0.002" /><testcase classname="tests.unit.test_carrier_detection.TestESIMProfileDetection" name="test_track_profile_across_backups" time="0.002" /><testcase classname="tests.unit.test_carrier_detection.TestESIMProfileDetection" name="test_detect_dns_tampering" time="0.002" /><testcase classname="tests.unit.test_carrier_detection.TestESIMProfileDetection" name="test_monitor_network_interface_changes" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestVPNProfileValidation" name="test_validate_carrier_profile_signature" time="0.002" /><testcase classname="tests.unit.test_carrier_detection.TestVPNProfileValidation" name="test_detect_vpn_profile_no_remote_endpoint" time="0.002" /><testcase classname="tests.unit.test_carrier_detection.TestVPNProfileValidation" name="test_detect_mdm_vpn_profile" time="0.002" /><testcase classname="tests.unit.test_carrier_detection.TestVPNProfileValidation" name="test_detect_suspicious_vpn_name" time="0.002" /><testcase classname="tests.unit.test_carrier_detection.TestPrivateIPDetection" name="test_is_private_ip_class_a" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestPrivateIPDetection" name="test_is_private_ip_class_b" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestPrivateIPDetection" name="test_is_private_ip_class_c" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestPrivateIPDetection" name="test_is_private_ip_public_addresses" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestPrivateIPDetection" name="test_is_private_ip_edge_cases" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestThreatDataClasses" name="test_carrier_threat_detection_creation" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestThreatDataClasses" name="test_esim_profile_dataclass" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestThreatDataClasses" name="test_vpn_profile_dataclass" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestDNSParsing" name="test_parse_dns_servers_ipv4" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestDNSParsing" name="test_parse_dns_servers_ipv6" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestDNSParsing" name="test_parse_dns_servers_mixed" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestNetworkInterfaceParsing" name="test_parse_network_interfaces" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestNetworkInterfaceParsing" name="test_parse_network_interfaces_tun_only" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestErrorHandling" name="test_monitor_esim_nonexistent_backup" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestErrorHandling" name="test_localhost_routing_empty_backup" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestErrorHandling" name="test_dns_analysis_subprocess_error" time="0.001" /><testcase classname="tests.unit.test_carrier_detection.TestErrorHandling" name="test_encrypted_backup_handling" time="0.002" /><testcase classname="tests.unit.test_carrier_detection.TestBackupComparison" name="test_profile_persistence_across_backups" time="0.003" /><testcase classname="tests.unit.test_carrier_detection.TestBackupComparison" name="test_profile_modification_detection" time="0.000"><skipped type="pytest.skip" message="Python 3.12 version-specific failure - passes on 3.11, fails on 3.12">/home/runner/work/PrivaseeAI.Security/PrivaseeAI.Security/tests/unit/test_carrier_detection.py:639: Python 3.12 version-specific failure - passes on 3.11, fails on 3.12</skipped></testcase><testcase classname="tests.unit.test_carrier_detection.TestBackupComparison" name="test_new_profile_after_reset_simulation" time="0.000"><skipped type="pytest.skip" message="Flaky timing issue in CI - needs refactoring">/home/runner/work/PrivaseeAI.Security/PrivaseeAI.Security/tests/unit/test_carrier_detection.py:691: Flaky timing issue in CI - needs refactoring</skipped></testcase><testcase classname="tests.unit.test_cert_validator" name="test_validate_known_good_protonvpn_certificate" time="0.001" /><testcase classname="tests.unit.test_cert_validator" name="test_reject_unknown_certificate_fingerprint" time="0.001" /><testcase classname="tests.unit.test_cert_validator" name="test_detect_self_signed_certificate" time="0.001" /><testcase classname="tests.unit.test_cert_validator" name="test_extract_cert_from_wireguard_log" time="0.001" /><testcase classname="tests.unit.test_cert_validator" name="test_extract_cert_from_protonvpn_json" time="0.001" /><testcase classname="tests.unit.test_cert_validator" name="test_validate_certificate_expiry_dates" time="0.001" /><testcase classname="tests.unit.test_cert_validator" name="test_certificate_chain_validation" time="0.001" /><testcase classname="tests.unit.test_cert_validator" name="test_parse_malformed_log_entries" time="0.001" /><testcase classname="tests.unit.test_config.TestConfig" name="test_init_with_defaults" time="0.001" /><testcase classname="tests.unit.test_config.TestConfig" name="test_init_with_nonexistent_file" time="0.002" /><testcase classname="tests.unit.test_config.TestConfig" name="test_init_with_existing_file" time="0.002" /><testcase classname="tests.unit.test_config.TestConfig" name="test_get_existing_key" time="0.001" /><testcase classname="tests.unit.test_config.TestConfig" name="test_get_nonexistent_key_with_default" time="0.001" /><testcase classname="tests.unit.test_config.TestConfig" name="test_get_nonexistent_key_without_default" time="0.001" /><testcase classname="tests.unit.test_config.TestConfig" name="test_set_configuration_value" time="0.001" /><testcase classname="tests.unit.test_config.TestConfig" name="test_validate_valid_configuration" time="0.001" /><testcase classname="tests.unit.test_config.TestConfig" name="test_validate_missing_required_key" time="0.002" /><testcase classname="tests.unit.test_config.TestConfig" name="test_validate_invalid_log_level" time="0.001" /><testcase classname="tests.unit.test_config.TestConfig" name="test_to_dict" time="0.001" /><testcase classname="tests.unit.test_config.TestConfig" name="test_to_dict_is_copy" time="0.001" /><testcase classname="tests.unit.test_config.TestConfig" name="test_load_defaults" time="0.001" /><testcase classname="tests.unit.test_config.TestConfig" name="test_custom_backup_directory" time="0.001" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_generate_key_default_size" time="0.001" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_generate_key_custom_size" time="0.001" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_generate_key_uniqueness" time="0.001" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_encrypt_decrypt_roundtrip" time="0.001" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_encrypt_empty_data" time="0.001" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_encrypt_invalid_key_size" time="0.001" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_decrypt_empty_data" time="0.002" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_decrypt_invalid_key_size" time="0.001" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_decrypt_too_short_data" time="0.002" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_encrypted_data_includes_nonce" time="0.001" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_hash_data_sha256" time="0.001" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_hash_data_default_algorithm" time="0.001" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_hash_data_deterministic" time="0.001" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_hash_data_different_inputs" time="0.001" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_hash_data_invalid_algorithm" time="0.002" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_verify_hash_correct" time="0.001" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_verify_hash_incorrect" time="0.001" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_verify_hash_modified_data" time="0.001" /><testcase classname="tests.unit.test_crypto.TestCrypto" name="test_hash_data_sha512" time="0.001" /><testcase classname="tests.unit.test_database.TestThreatEventModel" name="test_fingerprint_generation" time="0.001" /><testcase classname="tests.unit.test_database.TestThreatEventModel" name="test_fingerprint_uniqueness" time="0.001" /><testcase classname="tests.unit.test_database.TestThreatEventModel" name="test_threat_event_creation" time="0.007" /><testcase classname="tests.unit.test_database.TestDeviceModel" name="test_device_creation" time="0.001" /><testcase classname="tests.unit.test_database.TestDeviceModel" name="test_device_repr" time="0.001" /><testcase classname="tests.unit.test_database.TestDeviceRepositoryIntegration" name="test_create_device" time="0.000"><skipped type="pytest.skip" message="Database not available - set DATABASE_URL to run integration tests">/home/runner/work/PrivaseeAI.Security/PrivaseeAI.Security/tests/unit/test_database.py:129: Database not available - set DATABASE_URL to run integration tests</skipped></testcase><testcase classname="tests.unit.test_database.TestDeviceRepositoryIntegration" name="test_get_device_by_udid" time="0.000"><skipped type="pytest.skip" message="Database not available - set DATABASE_URL to run integration tests">/home/runner/work/PrivaseeAI.Security/PrivaseeAI.Security/tests/unit/test_database.py:145: Database not available - set DATABASE_URL to run integration tests</skipped></testcase><testcase classname="tests.unit.test_database.TestDeviceRepositoryIntegration" name="test_update_last_seen" time="0.000"><skipped type="pytest.skip" message="Database not available - set DATABASE_URL to run integration tests">/home/runner/work/PrivaseeAI.Security/PrivaseeAI.Security/tests/unit/test_database.py:160: Database not available - set DATABASE_URL to run integration tests</skipped></testcase><testcase classname="tests.unit.test_database.TestThreatEventRepositoryIntegration" name="test_create_threat_event" time="0.000"><skipped type="pytest.skip" message="Database not available - set DATABASE_URL to run integration tests">/home/runner/work/PrivaseeAI.Security/PrivaseeAI.Security/tests/unit/test_database.py:182: Database not available - set DATABASE_URL to run integration tests</skipped></testcase><testcase classname="tests.unit.test_database.TestThreatEventRepositoryIntegration" name="test_threat_deduplication" time="0.000"><skipped type="pytest.skip" message="Database not available - set DATABASE_URL to run integration tests">/home/runner/work/PrivaseeAI.Security/PrivaseeAI.Security/tests/unit/test_database.py:205: Database not available - set DATABASE_URL to run integration tests</skipped></testcase><testcase classname="tests.unit.test_database.TestThreatEventRepositoryIntegration" name="test_get_threats_last_n_days_grouped_by_severity" time="0.000"><skipped type="pytest.skip" message="Database not available - set DATABASE_URL to run integration tests">/home/runner/work/PrivaseeAI.Security/PrivaseeAI.Security/tests/unit/test_database.py:239: Database not available - set DATABASE_URL to run integration tests</skipped></testcase><testcase classname="tests.unit.test_database.TestThreatEventRepositoryIntegration" name="test_acknowledge_threat" time="0.000"><skipped type="pytest.skip" message="Database not available - set DATABASE_URL to run integration tests">/home/runner/work/PrivaseeAI.Security/PrivaseeAI.Security/tests/unit/test_database.py:268: Database not available - set DATABASE_URL to run integration tests</skipped></testcase><testcase classname="tests.unit.test_database.TestThreatEventRepositoryIntegration" name="test_resolve_threat" time="0.000"><skipped type="pytest.skip" message="Database not available - set DATABASE_URL to run integration tests">/home/runner/work/PrivaseeAI.Security/PrivaseeAI.Security/tests/unit/test_database.py:293: Database not available - set DATABASE_URL to run integration tests</skipped></testcase><testcase classname="tests.unit.test_device_info.TestDeviceInfo" name="test_device_info_creation" time="0.001" /><testcase classname="tests.unit.test_device_info.TestDeviceInfo" name="test_device_info_with_optional_fields" time="0.001" /><testcase classname="tests.unit.test_device_info.TestDeviceInfo" name="test_device_info_to_dict" time="0.001" /><testcase classname="tests.unit.test_device_info.TestDeviceInfo" name="test_device_info_to_dict_with_none_values" time="0.001" /><testcase classname="tests.unit.test_device_info.TestDeviceInfoExtractor" name="test_extractor_initialization" time="0.001" /><testcase classname="tests.unit.test_device_info.TestDeviceInfoExtractor" name="test_extract_device_info" time="0.001" /><testcase classname="tests.unit.test_device_info.TestDeviceInfoExtractor" name="test_extract_device_info_returns_valid_data" time="0.001" /><testcase classname="tests.unit.test_device_info.TestDeviceInfoExtractor" name="test_get_device_id" time="0.001" /><testcase classname="tests.unit.test_device_info.TestDeviceInfoExtractor" name="test_get_device_id_matches_extract" time="0.001" /><testcase classname="tests.unit.test_device_info.TestDeviceInfoExtractor" name="test_validate_backup" time="0.001" /><testcase classname="tests.unit.test_device_info.TestDeviceInfoExtractor" name="test_validate_backup_returns_boolean" time="0.001" /><testcase classname="tests.unit.test_device_info.TestDeviceInfoExtractor" name="test_extractor_with_different_paths" time="0.001" /><testcase classname="tests.unit.test_device_info.TestDeviceInfoExtractor" name="test_extracted_info_has_all_required_fields" time="0.001" /><testcase classname="tests.unit.test_device_info.TestDeviceInfoExtractor" name="test_extracted_info_includes_optional_fields" time="0.001" /><testcase classname="tests.unit.test_file_watcher.TestFileWatcher" name="test_file_watcher_initialization" time="0.001" /><testcase classname="tests.unit.test_file_watcher.TestFileWatcher" name="test_file_watcher_multiple_paths" time="0.001" /><testcase classname="tests.unit.test_file_watcher.TestFileWatcher" name="test_file_watcher_default_interval" time="0.001" /><testcase classname="tests.unit.test_file_watcher.TestFileWatcher" name="test_add_callback" time="0.001" /><testcase classname="tests.unit.test_file_watcher.TestFileWatcher" name="test_add_multiple_callbacks" time="0.001" /><testcase classname="tests.unit.test_file_watcher.TestFileWatcher" name="test_start_watcher" time="0.001" /><testcase classname="tests.unit.test_file_watcher.TestFileWatcher" name="test_stop_watcher" time="0.001" /><testcase classname="tests.unit.test_file_watcher.TestFileWatcher" name="test_check_for_changes_empty_directory" time="0.001" /><testcase classname="tests.unit.test_file_watcher.TestFileWatcher" name="test_check_for_changes_new_file" time="0.001" /><testcase classname="tests.unit.test_file_watcher.TestFileWatcher" name="test_check_for_changes_ignores_existing_files" time="0.001" /><testcase classname="tests.unit.test_file_watcher.TestFileWatcher" name="test_run_once" time="0.001" /><testcase classname="tests.unit.test_file_watcher.TestFileWatcher" name="test_run_once_no_changes" time="0.001" /><testcase classname="tests.unit.test_file_watcher.TestFileWatcher" name="test_watch_nonexistent_directory" time="0.001" /><testcase classname="tests.unit.test_file_watcher.TestFileWatcher" name="test_is_running_property" time="0.001" /><testcase classname="tests.unit.test_file_watcher.TestFileWatcher" name="test_watch_multiple_directories" time="0.001" /><testcase classname="tests.unit.test_launchd_service" name="test_plist_file_exists" time="0.001" /><testcase classname="tests.unit.test_launchd_service" name="test_plist_is_valid_xml" time="0.001" /><testcase classname="tests.unit.test_launchd_service" name="test_plist_has_required_keys" time="0.001" /><testcase classname="tests.unit.test_launchd_service" name="test_plist_program_arguments" time="0.001" /><testcase classname="tests.unit.test_launchd_service" name="test_orchestrator_has_main_block" time="0.001" /><testcase classname="tests.unit.test_launchd_service" name="test_orchestrator_can_be_imported" time="0.001" /><testcase classname="tests.unit.test_launchd_service" name="test_daemon_module_exists" time="0.001" /><testcase classname="tests.unit.test_launchd_service" name="test_launchd_guide_exists" time="0.001" /><testcase classname="tests.unit.test_launchd_service" name="test_orchestrator_module_can_run" time="2.007" /><testcase classname="tests.unit.test_logger.TestJSONFormatter" name="test_format_basic_log" time="0.001" /><testcase classname="tests.unit.test_logger.TestJSONFormatter" name="test_format_includes_timestamp" time="0.001" /><testcase classname="tests.unit.test_logger.TestSetupLogger" name="test_setup_logger_default_params" time="0.001" /><testcase classname="tests.unit.test_logger.TestSetupLogger" name="test_setup_logger_custom_name" time="0.001" /><testcase classname="tests.unit.test_logger.TestSetupLogger" name="test_setup_logger_custom_level" time="0.001" /><testcase classname="tests.unit.test_logger.TestSetupLogger" name="test_setup_logger_text_format" time="0.001" /><testcase classname="tests.unit.test_logger.TestSetupLogger" name="test_setup_logger_json_format" time="0.001" /><testcase classname="tests.unit.test_logger.TestSetupLogger" name="test_setup_logger_with_file" time="0.001" /><testcase classname="tests.unit.test_logger.TestSetupLogger" name="test_setup_logger_clears_existing_handlers" time="0.001" /><testcase classname="tests.unit.test_logger.TestSetupLogger" name="test_setup_logger_levels" time="0.001" /><testcase classname="tests.unit.test_logger.TestGetLogger" name="test_get_logger_default" time="0.001" /><testcase classname="tests.unit.test_logger.TestGetLogger" name="test_get_logger_custom_name" time="0.001" /><testcase classname="tests.unit.test_logger.TestGetLogger" name="test_get_logger_returns_same_instance" time="0.001" /><testcase classname="tests.unit.test_logger.TestProductionLogger" name="test_setup_production_logger_creates_log_files" time="0.003" /><testcase classname="tests.unit.test_logger.TestProductionLogger" name="test_production_logger_json_format" time="0.002" /><testcase classname="tests.unit.test_logger.TestProductionLogger" name="test_production_logger_with_rich_console" time="0.024" /><testcase classname="tests.unit.test_logger.TestProductionLogger" name="test_production_logger_rotation_ready" time="0.001" /><testcase classname="tests.unit.test_logger.TestProductionLogger" name="test_production_logger_fallback_to_local_logs" time="0.001" /><testcase classname="tests.unit.test_logger.TestLogRotation" name="test_size_based_rotation" time="0.026" /><testcase classname="tests.unit.test_logger.TestLogRotation" name="test_gzip_compression_on_rotation" time="0.023" /><testcase classname="tests.unit.test_logger.TestLogRotation" name="test_retention_policy" time="0.088" /><testcase classname="tests.unit.test_logger.TestStructlog" name="test_configure_structlog_development" time="0.001" /><testcase classname="tests.unit.test_logger.TestStructlog" name="test_configure_structlog_production" time="0.001" /><testcase classname="tests.unit.test_logger.TestStructlog" name="test_get_structlog" time="0.001" /><testcase classname="tests.unit.test_logger.TestCustomJsonFormatter" name="test_custom_json_formatter_fields" time="0.001" /><testcase classname="tests.unit.test_main.TestHealthCheck" name="test_health_check_success" time="0.001" /><testcase classname="tests.unit.test_main.TestHealthCheck" name="test_health_check_failure_config_error" time="0.001" /><testcase classname="tests.unit.test_main.TestHealthCheck" name="test_health_check_failure_import_error" time="0.001" /><testcase classname="tests.unit.test_main.TestHealthCheck" name="test_health_check_prints_error_on_failure" time="0.002" /><testcase classname="tests.unit.test_orchestrator.TestOrchestratorShutdown" name="test_graceful_shutdown_cancels_monitors" time="0.109" /><testcase classname="tests.unit.test_orchestrator.TestOrchestratorShutdown" name="test_shutdown_waits_for_pending_alerts" time="0.207" /><testcase classname="tests.unit.test_orchestrator.TestOrchestratorShutdown" name="test_shutdown_saves_state" time="0.004" /><testcase classname="tests.unit.test_orchestrator.TestStatePersistence" name="test_save_state_creates_file" time="0.002" /><testcase classname="tests.unit.test_orchestrator.TestStatePersistence" name="test_save_state_correct_format" time="0.002" /><testcase classname="tests.unit.test_orchestrator.TestStatePersistence" name="test_restore_state_loads_data" time="0.002" /><testcase classname="tests.unit.test_orchestrator.TestStatePersistence" name="test_restore_state_handles_missing_file" time="0.002" /><testcase classname="tests.unit.test_orchestrator.TestStatePersistence" name="test_startup_restores_state" time="0.004" /><testcase classname="tests.unit.test_orchestrator.TestExponentialBackoff" name="test_vpn_monitor_retries_with_backoff" time="0.013" /><testcase classname="tests.unit.test_orchestrator.TestExponentialBackoff" name="test_carrier_monitor_retries_with_backoff" time="0.203" /><testcase classname="tests.unit.test_orchestrator.TestExponentialBackoff" name="test_vpn_monitor_exponential_backoff_on_errors" time="0.304" /><testcase classname="tests.unit.test_orchestrator.TestSignalHandling" name="test_daemon_handles_cancellation" time="0.105" /><testcase classname="tests.unit.test_orchestrator.TestAlertQueue" name="test_alerts_are_queued" time="0.003" /><testcase classname="tests.unit.test_orchestrator.TestAlertQueue" name="test_drain_alerts_waits_for_completion" time="0.005" /></testsuite></testsuites>