Lines Matching refs:self

66     def __init__(self, filename, mode='a', encoding='utf-8', delay=0, max_tries=5):
67 self.max_tries = max_tries
68 self.tries = 0
69 WatchedFileHandler.__init__(self, filename, mode, encoding, delay)
71 def emit(self, record):
74 WatchedFileHandler.emit(self, record)
75 self.tries = 0
78 if self.tries == self.max_tries:
80 self.stream.close()
81 self.stream = self._open()
82 self.tries += 1
88 def __init__(self):
89 self.starttime = None
90 self.returncode = None
91 self.runtime = ''
92 self.stdout = []
93 self.stderr = []
94 self.result = ''
96 def done(self, proc, killed):
105 m, s = divmod(time() - self.starttime, 60)
106 self.runtime = '%02d:%02d' % (m, s)
107 self.returncode = proc.returncode
109 self.result = 'KILLED'
112 elif self.returncode == 0:
113 self.result = 'PASS'
115 elif self.returncode == 3 or self.returncode == 4:
116 self.result = 'SKIP'
118 elif self.returncode != 0:
119 self.result = 'FAIL'
129 def __init__(self, stream):
130 self.stream = stream
131 self._buf = ''
132 self.lines = []
134 def fileno(self):
135 return self.stream.fileno()
137 def read(self, drain=0):
141 while self._read() is not None:
145 def _read(self):
152 fd = self.fileno()
157 self._buf += buf
160 buf = self._buf + buf
162 self._buf = rest
165 self.lines += [(now, r) for r in rows]
171 def __init__(self, pathname, identifier=None, outputdir=None,
173 self.pathname = pathname
174 self.identifier = identifier
175 self.outputdir = outputdir or 'BASEDIR'
176 self.timeout = timeout
177 self.user = user or ''
178 self.killed = False
179 self.result = Result()
181 if self.timeout is None:
182 self.timeout = 60
184 def __str__(self):
191 ''' % (self.pathname, self.identifier, self.outputdir, self.timeout, self.user)
193 def kill_cmd(self, proc):
198 self.killed = True
199 do_sudo = len(self.user) != 0
212 def update_cmd_privs(self, cmd, user):
226 def collect_output(self, proc):
245 def run(self, options):
252 print(self)
255 privcmd = self.update_cmd_privs(self.pathname, self.user)
258 if not os.path.isdir(self.outputdir):
259 os.makedirs(self.outputdir, mode=0o777)
265 self.result.starttime = time()
271 if int(self.timeout) == 0:
272 self.timeout = maxsize
273 t = Timer(int(self.timeout), self.kill_cmd, [proc])
275 self.result.stdout, self.result.stderr = self.collect_output(proc)
277 self.kill_cmd(proc)
282 self.result.done(proc, self.killed)
284 def skip(self):
291 self.result.stdout = self.result.stderr = []
292 self.result.starttime = time()
293 m, s = divmod(time() - self.result.starttime, 60)
294 self.result.runtime = '%02d:%02d' % (m, s)
295 self.result.result = 'SKIP'
297 def log(self, logger, options):
308 user = ' (run as %s)' % (self.user if len(self.user) else logname)
309 if self.identifier:
310 msga = 'Test (%s): %s%s ' % (self.identifier, self.pathname, user)
312 msga = 'Test: %s%s ' % (self.pathname, user)
313 msgb = '[%s] [%s]' % (self.result.runtime, self.result.result)
321 elif self.result.result != 'PASS':
326 lines = sorted(self.result.stdout + self.result.stderr,
332 if len(self.result.stdout):
333 with io.open(os.path.join(self.outputdir, 'stdout'),
337 for _, line in self.result.stdout:
339 if len(self.result.stderr):
340 with io.open(os.path.join(self.outputdir, 'stderr'),
344 for _, line in self.result.stderr:
346 if len(self.result.stdout) and len(self.result.stderr):
347 with io.open(os.path.join(self.outputdir, 'merged'),
359 def __init__(self, pathname,
362 super(Test, self).__init__(pathname, **kwargs)
363 self.pre = pre or ''
364 self.pre_user = pre_user or ''
365 self.post = post or ''
366 self.post_user = post_user or ''
367 self.tags = tags or []
369 def __str__(self):
371 if len(self.pre_user):
372 pre_user = ' (as %s)' % (self.pre_user)
373 if len(self.post_user):
374 post_user = ' (as %s)' % (self.post_user)
384 ''' % (self.pathname, self.identifier, self.outputdir, self.timeout, self.user,
385 self.pre, pre_user, self.post, post_user, self.tags)
387 def verify(self, logger):
392 files = [self.pre, self.pathname, self.post]
393 users = [self.pre_user, self.user, self.post_user]
404 self.pathname)
409 def run(self, logger, options):
414 odir = os.path.join(self.outputdir, os.path.basename(self.pre))
415 pretest = Cmd(self.pre, identifier=self.identifier, outputdir=odir,
416 timeout=self.timeout, user=self.pre_user)
417 test = Cmd(self.pathname, identifier=self.identifier,
418 outputdir=self.outputdir, timeout=self.timeout,
419 user=self.user)
420 odir = os.path.join(self.outputdir, os.path.basename(self.post))
421 posttest = Cmd(self.post, identifier=self.identifier, outputdir=odir,
422 timeout=self.timeout, user=self.post_user)
445 def __init__(self, pathname, tests=None, **kwargs):
446 super(TestGroup, self).__init__(pathname, **kwargs)
447 self.tests = tests or []
449 def __str__(self):
451 if len(self.pre_user):
452 pre_user = ' (as %s)' % (self.pre_user)
453 if len(self.post_user):
454 post_user = ' (as %s)' % (self.post_user)
465 ''' % (self.pathname, self.identifier, self.outputdir, self.tests,
466 self.timeout, self.user, self.pre, pre_user, self.post, post_user,
467 self.tags)
469 def filter(self, keeplist):
470 self.tests = [ x for x in self.tests if x in keeplist ]
472 def verify(self, logger):
480 if len(self.pre) and not os.path.isabs(self.pre):
481 self.pre = os.path.join(self.pathname, self.pre)
482 if len(self.post) and not os.path.isabs(self.post):
483 self.post = os.path.join(self.pathname, self.post)
485 auxfiles = [self.pre, self.post]
486 users = [self.pre_user, self.user, self.post_user]
489 if self.pathname != os.path.dirname(f):
492 "directory." % (self.pathname, f))
498 (self.pathname, f))
504 self.pathname)
508 self.tests[:] = [f for f in self.tests if
509 verify_file(os.path.join(self.pathname, f))]
511 return len(self.tests) != 0
513 def run(self, logger, options):
520 if options.tags and not set(self.tags).intersection(set(options.tags)):
523 odir = os.path.join(self.outputdir, os.path.basename(self.pre))
524 pretest = Cmd(self.pre, outputdir=odir, timeout=self.timeout,
525 user=self.pre_user, identifier=self.identifier)
526 odir = os.path.join(self.outputdir, os.path.basename(self.post))
527 posttest = Cmd(self.post, outputdir=odir, timeout=self.timeout,
528 user=self.post_user, identifier=self.identifier)
536 for fname in self.tests:
537 test = Cmd(os.path.join(self.pathname, fname),
538 outputdir=os.path.join(self.outputdir, fname),
539 timeout=self.timeout, user=self.user,
540 identifier=self.identifier)
556 def __init__(self, options):
557 self.tests = {}
558 self.testgroups = {}
559 self.starttime = time()
560 self.timestamp = datetime.now().strftime('%Y%m%dT%H%M%S')
561 self.outputdir = os.path.join(options.outputdir, self.timestamp)
562 self.logger = self.setup_logging(options)
563 self.defaults = [
575 def __str__(self):
576 s = 'TestRun:\n outputdir: %s\n' % self.outputdir
578 for key in sorted(self.tests.keys()):
579 s += '%s%s' % (self.tests[key].__str__(), '\n')
581 for key in sorted(self.testgroups.keys()):
582 s += '%s%s' % (self.testgroups[key].__str__(), '\n')
585 def addtest(self, pathname, options):
595 if test.verify(self.logger):
596 self.tests[pathname] = test
598 def addtestgroup(self, dirname, filenames, options):
604 if dirname not in self.testgroups:
614 self.testgroups[dirname] = testgroup
615 self.testgroups[dirname].tests = sorted(filenames)
617 testgroup.verify(self.logger)
619 def filter(self, keeplist):
620 for group in list(self.testgroups.keys()):
622 del self.testgroups[group]
625 g = self.testgroups[group]
632 for test in list(self.tests.keys()):
635 del self.tests[test]
637 def read(self, logger, options):
655 setattr(self, opt, config.get('DEFAULT', opt))
656 self.outputdir = os.path.join(self.outputdir, self.timestamp)
692 self.testgroups[section] = testgroup
706 self.testgroups[section] = testgroup
715 self.tests[section] = test
717 def write(self, options):
728 self.defaults])
731 for test in sorted(self.tests.keys()):
734 if prop not in self.props:
736 getattr(self.testgroups[testgroup], prop))
738 for testgroup in sorted(self.testgroups.keys()):
740 config.set(testgroup, 'tests', self.testgroups[testgroup].tests)
742 if prop not in self.props:
744 getattr(self.testgroups[testgroup], prop))
752 def complete_outputdirs(self):
766 tmp_dict = dict(list(self.tests.items()) + list(self.testgroups.items()))
768 base = self.outputdir
782 def setup_logging(self, options):
801 os.makedirs(self.outputdir, mode=0o777)
805 filename = os.path.join(self.outputdir, 'log')
821 def run(self, options):
827 os.chdir(self.outputdir)
829 fail('Could not change to directory %s' % self.outputdir)
830 for test in sorted(self.tests.keys()):
831 self.tests[test].run(self.logger, options)
832 for testgroup in sorted(self.testgroups.keys()):
833 self.testgroups[testgroup].run(self.logger, options)
835 def summary(self):
845 m, s = divmod(time() - self.starttime, 60)
850 print('Log directory:\t%s' % self.outputdir)