示例#1
0
文件: engine.py 项目: dalloliogm/wok
	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()
示例#2
0
    def __init__(self, engine, case):
        Synchronizable.__init__(self, engine._lock)

        self.__engine = engine
        self.__case = case
示例#3
0
文件: case.py 项目: bbglab/wok
	def __init__(self, engine, case):
		Synchronizable.__init__(self, engine._lock)

		self.__engine = engine
		self.__case = case;
示例#4
0
文件: engine.py 项目: bbglab/wok
	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()
示例#5
0
	def __init__(self, engine, instance):
		Synchronizable.__init__(self, engine._lock)

		self.__engine = engine
		self.__instance = instance;