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_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_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_setup_file_specified(project_with_instances, cartridge_cmd): project = project_with_instances.project instances = project_with_instances.instances router = instances['router'] admin_api_url = router.get_admin_api_url() rpl_cfg_path = project.get_replicasets_cfg_path('my-replicasets.yml') # create router replicaset rpl_cfg = { 'router': { 'roles': ['vshard-router', 'app.roles.custom', 'failover-coordinator'], 'instances': [router.name], } } write_conf(rpl_cfg_path, rpl_cfg) cmd = [ cartridge_cmd, 'replicasets', 'setup', '--file', rpl_cfg_path, ] rc, output = run_command_and_get_output(cmd, cwd=project.path) assert rc == 0 assert_replicasets(rpl_cfg, admin_api_url) assert_setup_logs(output, rpl_cfg_path, created_rpls=['router'])
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_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 edit_setting(self,but,conf,alarmHandlerWindow): lk = but.index key = but.key localStr = simpledialog.askstring("Input", "New setting value: ",parent = self.buttons[lk]) if localStr != None: conf[key] = localStr u.write_conf(conf) self.buttons[lk].button.config(text = localStr) print(conf) self.update_settings(alarmHandlerWindow)
def test_list_with_zones(cartridge_cmd, project_with_instances): project = project_with_instances.project instances = project_with_instances.instances if project.name == 'my-old-project': pytest.skip("Old cartridge doesn't support zones") router = instances['router'] s1_master = instances['s1-master'] s1_replica = instances['s1-replica'] s1_replica2 = instances['s1-replica-2'] # setup replicasets rpl_cfg_path = project.get_replicasets_cfg_path() rpl_cfg = { 'router': { 'roles': ['vshard-router', 'app.roles.custom', 'failover-coordinator'], 'instances': [router.name], }, 's-1': { 'roles': ['vshard-storage'], 'instances': [s1_master.name, s1_replica.name, s1_replica2.name], 'vshard_group': 'hot', }, } write_conf(rpl_cfg_path, rpl_cfg) cmd = [ cartridge_cmd, 'replicasets', 'setup', ] rc, output = run_command_and_get_output(cmd, cwd=project.path) assert rc == 0 # set storages zones admin_api_url = router.get_admin_api_url() set_instance_zone(admin_api_url, router.name, "Mordor") set_instance_zone(admin_api_url, s1_master.name, "Hogwarts") set_instance_zone(admin_api_url, s1_replica.name, "Narnia") # get current topology cmd = [ cartridge_cmd, 'replicasets', 'list', ] rc, output = run_command_and_get_output(cmd, cwd=project.path) assert rc == 0 assert output.strip() == """• Current replica sets:
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_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_list(cartridge_cmd, project_with_instances): project = project_with_instances.project instances = project_with_instances.instances router = instances['router'] s1_master = instances['s1-master'] s1_replica = instances['s1-replica'] s1_replica2 = instances['s1-replica-2'] # setup replicasets rpl_cfg_path = project.get_replicasets_cfg_path() rpl_cfg = { 'router': { 'roles': ['vshard-router', 'app.roles.custom', 'failover-coordinator'], 'instances': [router.name], }, 's-1': { 'roles': ['vshard-storage'], 'instances': [s1_master.name, s1_replica.name, s1_replica2.name], 'weight': 1.234, 'vshard_group': 'hot', 'all_rw': True, }, } write_conf(rpl_cfg_path, rpl_cfg) cmd = [ cartridge_cmd, 'replicasets', 'setup', ] rc, output = run_command_and_get_output(cmd, cwd=project.path) assert rc == 0 # get current topology cmd = [ cartridge_cmd, 'replicasets', 'list', ] rc, output = run_command_and_get_output(cmd, cwd=project.path) assert rc == 0 assert output.strip() == """• Current replica sets:
def test_start_interactive_from_conf_stateboard_only( 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, stateboard_only=True) check_instances_running(cli, project, stateboard_only=True)
def test_start_stop_status_run_dir_from_conf(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) STATEBOARD_ID = project.get_stateboard_id() RUN_DIR = 'my-run' write_conf(project.get_cli_cfg_path(), { 'run-dir': RUN_DIR, }) status = cli.get_status(project, [INSTANCE1, INSTANCE2], stateboard=True) assert status.get(ID1) == STATUS_NOT_STARTED assert status.get(ID2) == STATUS_NOT_STARTED cli.start(project, [INSTANCE1], stateboard=True, daemonized=True) check_instances_running(cli, project, [INSTANCE1], stateboard=True, run_dir=RUN_DIR, daemonized=True) status = cli.get_status(project, [INSTANCE1, INSTANCE2], stateboard=True) 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) check_instances_stopped(cli, project, [INSTANCE1], stateboard=True, run_dir=RUN_DIR) status = cli.get_status(project, [INSTANCE1, INSTANCE2], stateboard=True) 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_start_script_from_conf(start_stop_cli, project_without_dependencies): project = project_without_dependencies cli = start_stop_cli INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' SCRIPT = 'my-init.lua' shutil.copyfile(project.get_script(), os.path.join(project.path, SCRIPT)) write_conf(project.get_cli_cfg_path(), { 'script': SCRIPT, }) cli.start(project, [INSTANCE1, INSTANCE2], stateboard=True) check_instances_running(cli, project, [INSTANCE1, INSTANCE2], stateboard=True)
def test_log_from_conf(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) STATEBOARD_ID = project.get_stateboard_id() write_conf(project.get_cfg_path(), { ID1: {}, ID2: {}, }) # 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) 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, 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_interactive_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: {}, }) cli.start(project, stateboard=True, cfg=CFG) check_instances_running( cli, project, [ID1, ID2], stateboard=True, cfg=CFG )
def test_start_stop_from_conf_with_stateboard(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, 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_data_dir_from_conf(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' write_conf(os.path.join(project.path, CARTRIDGE_CONF), { 'data-dir': DATA_DIR, }) cli.start(project, [INSTANCE1, INSTANCE2], stateboard=True) check_instances_running( cli, project, [INSTANCE1, INSTANCE2], stateboard=True, data_dir=DATA_DIR )
def test_start_stop_from_conf_stateboard_only(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, daemonized=True, stateboard_only=True) check_instances_running(cli, project, daemonized=True, stateboard_only=True) # stop instances cli.stop(project, stateboard=True) check_instances_stopped(cli, project, stateboard_only=True)
def test_start_data_dir_from_conf(start_stop_cli, project_without_dependencies): project = project_without_dependencies cli = start_stop_cli INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' DATA_DIR = 'my-data' write_conf(project.get_cli_cfg_path(), { 'data-dir': DATA_DIR, }) cli.start(project, [INSTANCE1, INSTANCE2], stateboard=True) check_instances_running(cli, project, [INSTANCE1, INSTANCE2], stateboard=True, data_dir=DATA_DIR)
def test_start_script_from_conf(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)) write_conf(os.path.join(project.path, CARTRIDGE_CONF), { 'script': SCRIPT, }) cli.start(project, [INSTANCE1, INSTANCE2], stateboard=True) check_instances_running( cli, project, [INSTANCE1, INSTANCE2], stateboard=True, script=SCRIPT )
def test_start_log_dir_from_conf(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' write_conf(os.path.join(project.path, CARTRIDGE_CONF), { 'log-dir': LOG_DIR, }) cli.start(project, [INSTANCE1, INSTANCE2], daemonized=True, stateboard=True) check_instances_running( cli, project, [INSTANCE1, INSTANCE2], daemonized=True, stateboard=True, log_dir=LOG_DIR )
def test_start_stop_status_cfg(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) CFG = 'my-conf.yml' write_conf(project.get_cfg_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, [INSTANCE1, INSTANCE2], 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, [INSTANCE1, INSTANCE2]) status = cli.get_status(project, cfg=CFG) assert status.get(ID1) == STATUS_STOPPED assert status.get(ID2) == STATUS_STOPPED
def test_clean_cfg(start_stop_cli, project_without_dependencies): project = project_without_dependencies cli = start_stop_cli INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' cfg = 'my-conf.yml' write_conf( os.path.join(project.path, cfg), { project.get_instance_id(INSTANCE1): {}, project.get_instance_id(INSTANCE2): {}, }) # --cfg create_instances_files(project, [INSTANCE1, INSTANCE2], stateboard=True) logs = cli.clean(project, stateboard=True, cfg=cfg) assert_files_cleaned(project, [INSTANCE1, INSTANCE2], stateboard=True, logs=logs)
def test_clean_cfg(start_stop_cli, project_with_patched_init): project = project_with_patched_init cli = start_stop_cli INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' cfg = 'my-conf.yml' write_conf( os.path.join(project.path, cfg), { get_instance_id(project.name, INSTANCE1): {}, get_instance_id(project.name, INSTANCE2): {}, }) # --cfg create_instances_files(project, [INSTANCE1, INSTANCE2]) logs = cli.clean(project, stateboard=True, cfg=cfg) assert_files_cleaned(project, [INSTANCE1, INSTANCE2], stateboard=True, logs=logs)
def test_start_log_dir_from_conf(start_stop_cli, project_without_dependencies): project = project_without_dependencies cli = start_stop_cli INSTANCE1 = 'instance-1' INSTANCE2 = 'instance-2' LOG_DIR = 'my-log-dir' write_conf(project.get_cli_cfg_path(), { 'log-dir': LOG_DIR, }) cli.start(project, [INSTANCE1, INSTANCE2], daemonized=True, stateboard=True) check_instances_running(cli, project, [INSTANCE1, INSTANCE2], daemonized=True, stateboard=True, log_dir=LOG_DIR)
def test_log_from_conf(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) write_conf(os.path.join(project.path, DEFAULT_CFG), { ID1: {}, ID2: {}, }) # 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) 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, 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_from_conf(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' write_conf(os.path.join(project.path, CARTRIDGE_CONF), { 'run-dir': RUN_DIR, }) status = cli.get_status(project, [INSTANCE1, INSTANCE2], stateboard=True) assert status.get(ID1) == STATUS_NOT_STARTED assert status.get(ID2) == STATUS_NOT_STARTED cli.start(project, [INSTANCE1], stateboard=True, daemonized=True) check_instances_running(cli, project, [INSTANCE1], stateboard=True, run_dir=RUN_DIR, daemonized=True) status = cli.get_status(project, [INSTANCE1, INSTANCE2], stateboard=True) 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) check_instances_stopped(cli, project, [INSTANCE1], stateboard=True, run_dir=RUN_DIR) status = cli.get_status(project, [INSTANCE1, INSTANCE2], stateboard=True) 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 write_instances_topology_conf(data_dir, app_name, conf, instances, one_file=False): conf_paths = [] for instance in instances: work_dir = os.path.join(data_dir, '%s.%s' % (app_name, instance)) os.makedirs(work_dir, exist_ok=True) if one_file: conf_path = os.path.join(work_dir, 'config.yml') else: conf_dir = os.path.join(work_dir, 'config') os.makedirs(conf_dir, exist_ok=True) conf_path = os.path.join(conf_dir, 'topology.yml') conf_paths.append(conf_path) write_conf(conf_path, conf) return conf_paths
def test_bad_rpl_conf_format(project_with_instances, cartridge_cmd): project = project_with_instances.project rpl_cfg_path = project.get_replicasets_cfg_path() # create router replicaset rpl_cfg = { 'router': { 'roles': 'vshard-router', # should be a list 'instances': [], } } write_conf(rpl_cfg_path, rpl_cfg) cmd = [ cartridge_cmd, 'replicasets', 'setup', ] rc, output = run_command_and_get_output(cmd, cwd=project.path) assert rc == 1