diff --git a/tests/rptest/tests/license_upgrade_test.py b/tests/rptest/tests/license_upgrade_test.py index fc491474adfa..91355f161b02 100644 --- a/tests/rptest/tests/license_upgrade_test.py +++ b/tests/rptest/tests/license_upgrade_test.py @@ -108,3 +108,47 @@ 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 + assert self.admin.put_license(license).status_code == 200 + + # 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 + 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")