On Saturday, February 15, 2014 11:11:27 PM Ilia Mirkin wrote: > On Sat, Feb 15, 2014 at 7:33 AM, Dylan Baker <[email protected]> wrote: > > There are some things that need to be worked out still > > This seems to be based on my change, right?
yes > > I like not having to pass env.environ in every time -- that was > definitely an annoying wart of my impl. > > I dunno about putting the summary on the same line with the verbose > output, the lines will end up being super-long. What do you think > about having the verbose output be *both* lines? e.g. something like > "result :: name\n[complete/total] summary running\r". That way the > ephemeral information isn't in the scroll-back, but still available. I don't really care what the verbose output looks like, the point of my example was to pass verbose the constructor and only do the branching once. > > On a semi-unrelated note, if you're so concerned with the speed of the > log stuff, have you played around with making self.__running a set? > That should speed removal up a bit...] That's a good idea. > > In any case, > > Reviewed-by: Ilia Mirkin <[email protected]> > > Should I go ahead and start pushing the changes you reviewed from my > list? I was waiting since I don't want to cause too many conflicts. Yeah, that would be fine with me. > > -ilia > > > --- > > > > framework/core.py | 15 ++++++++------- > > framework/log.py | 41 ++++++++++++++++++++++------------------- > > 2 files changed, 30 insertions(+), 26 deletions(-) > > > > diff --git a/framework/core.py b/framework/core.py > > index ee39616..e4a18ea 100644 > > --- a/framework/core.py > > +++ b/framework/core.py > > > > @@ -435,12 +435,14 @@ class Test(object): > > ``spec/glsl-1.30/preprocessor/compiler/keywords/void.frag``. > > > > ''' > > > > - log_current = log.get_current() > > + log_current = log.pre_log() > > > > counts = {} > > # Run the test > > > > if env.execute: > > try: > > - log.log(env.verbose, log_current, path, "running") > > + if env.verbose: > > + log.log(log_current, path, "running") > > + > > > > time_start = time.time() > > dmesg.update_dmesg() > > self._test_hook_execute_run() > > > > @@ -464,8 +466,7 @@ class Test(object): > > result['traceback'] = \ > > > > "".join(traceback.format_tb(sys.exc_info()[2])) > > > > - if env.verbose: > > - log.log(env.verbose, log_current, path, result["result"]) > > + log.log(log_current, path, result["result"]) > > > > if 'subtest' in result and len(result['subtest']) > 1: > > for test in result['subtest']: > > @@ -476,8 +477,8 @@ class Test(object): > > counts[result['result']] = 1 > > json_writer.write_dict_item(path, result) > > > > else: > > - log.log(env.verbose, log_current, path, "noexec") > > - log.mark_complete(log_current, counts) > > + log.log(log_current, path, "dry-run") > > + log.post_log(log_current, counts) > > > > class Group(dict): > > @@ -562,7 +563,7 @@ class TestProfile(object): > > ''' > > > > self.prepare_test_list(env) > > > > - log = Log(len(self.test_list)) > > + log = Log(len(self.test_list), env.verbose) > > > > def test(pair): > > """ Function to call test.execute from .map > > > > diff --git a/framework/log.py b/framework/log.py > > index 880cff3..5b5a7af 100644 > > --- a/framework/log.py > > +++ b/framework/log.py > > > > @@ -31,7 +31,7 @@ class Log(object): > > total -- The total number of tests to run. > > > > """ > > > > - def __init__(self, total): > > > > + def __init__(self, total, verbose): > > self.__total = total > > self.__complete = 1 > > self.__running = [] > > > > @@ -39,22 +39,29 @@ class Log(object): > > self.__pad = len(str(self.__total)) > > self.__summary = {} > > > > + if verbose: > > + self.__output = "[{percent} {summary}] :: {result:>7} :: > > {name}\n" + else: > > + self.__output = "[{percent}] {running} {summary}\r" > > + > > > > def _summary(self): > > + """ Print a summary of test statuses """ > > > > return ", ".join("{0}: {1}".format(k, self.__summary[k]) > > > > for k in sorted(self.__summary)) > > > > def _running(self): > > + """ Print running tests """ > > > > return "Running Test(s): {}".format( > > > > " ".join([str(x).zfill(self.__pad) for x in self.__running])) > > > > def _percent(self): > > - return "[{0}/{1}] {2}".format( > > - str(self.__complete).zfill(self.__pad), > > - str(self.__total).zfill(self.__pad), > > - self._summary()) > > + """ Print the percentage of tests completed in form > > <finsihed>/<total> + """ > > + return "{0}/{1}".format(str(self.__complete).zfill(self.__pad), > > + str(self.__total).zfill(self.__pad)) > > > > @synchronized_self > > > > - def mark_complete(self, value, counts): > > > > + def post_log(self, value, counts): > > """ Used to mark a test as complete in the log > > > > Arguments: > > @@ -73,27 +80,23 @@ class Log(object): > > self.__summary[k] = self.__summary.get(k, 0) + v > > > > @synchronized_self > > > > - def log(self, verbose, id, name, result): > > > > + def log(self, test_id, name, result): > > """ Print to the screen > > > > Works by moving the cursor back to the front of the line and > > printing > > over it. > > > > """ > > > > - if verbose: > > - sys.stdout.write("[{0}/{1}] :: {2:>7} :: {3}\n".format( > > - str(id).zfill(self.__pad), > > - str(self.__total).zfill(self.__pad), > > - result, > > - name)) > > - else: > > - sys.stdout.write("{0} {1} \r".format(self._percent(), > > self._running())) - # Need to flush explicitly, otherwise it > > all gets buffered without a - # newline. > > - sys.stdout.flush() > > + sys.stdout.write(self.__output.format(**{'percent': > > self._percent(), + > > 'running': self._running(), + > > 'summary': self._summary(), + > > 'name': name, > > + 'result': result})) > > + > > + sys.stdout.flush() > > > > @synchronized_self > > > > - def get_current(self): > > > > + def pre_log(self): > > """ Returns a new number to know what processes are running """ > > x = self.__generator.next() > > self.__running.append(x) > > > > -- > > 1.8.5.4 > > > > _______________________________________________ > > Piglit mailing list > > [email protected] > > http://lists.freedesktop.org/mailman/listinfo/piglit
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
