<div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Apr 19, 2019, 12:05 AM akuster808 &lt;<a href="mailto:akuster808@gmail.com">akuster808@gmail.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
On 4/18/19 7:57 PM, Joshua Watt wrote:<br>
&gt; Adds a subcommand for dumping various logs from test results<br>
&gt;<br>
&gt; Signed-off-by: Joshua Watt &lt;<a href="mailto:JPEWhacker@gmail.com" target="_blank" rel="noreferrer">JPEWhacker@gmail.com</a>&gt;<br>
&gt; ---<br>
&gt;  scripts/lib/resulttool/log.py        | 56 ++++++++++++++++++++++++++++<br>
&gt;  scripts/lib/resulttool/regression.py |  2 +-<br>
&gt;  scripts/resulttool                   |  2 +<br>
&gt;  3 files changed, 59 insertions(+), 1 deletion(-)<br>
&gt;  create mode 100644 scripts/lib/resulttool/log.py<br>
&gt;<br>
&gt; diff --git a/scripts/lib/resulttool/log.py b/scripts/lib/resulttool/log.py<br>
&gt; new file mode 100644<br>
&gt; index 00000000000..5584f2d0a99<br>
&gt; --- /dev/null<br>
&gt; +++ b/scripts/lib/resulttool/log.py<br>
&gt; @@ -0,0 +1,56 @@<br>
&gt; +# resulttool - Show logs<br>
&gt; +#<br>
&gt; +# Copyright (c) 2019 Garmin International<br>
&gt; +#<br>
&gt; +# This program is free software; you can redistribute it and/or modify it<br>
&gt; +# under the terms and conditions of the GNU General Public License,<br>
&gt; +# version 2, as published by the Free Software Foundation.<br>
&gt; +#<br>
&gt; +# This program is distributed in the hope it will be useful, but WITHOUT<br>
&gt; +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or<br>
&gt; +# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for<br>
&gt; +# more details.<br>
&gt; +#<br>
&gt; +import resulttool.resultutils as resultutils<br>
&gt; +<br>
&gt; +def show_ptest(result, ptest, logger):<br>
&gt; +    if &#39;ptestresult.sections&#39; in result:<br>
&gt; +        if ptest in result[&#39;ptestresult.sections&#39;] and &#39;log&#39; in result[&#39;ptestresult.sections&#39;][ptest]:<br>
&gt; +            print(result[&#39;ptestresult.sections&#39;][ptest][&#39;log&#39;])<br>
&gt; +            return 0<br>
&gt; +<br>
&gt; +    print(&quot;ptest &#39;%s&#39; not found&quot; % ptest)<br>
&gt; +    return 1<br>
&gt; +<br>
&gt; +def log(args, logger):<br>
&gt; +    results = resultutils.load_resultsdata(args.source)<br>
&gt; +    for path in results:<br>
&gt; +        for res in results[path]:<br>
&gt; +            if &#39;result&#39; not in results[path][res]:<br>
&gt; +                continue<br>
&gt; +            r = results[path][res][&#39;result&#39;]<br>
&gt; +<br>
&gt; +            if args.raw:<br>
&gt; +                if &#39;ptestresult.rawlogs&#39; in r:<br>
&gt; +                    print(r[&#39;ptestresult.rawlogs&#39;][&#39;log&#39;])<br>
&gt; +                else:<br>
&gt; +                    print(&#39;Raw logs not found&#39;)<br>
&gt; +                    return 1<br>
&gt; +<br>
&gt; +            for ptest in args.ptest:<br>
&gt; +                if not show_ptest(r, ptest, logger):<br>
&gt; +                    return 1<br>
&gt; +<br>
&gt; +def register_commands(subparsers):<br>
&gt; +    &quot;&quot;&quot;Register subcommands from this plugin&quot;&quot;&quot;<br>
&gt; +    parser = subparsers.add_parser(&#39;log&#39;, help=&#39;show logs&#39;,<br>
&gt; +                                         description=&#39;show the logs from test results&#39;,<br>
&gt; +                                         group=&#39;analysis&#39;)<br>
&gt; +    parser.set_defaults(func=log)<br>
&gt; +    parser.add_argument(&#39;source&#39;,<br>
&gt; +            help=&#39;the results file/directory/URL to import&#39;)<br>
&gt; +    parser.add_argument(&#39;--ptest&#39;, action=&#39;append&#39;, default=[],<br>
&gt; +            help=&#39;show logs for a ptest&#39;)<br>
&gt; +    parser.add_argument(&#39;--raw&#39;, action=&#39;store_true&#39;,<br>
&gt; +            help=&#39;show raw logs&#39;)<br>
&gt; +<br>
&gt; diff --git a/scripts/lib/resulttool/regression.py b/scripts/lib/resulttool/regression.py<br>
&gt; index aecb9da9ce5..fa90ab1e522 100644<br>
&gt; --- a/scripts/lib/resulttool/regression.py<br>
&gt; +++ b/scripts/lib/resulttool/regression.py<br>
&gt; @@ -64,7 +64,7 @@ def regression_common(args, logger, base_results, target_results):<br>
&gt;          if a in target_results:<br>
&gt;              base = list(base_results[a].keys())<br>
&gt;              target = list(target_results[a].keys())<br>
&gt; -            # We may have multiple base/targets which are for different configurations. Start by <br>
&gt; +            # We may have multiple base/targets which are for different configurations. Start by<br>
This change looks the same to me so what am I missing?<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">It stripped off trailing whitespace and I missed removing it when staging.<br></div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
- Armin<br>
&gt;              # removing any pairs which match<br>
&gt;              for c in base.copy():<br>
&gt;                  for b in target.copy():<br>
&gt; diff --git a/scripts/resulttool b/scripts/resulttool<br>
&gt; index 18ac1019236..9477667a870 100755<br>
&gt; --- a/scripts/resulttool<br>
&gt; +++ b/scripts/resulttool<br>
&gt; @@ -49,6 +49,7 @@ import resulttool.store<br>
&gt;  import resulttool.regression<br>
&gt;  import resulttool.report<br>
&gt;  import resulttool.manualexecution<br>
&gt; +import resulttool.log<br>
&gt;  logger = scriptutils.logger_create(&#39;resulttool&#39;)<br>
&gt;  <br>
&gt;  def main():<br>
&gt; @@ -66,6 +67,7 @@ def main():<br>
&gt;      subparsers.add_subparser_group(&#39;analysis&#39;, &#39;analysis&#39;, 100)<br>
&gt;      resulttool.regression.register_commands(subparsers)<br>
&gt;      resulttool.report.register_commands(subparsers)<br>
&gt; +    resulttool.log.register_commands(subparsers)<br>
&gt;  <br>
&gt;      args = parser.parse_args()<br>
&gt;      if args.debug:<br>
<br>
<br>
</blockquote></div></div></div>