As a further example of this I wanted to experiment with a real world
example. We have:

https://autobuilder.yocto.io/pub/releases/yocto-2.6.1.rc1/testresults/qemux86/testresults.json
https://autobuilder.yocto.io/pub/releases/yocto-2.7_M1.rc1/testresults/qemux86/testresults.json
https://autobuilder.yocto.io/pub/releases/yocto-2.7_M2.rc1/testresults/qemux86/testresults.json

which are all results files for the same thing from 2.6.1, 2.7M1 and
2.7M2. I also have one for 2.6.0 locally but its the same as 2.6.1.

Running this gives:

resultstool regression qemux86-2.6.json qemux86-2.7-M2.json 
Successfully loaded base test results from: qemux86-2.6.json
Successfully loaded target test results from: qemux86-2.7-M2.json
Getting regression for base=runtime_core-image-minimal_qemux86_20181029181546 
target=runtime_core-image-minimal_qemux86_20190124185230
============================Start Regression============================
Only print regression if base status not equal target
<test case> : <base status> -> <target status>
========================================================================
==============================End Regression==============================
Getting regression for base=runtime_core-image-sato-sdk_qemux86_20181029181546 
target=runtime_core-image-sato-sdk_qemux86_20190124185230
============================Start Regression============================
Only print regression if base status not equal target
<test case> : <base status> -> <target status>
========================================================================
==============================End Regression==============================
Getting regression for base=runtime_core-image-sato_qemux86_20181029181546 
target=runtime_core-image-sato_qemux86_20190124185230
============================Start Regression============================
Only print regression if base status not equal target
<test case> : <base status> -> <target status>
========================================================================
==============================End Regression==============================
Getting regression for base=sdk_core-image-sato_i686_qemux86_20181029190813 
target=sdk_core-image-sato_i686_qemux86_20190124185230
============================Start Regression============================
Only print regression if base status not equal target
<test case> : <base status> -> <target status>
========================================================================
python.PythonTest.test_python3 : UNKNOWN -> None
==============================End Regression==============================
Getting regression for base=sdk_core-image-sato_x86_64_qemux86_20181029192305 
target=sdk_core-image-sato_x86_64_qemux86_20190124192316
============================Start Regression============================
Only print regression if base status not equal target
<test case> : <base status> -> <target status>
========================================================================
python.PythonTest.test_python3 : UNKNOWN -> None
==============================End Regression==============================
Getting regression for 
base=sdkext_core-image-minimal_x86_64_qemux86_20181029192305 
target=sdkext_core-image-minimal_x86_64_qemux86_20190124192316
============================Start Regression============================
Only print regression if base status not equal target
<test case> : <base status> -> <target status>
========================================================================
python.PythonTest.test_python3 : PASSED -> None
==============================End Regression==============================
Getting regression for 
base=sdkext_core-image-sato_x86_64_qemux86_20181029192305 
target=sdkext_core-image-sato_x86_64_qemux86_20190124192316
============================Start Regression============================
Only print regression if base status not equal target
<test case> : <base status> -> <target status>
========================================================================
python.PythonTest.test_python3 : PASSED -> None
==============================End Regression==============================

which shows that:

a) In the case of no regressions it may be better simply print that rather than 
a header and empty body
b) It does highlight that the "python3" test somehow disappeared
c) Its hard to know that in fact another python3 test started passing.

Maybe we also need a compare command to show "new" results to make it
easier to investigate these things?

For interest I ran the comparision backwards:


resultstool regression qemux86-2.7-M2.json qemux86-2.6.json 
Successfully loaded base test results from: qemux86-2.7-M2.json
Successfully loaded target test results from: qemux86-2.6.json
Getting regression for base=runtime_core-image-minimal_qemux86_20190124185230 
target=runtime_core-image-minimal_qemux86_20181029181546
============================Start Regression============================
Only print regression if base status not equal target
<test case> : <base status> -> <target status>
========================================================================
apt.AptRepoTest.test_apt_install_from_repo : SKIPPED -> None
buildcpio.BuildCpioTest.test_cpio : SKIPPED -> None
buildgalculator.GalculatorTest.test_galculator : SKIPPED -> None
buildlzip.BuildLzipTest.test_lzip : SKIPPED -> None
connman.ConnmanTest.test_connmand_help : SKIPPED -> None
connman.ConnmanTest.test_connmand_running : SKIPPED -> None
date.DateTest.test_date : SKIPPED -> None
df.DfTest.test_df : SKIPPED -> None
dnf.DnfBasicTest.test_dnf_help : SKIPPED -> None
dnf.DnfBasicTest.test_dnf_history : SKIPPED -> None
dnf.DnfBasicTest.test_dnf_info : SKIPPED -> None
dnf.DnfBasicTest.test_dnf_search : SKIPPED -> None
dnf.DnfBasicTest.test_dnf_version : SKIPPED -> None
dnf.DnfRepoTest.test_dnf_exclude : SKIPPED -> None
dnf.DnfRepoTest.test_dnf_install : SKIPPED -> None
dnf.DnfRepoTest.test_dnf_install_dependency : SKIPPED -> None
dnf.DnfRepoTest.test_dnf_install_from_disk : SKIPPED -> None
dnf.DnfRepoTest.test_dnf_install_from_http : SKIPPED -> None
dnf.DnfRepoTest.test_dnf_installroot : SKIPPED -> None
dnf.DnfRepoTest.test_dnf_makecache : SKIPPED -> None
dnf.DnfRepoTest.test_dnf_reinstall : SKIPPED -> None
dnf.DnfRepoTest.test_dnf_repoinfo : SKIPPED -> None
gcc.GccCompileTest.test_gcc_compile : SKIPPED -> None
gcc.GccCompileTest.test_gpp2_compile : SKIPPED -> None
gcc.GccCompileTest.test_gpp_compile : SKIPPED -> None
gcc.GccCompileTest.test_make : SKIPPED -> None
gi.GObjectIntrospectionTest.test_python : SKIPPED -> None
kernelmodule.KernelModuleTest.test_kernel_module : SKIPPED -> None
ldd.LddTest.test_ldd : SKIPPED -> None
logrotate.LogrotateTest.test_1_logrotate_setup : SKIPPED -> None
logrotate.LogrotateTest.test_2_logrotate : SKIPPED -> None
oe_syslog.SyslogTest.test_syslog_running : SKIPPED -> None
oe_syslog.SyslogTestConfig.test_syslog_logger : SKIPPED -> None
oe_syslog.SyslogTestConfig.test_syslog_restart : SKIPPED -> None
oe_syslog.SyslogTestConfig.test_syslog_startup_config : SKIPPED -> None
opkg.OpkgRepoTest.test_opkg_install_from_repo : SKIPPED -> None
pam.PamBasicTest.test_pam : SKIPPED -> None
parselogs.ParseLogsTest.test_parselogs : SKIPPED -> None
perl.PerlTest.test_perl_works : SKIPPED -> None
ptest.PtestRunnerTest.test_ptestrunner : SKIPPED -> None
python.PythonTest.test_python3 : SKIPPED -> None
rpm.RpmBasicTest.test_rpm_help : SKIPPED -> None
rpm.RpmBasicTest.test_rpm_query : SKIPPED -> None
rpm.RpmInstallRemoveTest.test_check_rpm_install_removal_log_file_size : SKIPPED 
-> None
rpm.RpmInstallRemoveTest.test_rpm_install : SKIPPED -> None
rpm.RpmInstallRemoveTest.test_rpm_query_nonroot : SKIPPED -> None
rpm.RpmInstallRemoveTest.test_rpm_remove : SKIPPED -> None
scp.ScpTest.test_scp_file : SKIPPED -> None
ssh.SSHTest.test_ssh : SKIPPED -> None
stap.StapTest.test_stap : SKIPPED -> None
systemd.SystemdBasicTests.test_systemd_basic : SKIPPED -> None
systemd.SystemdBasicTests.test_systemd_failed : SKIPPED -> None
systemd.SystemdBasicTests.test_systemd_list : SKIPPED -> None
systemd.SystemdJournalTests.test_systemd_boot_time : SKIPPED -> None
systemd.SystemdJournalTests.test_systemd_journal : SKIPPED -> None
systemd.SystemdServiceTests.test_systemd_disable_enable : SKIPPED -> None
systemd.SystemdServiceTests.test_systemd_status : SKIPPED -> None
systemd.SystemdServiceTests.test_systemd_stop_start : SKIPPED -> None
xorg.XorgTest.test_xorg_running : SKIPPED -> None
==============================End Regression==============================
Getting regression for base=runtime_core-image-sato-sdk_qemux86_20190124185230 
target=runtime_core-image-sato-sdk_qemux86_20181029181546
============================Start Regression============================
Only print regression if base status not equal target
<test case> : <base status> -> <target status>
========================================================================
apt.AptRepoTest.test_apt_install_from_repo : SKIPPED -> None
opkg.OpkgRepoTest.test_opkg_install_from_repo : SKIPPED -> None
pam.PamBasicTest.test_pam : SKIPPED -> None
systemd.SystemdBasicTests.test_systemd_basic : SKIPPED -> None
systemd.SystemdBasicTests.test_systemd_failed : SKIPPED -> None
systemd.SystemdBasicTests.test_systemd_list : SKIPPED -> None
systemd.SystemdJournalTests.test_systemd_boot_time : SKIPPED -> None
systemd.SystemdJournalTests.test_systemd_journal : SKIPPED -> None
systemd.SystemdServiceTests.test_systemd_disable_enable : SKIPPED -> None
systemd.SystemdServiceTests.test_systemd_status : SKIPPED -> None
systemd.SystemdServiceTests.test_systemd_stop_start : SKIPPED -> None
==============================End Regression==============================
Getting regression for base=runtime_core-image-sato_qemux86_20190124185230 
target=runtime_core-image-sato_qemux86_20181029181546
============================Start Regression============================
Only print regression if base status not equal target
<test case> : <base status> -> <target status>
========================================================================
apt.AptRepoTest.test_apt_install_from_repo : SKIPPED -> None
buildcpio.BuildCpioTest.test_cpio : SKIPPED -> None
buildgalculator.GalculatorTest.test_galculator : SKIPPED -> None
buildlzip.BuildLzipTest.test_lzip : SKIPPED -> None
gcc.GccCompileTest.test_gcc_compile : SKIPPED -> None
gcc.GccCompileTest.test_gpp2_compile : SKIPPED -> None
gcc.GccCompileTest.test_gpp_compile : SKIPPED -> None
gcc.GccCompileTest.test_make : SKIPPED -> None
kernelmodule.KernelModuleTest.test_kernel_module : SKIPPED -> None
ldd.LddTest.test_ldd : SKIPPED -> None
logrotate.LogrotateTest.test_1_logrotate_setup : SKIPPED -> None
logrotate.LogrotateTest.test_2_logrotate : SKIPPED -> None
opkg.OpkgRepoTest.test_opkg_install_from_repo : SKIPPED -> None
pam.PamBasicTest.test_pam : SKIPPED -> None
perl.PerlTest.test_perl_works : PASSED -> None
stap.StapTest.test_stap : SKIPPED -> None
systemd.SystemdBasicTests.test_systemd_basic : SKIPPED -> None
systemd.SystemdBasicTests.test_systemd_failed : SKIPPED -> None
systemd.SystemdBasicTests.test_systemd_list : SKIPPED -> None
systemd.SystemdJournalTests.test_systemd_boot_time : SKIPPED -> None
systemd.SystemdJournalTests.test_systemd_journal : SKIPPED -> None
systemd.SystemdServiceTests.test_systemd_disable_enable : SKIPPED -> None
systemd.SystemdServiceTests.test_systemd_status : SKIPPED -> None
systemd.SystemdServiceTests.test_systemd_stop_start : SKIPPED -> None
==============================End Regression==============================
Getting regression for base=sdk_core-image-sato_i686_qemux86_20190124185230 
target=sdk_core-image-sato_i686_qemux86_20181029190813
============================Start Regression============================
Only print regression if base status not equal target
<test case> : <base status> -> <target status>
========================================================================
buildepoxy.EpoxyTest.test_epoxy : PASSED -> None
python.Python2Test.test_python2 : SKIPPED -> None
python.Python3Test.test_python3 : PASSED -> None
==============================End Regression==============================
Getting regression for base=sdk_core-image-sato_x86_64_qemux86_20190124192316 
target=sdk_core-image-sato_x86_64_qemux86_20181029192305
============================Start Regression============================
Only print regression if base status not equal target
<test case> : <base status> -> <target status>
========================================================================
buildepoxy.EpoxyTest.test_epoxy : PASSED -> None
python.Python2Test.test_python2 : SKIPPED -> None
python.Python3Test.test_python3 : PASSED -> None
==============================End Regression==============================
Getting regression for 
base=sdkext_core-image-minimal_x86_64_qemux86_20190124192316 
target=sdkext_core-image-minimal_x86_64_qemux86_20181029192305
============================Start Regression============================
Only print regression if base status not equal target
<test case> : <base status> -> <target status>
========================================================================
buildepoxy.EpoxyTest.test_epoxy : SKIPPED -> None
python.Python2Test.test_python2 : SKIPPED -> None
python.Python3Test.test_python3 : SKIPPED -> None
==============================End Regression==============================
Getting regression for 
base=sdkext_core-image-sato_x86_64_qemux86_20190124192316 
target=sdkext_core-image-sato_x86_64_qemux86_20181029192305
============================Start Regression============================
Only print regression if base status not equal target
<test case> : <base status> -> <target status>
========================================================================
buildepoxy.EpoxyTest.test_epoxy : SKIPPED -> None
python.Python2Test.test_python2 : SKIPPED -> None
python.Python3Test.test_python3 : SKIPPED -> None
==============================End Regression==============================


and this shows there were a number of things which started showing up
in the test results files, mostly more skips being logged which is
understandable given the chanegs we made in recent versions of the QA
code.

This does have a real world use in that we have been trying to figure
out if the ADT test result changes in 2.6.1 are a regression. Given the
data I've seen, I suspect the answer is now "no, its not a regression,
we just have some test improvements in 2.7 which we may want to
backport".

Cheers,

Richard

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to