@@ -2648,43 +2648,61 @@ def initialize_console_logger_mock(mocker):
2648
2648
2649
2649
2650
2650
@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" ,
2652
2652
[
2653
2653
(
2654
2654
set (),
2655
2655
StaticNode ("queue1-st-c5xlarge-1" , "ip-1" , "hostname" , "IDLE+CLOUD" , "queue1" ),
2656
2656
EC2Instance ("id-1" , "ip-1" , "hostname" , {"ip-1" }, datetime (2020 , 1 , 1 , 0 , 0 , 0 )),
2657
2657
datetime (2020 , 1 , 1 , 0 , 0 , 29 ),
2658
+ 0 ,
2658
2659
False ,
2659
2660
),
2660
2661
(
2661
2662
{"queue1-st-c5xlarge-1" },
2662
2663
StaticNode ("queue1-st-c5xlarge-1" , "ip-1" , "hostname" , "IDLE+CLOUD" , "queue1" ),
2663
2664
None ,
2664
2665
datetime (2020 , 1 , 1 , 0 , 0 , 29 ),
2666
+ 0 ,
2665
2667
False ,
2666
2668
),
2667
2669
(
2668
2670
{"queue1-st-c5xlarge-1" },
2669
2671
StaticNode ("queue1-st-c5xlarge-1" , "ip-1" , "hostname" , "DOWN+CLOUD" , "queue1" ),
2670
2672
EC2Instance ("id-1" , "ip-1" , "hostname" , {"ip-1" }, datetime (2020 , 1 , 1 , 0 , 0 , 0 )),
2671
2673
datetime (2020 , 1 , 1 , 0 , 0 , 29 ),
2674
+ 0 ,
2672
2675
True ,
2673
2676
),
2674
2677
(
2675
2678
{"queue1-st-c5xlarge-1" },
2676
2679
StaticNode ("queue1-st-c5xlarge-1" , "ip-1" , "hostname" , "IDLE+CLOUD" , "queue1" ),
2677
2680
EC2Instance ("id-1" , "ip-1" , "hostname" , {"ip-1" }, datetime (2020 , 1 , 1 , 0 , 0 , 0 )),
2678
2681
datetime (2020 , 1 , 1 , 0 , 0 , 30 ),
2682
+ 0 ,
2679
2683
False ,
2680
2684
),
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" ,
2681
2700
],
2682
- ids = ["not_in_replacement" , "no-backing-instance" , "in_replacement" , "timeout" ],
2683
2701
)
2684
2702
@pytest .mark .usefixtures (
2685
2703
"initialize_instance_manager_mock" , "initialize_executor_mock" , "initialize_console_logger_mock"
2686
2704
)
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 ):
2688
2706
mock_sync_config = SimpleNamespace (
2689
2707
node_replacement_timeout = 30 ,
2690
2708
insufficient_capacity_timeout = 3 ,
@@ -2693,7 +2711,7 @@ def test_is_node_being_replaced(current_replacing_nodes, node, instance, current
2693
2711
region = "region" ,
2694
2712
boto3_config = None ,
2695
2713
fleet_config = {},
2696
- ec2_instance_missing_max_count = 0 ,
2714
+ ec2_instance_missing_max_count = max_count ,
2697
2715
)
2698
2716
cluster_manager = ClusterManager (mock_sync_config )
2699
2717
cluster_manager ._current_time = current_time
@@ -2703,24 +2721,34 @@ def test_is_node_being_replaced(current_replacing_nodes, node, instance, current
2703
2721
2704
2722
2705
2723
@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" ,
2707
2725
[
2708
2726
(
2709
2727
StaticNode ("queue1-st-c5xlarge-1" , "ip-1" , "hostname" , "DOWN+CLOUD+NOT_RESPONDING" , "queue1" ),
2710
2728
None ,
2711
2729
{"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 ,
2712
2738
False ,
2713
2739
),
2714
2740
(
2715
2741
StaticNode ("queue1-st-c5xlarge-1" , "ip-1" , "hostname" , "DOWN+CLOUD+NOT_RESPONDING" , "queue1" ),
2716
2742
EC2Instance ("id-1" , "ip-1" , "hostname" , {"ip-1" }, datetime (2020 , 1 , 1 , 0 , 0 , 0 )),
2717
2743
{"queue1-st-c5xlarge-1" },
2744
+ 0 ,
2718
2745
True ,
2719
2746
),
2720
2747
(
2721
2748
DynamicNode ("queue1-dy-c5xlarge-1" , "ip-1" , "hostname" , "MIXED+CLOUD+NOT_RESPONDING+POWERING_UP" , "queue1" ),
2722
2749
None ,
2723
2750
{"some_node_in_replacement" },
2751
+ 0 ,
2724
2752
False ,
2725
2753
),
2726
2754
(
@@ -2733,20 +2761,22 @@ def test_is_node_being_replaced(current_replacing_nodes, node, instance, current
2733
2761
),
2734
2762
EC2Instance ("id-1" , "ip-1" , "hostname" , {"ip-1" }, datetime (2020 , 1 , 1 , 0 , 0 , 0 )),
2735
2763
{"some_node_in_replacement" },
2764
+ 0 ,
2736
2765
False ,
2737
2766
),
2738
2767
(
2739
2768
StaticNode ("queue1-st-c5xlarge-1" , "ip-1" , "hostname" , "DOWN+CLOUD+NOT_RESPONDING" , "queue1" ),
2740
2769
EC2Instance ("id-1" , "ip-1" , "hostname" , {"ip-1" }, datetime (2020 , 1 , 1 , 0 , 0 , 0 )),
2741
2770
{"some_node_in_replacement" },
2771
+ 0 ,
2742
2772
False ,
2743
2773
),
2744
2774
],
2745
2775
)
2746
2776
@pytest .mark .usefixtures (
2747
2777
"initialize_instance_manager_mock" , "initialize_executor_mock" , "initialize_console_logger_mock"
2748
2778
)
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 ):
2750
2780
node .instance = instance
2751
2781
mock_sync_config = SimpleNamespace (
2752
2782
node_replacement_timeout = 30 ,
0 commit comments