def test_start_interactive_stateboard_only(start_stop_cli, project_with_patched_init): project = project_with_patched_init cli = start_stop_cli # start with stateboard-only flag cli.start(project, stateboard_only=True) check_instances_running(cli, project, stateboard_only=True)
def test_for_running(start_stop_cli, project_without_dependencies): project = project_without_dependencies cli = start_stop_cli INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' ID1 = project.get_instance_id(INSTANCE1) ID2 = project.get_instance_id(INSTANCE2) # start two instances cli.start(project, [INSTANCE1, INSTANCE2], daemonized=True) check_instances_running(cli, project, [INSTANCE1, INSTANCE2], daemonized=True) # stop one cli.stop(project, [INSTANCE1]) check_instances_stopped(cli, project, [INSTANCE1]) check_instances_running(cli, project, [INSTANCE2], daemonized=True) # instance-1 is stopped, instance-2 is running logs = cli.clean(project, [INSTANCE1, INSTANCE2], exp_rc=1) assert_files_cleaned(project, [INSTANCE1]) assert any([line.endswith('OK') and line.startswith(ID1) for line in logs]) assert any( [line.endswith('FAILED') and line.startswith(ID2) for line in logs]) assert any(["%s: Instance is running" % ID2 in line for line in logs])
def test_log_by_name(start_stop_cli, project_with_patched_init): project = project_with_patched_init cli = start_stop_cli patch_init_to_log_lines(project, LOG_LINES) INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' ID1 = get_instance_id(project.name, INSTANCE1) ID2 = get_instance_id(project.name, INSTANCE2) STATEBOARD_ID = get_stateboard_name(project.name) # start instance-1 and instance-2 cli.start(project, [INSTANCE1, INSTANCE2], stateboard=True, daemonized=True) check_instances_running(cli, project, [INSTANCE1, INSTANCE2], stateboard=True, daemonized=True) # get logs w/o stateboard logs = cli.get_logs(project, [INSTANCE1, INSTANCE2]) assert len(logs) == 2 assert_instance_logs(logs, ID1, LOG_LINES) assert_instance_logs(logs, ID2, LOG_LINES) # get logs w/ stateboard logs = cli.get_logs(project, [INSTANCE1, INSTANCE2], stateboard=True) assert len(logs) == 3 assert_instance_logs(logs, ID1, LOG_LINES) assert_instance_logs(logs, ID2, LOG_LINES) assert_instance_logs(logs, STATEBOARD_ID, LOG_LINES) # get logs stateboard-only logs = cli.get_logs(project, stateboard_only=True) assert len(logs) == 1 assert_instance_logs(logs, STATEBOARD_ID, LOG_LINES)
def test_start_stop_status_run_dir(cartridge_cmd, project_with_patched_init): project = project_with_patched_init cli = Cli(cartridge_cmd) ID1 = get_instance_id(project.name, 'instance-1') # ID2 = get_instance_id(project.name, 'instance-2') RUN_DIR = 'my-run' status = cli.get_status(project, [ID1], run_dir=RUN_DIR) assert status.get(ID1) == STATUS_NOT_STARTED # assert status.get(ID2) == STATUS_NOT_STARTED cli.start(project, [ID1], stateboard=True, daemonized=True, run_dir=RUN_DIR) check_instances_running( cli, project, [ID1], stateboard=True, run_dir=RUN_DIR, daemonized=True ) status = cli.get_status(project, [ID1], run_dir=RUN_DIR) assert status.get(ID1) == STATUS_RUNNING # assert status.get(ID2) == STATUS_RUNNING cli.stop(project, [ID1], stateboard=True, run_dir=RUN_DIR) check_instances_stopped(cli, project, [ID1], run_dir=RUN_DIR) status = cli.get_status(project, [ID1], run_dir=RUN_DIR) assert status.get(ID1) == STATUS_STOPPED
def test_start_stop_stateboard_from_conf(start_stop_cli, project_without_dependencies): project = project_without_dependencies cli = start_stop_cli INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' write_conf(project.get_cli_cfg_path(), { 'stateboard': True, }) cli.start(project, [INSTANCE1], daemonized=True) check_instances_running(cli, project, [INSTANCE1], daemonized=True) cli.stop(project, [INSTANCE1], stateboard=True) check_instances_stopped(cli, project, [INSTANCE1], stateboard=True) write_conf(project.get_cli_cfg_path(), { 'stateboard': False, }) cli.start(project, [INSTANCE1, INSTANCE2], daemonized=True) check_instances_running(cli, project, [INSTANCE1, INSTANCE2], daemonized=True) cli.stop(project, [INSTANCE1, INSTANCE2]) check_instances_stopped(cli, project, [INSTANCE1, INSTANCE2])
def test_start_stop_status_run_dir(start_stop_cli, project_with_patched_init): project = project_with_patched_init cli = start_stop_cli INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' ID1 = get_instance_id(project.name, INSTANCE1) ID2 = get_instance_id(project.name, INSTANCE2) STATEBOARD_ID = get_stateboard_name(project.name) RUN_DIR = 'my-run' status = cli.get_status(project, [INSTANCE1, INSTANCE2], stateboard=True, run_dir=RUN_DIR) assert status.get(ID1) == STATUS_NOT_STARTED assert status.get(ID2) == STATUS_NOT_STARTED cli.start(project, [INSTANCE1], stateboard=True, daemonized=True, run_dir=RUN_DIR) check_instances_running(cli, project, [INSTANCE1], stateboard=True, run_dir=RUN_DIR, daemonized=True) status = cli.get_status(project, [INSTANCE1, INSTANCE2], stateboard=True, run_dir=RUN_DIR) assert len(status) == 3 assert status.get(ID1) == STATUS_RUNNING assert status.get(ID2) == STATUS_NOT_STARTED assert status.get(STATEBOARD_ID) == STATUS_RUNNING cli.stop(project, [INSTANCE1], stateboard=True, run_dir=RUN_DIR) check_instances_stopped(cli, project, [INSTANCE1], stateboard=True, run_dir=RUN_DIR) status = cli.get_status(project, [INSTANCE1, INSTANCE2], stateboard=True, run_dir=RUN_DIR) assert len(status) == 3 assert status.get(ID1) == STATUS_STOPPED assert status.get(ID2) == STATUS_NOT_STARTED assert status.get(STATEBOARD_ID) == STATUS_STOPPED
def test_log_last_n_lines(start_stop_cli, project_with_patched_init): project = project_with_patched_init cli = start_stop_cli log_lines = ["I am log line number {}".format(i) for i in range(DEFAULT_LAST_N_LINES+5)] patch_init_to_log_lines(project, log_lines) INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' ID1 = get_instance_id(project.name, INSTANCE1) ID2 = get_instance_id(project.name, INSTANCE2) STATEBOARD_ID = get_stateboard_name(project.name) # start instance-1 and instance-2 cli.start(project, [INSTANCE1, INSTANCE2], stateboard=True, daemonized=True) check_instances_running(cli, project, [INSTANCE1, INSTANCE2], stateboard=True, daemonized=True) # get logs w/o -n logs = cli.get_logs(project, [INSTANCE1, INSTANCE2], stateboard=True) assert len(logs) == 3 assert_instance_logs(logs, ID1, log_lines[-DEFAULT_LAST_N_LINES:]) assert_instance_logs(logs, ID2, log_lines[-DEFAULT_LAST_N_LINES:]) assert_instance_logs(logs, STATEBOARD_ID, log_lines[-DEFAULT_LAST_N_LINES:]) # get logs w/ -n > log lines count logs = cli.get_logs(project, [INSTANCE1, INSTANCE2], stateboard=True, n=len(log_lines)*2) assert len(logs) == 3 assert_instance_logs(logs, ID1, log_lines) assert_instance_logs(logs, ID2, log_lines) assert_instance_logs(logs, STATEBOARD_ID, log_lines) # get logs w/ -n0 logs = cli.get_logs(project, [INSTANCE1, INSTANCE2], stateboard=True, n=0) assert len(logs) == 3 assert_instance_logs(logs, ID1, log_lines) assert_instance_logs(logs, ID2, log_lines) assert_instance_logs(logs, STATEBOARD_ID, log_lines) # get logs w/ -n1 logs = cli.get_logs(project, [INSTANCE1, INSTANCE2], stateboard=True, n=1) assert len(logs) == 3 assert_instance_logs(logs, ID1, log_lines[-1:]) assert_instance_logs(logs, ID2, log_lines[-1:]) assert_instance_logs(logs, STATEBOARD_ID, log_lines[-1:]) # get logs w/ -n5 logs = cli.get_logs(project, [INSTANCE1, INSTANCE2], stateboard=True, n=5) assert len(logs) == 3 assert_instance_logs(logs, ID1, log_lines[-5:]) assert_instance_logs(logs, ID2, log_lines[-5:]) assert_instance_logs(logs, STATEBOARD_ID, log_lines[-5:]) # get logs w/ -n -5 logs = cli.get_logs(project, [INSTANCE1, INSTANCE2], stateboard=True, n=5) assert len(logs) == 3 assert_instance_logs(logs, ID1, log_lines[-5:]) assert_instance_logs(logs, ID2, log_lines[-5:]) assert_instance_logs(logs, STATEBOARD_ID, log_lines[-5:])
def test_start_stop_from_conf_with_stateboard(start_stop_cli, project_without_dependencies): project = project_without_dependencies cli = start_stop_cli INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' write_conf( project.get_cfg_path(), { project.get_instance_id(INSTANCE1): {}, project.get_instance_id(INSTANCE2): {}, }) # start instances cli.start(project, daemonized=True, stateboard=True) check_instances_running(cli, project, [INSTANCE1, INSTANCE2], daemonized=True, stateboard=True) # stop instances cli.stop(project, stateboard=True) check_instances_stopped(cli, project, [INSTANCE1, INSTANCE2], stateboard=True)
def test_start_interactive_stateboard_only(cartridge_cmd, project_with_patched_init): project = project_with_patched_init cli = Cli(cartridge_cmd) # start with stateboard-only flag cli.start(project, stateboard_only=True) check_instances_running(cli, project, stateboard_only=True)
def test_log_run_dir(start_stop_cli, project_without_dependencies): project = project_without_dependencies cli = start_stop_cli patch_init_to_log_lines(project, LOG_LINES) INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' ID1 = project.get_instance_id(INSTANCE1) ID2 = project.get_instance_id(INSTANCE2) RUN_DIR = 'my-run-dir' write_conf(project.get_cfg_path(), { ID1: {}, ID2: {}, }) # start instance-1 and instance-2 cli.start(project, run_dir=RUN_DIR, daemonized=True) check_instances_running(cli, project, [INSTANCE1, INSTANCE2], run_dir=RUN_DIR, daemonized=True) # get logs logs = cli.get_logs(project, run_dir=RUN_DIR) assert len(logs) == 2 assert_instance_logs(logs, ID1, LOG_LINES) assert_instance_logs(logs, ID2, LOG_LINES)
def test_start_stop_status_cfg(cartridge_cmd, project_with_patched_init): project = project_with_patched_init cli = Cli(cartridge_cmd) ID1 = get_instance_id(project.name, 'instance-1') ID2 = get_instance_id(project.name, 'instance-2') CFG = 'my-conf.yml' write_conf(os.path.join(project.path, CFG), { ID1: {}, ID2: {}, }) status = cli.get_status(project, cfg=CFG) assert status.get(ID1) == STATUS_NOT_STARTED assert status.get(ID2) == STATUS_NOT_STARTED cli.start(project, stateboard=True, daemonized=True, cfg=CFG) check_instances_running( cli, project, [ID1, ID2], stateboard=True, cfg=CFG, daemonized=True, ) status = cli.get_status(project, cfg=CFG) assert status.get(ID1) == STATUS_RUNNING assert status.get(ID2) == STATUS_RUNNING cli.stop(project, stateboard=True, cfg=CFG) check_instances_stopped(cli, project, [ID1, ID2]) status = cli.get_status(project, cfg=CFG) assert status.get(ID1) == STATUS_STOPPED assert status.get(ID2) == STATUS_STOPPED
def test_log_run_dir(start_stop_cli, project_with_patched_init): project = project_with_patched_init cli = start_stop_cli patch_init_to_log_lines(project, LOG_LINES) INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' ID1 = get_instance_id(project.name, INSTANCE1) ID2 = get_instance_id(project.name, INSTANCE2) RUN_DIR = 'my-log-dir' write_conf(os.path.join(project.path, DEFAULT_CFG), { ID1: {}, ID2: {}, }) # start instance-1 and instance-2 cli.start(project, run_dir=RUN_DIR, daemonized=True) check_instances_running(cli, project, [INSTANCE1, INSTANCE2], run_dir=RUN_DIR, daemonized=True) # get logs logs = cli.get_logs(project, run_dir=RUN_DIR) assert len(logs) == 2 assert_instance_logs(logs, ID1, LOG_LINES) assert_instance_logs(logs, ID2, LOG_LINES)
def test_start_interactive_stateboard_only(start_stop_cli, project_without_dependencies): project = project_without_dependencies cli = start_stop_cli # start with stateboard-only flag cli.start(project, stateboard_only=True) check_instances_running(cli, project, stateboard_only=True)
def test_start_interactive_by_name(start_stop_cli, project_with_patched_init): project = project_with_patched_init cli = start_stop_cli INSTANCE1 = 'instance-1' # start instance-1 cli.start(project, [INSTANCE1]) check_instances_running(cli, project, [INSTANCE1])
def test_start_interactive_by_id(cartridge_cmd, project_with_patched_init): project = project_with_patched_init cli = Cli(cartridge_cmd) ID1 = get_instance_id(project.name, 'instance-1') # start instance-1 cli.start(project, [ID1]) check_instances_running(cli, project, [ID1])
def test_start_interactive_by_name(start_stop_cli, project_without_dependencies): project = project_without_dependencies cli = start_stop_cli INSTANCE1 = 'instance-1' # start instance-1 cli.start(project, [INSTANCE1]) check_instances_running(cli, project, [INSTANCE1])
def test_start_interactive_by_name_with_stateboard(start_stop_cli, project_with_patched_init): project = project_with_patched_init cli = start_stop_cli INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' # start instance-1 and instance-2 cli.start(project, [INSTANCE1, INSTANCE2], stateboard=True) check_instances_running(cli, project, [INSTANCE1, INSTANCE2], stateboard=True)
def test_notify_status_allowed(start_stop_cli, project_with_patched_init, status): project = project_with_patched_init cli = start_stop_cli patch_init_to_send_statuses(project, [status]) INSTANCE1 = 'instance-1' cli.start(project, [INSTANCE1], daemonized=True, stateboard=True) check_instances_running(cli, project, [INSTANCE1], daemonized=True, stateboard=True)
def test_start_stop_stateboard_only(start_stop_cli, project_with_patched_init): project = project_with_patched_init cli = start_stop_cli # start with stateboard-only flag cli.start(project, daemonized=True, stateboard_only=True) check_instances_running(cli, project, daemonized=True, stateboard_only=True) # stop stateboard cli.stop(project, stateboard_only=True) check_instances_stopped(cli, project, stateboard_only=True)
def test_start_interactive_run_dir(cartridge_cmd, project_with_patched_init): project = project_with_patched_init cli = Cli(cartridge_cmd) ID1 = get_instance_id(project.name, 'instance-1') # ID2 = get_instance_id(project.name, 'instance-2') RUN_DIR = 'my-run' cli.start(project, [ID1], stateboard=True, run_dir=RUN_DIR) check_instances_running( cli, project, [ID1], stateboard=True, run_dir=RUN_DIR )
def test_start_script(start_stop_cli, project_without_dependencies): project = project_without_dependencies cli = start_stop_cli INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' shutil.copyfile(project.get_script(), os.path.join(project.path, 'my-init.lua')) cli.start(project, [INSTANCE1, INSTANCE2], stateboard=True) check_instances_running(cli, project, [INSTANCE1, INSTANCE2], stateboard=True)
def test_start_stop_custom_executable(start_stop_cli, project_without_dependencies): project = project_without_dependencies cli = start_stop_cli INSTANCE1 = 'instance-1' RUN_DIR = 'my-run' # Below we are making a bash script named 'tarantool' that calls the real tarantool. # We also change $PATH variable so that the priority of calling our # fake tarantool script is always higher than the original tarantool. # As a result, our process is not called a 'tarantool'. real_tarantool_abs_path = shutil.which('tarantool') tarantool_substitution_script = f"#!/bin/bash\n{real_tarantool_abs_path} $1" with open('tarantool', 'w') as f: f.write(tarantool_substitution_script) os.chmod('tarantool', 0o755) modified_env = os.environ.copy() modified_env['PATH'] = os.getcwd() + ':' + modified_env['PATH'] try: logs = cli.start(project, [INSTANCE1], stateboard=True, daemonized=True, capture_output=True, run_dir=RUN_DIR, env=modified_env) finally: os.remove('tarantool') # On Linux process have name 'tarantool' anyway, but for Darwin it's 'sh', # so we can check that warning displayed. if system() != 'Linux': assert any( [line.endswith('does not seem to be tarantool') for line in logs]) check_instances_running(cli, project, [INSTANCE1], stateboard=True, run_dir=RUN_DIR, daemonized=True) cli.stop(project, [INSTANCE1], stateboard=True, run_dir=RUN_DIR) check_instances_stopped(cli, project, [INSTANCE1], stateboard=True, run_dir=RUN_DIR)
def test_start_stop_by_name_with_stateboard(start_stop_cli, project_with_patched_init): project = project_with_patched_init cli = start_stop_cli INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' # start instance-1, instance-2 and stateboard cli.start(project, [INSTANCE1, INSTANCE2], daemonized=True, stateboard=True) check_instances_running(cli, project, [INSTANCE1, INSTANCE2], daemonized=True, stateboard=True) # stop instance-1 and stateboard cli.stop(project, [INSTANCE1], stateboard=True) check_instances_running(cli, project, [INSTANCE2], daemonized=True) check_instances_stopped(cli, project, [INSTANCE1], stateboard=True)
def test_start_stop_stateboard_only(start_stop_cli, project_without_dependencies): project = project_without_dependencies cli = start_stop_cli # start with stateboard-only flag cli.start(project, daemonized=True, stateboard_only=True) check_instances_running(cli, project, daemonized=True, stateboard_only=True) # stop stateboard cli.stop(project, stateboard_only=True) check_instances_stopped(cli, project, stateboard_only=True)
def test_start_interactive_from_conf(cartridge_cmd, project_with_patched_init): project = project_with_patched_init cli = Cli(cartridge_cmd) ID1 = get_instance_id(project.name, 'instance-1') ID2 = get_instance_id(project.name, 'instance-2') write_conf(os.path.join(project.path, DEFAULT_CFG), { ID1: {}, ID2: {}, }) # start instances cli.start(project) check_instances_running(cli, project, [ID1, ID2])
def test_start_interactive_from_conf_stateboard_only(start_stop_cli, project_with_patched_init): project = project_with_patched_init cli = start_stop_cli INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' write_conf(os.path.join(project.path, DEFAULT_CFG), { get_instance_id(project.name, INSTANCE1): {}, get_instance_id(project.name, INSTANCE2): {}, }) # start instances cli.start(project, stateboard_only=True) check_instances_running(cli, project, stateboard_only=True)
def test_start_data_dir(start_stop_cli, project_with_patched_init): project = project_with_patched_init cli = start_stop_cli INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' DATA_DIR = 'my-data' cli.start(project, [INSTANCE1, INSTANCE2], stateboard=True, data_dir=DATA_DIR) check_instances_running( cli, project, [INSTANCE1, INSTANCE2], stateboard=True, data_dir=DATA_DIR )
def test_start_script(cartridge_cmd, project_with_patched_init): project = project_with_patched_init cli = Cli(cartridge_cmd) ID1 = get_instance_id(project.name, 'instance-1') # ID2 = get_instance_id(project.name, 'instance-2') SCRIPT = 'my-init.lua' shutil.copyfile(os.path.join(project.path, DEFAULT_SCRIPT), os.path.join(project.path, SCRIPT)) cli.start(project, [ID1], stateboard=True, script=SCRIPT) check_instances_running( cli, project, [ID1], stateboard=True, script=SCRIPT )
def test_start_script(start_stop_cli, project_with_patched_init): project = project_with_patched_init cli = start_stop_cli INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' SCRIPT = 'my-init.lua' shutil.copyfile(os.path.join(project.path, DEFAULT_SCRIPT), os.path.join(project.path, SCRIPT)) cli.start(project, [INSTANCE1, INSTANCE2], stateboard=True, script=SCRIPT) check_instances_running( cli, project, [INSTANCE1, INSTANCE2], stateboard=True, script=SCRIPT )
def test_start_log_dir(start_stop_cli, project_with_patched_init): project = project_with_patched_init cli = start_stop_cli INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' LOG_DIR = 'my-log-dir' cli.start(project, [INSTANCE1, INSTANCE2], daemonized=True, stateboard=True, log_dir=LOG_DIR) check_instances_running( cli, project, [INSTANCE1, INSTANCE2], daemonized=True, stateboard=True, log_dir=LOG_DIR )