Skip to content

Commit

Permalink
ducky: move wait_for_num_versions to redpanda_installer
Browse files Browse the repository at this point in the history
  • Loading branch information
rystsov committed Jul 12, 2022
1 parent 8e7346d commit e5846f1
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 19 deletions.
19 changes: 19 additions & 0 deletions tests/rptest/services/redpanda_installer.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,32 @@

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.
# E.g. "v22.1.1-rc1-1373-g77f868..."
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.
Expand Down
20 changes: 1 addition & 19 deletions tests/rptest/tests/upgrade_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down

0 comments on commit e5846f1

Please sign in to comment.