From 2559bdf20a1f6b854e1b0049d215345c514db2f6 Mon Sep 17 00:00:00 2001 From: Rob Blafford Date: Wed, 16 Nov 2022 09:41:39 -0500 Subject: [PATCH 1/2] rptest: New license upgrade test - Ensures licenses can be read/written by cluster between versions (cherry picked from commit 1efea4c56872a6c0d7fe32e27d197613a8ea8c79) --- tests/rptest/tests/license_upgrade_test.py | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/tests/rptest/tests/license_upgrade_test.py b/tests/rptest/tests/license_upgrade_test.py index fc491474adfa..90796e3c8f65 100644 --- a/tests/rptest/tests/license_upgrade_test.py +++ b/tests/rptest/tests/license_upgrade_test.py @@ -108,3 +108,41 @@ def test_basic_upgrade(self): # Install license assert self.admin.put_license(license).status_code == 200 + + +class UpgradeMigratingLicenseVersion(RedpandaTest): + """ + Verify that the cluster can interpret licenses between versions + """ + def __init__(self, test_context): + super(UpgradeMigratingLicenseVersion, + self).__init__(test_context=test_context, + num_brokers=3, + si_settings=SISettings()) + self.installer = self.redpanda._installer + self.admin = Admin(self.redpanda) + + def setUp(self): + # 22.2.x is when license went live + self.installer.install(self.redpanda.nodes, (22, 2, 7)) + super(UpgradeMigratingLicenseVersion, self).setUp() + + @cluster(num_nodes=3, log_allow_list=RESTART_LOG_ALLOW_LIST) + def test_license_upgrade(self): + license = sample_license() + if license is None: + self.logger.info( + "Skipping test, REDPANDA_SAMPLE_LICENSE env var not found") + return + + # Upload a license + self.admin.put_license(license) + + # Update all nodes to newest version + self.installer.install(self.redpanda.nodes, RedpandaInstaller.HEAD) + self.redpanda.restart_nodes(self.redpanda.nodes) + _ = wait_for_num_versions(self.redpanda, 1) + + # Attempt to read license written by older version + license = self.admin.get_license() + assert license is not None and license['loaded'] is True From 060d20f5a5d9f3276951eac6af3f18351c192163 Mon Sep 17 00:00:00 2001 From: Rob Blafford Date: Wed, 23 Nov 2022 16:00:33 -0500 Subject: [PATCH 2/2] rptest: Retry get_license() if failed - Fixes: #7363 (cherry picked from commit 246101b26d6f6bfba42c0b01ccf6c03123ad1544) --- tests/rptest/tests/license_upgrade_test.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tests/rptest/tests/license_upgrade_test.py b/tests/rptest/tests/license_upgrade_test.py index 90796e3c8f65..91355f161b02 100644 --- a/tests/rptest/tests/license_upgrade_test.py +++ b/tests/rptest/tests/license_upgrade_test.py @@ -136,7 +136,7 @@ def test_license_upgrade(self): return # Upload a license - self.admin.put_license(license) + assert self.admin.put_license(license).status_code == 200 # Update all nodes to newest version self.installer.install(self.redpanda.nodes, RedpandaInstaller.HEAD) @@ -144,5 +144,11 @@ def test_license_upgrade(self): _ = wait_for_num_versions(self.redpanda, 1) # Attempt to read license written by older version - license = self.admin.get_license() - assert license is not None and license['loaded'] is True + def license_loaded_ok(): + license = self.admin.get_license() + return license is not None and license['loaded'] is True + + wait_until(license_loaded_ok, + timeout_sec=30, + backoff_sec=1, + err_msg="Timeout waiting for license to exist in cluster")