Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #4
0
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])
Beispiel #6
0
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:])
Beispiel #8
0
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)
Beispiel #9
0
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)
Beispiel #10
0
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)
Beispiel #11
0
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
Beispiel #12
0
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)
Beispiel #13
0
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)
Beispiel #14
0
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])
Beispiel #15
0
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])
Beispiel #16
0
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])
Beispiel #17
0
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)
Beispiel #18
0
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)
Beispiel #19
0
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)
Beispiel #20
0
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
    )
Beispiel #21
0
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)
Beispiel #22
0
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)
Beispiel #23
0
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)
Beispiel #24
0
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)
Beispiel #25
0
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])
Beispiel #26
0
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)
Beispiel #27
0
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
    )
Beispiel #28
0
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
    )
Beispiel #29
0
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
    )
Beispiel #30
0
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
    )