<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugzilla.yoctoproject.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugzilla.yoctoproject.org/"
          
          maintainer="it-coreprojects-helpdesk@linuxfoundation.org"
>

    <bug>
          <bug_id>9377</bug_id>
          
          <creation_ts>2016-04-01 20:52:48 +0000</creation_ts>
          <short_desc>Enable automated build performance testing in Autobuilder</short_desc>
          <delta_ts>2019-02-28 15:15:02 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>10</classification_id>
          <classification>QA/Testing</classification>
          <product>Build Testing</product>
          <component>general</component>
          <version>unspecified</version>
          <rep_platform>x86</rep_platform>
          <op_sys>Multiple</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>Medium+</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>Future</target_milestone>
          <dependson>13014</dependson>
          <blocked>9769</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jose Perez C">jose.perez.carranza</reporter>
          <assigned_to name="Richard Purdie">richard.purdie</assigned_to>
          <cc>anibal.limon</cc>
    
    <cc>benjamin.esquivel</cc>
    
    <cc>elizabeth.flanagan</cc>
    
    <cc>joshuagloe</cc>
    
    <cc>leonardo.sandoval.gonzalez</cc>
    
    <cc>markus.lehtonen</cc>
    
    <cc>richard.purdie</cc>
    
    <cc>ross.burton</cc>
    
    <cc>sgw</cc>
    
    <cc>stephano</cc>
          
          
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>No (bug/feature does not impact docs)</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>60709</commentid>
    <comment_count>0</comment_count>
    <who name="Jose Perez C">jose.perez.carranza</who>
    <bug_when>2016-04-01 20:52:48 +0000</bug_when>
    <thetext>Currently the results for build performance tests are sent by mail with a raw data that is not easy to manage, in order to have better control of the 
results we need to store them in a standard and easy to mange format, the first approach to do this is to enable the capability on Autobuilder to run performance 
test jobs in a specific list of machines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62293</commentid>
    <comment_count>1</comment_count>
    <who name="Markus Lehtonen">markus.lehtonen</who>
    <bug_when>2016-05-18 13:44:23 +0000</bug_when>
    <thetext>Could you elaborate what would be expected to be implemented by me? A set of new buildsteps, I suppose, but something else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62489</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Esquivel">benjamin.esquivel</who>
    <bug_when>2016-05-26 20:23:24 +0000</bug_when>
    <thetext>Please coordinate with Anibal for seeing his work on AB steps for testing and coordinate with Humberto for the AB Workers that will be used for performance measurements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67823</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Esquivel">benjamin.esquivel</who>
    <bug_when>2016-11-01 16:50:01 +0000</bug_when>
    <thetext>Assigning to Leo so he can redistribute it among the GDC team.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68052</commentid>
    <comment_count>4</comment_count>
    <who name="Aníbal Limón">anibal.limon</who>
    <bug_when>2016-11-07 22:54:48 +0000</bug_when>
    <thetext>I finished a simple implementation, i need to test it before to send to the ML,

http://git.yoctoproject.org/cgit/cgit.cgi/yocto-autobuilder/commit/?h=contrib/alimon/devel&amp;id=bf0d3082a492d0ce110417e1ac321e477a79731d</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68418</commentid>
    <comment_count>5</comment_count>
    <who name="Leonardo Sandoval Gonzalez">leonardo.sandoval.gonzalez</who>
    <bug_when>2016-11-17 18:02:02 +0000</bug_when>
    <thetext>Monse will take lead on this with Anibal&apos;s guidance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68434</commentid>
    <comment_count>6</comment_count>
    <who name="Markus Lehtonen">markus.lehtonen</who>
    <bug_when>2016-11-18 07:13:03 +0000</bug_when>
    <thetext>Any updates for the patchset? I previously commented to Aníbal that it would be good to not use the build-perf-test-wrapper.sh script but oe-build-perf-test directly. The reason being that the wrapper script is quite stupid with many hardcoded bits. It would be more maintainable just to write out the steps performed by the wrapper in the autobuilder job</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68441</commentid>
    <comment_count>7</comment_count>
    <who name="Aníbal Limón">anibal.limon</who>
    <bug_when>2016-11-18 14:47:50 +0000</bug_when>
    <thetext>(In reply to comment #6)
&gt; Any updates for the patchset? I previously commented to Aníbal that it would
&gt; be good to not use the build-perf-test-wrapper.sh script but
&gt; oe-build-perf-test directly. The reason being that the wrapper script is
&gt; quite stupid with many hardcoded bits. It would be more maintainable just to
&gt; write out the steps performed by the wrapper in the autobuilder job

Yes, I&apos;m in sync with Monse and she has taken into account to don&apos;t use the wrapper.

Any status Monse?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68442</commentid>
    <comment_count>8</comment_count>
    <who name="Monserrat">monserratx.sedeno.bustos</who>
    <bug_when>2016-11-18 16:31:42 +0000</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Any updates for the patchset? I previously commented to Aníbal that it would
&gt; &gt; be good to not use the build-perf-test-wrapper.sh script but
&gt; &gt; oe-build-perf-test directly. The reason being that the wrapper script is
&gt; &gt; quite stupid with many hardcoded bits. It would be more maintainable just to
&gt; &gt; write out the steps performed by the wrapper in the autobuilder job
&gt; 
&gt; Yes, I&apos;m in sync with Monse and she has taken into account to don&apos;t use the
&gt; wrapper.
&gt; 
&gt; Any status Monse?

Yes, I am working on that patchset, and we are not use the wrapper script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69827</commentid>
    <comment_count>9</comment_count>
    <who name="Aníbal Limón">anibal.limon</who>
    <bug_when>2017-01-16 16:24:53 +0000</bug_when>
    <thetext>In review at,

https://lists.yoctoproject.org/pipermail/yocto/2017-January/033937.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70058</commentid>
    <comment_count>10</comment_count>
    <who name="Aníbal Limón">anibal.limon</who>
    <bug_when>2017-01-23 22:34:50 +0000</bug_when>
    <thetext>Buildset is integrated into Autobuilder master,

http://git.yoctoproject.org/cgit/cgit.cgi/yocto-autobuilder/commit/?id=3406824a7cdfd256db1f9fa55b3700df70d77ce7

We will work on deployment on GDC AB&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73143</commentid>
    <comment_count>11</comment_count>
    <who name="Markus Lehtonen">markus.lehtonen</who>
    <bug_when>2017-05-09 14:19:40 +0000</bug_when>
    <thetext>Reopening this as this was never actually deployed and it is broken in its current state as the command line interface of oe-build-perf-test has changed. Git operations should be handled by the oe-git-archive script. Also, we should xml report format.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75151</commentid>
    <comment_count>12</comment_count>
    <who name="Stephano Cetola">stephano</who>
    <bug_when>2017-07-19 19:37:01 +0000</bug_when>
    <thetext>Moving to M3 since Markus is on leave.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75719</commentid>
    <comment_count>13</comment_count>
    <who name="Joshua Lock">joshuagloe</who>
    <bug_when>2017-08-08 12:59:48 +0000</bug_when>
    <thetext>(In reply to comment #11)
&gt; Reopening this as this was never actually deployed and it is broken in its
&gt; current state as the command line interface of oe-build-perf-test has
&gt; changed. Git operations should be handled by the oe-git-archive script.
&gt; Also, we should xml report format.

Looking at the existing oe-build-perf-test call:

&quot;&quot;&quot; oe-build-perf-test --out-dir &quot;%s&quot; --globalres-file &quot;%s&quot; --lock-file &quot;%s&quot; --commit-results &quot;%s&quot; --commit-results-branch &quot;{tester_host}/{git_branch}/%s&quot; --commit-results-tag &quot;{tester_host}/{git_branch}/%s/{git_commit_count}-g{git_commit}/{tag_num}&quot; &quot;&quot;&quot; % (results_dir, globalres_log, lock_file, git_dir, machine, machine)

I think the new oe-build-perf-test invocation should look like:

&quot;oe-build-perf-test --outdir %s --globalres-file %s --lock-file %s -x&quot; % (results_dir, globalres_log, lock_file)

Could you help us get the correct invocation semantics for oe-git-archive?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75732</commentid>
    <comment_count>14</comment_count>
    <who name="Markus Lehtonen">markus.lehtonen</who>
    <bug_when>2017-08-08 15:41:27 +0000</bug_when>
    <thetext>(In reply to comment #13)
&gt; 
&gt; Looking at the existing oe-build-perf-test call:
&gt; 
&gt; &quot;&quot;&quot; oe-build-perf-test --out-dir &quot;%s&quot; --globalres-file &quot;%s&quot; --lock-file &quot;%s&quot;
&gt; --commit-results &quot;%s&quot; --commit-results-branch
&gt; &quot;{tester_host}/{git_branch}/%s&quot; --commit-results-tag
&gt; &quot;{tester_host}/{git_branch}/%s/{git_commit_count}-g{git_commit}/{tag_num}&quot;
&gt; &quot;&quot;&quot; % (results_dir, globalres_log, lock_file, git_dir, machine, machine)
&gt; 
&gt; I think the new oe-build-perf-test invocation should look like:
&gt; 
&gt; &quot;oe-build-perf-test --outdir %s --globalres-file %s --lock-file %s -x&quot; %
&gt; (results_dir, globalres_log, lock_file)

Yes, this looks correct.

 
&gt; Could you help us get the correct invocation semantics for oe-git-archive?

Looking at scripts/contrib/build-perf-test-wrapper.sh, it would be something like (in Popen-compatible list format):
[ &quot;oe-git-archive&quot;, 
  &quot;--git-dir&quot;, results_repo,
  &quot;--branch-name&quot;, &quot;{hostname}/{branch}/{machine}&quot;,
  &quot;--tag-name&quot;, &quot;{hostname}/{branch}/{machine}/{commit_count}-g{commit}/{tag_number}&quot;,
  &quot;--exclude&quot;, &quot;buildstats.json&quot;,
  &quot;--notes&quot;, &quot;buildstats/{branch_name}&quot;, os.path.join(results_dir, &quot;buildstats.json&quot;),
  &quot;--push&quot;, git_remote,
  results_dir ]

Where:
- &apos;results_dir&apos; is the output dir used for oe-build-perf-test
- &apos;results_repo&apos; is the local git repo to commit the results in
- &apos;git_remote&apos; is the remote where to push results

The &apos;--exclude&apos; option makes buildstats not to be committed into git. But, the &apos;--notes&apos; option (with two arguments, notes ref and the file to be committed) makes the buildstats to be saved in git-notes, instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75757</commentid>
    <comment_count>15</comment_count>
    <who name="Markus Lehtonen">markus.lehtonen</who>
    <bug_when>2017-08-09 04:40:45 +0000</bug_when>
    <thetext>In addition to running the test and archiving the results, the reporting functionality (email reporting and uploading html report to a remote location) of build-perf-test-wrapper.sh should be implemented in autobuilder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76890</commentid>
    <comment_count>16</comment_count>
    <who name="Joshua Lock">joshuagloe</who>
    <bug_when>2017-09-15 13:37:36 +0000</bug_when>
    <thetext>(In reply to comment #15)
&gt; In addition to running the test and archiving the results, the reporting
&gt; functionality (email reporting and uploading html report to a remote
&gt; location) of build-perf-test-wrapper.sh should be implemented in autobuilder.

Is there any reason we shouldn&apos;t just use build-perf-test-wrapper.sh directly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76891</commentid>
    <comment_count>17</comment_count>
    <who name="Markus Lehtonen">markus.lehtonen</who>
    <bug_when>2017-09-15 14:03:57 +0000</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; In addition to running the test and archiving the results, the reporting
&gt; &gt; functionality (email reporting and uploading html report to a remote
&gt; &gt; location) of build-perf-test-wrapper.sh should be implemented in autobuilder.
&gt; 
&gt; Is there any reason we shouldn&apos;t just use build-perf-test-wrapper.sh
&gt; directly?

I just think it&apos;s hard to maintain. And, against the autobuilder idea of separating the build into separate simpler buildsteps. The wrapper script contains all steps in one easily breaking shell script with a lot of hardcoded assumptions. My assumption was that using autobuilder would simplify things, e.g. being able to re-use readily available bits for fetching, initializing build dir and config etc.

Of course you can just call the wrapper script, though. Maybe that would be a logical initial implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77194</commentid>
    <comment_count>18</comment_count>
    <who name="Joshua Lock">joshuagloe</who>
    <bug_when>2017-09-28 11:21:15 +0000</bug_when>
    <thetext>Bumping this to 2.5. Running the tests and generating the reports is easy thanks to the scripts Markus has developed in OE-Core.

Translating the reports for publishing requires some more thought and work, I&apos;m reticent to require phantomjs (an abandoned project) on all workers that might send mail, but equally I&apos;m in no hurry to implement an alternative on the autobuilder.

It might make sense to port the phantomjs usage of OE-Core&apos;s scripts/contrib/oe-build-perf-report-email.py to slimerjs[1]/headless firefox[2] or something using Chrome&apos;s Puppeteer[3][4]

1. https://slimerjs.org/
2. https://developer.mozilla.org/en-US/Firefox/Headless_mode
3. https://github.com/GoogleChrome/puppeteer
4. https://medium.com/@kensoh/chromeless-chrominator-chromy-navalia-lambdium-ghostjs-autogcd-ef34bcd26907</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77224</commentid>
    <comment_count>19</comment_count>
    <who name="Markus Lehtonen">markus.lehtonen</who>
    <bug_when>2017-09-29 07:41:08 +0000</bug_when>
    <thetext>Using phantomjs is probably a bit unfortunate choice. I just chose it semi-randomly to get a prototype of the whole reporting system in shape and running.

But, it&apos;s quite thinly coupled with build-perf-report-email.py and even the phantomjs script is fairly short and simple (it basically looks at certain messages in the javascript console and grabs chart PNGs as they are being rendered). Thus, it should be relatively easy to replace it with something else.

Slimerjs would probably be the easiest switch. Chrome would be another good option with a large community</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83153</commentid>
    <comment_count>20</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2019-02-28 15:15:02 +0000</bug_when>
    <thetext>We now run build performance tests in the autobuilder</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>