Example #1
0
 def _start(self, timeout=60):
     try:
         port = self.port
     except RedisPortNotAssigned:
         port = get_available_port()
     self.log('Starting new process (port %d)...' % port)
     cmd = self.get_redis_server_cmd(port) + ' ' + '--loglevel debug ' \
                                                   '--protected-mode no ' \
                                                   '--daemonize yes ' \
                                                   '--timeout 0 ' \
                                                   '--client-output-buffer-limit slave 0 0 0 ' \
                                                   '--client-output-buffer-limit pubsub 0 0 0 ' \
                                                   '--save ""'
     if self.pid_file:
         cmd += ' --pidfile %s' % self.pid_file
     if self.log_file:
         cmd += ' --logfile %s' % self.log_file
     subprocess.check_call(shlex.split(cmd))
     if not wait_until(os.path.exists, timeout, 0.1, self.pid_file):
         raise RedisDidNotBecomeActive(
             f'The Redis pid file {self.pid_file} did not exist within {timeout}s'
         )
     self.wait_until_active(port=port, timeout=timeout)
     self.port = port
     self.create_password_file()
     self.create_metadata_file()
     self.log('redis started.')
Example #2
0
def get_broker(cmd_output):
    logs_dir = get_log_dir_from_output(cmd_output)
    file_exists = wait_until(
        lambda: os.path.exists(RedisManager.get_metadata_file(logs_dir)),
        timeout=10,
        sleep_for=0.5)
    assert file_exists, "No broker metadata file."
    broker = BrokerFactory.broker_manager_from_logs_dir(logs_dir)
    return broker
Example #3
0
def wait_on_keeper_complete(logs_dir, timeout=30) -> bool:
    # FIXME: subtract time spent waiting on query ready and schema before waiting on DB state.
    db_file_query_ready = wait_on_db_file_query_ready(logs_dir,
                                                      timeout=timeout)
    if not db_file_query_ready:
        return db_file_query_ready
    with get_db_manager(logs_dir, read_only=True) as db_manager:
        return wait_until(db_manager.is_keeper_complete,
                          timeout=timeout,
                          sleep_for=1)
Example #4
0
def wait_on_db_file_query_ready(logs_dir, timeout=15, db_manager=None):
    db_file_exists = wait_until(os.path.isfile, timeout, 1,
                                get_db_file_path(logs_dir))
    if not db_file_exists:
        return db_file_exists

    if db_manager:
        return _wait_task_table_exist(db_manager, timeout)
    else:
        with get_db_manager(logs_dir, read_only=True) as db_manager:
            return _wait_task_table_exist(db_manager, timeout)
Example #5
0
    def assert_expected_firex_output(self, cmd_output, cmd_err):
        logs_dir = get_log_dir_from_output(cmd_output)
        tasks = task_query.tasks_by_name(logs_dir, 'echo')
        assert tasks[0].name == 'echo'
        assert tasks[0].state == RunStates.SUCCEEDED.value

        firex_id = os.path.basename(logs_dir)
        with get_db_manager(logs_dir) as db_manager:
            run_metadata = db_manager.query_run_metadata(firex_id)
            is_complete = wait_until(db_manager.is_keeper_complete,
                                     timeout=5,
                                     sleep_for=0.5)
            assert is_complete is True

        assert run_metadata.chain == 'echo'
        assert run_metadata.firex_id == firex_id
        assert run_metadata.logs_dir == logs_dir

        all_uuids = {t.uuid for t in task_query.all_tasks(logs_dir)}
        assert run_metadata.root_uuid in all_uuids
Example #6
0
def _wait_task_table_exist(db_manager, timeout):
    return wait_until(db_manager.task_table_exists,
                      timeout=timeout,
                      sleep_for=0.5)
Example #7
0
def wait_until_broker_not_alive(broker):
    return wait_until(lambda b: not b.is_alive(), 60, 0.5, broker)