From a1c8217260f50a9526b91ac0339b0706944a407d Mon Sep 17 00:00:00 2001 From: Chaoguang Lin Date: Wed, 25 Aug 2021 13:04:01 -0700 Subject: [PATCH] Move setclass test from single-process_test to multi-process_test --- bindings/python/tests/fdbcli_tests.py | 63 +++++++++++++++------------ 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/bindings/python/tests/fdbcli_tests.py b/bindings/python/tests/fdbcli_tests.py index eb82cc0362..139122b313 100755 --- a/bindings/python/tests/fdbcli_tests.py +++ b/bindings/python/tests/fdbcli_tests.py @@ -104,45 +104,52 @@ def maintenance(logger): @enable_logging() def setclass(logger): + # get all processes' network addresses output1 = run_fdbcli_command('setclass') - class_type_line_1 = output1.split('\n')[-1] - logger.debug(class_type_line_1) - # check process' network address - assert '127.0.0.1' in class_type_line_1 - network_address = ':'.join(class_type_line_1.split(':')[:2]) - logger.debug("Network address: {}".format(network_address)) - # check class type - assert 'unset' in class_type_line_1 - # check class source - assert 'command_line' in class_type_line_1 + logger.debug(output1) + # except the first line, each line is one process + process_types = output1.split('\n')[1:] + assert len(process_types) == args.process_number + addresses = [] + for line in process_types: + assert '127.0.0.1' in line + # check class type + assert 'unset' in line + # check class source + assert 'command_line' in line + # check process' network address + network_address = ':'.join(line.split(':')[:2]) + logger.debug("Network address: {}".format(network_address)) + addresses.append(network_address) + random_address = random.choice(addresses) + logger.debug("Randomly selected address: {}".format(random_address)) # set class to a random valid type - class_types = ['storage', 'storage', 'transaction', 'resolution', + class_types = ['storage', 'transaction', 'resolution', 'commit_proxy', 'grv_proxy', 'master', 'stateless', 'log', 'router', 'cluster_controller', 'fast_restore', 'data_distributor', 'coordinator', 'ratekeeper', 'storage_cache', 'backup' ] random_class_type = random.choice(class_types) logger.debug("Change to type: {}".format(random_class_type)) - run_fdbcli_command('setclass', network_address, random_class_type) + run_fdbcli_command('setclass', random_address, random_class_type) # check the set successful output2 = run_fdbcli_command('setclass') - class_type_line_2 = output2.split('\n')[-1] - logger.debug(class_type_line_2) + logger.debug(output2) + assert random_address in output2 + process_types = output2.split('\n')[1:] # check process' network address - assert network_address in class_type_line_2 - # check class type changed to the specified value - assert random_class_type in class_type_line_2 - # check class source - assert 'set_class' in class_type_line_2 - # wait for everything to settle down - wait_for_database_available(logger) + for line in process_types: + if random_address in line: + # check class type changed to the specified value + assert random_class_type in line + # check class source + assert 'set_class' in line # set back to default - run_fdbcli_command('setclass', network_address, 'default') - # everything should be back to the same as before + run_fdbcli_command('setclass', random_address, 'default') output3 = run_fdbcli_command('setclass') - class_type_line_3 = output3.split('\n')[-1] - logger.debug(class_type_line_3) - assert class_type_line_3 == class_type_line_1 + logger.debug(output3) + # everything should be back to the same as before + assert output1 == output3 @enable_logging() @@ -499,12 +506,14 @@ def profile(logger): run_fdbcli_command('profile', 'client', 'set', 'default', 'default') assert run_fdbcli_command('profile', 'client', 'get') == default_profile_client_get_output + @enable_logging() def triggerddteaminfolog(logger): # this command is straightforward and only has one code path output = run_fdbcli_command('triggerddteaminfolog') assert output == 'Triggered team info logging in data distribution.' + if __name__ == '__main__': parser = ArgumentParser(formatter_class=RawDescriptionHelpFormatter, description=""" @@ -543,7 +552,6 @@ if __name__ == '__main__': lockAndUnlock() maintenance() profile() - setclass() suspend() transaction() throttle() @@ -552,3 +560,4 @@ if __name__ == '__main__': assert args.process_number > 1, "Process number should be positive" coordinators() exclude() + setclass()