=== RUN TestApplyClusterAwareness === RUN TestApplyClusterAwareness/Subnet_with_existing_cluster_nodes_gets_bonus === RUN TestApplyClusterAwareness/Subnet_without_existing_nodes_gets_penalty === RUN TestApplyClusterAwareness/No_cluster_information_returns_base_score === RUN TestApplyClusterAwareness/Multiple_nodes_in_subnet_increases_bonus --- PASS: TestApplyClusterAwareness (0.00s) --- PASS: TestApplyClusterAwareness/Subnet_with_existing_cluster_nodes_gets_bonus (0.00s) --- PASS: TestApplyClusterAwareness/Subnet_without_existing_nodes_gets_penalty (0.00s) --- PASS: TestApplyClusterAwareness/No_cluster_information_returns_base_score (0.00s) --- PASS: TestApplyClusterAwareness/Multiple_nodes_in_subnet_increases_bonus (0.00s) === RUN TestGetExistingClusterSubnets === RUN TestGetExistingClusterSubnets/No_Kubernetes_client_returns_empty_map === RUN TestGetExistingClusterSubnets/Extract_subnets_from_nodes_with_various_configurations === RUN TestGetExistingClusterSubnets/Handle_Kubernetes_API_errors_gracefully --- PASS: TestGetExistingClusterSubnets (0.00s) --- PASS: TestGetExistingClusterSubnets/No_Kubernetes_client_returns_empty_map (0.00s) --- PASS: TestGetExistingClusterSubnets/Extract_subnets_from_nodes_with_various_configurations (0.00s) --- PASS: TestGetExistingClusterSubnets/Handle_Kubernetes_API_errors_gracefully (0.00s) === RUN TestExtractSubnetFromNode === RUN TestExtractSubnetFromNode/No_extractable_subnet_information === RUN TestExtractSubnetFromNode/Node_with_only_external_IP --- PASS: TestExtractSubnetFromNode (0.00s) --- PASS: TestExtractSubnetFromNode/No_extractable_subnet_information (0.00s) --- PASS: TestExtractSubnetFromNode/Node_with_only_external_IP (0.00s) === RUN TestParseSubnetFromProviderID === RUN TestParseSubnetFromProviderID/malformed_provider_ID_-_wrong_prefix === RUN TestParseSubnetFromProviderID/malformed_provider_ID_-_missing_parts === RUN TestParseSubnetFromProviderID/empty_provider_ID === RUN TestParseSubnetFromProviderID/provider_ID_with_only_slashes --- PASS: TestParseSubnetFromProviderID (0.00s) --- PASS: TestParseSubnetFromProviderID/malformed_provider_ID_-_wrong_prefix (0.00s) --- PASS: TestParseSubnetFromProviderID/malformed_provider_ID_-_missing_parts (0.00s) --- PASS: TestParseSubnetFromProviderID/empty_provider_ID (0.00s) --- PASS: TestParseSubnetFromProviderID/provider_ID_with_only_slashes (0.00s) === RUN TestFindSubnetByIP === RUN TestFindSubnetByIP/valid_IPv4_address === RUN TestFindSubnetByIP/valid_IPv6_address === RUN TestFindSubnetByIP/invalid_IP_address === RUN TestFindSubnetByIP/empty_IP_address === RUN TestFindSubnetByIP/localhost_IP --- PASS: TestFindSubnetByIP (0.00s) --- PASS: TestFindSubnetByIP/valid_IPv4_address (0.00s) --- PASS: TestFindSubnetByIP/valid_IPv6_address (0.00s) --- PASS: TestFindSubnetByIP/invalid_IP_address (0.00s) --- PASS: TestFindSubnetByIP/empty_IP_address (0.00s) --- PASS: TestFindSubnetByIP/localhost_IP (0.00s) === RUN TestGetSubnetForInstance === RUN TestGetSubnetForInstance/nil_client_returns_empty === RUN TestGetSubnetForInstance/empty_instance_ID --- PASS: TestGetSubnetForInstance (0.00s) --- PASS: TestGetSubnetForInstance/nil_client_returns_empty (0.00s) --- PASS: TestGetSubnetForInstance/empty_instance_ID (0.00s) === RUN TestClusterAwarenessIntegration === RUN TestClusterAwarenessIntegration/Real-world_scenario:_cluster-aware_subnet_selection cluster_awareness_test.go:357: Cluster subnet score: 157.19 cluster_awareness_test.go:358: Isolated subnet score: 91.48 === RUN TestClusterAwarenessIntegration/Multi-zone_cluster_awareness cluster_awareness_test.go:431: Zone2 cluster subnet scores higher (128.59) than zone1 (119.06) due to more available IPs --- PASS: TestClusterAwarenessIntegration (0.00s) --- PASS: TestClusterAwarenessIntegration/Real-world_scenario:_cluster-aware_subnet_selection (0.00s) --- PASS: TestClusterAwarenessIntegration/Multi-zone_cluster_awareness (0.00s) === RUN TestSubnetNetworkValidation === RUN TestSubnetNetworkValidation/CIDR_validation_helper === RUN TestSubnetNetworkValidation/CIDR_validation_helper/10.240.1.100_in_10.240.1.0/24 === RUN TestSubnetNetworkValidation/CIDR_validation_helper/10.240.1.255_in_10.240.1.0/24 === RUN TestSubnetNetworkValidation/CIDR_validation_helper/10.240.2.100_in_10.240.1.0/24 === RUN TestSubnetNetworkValidation/CIDR_validation_helper/192.168.1.1_in_192.168.0.0/16 === RUN TestSubnetNetworkValidation/CIDR_validation_helper/172.16.0.1_in_192.168.0.0/16 === RUN TestSubnetNetworkValidation/CIDR_validation_helper/invalid-ip_in_10.240.1.0/24 === RUN TestSubnetNetworkValidation/Subnet_network_isolation_detection cluster_awareness_test.go:500: API server 10.243.65.4 reachable from cluster subnet 10.243.65.0/24: true cluster_awareness_test.go:502: API server 10.243.65.4 reachable from isolated subnet 10.243.64.0/24: false --- PASS: TestSubnetNetworkValidation (0.00s) --- PASS: TestSubnetNetworkValidation/CIDR_validation_helper (0.00s) --- PASS: TestSubnetNetworkValidation/CIDR_validation_helper/10.240.1.100_in_10.240.1.0/24 (0.00s) --- PASS: TestSubnetNetworkValidation/CIDR_validation_helper/10.240.1.255_in_10.240.1.0/24 (0.00s) --- PASS: TestSubnetNetworkValidation/CIDR_validation_helper/10.240.2.100_in_10.240.1.0/24 (0.00s) --- PASS: TestSubnetNetworkValidation/CIDR_validation_helper/192.168.1.1_in_192.168.0.0/16 (0.00s) --- PASS: TestSubnetNetworkValidation/CIDR_validation_helper/172.16.0.1_in_192.168.0.0/16 (0.00s) --- PASS: TestSubnetNetworkValidation/CIDR_validation_helper/invalid-ip_in_10.240.1.0/24 (0.00s) --- PASS: TestSubnetNetworkValidation/Subnet_network_isolation_detection (0.00s) === RUN TestProvider_Creation --- PASS: TestProvider_Creation (0.00s) === RUN TestConvertVPCSubnetToSubnetInfo --- PASS: TestConvertVPCSubnetToSubnetInfo (0.00s) === RUN TestConvertVPCSubnetToSubnetInfo_EdgeCases === RUN TestConvertVPCSubnetToSubnetInfo_EdgeCases/subnet_with_nil_values === RUN TestConvertVPCSubnetToSubnetInfo_EdgeCases/subnet_with_partial_data === RUN TestConvertVPCSubnetToSubnetInfo_EdgeCases/subnet_with_zero_available_IPs --- PASS: TestConvertVPCSubnetToSubnetInfo_EdgeCases (0.00s) --- PASS: TestConvertVPCSubnetToSubnetInfo_EdgeCases/subnet_with_nil_values (0.00s) --- PASS: TestConvertVPCSubnetToSubnetInfo_EdgeCases/subnet_with_partial_data (0.00s) --- PASS: TestConvertVPCSubnetToSubnetInfo_EdgeCases/subnet_with_zero_available_IPs (0.00s) === RUN TestCalculateSubnetScore === RUN TestCalculateSubnetScore/high_capacity_available_subnet === RUN TestCalculateSubnetScore/low_capacity_subnet === RUN TestCalculateSubnetScore/perfect_subnet_-_all_IPs_available --- PASS: TestCalculateSubnetScore (0.00s) --- PASS: TestCalculateSubnetScore/high_capacity_available_subnet (0.00s) --- PASS: TestCalculateSubnetScore/low_capacity_subnet (0.00s) --- PASS: TestCalculateSubnetScore/perfect_subnet_-_all_IPs_available (0.00s) === RUN TestVPCSubnetProvider_Interface === RUN TestVPCSubnetProvider_Interface/NewProvider === RUN TestVPCSubnetProvider_Interface/SelectSubnets_with_nil_client === RUN TestVPCSubnetProvider_Interface/ListSubnets_with_nil_client === RUN TestVPCSubnetProvider_Interface/GetSubnet_with_nil_client --- PASS: TestVPCSubnetProvider_Interface (0.00s) --- PASS: TestVPCSubnetProvider_Interface/NewProvider (0.00s) --- PASS: TestVPCSubnetProvider_Interface/SelectSubnets_with_nil_client (0.00s) --- PASS: TestVPCSubnetProvider_Interface/ListSubnets_with_nil_client (0.00s) --- PASS: TestVPCSubnetProvider_Interface/GetSubnet_with_nil_client (0.00s) === RUN TestSubnetSelection_NetworkConnectivity === RUN TestSubnetSelection_NetworkConnectivity/cluster_nodes_in_first-second_subnet_scenario provider_test.go:300: BUG: Auto-selection algorithm prefers isolated subnet (score: 96.48) over cluster subnet (score: 67.19) provider_test.go:302: This is why new nodes cannot join the cluster - they're placed in isolated network === RUN TestSubnetSelection_NetworkConnectivity/subnet_selection_should_prioritize_cluster_connectivity === RUN TestSubnetSelection_NetworkConnectivity/multi-zone_cluster_subnet_distribution --- PASS: TestSubnetSelection_NetworkConnectivity (0.00s) --- PASS: TestSubnetSelection_NetworkConnectivity/cluster_nodes_in_first-second_subnet_scenario (0.00s) --- PASS: TestSubnetSelection_NetworkConnectivity/subnet_selection_should_prioritize_cluster_connectivity (0.00s) --- PASS: TestSubnetSelection_NetworkConnectivity/multi-zone_cluster_subnet_distribution (0.00s) === RUN TestSubnetInfo_Structure --- PASS: TestSubnetInfo_Structure (0.00s) === RUN TestSubnetScore_Struct --- PASS: TestSubnetScore_Struct (0.00s) === RUN TestSubnetFiltering_Logic === RUN TestSubnetFiltering_Logic/filter_by_state === RUN TestSubnetFiltering_Logic/filter_by_minimum_available_IPs --- PASS: TestSubnetFiltering_Logic (0.00s) --- PASS: TestSubnetFiltering_Logic/filter_by_state (0.00s) --- PASS: TestSubnetFiltering_Logic/filter_by_minimum_available_IPs (0.00s) === RUN TestSubnetSelectionLogic === RUN TestSubnetSelectionLogic/balanced_strategy === RUN TestSubnetSelectionLogic/availability_first --- PASS: TestSubnetSelectionLogic (0.00s) --- PASS: TestSubnetSelectionLogic/balanced_strategy (0.00s) --- PASS: TestSubnetSelectionLogic/availability_first (0.00s) === RUN TestPlacementStrategies --- PASS: TestPlacementStrategies (0.00s) === RUN TestCalculateSubnetScore_Enhanced === RUN TestCalculateSubnetScore_Enhanced/high_capacity_subnet_with_good_availability === RUN TestCalculateSubnetScore_Enhanced/worst_subnet_-_no_IPs_available --- PASS: TestCalculateSubnetScore_Enhanced (0.00s) --- PASS: TestCalculateSubnetScore_Enhanced/high_capacity_subnet_with_good_availability (0.00s) --- PASS: TestCalculateSubnetScore_Enhanced/worst_subnet_-_no_IPs_available (0.00s) === RUN TestProviderWithCache --- PASS: TestProviderWithCache (0.00s) === RUN TestProvider_NewProvider === RUN TestProvider_NewProvider/successful_creation === RUN TestProvider_NewProvider/nil_client --- PASS: TestProvider_NewProvider (0.00s) --- PASS: TestProvider_NewProvider/successful_creation (0.00s) --- PASS: TestProvider_NewProvider/nil_client (0.00s) === RUN TestProvider_Interface --- PASS: TestProvider_Interface (0.00s) === RUN TestProvider_MethodSignatures --- PASS: TestProvider_MethodSignatures (0.00s) PASS ok github.com/kubernetes-sigs/karpenter-provider-ibm-cloud/pkg/providers/vpc/subnet 1.081s