<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/poky.git/meta/lib, branch thud-20.0.2</title>
<subtitle>Mirror of git.yoctoproject.org/poky</subtitle>
<id>https://git.enea.com/cgit/linux/poky.git/atom?h=thud-20.0.2</id>
<link rel='self' href='https://git.enea.com/cgit/linux/poky.git/atom?h=thud-20.0.2'/>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/poky.git/'/>
<updated>2019-03-26T15:38:23+00:00</updated>
<entry>
<title>oeqa/utils/gitarchive: Handle case where parent is only on origin</title>
<updated>2019-03-26T15:38:23+00:00</updated>
<author>
<name>Richard Purdie</name>
<email>richard.purdie@linuxfoundation.org</email>
</author>
<published>2019-02-25T09:26:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/poky.git/commit/?id=002cf940a7fb940e8a7443ca85906a87edda0bfe'/>
<id>urn:sha1:002cf940a7fb940e8a7443ca85906a87edda0bfe</id>
<content type='text'>
The parent code currently assumed that any parent branch is locally
checked out which may not be the case.

Use the local branch by default but fall back to the origin. This
also means removing the later saftey check as the branch may not exist
locally.

This fixes the autobuilder resulttool test pushing code.

(From OE-Core rev: 36624a17d382d84647c5811134fe76251fd64dc3)

Signed-off-by: Richard Purdie &lt;richard.purdie@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>resulttool: Improvements to allow integration to the autobuilder</title>
<updated>2019-03-26T15:38:22+00:00</updated>
<author>
<name>Richard Purdie</name>
<email>richard.purdie@linuxfoundation.org</email>
</author>
<published>2019-02-16T18:13:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/poky.git/commit/?id=10b6fbfb8a3a9c0ba2f323658bc3387051a77ca9'/>
<id>urn:sha1:10b6fbfb8a3a9c0ba2f323658bc3387051a77ca9</id>
<content type='text'>
This is a combined patch of the various tweaks and improvements I
made to resulttool:

* Avoid subprocess.run() as its a python 3.6 feature and we
  have autobuilder workers with 3.5.

* Avoid python keywords as variable names

* Simplify dict accesses using .get()

* Rename resultsutils -&gt; resultutils to match the resultstool -&gt;
  resulttool rename

* Formalised the handling of "file_name" to "TESTSERIES" which the code
  will now add into the json configuration data if its not present, based
  on the directory name.

* When we don't have failed test cases, print something saying so
  instead of an empty table

* Tweak the table headers in the report to be more readable (reference
  "Test Series" instead if file_id and ID instead of results_id)

* Improve/simplify the max string length handling

* Merge the counts and percentage data into one table in the report
  since printing two reports of the same data confuses the user

* Removed the confusing header in the regression report

* Show matches, then regressions, then unmatched runs in the regression
  report, also remove chatting unneeded output

* Try harder to "pair" up matching configurations to reduce noise in
  the regressions report

* Abstracted the "mapping" table concept used to pairing in the
  regression code to general code in resultutils

* Created multiple mappings for results analysis, results storage and
  'flattening' results data in a merge

* Simplify the merge command to take a source and a destination,
  letting the destination be a directory or a file, removing the need for
  an output directory parameter

* Add the 'IMAGE_PKGTYPE' and 'DISTRO' config options to the regression
  mappings

* Have the store command place the testresults files in a layout from
  the mapping, making commits into the git repo for results storage more
  useful for simple comparison purposes

* Set the oe-git-archive tag format appropriately for oeqa results
  storage (and simplify the commit messages closer to their defaults)

* Fix oe-git-archive to use the commit/branch data from the results file

* Cleaned up the command option help to match other changes

* Follow the model of git branch/tag processing used by oe-build-perf-report
  and use that to read the data using git show to avoid branch change

* Add ptest summary to the report command

* Update the tests to match the above changes

(From OE-Core rev: b4513e75f746a0989b09ee53cb85e489d41e5783)

Signed-off-by: Richard Purdie &lt;richard.purdie@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>resulttool: enable merge, store, report and regression analysis</title>
<updated>2019-03-26T15:38:22+00:00</updated>
<author>
<name>Yeoh Ee Peng</name>
<email>ee.peng.yeoh@intel.com</email>
</author>
<published>2019-02-14T05:50:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/poky.git/commit/?id=661fa1335b6832a1d13b13e8ca4354cdef213358'/>
<id>urn:sha1:661fa1335b6832a1d13b13e8ca4354cdef213358</id>
<content type='text'>
OEQA outputs test results into json files and these files were
archived by Autobuilder during QA releases. Example: each oe-selftest
run by Autobuilder for different host distro generate a
testresults.json file.

These scripts were developed as a test result tools to manage
these testresults.json file.

Using the "store" operation, user can store multiple testresults.json
files as well as the pre-configured directories used to hold those files.

Using the "merge" operation, user can merge multiple testresults.json
files to a target file.

Using the "report" operation, user can view the test result summary
for all available testresults.json files inside a ordinary directory
or a git repository.

Using the "regression-file" operation, user can perform regression
analysis on testresults.json files specified. Using the "regression-dir"
and "regression-git" operations, user can perform regression analysis
on directory and git accordingly.

These resulttool operations expect the testresults.json file to use
the json format below.
{
    "&lt;testresult_1&gt;": {
        "configuration": {
            "&lt;config_name_1&gt;": "&lt;config_value_1&gt;",
            "&lt;config_name_2&gt;": "&lt;config_value_2&gt;",
            ...
            "&lt;config_name_n&gt;": "&lt;config_value_n&gt;",
        },
        "result": {
            "&lt;testcase_namespace_1&gt;": {
                "status": "&lt;PASSED or FAILED or ERROR or SKIPPED&gt;",
                "log": "&lt;failure or error logging&gt;"
            },
            "&lt;testcase_namespace_2&gt;": {
                "status": "&lt;PASSED or FAILED or ERROR or SKIPPED&gt;",
                "log": "&lt;failure or error logging&gt;"
            },
            ...
            "&lt;testcase_namespace_n&gt;": {
                "status": "&lt;PASSED or FAILED or ERROR or SKIPPED&gt;",
                "log": "&lt;failure or error logging&gt;"
            },
        }
    },
    ...
    "&lt;testresult_n&gt;": {
        "configuration": {
            "&lt;config_name_1&gt;": "&lt;config_value_1&gt;",
            "&lt;config_name_2&gt;": "&lt;config_value_2&gt;",
            ...
            "&lt;config_name_n&gt;": "&lt;config_value_n&gt;",
        },
        "result": {
            "&lt;testcase_namespace_1&gt;": {
                "status": "&lt;PASSED or FAILED or ERROR or SKIPPED&gt;",
                "log": "&lt;failure or error logging&gt;"
            },
            "&lt;testcase_namespace_2&gt;": {
                "status": "&lt;PASSED or FAILED or ERROR or SKIPPED&gt;",
                "log": "&lt;failure or error logging&gt;"
            },
            ...
            "&lt;testcase_namespace_n&gt;": {
                "status": "&lt;PASSED or FAILED or ERROR or SKIPPED&gt;",
                "log": "&lt;failure or error logging&gt;"
            },
        }
    },
}

To use these scripts, first source oe environment, then run the
entry point script to look for help.
    $ resulttool

To store test result from oeqa automated tests, execute the below
    $ resulttool store &lt;source_dir&gt; &lt;git_branch&gt;

To merge multiple testresults.json files, execute the below
    $ resulttool merge &lt;base_result_file&gt; &lt;target_result_file&gt;

To report test report, execute the below
    $ resulttool report &lt;source_dir&gt;

To perform regression file analysis, execute the below
    $ resulttool regression-file &lt;base_result_file&gt; &lt;target_result_file&gt;

To perform regression dir analysis, execute the below
    $ resulttool regression-dir &lt;base_result_dir&gt; &lt;target_result_dir&gt;

To perform regression git analysis, execute the below
    $ resulttool regression-git &lt;source_dir&gt; &lt;base_branch&gt; &lt;target_branch&gt;

[YOCTO# 13012]
[YOCTO# 12654]

(From OE-Core rev: 39cda3498ec68b91a671ead256231324d74f7d4c)

Signed-off-by: Yeoh Ee Peng &lt;ee.peng.yeoh@intel.com&gt;
Signed-off-by: Richard Purdie &lt;richard.purdie@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>oe-build-perf-report/gitarchive: Move common useful functions to library</title>
<updated>2019-02-25T22:27:40+00:00</updated>
<author>
<name>Richard Purdie</name>
<email>richard.purdie@linuxfoundation.org</email>
</author>
<published>2019-02-20T17:07:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/poky.git/commit/?id=80adac85bcc97f059da6cdcdc217e86a9a06f110'/>
<id>urn:sha1:80adac85bcc97f059da6cdcdc217e86a9a06f110</id>
<content type='text'>
These functions can be reused by the resulttool code so move to the common
function library for this purpose.

(From OE-Core rev: c66f848938c04e133259c5b6903dc592866ab385)

(From OE-Core rev: 4b1bd35030c5502873106782a35c4f5a9446e20c)

Signed-off-by: Richard Purdie &lt;richard.purdie@linuxfoundation.org&gt;
Signed-off-by: Armin Kuster &lt;akuster808@gmail.com&gt;
Signed-off-by: Richard Purdie &lt;richard.purdie@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>scripts/oe-git-archive: Separate out functionality to library function</title>
<updated>2019-02-25T22:27:40+00:00</updated>
<author>
<name>Richard Purdie</name>
<email>richard.purdie@linuxfoundation.org</email>
</author>
<published>2019-02-17T22:12:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/poky.git/commit/?id=59714c52f034887bee963ad6d44adf43101bcb45'/>
<id>urn:sha1:59714c52f034887bee963ad6d44adf43101bcb45</id>
<content type='text'>
This turns the core of the script into a library function. Ultimately this
will let us call that code with custom 'keywords' rather than relying
on the data parsed from bitbake metadata which can't be used when archiving
historical results.

(From OE-Core rev: 4820ca2b0850e29b04a4fd5659a6e9837d6714d0)

(From OE-Core rev: e47c48768a01191ec36b9732288e05c9f5e80d52)

Signed-off-by: Richard Purdie &lt;richard.purdie@linuxfoundation.org&gt;
Signed-off-by: Armin Kuster &lt;akuster808@gmail.com&gt;
Signed-off-by: Richard Purdie &lt;richard.purdie@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>logrotate.py: restore /etc/logrotate.d/wtmp</title>
<updated>2019-02-25T22:27:39+00:00</updated>
<author>
<name>Mingli Yu</name>
<email>Mingli.Yu@windriver.com</email>
</author>
<published>2019-02-13T05:43:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/poky.git/commit/?id=85e850330633ea6786e8a61e35f49b740bf35c9a'/>
<id>urn:sha1:85e850330633ea6786e8a61e35f49b740bf35c9a</id>
<content type='text'>
During the test logrotate.LogrotateTest.test_1_logrotate_setup,
there is below logic:
 # mkdir $HOME/logrotate_dir
 # sed -i "s#wtmp {#wtmp {\n    olddir $HOME/logrotate_dir#" /etc/logrotate.d/wtmp

After all logrotate.LogrotateTest finished, only cleanup
$HOME/logrotate_dir as below, but don't restore
the config file /etc/logrotate.d/wtmp.
[snip]
def tearDownClass(cls):
    cls.tc.target.run('rm -rf $HOME/logrotate_dir')
[snip]

That's to say, there is one additional line added
to /etc/logrotate.d/wtmp and will make the logrotate
service start failed when run systemd.SystemdBasicTests.test_systemd_failed

Take an example as below when run test as root:
 # cat /etc/logrotate.d/wtmp
 # no packages own wtmp -- we'll rotate it here
 /var/log/wtmp {
    olddir /root/logrotate_dir
    missingok
    monthly
    create 0664 root utmp
    minsize 1M
    rotate 1
 }

 # ls /root/logrotate_dir
 ls: cannot access '/root/logrotate_dir': No such file or directory

 # systemctl start logrotate
 Job for logrotate.service failed because the control process exited with error code.
 See "systemctl status logrotate.service" and "journalctl -xe" for details.

 # systemctl status logrotate
  logrotate.service - Rotate log files
   Loaded: loaded (/lib/systemd/system/logrotate.service; static; vendor preset&gt;
   Active: failed (Result: exit-code) since Wed 2019-02-13 03:35:19 UTC; 7s ago
     Docs: man:logrotate(8)
           man:logrotate.conf(5)
   Process: 540 ExecStart=/usr/sbin/logrotate /etc/logrotate.conf (code=exited, status=1/FAILURE)
   Main PID: 540 (code=exited, status=1/FAILURE)

  Feb 13 03:35:18 qemumips systemd[1]: Starting Rotate log files...
  Feb 13 03:35:19 qemumips logrotate[540]: error: wtmp:9 error verifying olddir path /root/logrotate_dir: No such file or directory
  Feb 13 03:35:19 qemumips logrotate[540]: error: found error in file wtmp, skipping
  Feb 13 03:35:19 qemumips systemd[1]: logrotate.service: Main process exited, code=exited, status=1/FAILURE
  Feb 13 03:35:19 qemumips systemd[1]: logrotate.service: Failed with result 'exit-code'.
  Feb 13 03:35:19 qemumips systemd[1]: Failed to start Rotate log files.

Add the logic to restore /etc/logrotate.d/wtmp to
make the cleanup complete to fix the above issue.

(From OE-Core rev: a2db9320d97d12d87524ff16a329f9c38a8da33f)

(From OE-Core rev: 9036f78bdfde1d79af6ce57db78e2cdff9fb5677)

Signed-off-by: Mingli Yu &lt;Mingli.Yu@windriver.com&gt;
Signed-off-by: Richard Purdie &lt;richard.purdie@linuxfoundation.org&gt;
Signed-off-by: Armin Kuster &lt;akuster808@gmail.com&gt;
Signed-off-by: Richard Purdie &lt;richard.purdie@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>oeqa/runtime/ptest: Ensure OOM errors are logged</title>
<updated>2019-02-25T22:27:39+00:00</updated>
<author>
<name>Richard Purdie</name>
<email>richard.purdie@linuxfoundation.org</email>
</author>
<published>2019-01-30T22:01:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/poky.git/commit/?id=b784649ed3e487b177262c2e2877e8cc1d5c4708'/>
<id>urn:sha1:b784649ed3e487b177262c2e2877e8cc1d5c4708</id>
<content type='text'>
Currently processed being killed by the OOM killer may not be spotted by
ptest-runner. After we complete the tests, check the logs and report if there
were any. This ensures the user is aware of OOM conditions affecting the
ptest results.

(From OE-Core rev: 20a441d53817f80e0ce1597e77f6e794422ac49a)

(From OE-Core rev: f922970b119849bcdd7f7df74bd2029816ff637c)

Signed-off-by: Richard Purdie &lt;richard.purdie@linuxfoundation.org&gt;
Signed-off-by: Armin Kuster &lt;akuster808@gmail.com&gt;
Signed-off-by: Richard Purdie &lt;richard.purdie@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>oeqa/logparser: Various misc cleanups</title>
<updated>2019-02-25T22:27:39+00:00</updated>
<author>
<name>Richard Purdie</name>
<email>richard.purdie@linuxfoundation.org</email>
</author>
<published>2019-01-29T16:52:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/poky.git/commit/?id=ddabcfa8ea4eaa87ebd1d3901591f7afe2c1ccf9'/>
<id>urn:sha1:ddabcfa8ea4eaa87ebd1d3901591f7afe2c1ccf9</id>
<content type='text'>
Get rid of further unneeded code complications:

* value mappings we could just direct use
* ftools when we can write files easily ourself
* test result status filtering we don't use
* variable overwriting module imports

(From OE-Core rev: d6065f136f6d353c3054cc3f440a4e259509f876)

(From OE-Core rev: ba944a72302fa088c31c7b1eee4ad9f64f9769e4)

Signed-off-by: Richard Purdie &lt;richard.purdie@linuxfoundation.org&gt;
Signed-off-by: Armin Kuster &lt;akuster808@gmail.com&gt;
Signed-off-by: Richard Purdie &lt;richard.purdie@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>oeqa/logparser: Improve results handling</title>
<updated>2019-02-25T22:27:39+00:00</updated>
<author>
<name>Richard Purdie</name>
<email>richard.purdie@linuxfoundation.org</email>
</author>
<published>2019-01-29T15:08:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/poky.git/commit/?id=c792536bcb6cdd901af861dbbee0b3c8482b1b03'/>
<id>urn:sha1:c792536bcb6cdd901af861dbbee0b3c8482b1b03</id>
<content type='text'>
Merge the results handling into the ptest log parser as a seperate
method.

Drop the weird "pass.skip.fail." prefix to the results filename, its
just bizarre.

Drop the code turning a list into a regex then searching the regex for
an item, "x in y" is perfectly capable.

Use a dict, sort the keys as needed and drop the list sorting code.

(From OE-Core rev: f317800e950b4a37b4034133bc52e0c47f04dc29)

(From OE-Core rev: 966ffaada3e9f43a25b1361c53d4b16a521aa517)

Signed-off-by: Richard Purdie &lt;richard.purdie@linuxfoundation.org&gt;
Signed-off-by: Armin Kuster &lt;akuster808@gmail.com&gt;
Signed-off-by: Richard Purdie &lt;richard.purdie@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>oeqa/utils/logparser: Add in support for duration, exitcode and logs by section</title>
<updated>2019-02-25T22:27:39+00:00</updated>
<author>
<name>Richard Purdie</name>
<email>richard.purdie@linuxfoundation.org</email>
</author>
<published>2019-01-29T14:22:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/poky.git/commit/?id=6cb1b12565b82807cd7af3b9d919af8d25223ca5'/>
<id>urn:sha1:6cb1b12565b82807cd7af3b9d919af8d25223ca5</id>
<content type='text'>
Allow parsing of the ptest duration, exit code and timeout keywords
from the logs, returning data on each section.

Also include the logs broken out per section.

(From OE-Core rev: a9a67dccaa5be0f06eedcab46dcff7cbf9202850)

(From OE-Core rev: dc49021f75ed7e82713d1c9a04e045718bb9a548)

Signed-off-by: Richard Purdie &lt;richard.purdie@linuxfoundation.org&gt;
Signed-off-by: Armin Kuster &lt;akuster808@gmail.com&gt;
Signed-off-by: Richard Purdie &lt;richard.purdie@linuxfoundation.org&gt;
</content>
</entry>
</feed>
