def test_lcall(): """ lcall() """ log = logging.getLogger() ret = lcall(["ls"], log) assert ret == 0 ret = lcall(["sleep", "2"], log, timeout=0.1) assert ret == -15
def lcall(self, *args, **kwargs): """ Wrap lcall, setting the resource logger """ if self.log_outputs: kwargs["logger"] = self.log else: kwargs["logger"] = None return lcall(*args, **kwargs)
def _run_cmd_dedicated_log(self, action, cmd): """ Poll stdout and stderr to log as soon as new lines are available. """ now = datetime.now() for lim, val in self.limits.items(): self.log.info("set limit %s = %s", lim, val) kwargs = { 'timeout': self.get_timeout(action), 'logger': self.log, } try: kwargs.update(self.common_popen_kwargs(cmd)) except ValueError as exc: self.log.error("%s", exc) return 1 user = kwargs.get("env").get("LOGNAME") if isinstance(cmd, list): cmd_s = ' '.join(cmd) else: cmd_s = cmd self.log.info('exec %s as user %s', cmd_s, user) try: ret = lcall(cmd, **kwargs) except (KeyboardInterrupt, ex.Signal): _len = datetime.now() - now self.log.info('%s interrupted after %s - ret %d', action, _len, 1) return 0 _len = datetime.now() - now msg = '%s done in %s - ret %d' % (action, _len, ret) if ret == 0: self.log.info(msg) else: self.log.error(msg) return ret
def lcall(self, *args, **kwargs): """ Wrap lcall, setting the resource logger """ kwargs["logger"] = self.log return lcall(*args, **kwargs)