def __init__(self, conf): Synchronizable.__init__(self) self.conf = conf wok_conf = conf["wok"] self._log = logger.get_logger(wok_conf.get("log"), "wok-engine") self._work_path = wok_conf.get("work_path", os.path.join(os.getcwd(), "wok")) self._flow_path = wok_conf.get("flow_path") if self._flow_path is None: self._flow_path = [os.curdir] elif not isinstance(self._flow_path, (list, DataList)): raise Exception('wok.flow_path: A list of paths expected. Example ["path1", "path2"]') self._flow_loader = FlowLoader(self._flow_path) sb = ["wok.flow_path:\n"] for uri, ff in self._flow_loader.flow_files.items(): sb += ["\t", uri, "\t", ff[0], "\n"] self._log.debug("".join(sb)) self._instances = [] self._instances_map = {} #self._lock = Lock() self._cvar = Condition(self._lock) self._run_thread = None self._running = False self._job_task_map = {} self._logs_threads = [] self._logs_queue = Queue() self._join_thread = None self._join_queue = Queue() self._notified = False self._job_mgr = self._create_job_manager(wok_conf) self._storage = self._create_storage(wok_conf) #TODO self._db = SqliteEngineDB(self) self._restore_state()
def __init__(self, engine, case): Synchronizable.__init__(self, engine._lock) self.__engine = engine self.__case = case
def __init__(self, engine, case): Synchronizable.__init__(self, engine._lock) self.__engine = engine self.__case = case;
def __init__(self, conf, conf_base_path=None): Synchronizable.__init__(self) self._global_conf = conf self._expanded_global_conf = conf.clone().expand_vars() self._conf = self._expanded_global_conf.get("wok", default=Data.element) self._conf_base_path = conf_base_path self._log = logger.get_logger("wok.engine") self._work_path = self._conf.get("work_path", os.path.join(os.getcwd(), "wok-files")) if not os.path.exists(self._work_path): os.makedirs(self._work_path) self._cases = [] self._cases_by_name = {} self._stopping_cases = {} #self._lock = Lock() self._cvar = threading.Condition(self._lock) self._run_thread = None self._running = False self._finished_event = threading.Event() self._job_task_map = {} self._logs_threads = [] self._logs_queue = Queue() self._join_thread = None self._join_queue = Queue() self._num_log_threads = self._conf.get("num_log_threads", cpu_count()) self._max_alive_threads = 2 + self._num_log_threads self._num_alive_threads = AtomicCounter() self._started = False self._notified = False recover = self._conf.get("recover", False) db_path = os.path.join(self._work_path, "engine.db") if not recover and os.path.exists(db_path): os.remove(db_path) self._db = db.create_engine("sqlite:///{}".format(db_path), drop_tables=not recover) # platforms self._platforms = self._create_platforms() self._platforms_by_name = {} for platform in self._platforms: self._platforms_by_name[platform.name] = platform default_platform_name = self._conf.get("default_platform", self._platforms[0].name) if default_platform_name not in self._platforms_by_name: self._log.warn("Platform '{}' not found, using '{}' as the default platform".format( default_platform_name, self._platforms[0].name)) default_platform_name = self._platforms[0].name self._default_platform = self._platforms_by_name[default_platform_name] # projects if conf_base_path is None: conf_base_path = os.getcwd() projects_conf = self._global_conf.get("wok.projects") self._projects = ProjectManager(projects_conf, base_path=conf_base_path) self._projects.initialize() # signals self.case_created = Signal() self.case_state_changed = Signal() self.case_started = Signal() self.case_finished = Signal() self.case_removed = Signal() # recovering if recover: self.__recover_from_db()
def __init__(self, engine, instance): Synchronizable.__init__(self, engine._lock) self.__engine = engine self.__instance = instance;