From 10245badafc63a090025c97ab82c0696332d34cc Mon Sep 17 00:00:00 2001 From: Denis Rystsov Date: Mon, 11 Jul 2022 19:28:20 -0700 Subject: [PATCH] ducky: move wait_for_num_versions to redpanda_installer --- tests/rptest/services/redpanda_installer.py | 19 +++++++++++++++++++ tests/rptest/tests/upgrade_test.py | 20 +------------------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/tests/rptest/services/redpanda_installer.py b/tests/rptest/services/redpanda_installer.py index fe4cfd1bdc462..e9ab2c2f2cbbf 100644 --- a/tests/rptest/services/redpanda_installer.py +++ b/tests/rptest/services/redpanda_installer.py @@ -9,6 +9,7 @@ import re import requests +from ducktape.utils.util import wait_until # Match any version that may result from a redpanda binary, which may not be a # released version. @@ -16,6 +17,24 @@ VERSION_RE = re.compile(".*v(\\d+)\\.(\\d+)\\.(\\d+).*") +def wait_for_num_versions(redpanda, num_versions): + def get_unique_versions(): + node = redpanda.nodes[0] + brokers_list = \ + str(node.account.ssh_output(f"{redpanda.find_binary('rpk')} redpanda admin brokers list")) + redpanda.logger.debug(brokers_list) + version_re = re.compile("v\\d+\\.\\d+\\.\\d+") + return set(version_re.findall(brokers_list)) + + # NOTE: allow retries, as the version may not be available immediately + # following a restart. + wait_until(lambda: len(get_unique_versions()) == num_versions, + timeout_sec=30) + unique_versions = get_unique_versions() + assert len(unique_versions) == num_versions, unique_versions + return unique_versions + + class RedpandaInstaller: """ Provides mechanisms to install multiple Redpanda binaries on a cluster. diff --git a/tests/rptest/tests/upgrade_test.py b/tests/rptest/tests/upgrade_test.py index e5da152eeb6fb..7745e1ebccaf5 100644 --- a/tests/rptest/tests/upgrade_test.py +++ b/tests/rptest/tests/upgrade_test.py @@ -14,25 +14,7 @@ from rptest.tests.redpanda_test import RedpandaTest from rptest.services.cluster import cluster from rptest.services.redpanda import RESTART_LOG_ALLOW_LIST -from rptest.services.redpanda_installer import RedpandaInstaller - - -def wait_for_num_versions(redpanda, num_versions): - def get_unique_versions(): - node = redpanda.nodes[0] - brokers_list = \ - str(node.account.ssh_output(f"{redpanda.find_binary('rpk')} redpanda admin brokers list")) - redpanda.logger.debug(brokers_list) - version_re = re.compile("v\\d+\\.\\d+\\.\\d+") - return set(version_re.findall(brokers_list)) - - # NOTE: allow retries, as the version may not be available immediately - # following a restart. - wait_until(lambda: len(get_unique_versions()) == num_versions, - timeout_sec=30) - unique_versions = get_unique_versions() - assert len(unique_versions) == num_versions, unique_versions - return unique_versions +from rptest.services.redpanda_installer import RedpandaInstaller, wait_for_num_versions class UpgradeFromSpecificVersion(RedpandaTest):