@@ -2648,43 +2648,61 @@ def initialize_console_logger_mock(mocker):
26482648
26492649
26502650@pytest .mark .parametrize (
2651- "current_replacing_nodes, node, instance, current_time, expected_result" ,
2651+ "current_replacing_nodes, node, instance, current_time, max_count, expected_result" ,
26522652 [
26532653 (
26542654 set (),
26552655 StaticNode ("queue1-st-c5xlarge-1" , "ip-1" , "hostname" , "IDLE+CLOUD" , "queue1" ),
26562656 EC2Instance ("id-1" , "ip-1" , "hostname" , {"ip-1" }, datetime (2020 , 1 , 1 , 0 , 0 , 0 )),
26572657 datetime (2020 , 1 , 1 , 0 , 0 , 29 ),
2658+ 0 ,
26582659 False ,
26592660 ),
26602661 (
26612662 {"queue1-st-c5xlarge-1" },
26622663 StaticNode ("queue1-st-c5xlarge-1" , "ip-1" , "hostname" , "IDLE+CLOUD" , "queue1" ),
26632664 None ,
26642665 datetime (2020 , 1 , 1 , 0 , 0 , 29 ),
2666+ 0 ,
26652667 False ,
26662668 ),
26672669 (
26682670 {"queue1-st-c5xlarge-1" },
26692671 StaticNode ("queue1-st-c5xlarge-1" , "ip-1" , "hostname" , "DOWN+CLOUD" , "queue1" ),
26702672 EC2Instance ("id-1" , "ip-1" , "hostname" , {"ip-1" }, datetime (2020 , 1 , 1 , 0 , 0 , 0 )),
26712673 datetime (2020 , 1 , 1 , 0 , 0 , 29 ),
2674+ 0 ,
26722675 True ,
26732676 ),
26742677 (
26752678 {"queue1-st-c5xlarge-1" },
26762679 StaticNode ("queue1-st-c5xlarge-1" , "ip-1" , "hostname" , "IDLE+CLOUD" , "queue1" ),
26772680 EC2Instance ("id-1" , "ip-1" , "hostname" , {"ip-1" }, datetime (2020 , 1 , 1 , 0 , 0 , 0 )),
26782681 datetime (2020 , 1 , 1 , 0 , 0 , 30 ),
2682+ 0 ,
26792683 False ,
26802684 ),
2685+ (
2686+ {"queue1-st-c5xlarge-1" },
2687+ StaticNode ("queue1-st-c5xlarge-1" , "ip-1" , "hostname" , "IDLE+CLOUD" , "queue1" ),
2688+ None ,
2689+ datetime (2020 , 1 , 1 , 0 , 0 , 30 ),
2690+ 1 ,
2691+ True ,
2692+ ),
2693+ ],
2694+ ids = [
2695+ "not_in_replacement" ,
2696+ "no-backing-instance" ,
2697+ "in_replacement" ,
2698+ "timeout" ,
2699+ "no-backing-instance-with-max-count" ,
26812700 ],
2682- ids = ["not_in_replacement" , "no-backing-instance" , "in_replacement" , "timeout" ],
26832701)
26842702@pytest .mark .usefixtures (
26852703 "initialize_instance_manager_mock" , "initialize_executor_mock" , "initialize_console_logger_mock"
26862704)
2687- def test_is_node_being_replaced (current_replacing_nodes , node , instance , current_time , expected_result ):
2705+ def test_is_node_being_replaced (current_replacing_nodes , node , instance , current_time , max_count , expected_result ):
26882706 mock_sync_config = SimpleNamespace (
26892707 node_replacement_timeout = 30 ,
26902708 insufficient_capacity_timeout = 3 ,
@@ -2693,7 +2711,7 @@ def test_is_node_being_replaced(current_replacing_nodes, node, instance, current
26932711 region = "region" ,
26942712 boto3_config = None ,
26952713 fleet_config = {},
2696- ec2_instance_missing_max_count = 0 ,
2714+ ec2_instance_missing_max_count = max_count ,
26972715 )
26982716 cluster_manager = ClusterManager (mock_sync_config )
26992717 cluster_manager ._current_time = current_time
@@ -2703,24 +2721,34 @@ def test_is_node_being_replaced(current_replacing_nodes, node, instance, current
27032721
27042722
27052723@pytest .mark .parametrize (
2706- "node, instance, current_node_in_replacement, is_replacement_timeout" ,
2724+ "node, instance, current_node_in_replacement, max_count, is_replacement_timeout" ,
27072725 [
27082726 (
27092727 StaticNode ("queue1-st-c5xlarge-1" , "ip-1" , "hostname" , "DOWN+CLOUD+NOT_RESPONDING" , "queue1" ),
27102728 None ,
27112729 {"queue1-st-c5xlarge-1" },
2730+ 0 ,
2731+ False ,
2732+ ),
2733+ (
2734+ StaticNode ("queue1-st-c5xlarge-1" , "ip-1" , "hostname" , "DOWN+CLOUD+NOT_RESPONDING" , "queue1" ),
2735+ None ,
2736+ {"queue1-st-c5xlarge-1" },
2737+ 1 ,
27122738 False ,
27132739 ),
27142740 (
27152741 StaticNode ("queue1-st-c5xlarge-1" , "ip-1" , "hostname" , "DOWN+CLOUD+NOT_RESPONDING" , "queue1" ),
27162742 EC2Instance ("id-1" , "ip-1" , "hostname" , {"ip-1" }, datetime (2020 , 1 , 1 , 0 , 0 , 0 )),
27172743 {"queue1-st-c5xlarge-1" },
2744+ 0 ,
27182745 True ,
27192746 ),
27202747 (
27212748 DynamicNode ("queue1-dy-c5xlarge-1" , "ip-1" , "hostname" , "MIXED+CLOUD+NOT_RESPONDING+POWERING_UP" , "queue1" ),
27222749 None ,
27232750 {"some_node_in_replacement" },
2751+ 0 ,
27242752 False ,
27252753 ),
27262754 (
@@ -2733,20 +2761,22 @@ def test_is_node_being_replaced(current_replacing_nodes, node, instance, current
27332761 ),
27342762 EC2Instance ("id-1" , "ip-1" , "hostname" , {"ip-1" }, datetime (2020 , 1 , 1 , 0 , 0 , 0 )),
27352763 {"some_node_in_replacement" },
2764+ 0 ,
27362765 False ,
27372766 ),
27382767 (
27392768 StaticNode ("queue1-st-c5xlarge-1" , "ip-1" , "hostname" , "DOWN+CLOUD+NOT_RESPONDING" , "queue1" ),
27402769 EC2Instance ("id-1" , "ip-1" , "hostname" , {"ip-1" }, datetime (2020 , 1 , 1 , 0 , 0 , 0 )),
27412770 {"some_node_in_replacement" },
2771+ 0 ,
27422772 False ,
27432773 ),
27442774 ],
27452775)
27462776@pytest .mark .usefixtures (
27472777 "initialize_instance_manager_mock" , "initialize_executor_mock" , "initialize_console_logger_mock"
27482778)
2749- def test_is_node_replacement_timeout (node , current_node_in_replacement , is_replacement_timeout , instance ):
2779+ def test_is_node_replacement_timeout (node , current_node_in_replacement , max_count , is_replacement_timeout , instance ):
27502780 node .instance = instance
27512781 mock_sync_config = SimpleNamespace (
27522782 node_replacement_timeout = 30 ,
0 commit comments