def init_worker(self, fetch_config, options): """ Create and initialize the worker. Should be subclassed to configure the worker, and should return the worker method that should start the work. """ self.options = options # global preferences global_prefs = get_prefs() self.global_prefs = global_prefs # apply the global prefs now apply_prefs(global_prefs) fetch_config.set_base_url(global_prefs["archive_base_url"]) download_dir = global_prefs["persist"] if not download_dir: download_dir = self.mainwindow.persist persist_limit = PersistLimit(abs(global_prefs["persist_size_limit"]) * 1073741824) self.download_manager = GuiBuildDownloadManager(download_dir, persist_limit) self.test_runner = GuiTestRunner() self.thread = QThread() # options for the app launcher launcher_kwargs = {} for name in ("profile", "preferences"): if name in options: value = options[name] if value: launcher_kwargs[name] = value # add add-ons paths to the app launcher launcher_kwargs["addons"] = options["addons"] self.test_runner.launcher_kwargs = launcher_kwargs launcher_kwargs["cmdargs"] = [] if options["profile_persistence"] in ("clone-first", "reuse") or options["profile"]: launcher_kwargs["cmdargs"] += ["--allow-downgrade"] # Thunderbird will fail to start if passed an URL arg if options.get("url") and fetch_config.app_name != "thunderbird": launcher_kwargs["cmdargs"] += [options["url"]] # Lang only works for firefox-l10n if options.get("lang"): if options["application"] == "firefox-l10n": fetch_config.set_lang(options["lang"]) else: raise MozRegressionError("Invalid lang argument") self.worker = self.worker_class(fetch_config, self.test_runner, self.download_manager) # Move self.bisector in the thread. This will # allow to the self.bisector slots (connected after the move) # to be automatically called in the thread. self.worker.moveToThread(self.thread) self.worker_created.emit(self.worker)
def init_worker(self, fetch_config, options): """ Create and initialize the worker. Should be subclassed to configure the worker, and should return the worker method that should start the work. """ self.options = options # global preferences global_prefs = get_prefs() self.global_prefs = global_prefs # apply the global prefs now apply_prefs(global_prefs) if fetch_config.is_nightly(): fetch_config.set_base_url(global_prefs['archive_base_url']) download_dir = global_prefs['persist'] if not download_dir: download_dir = self.mainwindow.persist persist_limit = int( abs(global_prefs['persist_size_limit']) * 1073741824) self.download_manager = GuiBuildDownloadManager( download_dir, persist_limit) self.test_runner = GuiTestRunner() self.thread = QThread() # options for the app launcher launcher_kwargs = {} for name in ('profile', 'preferences'): if name in options: value = options[name] if value: launcher_kwargs[name] = value # add add-ons paths to the app launcher launcher_kwargs['addons'] = options['addons'] self.test_runner.launcher_kwargs = launcher_kwargs if options['profile_persistence'] in ('clone-first', 'reuse') or options['profile']: launcher_kwargs['cmdargs'] = launcher_kwargs.get( 'cmdargs', []) + ['--allow-downgrade'] # Thunderbird will fail to start if passed an URL arg if 'url' in options and fetch_config.app_name != 'thunderbird': launcher_kwargs['cmdargs'] = (launcher_kwargs.get('cmdargs', []) + [options['url']]) self.worker = self.worker_class(fetch_config, self.test_runner, self.download_manager) # Move self.bisector in the thread. This will # allow to the self.bisector slots (connected after the move) # to be automatically called in the thread. self.worker.moveToThread(self.thread) self.worker_created.emit(self.worker)
def init_worker(self, fetch_config, options): """ Create and initialize the worker. Should be subclassed to configure the worker, and should return the worker method that should start the work. """ self.options = options # global preferences global_prefs = get_prefs() self.global_prefs = global_prefs # apply the global prefs now apply_prefs(global_prefs) if fetch_config.is_nightly(): fetch_config.set_base_url(global_prefs['archive_base_url']) download_dir = global_prefs['persist'] if not download_dir: download_dir = self.mainwindow.persist persist_limit = int(abs(global_prefs['persist_size_limit']) * 1073741824) self.download_manager = GuiBuildDownloadManager(download_dir, persist_limit) self.test_runner = GuiTestRunner() self.thread = QThread() # options for the app launcher launcher_kwargs = {} for name in ('profile', 'preferences'): if name in options: value = options[name] if value: launcher_kwargs[name] = value # add add-ons paths to the app launcher launcher_kwargs['addons'] = options['addons'] self.test_runner.launcher_kwargs = launcher_kwargs if options['profile_persistence'] in ('clone-first', 'reuse') or options['profile']: launcher_kwargs['cmdargs'] = launcher_kwargs.get('cmdargs', []) + ['--allow-downgrade'] # Thunderbird will fail to start if passed an URL arg if 'url' in options and fetch_config.app_name != 'thunderbird': launcher_kwargs['cmdargs'] = ( launcher_kwargs.get('cmdargs', []) + [options['url']] ) self.worker = self.worker_class(fetch_config, self.test_runner, self.download_manager) # Move self.bisector in the thread. This will # allow to the self.bisector slots (connected after the move) # to be automatically called in the thread. self.worker.moveToThread(self.thread) self.worker_created.emit(self.worker)
def bisect(self, fetch_config, options): self.stop() # global preferences global_prefs = get_prefs() # apply the global prefs now apply_prefs(global_prefs) download_dir = global_prefs['persist'] persist_limit = int(abs(global_prefs['persist_size_limit']) * 1073741824) if not download_dir: download_dir = self.mainwindow.persist self.bisector = GuiBisector(fetch_config, download_dir, persist_limit) # create a QThread, and move self.bisector in it. This will # allow to the self.bisector slots (connected after the move) # to be automatically called in the thread. self.thread = QThread() self.bisector.moveToThread(self.thread) self.bisector.test_runner.evaluate_started.connect( self.evaluate) self.bisector.finished.connect(self.bisection_finished) self.bisector.choose_next_build.connect(self.choose_next_build) self.bisector_created.emit(self.bisector) if options['bisect_type'] == 'nightlies': handler = NightlyHandler(find_fix=options['find_fix']) good = options['good_date'] bad = options['bad_date'] else: handler = InboundHandler(find_fix=options['find_fix']) good = options['good_changeset'] bad = options['bad_changeset'] # options for the app launcher launcher_kwargs = {} for name in ('profile', 'preferences'): if name in options: value = options[name] if value: launcher_kwargs[name] = value # add add-ons paths to the app launcher launcher_kwargs['addons'] = options['addons'] self.bisector.test_runner.launcher_kwargs = launcher_kwargs self.thread.start() self.bisector._bisect_args = (handler, good, bad) # this will be called in the worker thread. QTimer.singleShot(0, self.bisector.bisect) self.running_state_changed.emit(True)
def bisect(self, fetch_config, options): self.stop() # global preferences global_prefs = get_prefs() # apply the global prefs now apply_prefs(global_prefs) self.bisector = GuiBisector(fetch_config, persist=global_prefs['persist']) # create a QThread, and move self.bisector in it. This will # allow to the self.bisector slots (connected after the move) # to be automatically called in the thread. self.thread = QThread() self.bisector.moveToThread(self.thread) self.bisector.download_manager.download_progress.connect( self.show_dl_progress) self.bisector.test_runner.evaluate_started.connect( self.evaluate) self.bisector.finished.connect(self.bisection_finished) self.bisector_created.emit(self.bisector) if options['bisect_type'] == 'nightlies': handler = NightlyHandler(find_fix=options['find_fix']) start = options['start_date'] end = options['end_date'] else: handler = InboundHandler(find_fix=options['find_fix']) start = options['start_changeset'] end = options['end_changeset'] # options for the app launcher launcher_kwargs = {} for name in ('profile', 'preferences'): if name in options: value = options[name] if value: launcher_kwargs[name] = value self.bisector.test_runner.launcher_kwargs = launcher_kwargs self.thread.start() self.bisector._bisect_args = (handler, start, end) # this will be called in the worker thread. QTimer.singleShot(0, self.bisector.bisect) self.running_state_changed.emit(True)
def init_worker(self, fetch_config, options): """ Create and initialize the worker. Should be subclassed to configure the worker, and should return the worker method that should start the work. """ self.options = options # global preferences global_prefs = get_prefs() self.global_prefs = global_prefs # apply the global prefs now apply_prefs(global_prefs) download_dir = global_prefs['persist'] if not download_dir: download_dir = self.mainwindow.persist persist_limit = int(abs(global_prefs['persist_size_limit']) * 1073741824) self.download_manager = GuiBuildDownloadManager(download_dir, persist_limit) self.test_runner = GuiTestRunner() self.thread = QThread() # options for the app launcher launcher_kwargs = {} for name in ('profile', 'preferences'): if name in options: value = options[name] if value: launcher_kwargs[name] = value # add add-ons paths to the app launcher launcher_kwargs['addons'] = options['addons'] self.test_runner.launcher_kwargs = launcher_kwargs self.worker = self.worker_class(fetch_config, self.test_runner, self.download_manager) # Move self.bisector in the thread. This will # allow to the self.bisector slots (connected after the move) # to be automatically called in the thread. self.worker.moveToThread(self.thread) self.worker_created.emit(self.worker)
def bisect(self, fetch_config, options): self.stop() # global preferences global_prefs = get_prefs() # apply the global prefs now apply_prefs(global_prefs) self.bisector = GuiBisector(fetch_config, persist=global_prefs['persist']) # create a QThread, and move self.bisector in it. This will # allow to the self.bisector slots (connected after the move) # to be automatically called in the thread. self.thread = QThread() self.bisector.moveToThread(self.thread) self.bisector.download_manager.download_progress.connect( self.show_dl_progress) self.bisector.test_runner.evaluate_started.connect(self.evaluate) self.bisector.finished.connect(self.bisection_finished) self.bisector_created.emit(self.bisector) if options['bisect_type'] == 'nightlies': handler = NightlyHandler(find_fix=options['find_fix']) good = options['good_date'] bad = options['bad_date'] else: handler = InboundHandler(find_fix=options['find_fix']) good = options['good_changeset'] bad = options['bad_changeset'] # options for the app launcher launcher_kwargs = {} for name in ('profile', 'preferences'): if name in options: value = options[name] if value: launcher_kwargs[name] = value self.bisector.test_runner.launcher_kwargs = launcher_kwargs self.thread.start() self.bisector._bisect_args = (handler, good, bad) # this will be called in the worker thread. QTimer.singleShot(0, self.bisector.bisect) self.running_state_changed.emit(True)
def init_worker(self, fetch_config, options): """ Create and initialize the worker. Should be subclassed to configure the worker, and should return the worker method that should start the work. """ self.options = options # global preferences global_prefs = get_prefs() self.global_prefs = global_prefs # apply the global prefs now apply_prefs(global_prefs) download_dir = global_prefs['persist'] if not download_dir: download_dir = self.mainwindow.persist persist_limit = int( abs(global_prefs['persist_size_limit']) * 1073741824) self.download_manager = GuiBuildDownloadManager( download_dir, persist_limit) self.test_runner = GuiTestRunner() self.thread = QThread() # options for the app launcher launcher_kwargs = {} for name in ('profile', 'preferences'): if name in options: value = options[name] if value: launcher_kwargs[name] = value # add add-ons paths to the app launcher launcher_kwargs['addons'] = options['addons'] self.test_runner.launcher_kwargs = launcher_kwargs self.worker = self.worker_class(fetch_config, self.test_runner, self.download_manager) # Move self.bisector in the thread. This will # allow to the self.bisector slots (connected after the move) # to be automatically called in the thread. self.worker.moveToThread(self.thread) self.worker_created.emit(self.worker)