Lines Matching refs:self

75     def __init__(self):  argument
76 self.starttime = None
77 self.returncode = None
78 self.runtime = ''
79 self.stdout = []
80 self.stderr = []
81 self.kmemleak = ''
82 self.result = ''
84 def done(self, proc, killed, reran): argument
89 m, s = divmod(monotonic_time() - self.starttime, 60)
90 self.runtime = '%02d:%02d' % (m, s)
91 self.returncode = proc.returncode
95 self.result = 'KILLED'
97 elif len(self.kmemleak) > 0:
98 self.result = 'FAIL'
100 elif self.returncode == 0:
101 self.result = 'PASS'
103 elif self.returncode == 4:
104 self.result = 'SKIP'
106 elif self.returncode != 0:
107 self.result = 'FAIL'
116 def __init__(self, stream, debug=False): argument
117 self.stream = stream
118 self.debug = debug
119 self._buf = b''
120 self.lines = []
122 def fileno(self): argument
123 return self.stream.fileno()
125 def read(self, drain=0): argument
129 while self._read() is not None:
133 def _read(self): argument
140 fd = self.fileno()
144 if self.debug:
147 self._buf += buf
150 buf = self._buf + buf
152 self._buf = rest
155 self.lines += [(now, r) for r in rows]
161 def __init__(self, pathname, identifier=None, outputdir=None, argument
163 self.pathname = pathname
164 self.identifier = identifier
165 self.outputdir = outputdir or 'BASEDIR'
169 self.timeout = timeout
170 self.user = user or ''
171 self.killed = False
172 self.reran = None
173 self.result = Result()
175 if self.timeout is None:
176 self.timeout = 60
178 def __str__(self): argument
185 ''' % (self.pathname, self.identifier, self.outputdir, self.timeout, self.user)
187 def kill_cmd(self, proc, options, kmemleak, keyboard_interrupt=False): argument
192 self.killed = True
193 do_sudo = len(self.user) != 0
212 if keyboard_interrupt is False and self.reran is None:
213 runtime = monotonic_time() - self.result.starttime
214 if int(self.timeout) > runtime:
215 self.killed = False
216 self.reran = False
217 self.run(options, dryrun=False, kmemleak=kmemleak)
218 self.reran = True
220 def update_cmd_privs(self, cmd, user): argument
244 def collect_output(self, proc, debug=False): argument
263 def run(self, options, dryrun=None, kmemleak=None): argument
272 print(self)
277 privcmd = self.update_cmd_privs(self.pathname, self.user)
280 if not os.path.isdir(self.outputdir):
281 os.makedirs(self.outputdir, mode=0o777)
298 self.result.starttime = monotonic_time()
306 if int(self.timeout) == 0:
307 self.timeout = sys.maxsize / (10 ** 9)
309 int(self.timeout), self.kill_cmd, [proc, options, kmemleak]
315 out, err = self.collect_output(proc, options.debug)
316 self.result.stdout = out
317 self.result.stderr = err
323 self.result.kmemleak = check_output(cmd, shell=True)
325 self.kill_cmd(proc, options, kmemleak, True)
330 if self.reran is not False:
331 self.result.done(proc, self.killed, self.reran)
333 def skip(self): argument
340 self.result.stdout = self.result.stderr = []
341 self.result.starttime = monotonic_time()
342 m, s = divmod(monotonic_time() - self.result.starttime, 60)
343 self.result.runtime = '%02d:%02d' % (m, s)
344 self.result.result = 'SKIP'
346 def log(self, options, suppress_console=False): argument
356 if self.reran is True:
358 user = ' (run as %s)' % (self.user if len(self.user) else logname)
359 if self.identifier:
360 msga = 'Test (%s): %s%s ' % (self.identifier, self.pathname, user)
362 msga = 'Test: %s%s ' % (self.pathname, user)
363 msgb = '[%s] [%s]%s\n' % (self.result.runtime, self.result.result, rer)
375 elif options.quiet and self.result.result != 'PASS':
378 lines = sorted(self.result.stdout + self.result.stderr,
388 if len(self.result.stdout):
389 with open(os.path.join(self.outputdir, 'stdout'), 'wb') as out:
390 for _, line in self.result.stdout:
392 if len(self.result.stderr):
393 with open(os.path.join(self.outputdir, 'stderr'), 'wb') as err:
394 for _, line in self.result.stderr:
396 if len(self.result.stdout) and len(self.result.stderr):
397 with open(os.path.join(self.outputdir, 'merged'), 'wb') as merged:
400 if len(self.result.kmemleak):
401 with open(os.path.join(self.outputdir, 'kmemleak'), 'wb') as kmem:
402 kmem.write(self.result.kmemleak)
409 def __init__(self, pathname, argument
412 super(Test, self).__init__(pathname, **kwargs)
413 self.pre = pre or ''
414 self.pre_user = pre_user or ''
415 self.post = post or ''
416 self.post_user = post_user or ''
417 self.failsafe = failsafe or ''
418 self.failsafe_user = failsafe_user or ''
419 self.tags = tags or []
421 def __str__(self): argument
423 if len(self.pre_user):
424 pre_user = ' (as %s)' % (self.pre_user)
425 if len(self.post_user):
426 post_user = ' (as %s)' % (self.post_user)
427 if len(self.failsafe_user):
428 failsafe_user = ' (as %s)' % (self.failsafe_user)
439 ''' % (self.pathname, self.identifier, self.outputdir, self.timeout, self.user,
440 self.pre, pre_user, self.post, post_user, self.failsafe,
441 failsafe_user, self.tags)
443 def verify(self): argument
448 files = [self.pre, self.pathname, self.post, self.failsafe]
449 users = [self.pre_user, self.user, self.post_user, self.failsafe_user]
460 self.pathname, LOG_ERR)
465 def run(self, options, dryrun=None, kmemleak=None): argument
471 odir = os.path.join(self.outputdir, os.path.basename(self.pre))
472 pretest = Cmd(self.pre, identifier=self.identifier, outputdir=odir,
473 timeout=self.timeout, user=self.pre_user)
474 test = Cmd(self.pathname, identifier=self.identifier,
475 outputdir=self.outputdir, timeout=self.timeout,
476 user=self.user)
477 odir = os.path.join(self.outputdir, os.path.basename(self.failsafe))
478 failsafe = Cmd(self.failsafe, identifier=self.identifier,
479 outputdir=odir, timeout=self.timeout,
480 user=self.failsafe_user)
481 odir = os.path.join(self.outputdir, os.path.basename(self.post))
482 posttest = Cmd(self.post, identifier=self.identifier, outputdir=odir,
483 timeout=self.timeout, user=self.post_user)
509 def __init__(self, pathname, tests=None, **kwargs): argument
510 super(TestGroup, self).__init__(pathname, **kwargs)
511 self.tests = tests or []
513 def __str__(self): argument
515 if len(self.pre_user):
516 pre_user = ' (as %s)' % (self.pre_user)
517 if len(self.post_user):
518 post_user = ' (as %s)' % (self.post_user)
519 if len(self.failsafe_user):
520 failsafe_user = ' (as %s)' % (self.failsafe_user)
532 ''' % (self.pathname, self.identifier, self.outputdir, self.tests,
533 self.timeout, self.user, self.pre, pre_user, self.post, post_user,
534 self.failsafe, failsafe_user, self.tags)
536 def filter(self, keeplist): argument
537 self.tests = [x for x in self.tests if x in keeplist]
539 def verify(self): argument
547 if len(self.pre) and not os.path.isabs(self.pre):
548 self.pre = os.path.join(self.pathname, self.pre)
549 if len(self.post) and not os.path.isabs(self.post):
550 self.post = os.path.join(self.pathname, self.post)
551 if len(self.failsafe) and not os.path.isabs(self.failsafe):
552 self.post = os.path.join(self.pathname, self.post)
554 auxfiles = [self.pre, self.post, self.failsafe]
555 users = [self.pre_user, self.user, self.post_user, self.failsafe_user]
558 if f != self.failsafe and self.pathname != os.path.dirname(f):
561 "directory.\n" % (self.pathname, f), LOG_ERR)
567 (self.pathname, f), LOG_ERR)
573 self.pathname, LOG_ERR)
577 for test in self.tests:
578 if not verify_file(os.path.join(self.pathname, test)):
579 del self.tests[self.tests.index(test)]
582 (test, self.pathname), LOG_ERR)
584 return len(self.tests) != 0
586 def run(self, options, dryrun=None, kmemleak=None): argument
593 if options.tags and not set(self.tags).intersection(set(options.tags)):
596 odir = os.path.join(self.outputdir, os.path.basename(self.pre))
597 pretest = Cmd(self.pre, outputdir=odir, timeout=self.timeout,
598 user=self.pre_user, identifier=self.identifier)
599 odir = os.path.join(self.outputdir, os.path.basename(self.post))
600 posttest = Cmd(self.post, outputdir=odir, timeout=self.timeout,
601 user=self.post_user, identifier=self.identifier)
609 for fname in self.tests:
610 odir = os.path.join(self.outputdir, fname)
611 test = Cmd(os.path.join(self.pathname, fname), outputdir=odir,
612 timeout=self.timeout, user=self.user,
613 identifier=self.identifier)
614 odir = os.path.join(odir, os.path.basename(self.failsafe))
615 failsafe = Cmd(self.failsafe, outputdir=odir, timeout=self.timeout,
616 user=self.failsafe_user, identifier=self.identifier)
635 def __init__(self, options): argument
636 self.tests = {}
637 self.testgroups = {}
638 self.starttime = time()
639 self.timestamp = datetime.now().strftime('%Y%m%dT%H%M%S')
640 self.outputdir = os.path.join(options.outputdir, self.timestamp)
641 self.setup_logging(options)
642 self.defaults = [
657 def __str__(self): argument
658 s = 'TestRun:\n outputdir: %s\n' % self.outputdir
660 for key in sorted(self.tests.keys()):
661 s += '%s%s' % (self.tests[key].__str__(), '\n')
663 for key in sorted(self.testgroups.keys()):
664 s += '%s%s' % (self.testgroups[key].__str__(), '\n')
667 def addtest(self, pathname, options): argument
678 self.tests[pathname] = test
680 def addtestgroup(self, dirname, filenames, options): argument
686 if dirname not in self.testgroups:
696 self.testgroups[dirname] = testgroup
697 self.testgroups[dirname].tests = sorted(filenames)
701 def filter(self, keeplist): argument
702 for group in list(self.testgroups.keys()):
704 del self.testgroups[group]
707 g = self.testgroups[group]
714 for test in list(self.tests.keys()):
717 del self.tests[test]
719 def read(self, options): argument
737 setattr(self, opt, config.get('DEFAULT', opt))
738 self.outputdir = os.path.join(self.outputdir, self.timestamp)
774 self.testgroups[section] = testgroup
788 self.tests[section] = test
790 def write(self, options): argument
801 self.defaults])
804 for test in sorted(self.tests.keys()):
807 if prop not in self.props:
809 getattr(self.tests[test], prop))
811 for testgroup in sorted(self.testgroups.keys()):
813 config.set(testgroup, 'tests', self.testgroups[testgroup].tests)
815 if prop not in self.props:
817 getattr(self.testgroups[testgroup], prop))
825 def complete_outputdirs(self): argument
840 tmp_dict = dict(list(self.tests.items()) +
841 list(self.testgroups.items()))
843 base = self.outputdir
857 def setup_logging(self, options): argument
870 os.makedirs(self.outputdir, mode=0o777)
872 filename = os.path.join(self.outputdir, 'log')
877 def run(self, options): argument
882 os.chdir(self.outputdir)
884 fail('Could not change to directory %s' % self.outputdir)
886 logsymlink = os.path.join(self.outputdir, '../current')
890 os.symlink(self.outputdir, logsymlink)
893 self.outputdir, LOG_ERR)
901 for test in sorted(self.tests.keys()):
902 self.tests[test].run(options)
903 for testgroup in sorted(self.testgroups.keys()):
904 self.testgroups[testgroup].run(options)
907 def summary(self): argument
916 m, s = divmod(time() - self.starttime, 60)
921 print('Log directory:\t%s' % self.outputdir)