run on coordinator and a random worker

run_on_coordinator_and_worker
Sait Talha Nisanci 2021-10-19 16:27:01 +03:00
parent 56abd3d501
commit e579f9bf43
2 changed files with 23 additions and 5 deletions

View File

@ -84,7 +84,7 @@ def run_for_config(config, lock, sql_schedule_name):
extra_tests = os.getenv("EXTRA_TESTS", "") extra_tests = os.getenv("EXTRA_TESTS", "")
if config.is_mx and config.worker_amount > 0: if config.is_mx and config.worker_amount > 0:
exitCode |= _run_pg_regress_on_port( exitCode |= _run_pg_regress_on_port(
config, config.random_port(), sql_schedule_name, extra_tests=extra_tests config, config.sql_port, sql_schedule_name, extra_tests=extra_tests
) )
else: else:
exitCode |= _run_pg_regress_on_port( exitCode |= _run_pg_regress_on_port(
@ -171,9 +171,13 @@ def read_configs(docoptRes):
configs = [] configs = []
# We fill the configs from all of the possible classes in config.py so that if we add a new config, # We fill the configs from all of the possible classes in config.py so that if we add a new config,
# we don't need to add it here. And this avoids the problem where we forget to add it here # we don't need to add it here. And this avoids the problem where we forget to add it here
for x in cfg.__dict__.values(): for class_name in cfg.__dict__.values():
if cfg.should_include_config(x): if cfg.should_include_config(class_name):
configs.append(x(docoptRes)) if issubclass(class_name, cfg.CitusMXBaseClusterConfig):
arguments = dict(docoptRes)
arguments["run_test_on_coordinator"] = True
configs.append(class_name(arguments))
configs.append(class_name(docoptRes))
return configs return configs
@ -195,7 +199,7 @@ def read_arguments(docoptRes):
given_configs = docoptRes["--configs"].split(",") given_configs = docoptRes["--configs"].split(",")
new_configs = [] new_configs = []
for config in configs: for config in configs:
if config.name in given_configs: if config.class_name in given_configs:
new_configs.append(config) new_configs.append(config)
if len(new_configs) > 0: if len(new_configs) > 0:
configs = new_configs configs = new_configs

View File

@ -99,7 +99,14 @@ class CitusBaseClusterConfig(object, metaclass=NewInitCaller):
self.user = REGULAR_USER_NAME self.user = REGULAR_USER_NAME
self.is_mx = False self.is_mx = False
self.is_citus = True self.is_citus = True
self.run_test_on_coordinator = (
True if "run_test_on_coordinator" in arguments else False
)
self.class_name = type(self).__name__
self.name = type(self).__name__ self.name = type(self).__name__
if self.run_test_on_coordinator:
self.name += "_coordinator"
self.settings = { self.settings = {
"shared_preload_libraries": "citus", "shared_preload_libraries": "citus",
"log_error_verbosity": "terse", "log_error_verbosity": "terse",
@ -122,6 +129,11 @@ class CitusBaseClusterConfig(object, metaclass=NewInitCaller):
if self.worker_amount > 0: if self.worker_amount > 0:
self.chosen_random_worker_port = self.random_worker_port() self.chosen_random_worker_port = self.random_worker_port()
self.settings.update(self.new_settings) self.settings.update(self.new_settings)
self.sql_port = (
self.coordinator_port()
if self.run_test_on_coordinator
else self.random_worker_port()
)
def coordinator_port(self): def coordinator_port(self):
return self.node_name_to_ports[COORDINATOR_NAME] return self.node_name_to_ports[COORDINATOR_NAME]
@ -130,6 +142,8 @@ class CitusBaseClusterConfig(object, metaclass=NewInitCaller):
pass pass
def random_worker_port(self): def random_worker_port(self):
if len(self.worker_ports) == 0:
return self.coordinator_port()
return random.choice(self.worker_ports) return random.choice(self.worker_ports)
def random_port(self): def random_port(self):