[Piglit] [PATCH] core: show progress percentage indicator

Dylan Baker baker.dylan.c at gmail.com
Tue Jan 28 09:27:37 PST 2014


Sorry I missed this.

I have a patch out to do something similar 
(http://patchwork.freedesktop.org/patch/17632/), although I was going for 
completely replace rather than enhance. The problem with adding to the logger 
function is that it is already slowing down piglit runs, with my simpler 
output I saw almost a 1 minute improvement in quick.py runtime consistently, 
and I could repeat it over and over. I have a few more comments below.

On Wednesday, January 15, 2014 08:45:19 AM Ilia Mirkin wrote:
> This will show X% instead of 'running' in the status, that way it's
> easy to see how far along a particular run is.
> 
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
> 
> Written while waiting for a piglit run to complete...
> 
>  framework/core.py | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/framework/core.py b/framework/core.py
> index 7231938..14b07fb 100644
> --- a/framework/core.py
> +++ b/framework/core.py
> @@ -464,7 +464,7 @@ class Test:
>      def run(self):
>          raise NotImplementedError
> 
> -    def execute(self, env, path, json_writer):
> +    def execute(self, env, run_msg, path, json_writer):
>          '''
>          Run the test.
> 
> @@ -478,7 +478,7 @@ class Test:
>          # Run the test
>          if env.execute:
>              try:
> -                status("running")
> +                status(run_msg)
>                  time_start = time.time()
>                  result = self.run(env)
>                  time_end = time.time()
> @@ -508,7 +508,7 @@ class Test:
>              else:
>                  json_writer.write_dict_item(path, result)
>          else:
> -            status("dry-run")
> +            status("dry-run %s" % run_msg)
> 
> 
>  class Group(dict):
> @@ -565,6 +565,9 @@ class TestProfile:
>          '''
> 
>          self.prepare_test_list(env)
> +        total = len(self.test_list)
> +        count = [0]
> +        lock = multiprocessing.dummy.Lock()

I'm actually on a campaign to kill Group, I'm just a little sidetracked in the 
mess of the Test classes right now, but t would be best not to add code to 
Group()

> 
>          def test(pair):
>              """ Function to call test.execute from .map
> @@ -573,7 +576,10 @@ class TestProfile:
> 
>              """
>              name, test = pair
> -            test.execute(env, name, json_writer)
> +            with lock:
> +                count[0] = count[0] + 1
> +                pct = 100. * count[0] / total
> +            test.execute(env, "%.0f%%" % pct, name, json_writer)
> 
>          # Multiprocessing.dummy is a wrapper around Threading that provides
> a # multiprocessing compatible API
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 490 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20140128/8ac2122c/attachment-0001.pgp>


More information about the Piglit mailing list