def synchronize_service(self, service_name, force_maintenance=False, timeout=30): helper = "testing/input/service_synchronization_helper.py" if not (self.__upgraded or testing.exists_at(self.install_commit, helper)): # We're upgrading from a commit where background services don't # support synchronization, and haven't upgraded yet. Sleep a (long) # while and pray that the service is idle when we wake up. testing.logger.debug( "Synchronizing service: %s (sleeping %d seconds)" % (service_name, timeout)) time.sleep(timeout) return testing.logger.debug("Synchronizing service: %s" % service_name) pidfile_path = os.path.join("/var/run/critic/main", service_name + ".pid") if force_maintenance: signum = signal.SIGUSR2 else: signum = signal.SIGUSR1 before = time.time() self.execute([ "sudo", "python", "critic/" + helper, pidfile_path, str(signum), str(timeout) ]) after = time.time() testing.logger.debug("Synchronized service: %s in %.2f seconds" % (service_name, after - before))
def check_extend(self, repository, pre_upgrade=False): if not testing.exists_at(self.install_commit, "extend.py"): raise testing.NotSupported("installed commit lacks extend.py") if not self.arguments.test_extensions: raise testing.NotSupported("--test-extensions argument not given") if not repository.v8_jsshell_path: raise testing.NotSupported("v8-jsshell sub-module not initialized")
def check_extend(self, repository, pre_upgrade=False): commit = self.install_commit if pre_upgrade else self.tested_commit if not testing.exists_at(commit, "extend.py"): raise testing.NotSupported("tested commit lacks extend.py") if not self.arguments.test_extensions: raise testing.NotSupported("--test-extensions argument not given") if not repository.v8_jsshell_path: raise testing.NotSupported("v8-jsshell sub-module not initialized")
def filter_service_logs(self, level, service_names): helper = "testing/input/service_log_filter.py" if not (self.__upgraded or testing.exists_at(self.install_commit, helper)): # We're upgrading from a commit where the helper for filtering # service logs isn't supported, and haven't upgraded yet. return logfile_paths = { os.path.join("/var/log/critic/main", service_name + ".log"): service_name for service_name in service_names } try: data = json.loads(self.execute( ["sudo", "python", "critic/" + helper, level] + logfile_paths.keys(), log_stdout=False)) return { logfile_paths[logfile_path]: entries for logfile_path, entries in sorted(data.items()) } except GuestCommandError: return None
def validatelogin(self, username, password, expect_failure=False): data = { "fields": { "username": username, "password": password }} # Check if the current commit predates the user authentication # restructuring that added the "fields" wrapper. if self.instance.current_commit: if not testing.exists_at( self.instance.current_commit, "src/auth/database.py"): data = data["fields"] if expect_failure: expect = { "message": expect_failure } else: expect = { "message": None } self.operation( "validatelogin", data=data, expect=expect)
def synchronize_service(self, service_name, force_maintenance=False, timeout=30): helper = "testing/input/service_synchronization_helper.py" if not (self.__upgraded or testing.exists_at(self.install_commit, helper)): # We're upgrading from a commit where background services don't # support synchronization, and haven't upgraded yet. Sleep a (long) # while and pray that the service is idle when we wake up. testing.logger.debug("Synchronizing service: %s (sleeping %d seconds)" % (service_name, timeout)) time.sleep(timeout) return testing.logger.debug("Synchronizing service: %s" % service_name) pidfile_path = os.path.join("/var/run/critic/main", service_name + ".pid") if force_maintenance: signum = signal.SIGUSR2 else: signum = signal.SIGUSR1 before = time.time() self.execute( ["sudo", "python", "critic/" + helper, pidfile_path, str(signum), str(timeout)]) after = time.time() testing.logger.debug("Synchronized service: %s in %.2f seconds" % (service_name, after - before))