Skip to content

Commit 1bac4e2

Browse files
committed
test: add tests for agent pool add and update decorators
TODO: add scenario tests
1 parent 7925023 commit 1bac4e2

File tree

1 file changed

+293
-0
lines changed

1 file changed

+293
-0
lines changed

src/aks-preview/azext_aks_preview/tests/latest/test_agentpool_decorator.py

Lines changed: 293 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1830,6 +1830,135 @@ def common_construct_agentpool_profile_preview_with_managed_system_mode(self):
18301830
self.assertIsNone(attr_value,
18311831
f"Attribute '{attr_name}' should be None but was '{attr_value}' when mode is ManagedSystem")
18321832

1833+
def common_set_up_upgrade_strategy(self):
1834+
# Test case 1: No upgrade strategy provided
1835+
dec_1 = AKSPreviewAgentPoolAddDecorator(
1836+
self.cmd,
1837+
self.client,
1838+
{},
1839+
self.resource_type,
1840+
self.agentpool_decorator_mode,
1841+
)
1842+
# fail on passing the wrong agentpool object
1843+
with self.assertRaises(CLIInternalError):
1844+
dec_1.set_up_upgrade_strategy(None)
1845+
1846+
agentpool_1 = self.create_initialized_agentpool_instance(restore_defaults=False)
1847+
dec_1.context.attach_agentpool(agentpool_1)
1848+
dec_agentpool_1 = dec_1.set_up_upgrade_strategy(agentpool_1)
1849+
dec_agentpool_1 = self._restore_defaults_in_agentpool(dec_agentpool_1)
1850+
ground_truth_agentpool_1 = self.create_initialized_agentpool_instance()
1851+
self.assertEqual(dec_agentpool_1, ground_truth_agentpool_1)
1852+
1853+
# Test case 2: RollingUpdate upgrade strategy provided
1854+
dec_2 = AKSPreviewAgentPoolAddDecorator(
1855+
self.cmd,
1856+
self.client,
1857+
{"upgrade_strategy": "RollingUpdate"},
1858+
self.resource_type,
1859+
self.agentpool_decorator_mode,
1860+
)
1861+
agentpool_2 = self.create_initialized_agentpool_instance(restore_defaults=False)
1862+
dec_2.context.attach_agentpool(agentpool_2)
1863+
dec_agentpool_2 = dec_2.set_up_upgrade_strategy(agentpool_2)
1864+
dec_agentpool_2 = self._restore_defaults_in_agentpool(dec_agentpool_2)
1865+
ground_truth_agentpool_2 = self.create_initialized_agentpool_instance(
1866+
upgrade_strategy="RollingUpdate"
1867+
)
1868+
self.assertEqual(dec_agentpool_2, ground_truth_agentpool_2)
1869+
1870+
# Test case 3: BlueGreen upgrade strategy provided
1871+
dec_3 = AKSPreviewAgentPoolAddDecorator(
1872+
self.cmd,
1873+
self.client,
1874+
{"upgrade_strategy": "BlueGreen"},
1875+
self.resource_type,
1876+
self.agentpool_decorator_mode,
1877+
)
1878+
agentpool_3 = self.create_initialized_agentpool_instance(restore_defaults=False)
1879+
dec_3.context.attach_agentpool(agentpool_3)
1880+
dec_agentpool_3 = dec_3.set_up_upgrade_strategy(agentpool_3)
1881+
dec_agentpool_3 = self._restore_defaults_in_agentpool(dec_agentpool_3)
1882+
ground_truth_agentpool_3 = self.create_initialized_agentpool_instance(
1883+
upgrade_strategy="BlueGreen"
1884+
)
1885+
self.assertEqual(dec_agentpool_3, ground_truth_agentpool_3)
1886+
1887+
def common_set_up_blue_green_upgrade_settings(self):
1888+
# scenario 1: no blue-green parameters
1889+
dec_1 = AKSPreviewAgentPoolAddDecorator(
1890+
self.cmd,
1891+
self.client,
1892+
{},
1893+
self.resource_type,
1894+
self.agentpool_decorator_mode,
1895+
)
1896+
agentpool_1 = self.create_initialized_agentpool_instance()
1897+
agentpool_1 = self._remove_defaults_in_agentpool(agentpool_1)
1898+
dec_1.context.attach_agentpool(agentpool_1)
1899+
dec_agentpool_1 = dec_1.set_up_blue_green_upgrade_settings(agentpool_1)
1900+
dec_agentpool_1 = self._restore_defaults_in_agentpool(dec_agentpool_1)
1901+
ground_truth_agentpool_1 = self.create_initialized_agentpool_instance(
1902+
upgrade_settings_blue_green=self.models.AgentPoolBlueGreenUpgradeSettings()
1903+
)
1904+
self.assertEqual(dec_agentpool_1, ground_truth_agentpool_1)
1905+
1906+
# scenario 2: with all blue-green parameters
1907+
dec_2 = AKSPreviewAgentPoolAddDecorator(
1908+
self.cmd,
1909+
self.client,
1910+
{
1911+
"drain_batch_size": "5",
1912+
"drain_timeout_bg": 15,
1913+
"batch_soak_duration": 30,
1914+
"final_soak_duration": 60,
1915+
},
1916+
self.resource_type,
1917+
self.agentpool_decorator_mode,
1918+
)
1919+
agentpool_2 = self.create_initialized_agentpool_instance()
1920+
agentpool_2 = self._remove_defaults_in_agentpool(agentpool_2)
1921+
dec_2.context.attach_agentpool(agentpool_2)
1922+
dec_agentpool_2 = dec_2.set_up_blue_green_upgrade_settings(agentpool_2)
1923+
dec_agentpool_2 = self._restore_defaults_in_agentpool(dec_agentpool_2)
1924+
1925+
ground_truth_blue_green_settings = self.models.AgentPoolBlueGreenUpgradeSettings()
1926+
ground_truth_blue_green_settings.drain_batch_size = "5"
1927+
ground_truth_blue_green_settings.drain_timeout_in_minutes = 15
1928+
ground_truth_blue_green_settings.batch_soak_duration_in_minutes = 30
1929+
ground_truth_blue_green_settings.final_soak_duration_in_minutes = 60
1930+
1931+
ground_truth_agentpool_2 = self.create_initialized_agentpool_instance(
1932+
upgrade_settings_blue_green=ground_truth_blue_green_settings
1933+
)
1934+
self.assertEqual(dec_agentpool_2, ground_truth_agentpool_2)
1935+
1936+
# scenario 3: with partial blue-green parameters
1937+
dec_3 = AKSPreviewAgentPoolAddDecorator(
1938+
self.cmd,
1939+
self.client,
1940+
{
1941+
"drain_timeout_bg": 20,
1942+
"final_soak_duration": 45,
1943+
},
1944+
self.resource_type,
1945+
self.agentpool_decorator_mode,
1946+
)
1947+
agentpool_3 = self.create_initialized_agentpool_instance()
1948+
agentpool_3 = self._remove_defaults_in_agentpool(agentpool_3)
1949+
dec_3.context.attach_agentpool(agentpool_3)
1950+
dec_agentpool_3 = dec_3.set_up_blue_green_upgrade_settings(agentpool_3)
1951+
dec_agentpool_3 = self._restore_defaults_in_agentpool(dec_agentpool_3)
1952+
1953+
ground_truth_blue_green_settings_3 = self.models.AgentPoolBlueGreenUpgradeSettings()
1954+
ground_truth_blue_green_settings_3.drain_timeout_in_minutes = 20
1955+
ground_truth_blue_green_settings_3.final_soak_duration_in_minutes = 45
1956+
1957+
ground_truth_agentpool_3 = self.create_initialized_agentpool_instance(
1958+
upgrade_settings_blue_green=ground_truth_blue_green_settings_3
1959+
)
1960+
self.assertEqual(dec_agentpool_3, ground_truth_agentpool_3)
1961+
18331962

18341963
class AKSPreviewAgentPoolAddDecoratorStandaloneModeTestCase(
18351964
AKSPreviewAgentPoolAddDecoratorCommonTestCase
@@ -1885,6 +2014,9 @@ def test_set_up_virtual_machines_profile(self):
18852014
def test_set_up_managed_system_mode(self):
18862015
self.common_set_up_managed_system_mode()
18872016

2017+
def test_set_up_upgrade_strategy(self):
2018+
self.common_set_up_upgrade_strategy()
2019+
18882020
def test_construct_agentpool_profile_preview(self):
18892021
import inspect
18902022

@@ -1963,6 +2095,9 @@ def test_construct_agentpool_profile_preview(self):
19632095

19642096
dec_1.context.raw_param.print_usage_statistics()
19652097

2098+
def test_set_up_blue_green_upgrade_settings(self):
2099+
self.common_set_up_blue_green_upgrade_settings()
2100+
19662101
def test_construct_agentpool_profile_preview_with_managed_system_mode(self):
19672102
self.common_construct_agentpool_profile_preview_with_managed_system_mode()
19682103

@@ -2018,6 +2153,9 @@ def test_set_up_virtual_machines_profile(self):
20182153
def test_set_up_managed_system_mode(self):
20192154
self.common_set_up_managed_system_mode()
20202155

2156+
def test_set_up_upgrade_strategy(self):
2157+
self.common_set_up_upgrade_strategy()
2158+
20212159
def test_construct_agentpool_profile_preview(self):
20222160
import inspect
20232161

@@ -2094,6 +2232,9 @@ def test_construct_agentpool_profile_preview(self):
20942232

20952233
dec_1.context.raw_param.print_usage_statistics()
20962234

2235+
def test_set_up_blue_green_upgrade_settings(self):
2236+
self.common_set_up_blue_green_upgrade_settings()
2237+
20972238

20982239
class AKSPreviewAgentPoolUpdateDecoratorCommonTestCase(unittest.TestCase):
20992240
def _remove_defaults_in_agentpool(self, agentpool):
@@ -2402,6 +2543,146 @@ def common_update_fips_image(self):
24022543
with self.assertRaises(MutuallyExclusiveArgumentError):
24032544
dec_3.update_fips_image(agentpool_2)
24042545

2546+
def common_update_upgrade_strategy(self):
2547+
# Test case 1: No upgrade strategy provided (should not change agentpool)
2548+
dec_1 = AKSPreviewAgentPoolUpdateDecorator(
2549+
self.cmd,
2550+
self.client,
2551+
{},
2552+
self.resource_type,
2553+
self.agentpool_decorator_mode,
2554+
)
2555+
# fail on passing the wrong agentpool object
2556+
with self.assertRaises(CLIInternalError):
2557+
dec_1.update_upgrade_strategy(None)
2558+
2559+
agentpool_1 = self.create_initialized_agentpool_instance(
2560+
upgrade_strategy="RollingUpdate"
2561+
)
2562+
dec_1.context.attach_agentpool(agentpool_1)
2563+
dec_agentpool_1 = dec_1.update_upgrade_strategy(agentpool_1)
2564+
ground_truth_agentpool_1 = self.create_initialized_agentpool_instance(
2565+
upgrade_strategy="RollingUpdate"
2566+
)
2567+
self.assertEqual(dec_agentpool_1, ground_truth_agentpool_1)
2568+
2569+
# Test case 2: Update to BlueGreen upgrade strategy
2570+
dec_2 = AKSPreviewAgentPoolUpdateDecorator(
2571+
self.cmd,
2572+
self.client,
2573+
{"upgrade_strategy": "BlueGreen"},
2574+
self.resource_type,
2575+
self.agentpool_decorator_mode,
2576+
)
2577+
agentpool_2 = self.create_initialized_agentpool_instance(
2578+
upgrade_strategy="RollingUpdate"
2579+
)
2580+
dec_2.context.attach_agentpool(agentpool_2)
2581+
dec_agentpool_2 = dec_2.update_upgrade_strategy(agentpool_2)
2582+
ground_truth_agentpool_2 = self.create_initialized_agentpool_instance(
2583+
upgrade_strategy="BlueGreen"
2584+
)
2585+
self.assertEqual(dec_agentpool_2, ground_truth_agentpool_2)
2586+
2587+
# Test case 3: Update to RollingUpdate upgrade strategy
2588+
dec_3 = AKSPreviewAgentPoolUpdateDecorator(
2589+
self.cmd,
2590+
self.client,
2591+
{"upgrade_strategy": "RollingUpdate"},
2592+
self.resource_type,
2593+
self.agentpool_decorator_mode,
2594+
)
2595+
agentpool_3 = self.create_initialized_agentpool_instance(
2596+
upgrade_strategy="BlueGreen"
2597+
)
2598+
dec_3.context.attach_agentpool(agentpool_3)
2599+
dec_agentpool_3 = dec_3.update_upgrade_strategy(agentpool_3)
2600+
ground_truth_agentpool_3 = self.create_initialized_agentpool_instance(
2601+
upgrade_strategy="RollingUpdate"
2602+
)
2603+
self.assertEqual(dec_agentpool_3, ground_truth_agentpool_3)
2604+
2605+
def common_update_blue_green_upgrade_settings(self):
2606+
# Test case 1: Update with no existing blue-green settings
2607+
dec_1 = AKSPreviewAgentPoolUpdateDecorator(
2608+
self.cmd,
2609+
self.client,
2610+
{
2611+
"drain_batch_size": "3",
2612+
"drain_timeout_bg": 10,
2613+
"batch_soak_duration": 25,
2614+
"final_soak_duration": 50,
2615+
},
2616+
self.resource_type,
2617+
self.agentpool_decorator_mode,
2618+
)
2619+
agentpool_1 = self.create_initialized_agentpool_instance()
2620+
dec_1.context.attach_agentpool(agentpool_1)
2621+
dec_agentpool_1 = dec_1.update_blue_green_upgrade_settings(agentpool_1)
2622+
2623+
expected_blue_green_settings_1 = self.models.AgentPoolBlueGreenUpgradeSettings()
2624+
expected_blue_green_settings_1.drain_batch_size = "3"
2625+
expected_blue_green_settings_1.drain_timeout_in_minutes = 10
2626+
expected_blue_green_settings_1.batch_soak_duration_in_minutes = 25
2627+
expected_blue_green_settings_1.final_soak_duration_in_minutes = 50
2628+
2629+
ground_truth_agentpool_1 = self.create_initialized_agentpool_instance(
2630+
upgrade_settings_blue_green=expected_blue_green_settings_1
2631+
)
2632+
self.assertEqual(dec_agentpool_1, ground_truth_agentpool_1)
2633+
2634+
# Test case 2: Update with existing blue-green settings (partial update)
2635+
existing_blue_green_settings = self.models.AgentPoolBlueGreenUpgradeSettings()
2636+
existing_blue_green_settings.drain_batch_size = "5"
2637+
existing_blue_green_settings.drain_timeout_in_minutes = 15
2638+
existing_blue_green_settings.batch_soak_duration_in_minutes = 30
2639+
existing_blue_green_settings.final_soak_duration_in_minutes = 60
2640+
2641+
dec_2 = AKSPreviewAgentPoolUpdateDecorator(
2642+
self.cmd,
2643+
self.client,
2644+
{
2645+
"drain_timeout_bg": 20,
2646+
"final_soak_duration": 45,
2647+
},
2648+
self.resource_type,
2649+
self.agentpool_decorator_mode,
2650+
)
2651+
agentpool_2 = self.create_initialized_agentpool_instance(
2652+
upgrade_settings_blue_green=existing_blue_green_settings
2653+
)
2654+
dec_2.context.attach_agentpool(agentpool_2)
2655+
dec_agentpool_2 = dec_2.update_blue_green_upgrade_settings(agentpool_2)
2656+
2657+
expected_blue_green_settings_2 = self.models.AgentPoolBlueGreenUpgradeSettings()
2658+
expected_blue_green_settings_2.drain_batch_size = "5" # unchanged
2659+
expected_blue_green_settings_2.drain_timeout_in_minutes = 20 # updated
2660+
expected_blue_green_settings_2.batch_soak_duration_in_minutes = 30 # unchanged
2661+
expected_blue_green_settings_2.final_soak_duration_in_minutes = 45 # updated
2662+
2663+
ground_truth_agentpool_2 = self.create_initialized_agentpool_instance(
2664+
upgrade_settings_blue_green=expected_blue_green_settings_2
2665+
)
2666+
self.assertEqual(dec_agentpool_2, ground_truth_agentpool_2)
2667+
2668+
# Test case 3: No blue-green parameters provided (no change)
2669+
dec_3 = AKSPreviewAgentPoolUpdateDecorator(
2670+
self.cmd,
2671+
self.client,
2672+
{},
2673+
self.resource_type,
2674+
self.agentpool_decorator_mode,
2675+
)
2676+
agentpool_3 = self.create_initialized_agentpool_instance(
2677+
upgrade_settings_blue_green=existing_blue_green_settings
2678+
)
2679+
dec_3.context.attach_agentpool(agentpool_3)
2680+
dec_agentpool_3 = dec_3.update_blue_green_upgrade_settings(agentpool_3)
2681+
ground_truth_agentpool_3 = self.create_initialized_agentpool_instance(
2682+
upgrade_settings_blue_green=existing_blue_green_settings
2683+
)
2684+
self.assertEqual(dec_agentpool_3, ground_truth_agentpool_3)
2685+
24052686

24062687
class AKSPreviewAgentPoolUpdateDecoratorStandaloneModeTestCase(
24072688
AKSPreviewAgentPoolUpdateDecoratorCommonTestCase
@@ -2433,6 +2714,12 @@ def test_update_vtpm(self):
24332714
def test_update_fips_image(self):
24342715
self.common_update_fips_image()
24352716

2717+
def test_update_upgrade_strategy(self):
2718+
self.common_update_upgrade_strategy()
2719+
2720+
def test_update_blue_green_upgrade_settings(self):
2721+
self.common_update_blue_green_upgrade_settings()
2722+
24362723
def test_update_agentpool_profile_preview(self):
24372724
import inspect
24382725

@@ -2516,6 +2803,12 @@ def test_update_vtpm(self):
25162803
def test_update_fips_image(self):
25172804
self.common_update_fips_image()
25182805

2806+
def test_update_upgrade_strategy(self):
2807+
self.common_update_upgrade_strategy()
2808+
2809+
def test_update_blue_green_upgrade_settings(self):
2810+
self.common_update_blue_green_upgrade_settings()
2811+
25192812
def test_update_agentpool_profile_preview(self):
25202813
import inspect
25212814

0 commit comments

Comments
 (0)