BasicResultsFormatter - new test results summary

Hi all,

Per a previous thread on this, I’ve made all the changes I intended to make last night to get the intended replacement of test run results meet or exceed current requirements.

I’d like to switch over to that by default. I’m depending on the test event system to be able to handle test method reruns in test results accounting.

The primary thing missing before was that timeouts were not routed through the test events system, nor were exception process exits (i.e. test inferiors exiting with a signal on POSIX systems). Those were added last night so that test events are generated for those, and the BasicResultsFormatter presents that information properly.

I will switch it over to being the default output in a bit here. Please let me know if you have any concerns once I flip it on by default.

Thanks!

+Ying Chen

Ying, what do we have to do on the build bot side to support a change in the default test result summary formatter?

That’s a good point, Tamas.

I use (so I claim) the same all upper-case markers for the test result details. Including, not using XPASS but rather UNEXPECTED SUCCESS for unexpected successes. (The former would trigger the lit script IIRC to parse that as a failing-style result).

The intent is this is a no-op on the test runner.

Specifically, the markers for issue details are:

FAIL
ERROR
UNEXPECTED SUCCESS
TIMEOUT

(These are the fourth field in the array entries (lines 275 - 290) of packages/Python/lldbsuite/test/basic_results_formatter.py).

-Todd

Here’s what I can do.

Put in the change (setting the default to use the new format).

Separately, put in a trial balloon commit with one failing test, one exceptional exit test, and one timeout test, and watch the ubuntu 14.04 buildbot catch it and fail. Then reverse this out. That should show beyond a reasonable doubt whether the buildbot catches new failures and errors. (I think this is a noisy way to accomplish this, but it certainly would validate if its working).

-Todd

If it's not too much work, I think the extra bit of noise will not be
a problem. But I don't think it is really necessary either.

I assume the actual flip will be a small change that we can back out
easily if we notice troubles... After a sufficient grace period we can
remove the old formatter altogether and hopefully simplify the code
somewhat.

pl

It is a small change.

I almost have all the trial tests ready, so I’ll just commit both changes at the same time (the flip on, and the trial balloon issues).

If all goes well and the three types of issue show up, then the last of the two will get reverted (the one with the failures).

If none (or only some) of the issues show up, they’ll both get reverted.

-Todd

These went in as:

r255130 - turn it on by default
r255131 - create known issues. This one is to be reverted if all 3 types show up properly.

I forced a build on the ubuntu 14.04 cmake builder. The build after 9292 will contain the two changes (and we will expect failures on it).

I am going to stop the current build on that builder. There was one change in it, and it will be another 20 minutes before it completes. I don’t want the repo in a known broken state that long.

The reports look good at the test level:

http://lab.llvm.org:8011/builders/lldb-x86_64-ubuntu-14.04-cmake/builds/9294

I’d say the buildbot reflection script missed the ERROR, so that is something maybe Ying can look at (the summary line in the build run), but that is unrelated AFAICT.

I’m going to move aside the failures.

Verification tests parked (i.e. disabled) here:
r255134

I decided to leave them in the repo so it is faster/easier to do this in the future.

-Todd

Thank you for making the experiment. It looks reasonable. For the ERROR the buildbot detected it and it will fail the build but it isn’t listed in the list of failing tests what should be fixed. After this experiment I think it is fine to change the default output formatter from our side.

Tamas

Great, thanks Tamas!

I left the default turned on, and just essentially removed the issues by parking them as .py.parked files. That way we can flip them on in the future if we want to verify a testbot’s detection of these.

I will be going back to the xUnit Results formatter and making sure it maps timeouts and exceptional errors to the xUnit error type with details.

I submitted this patch to include “ERROR” lines in buildbot step results.
http://reviews.llvm.org/rL255145

Error results will be displayed in step result like this after the patch, “ERROR: 9 (SIGKILL) test_buildbot_catches_exceptional_exit_dwarf”

Thanks,
Ying

HI Todd,

You changed the way the test failure list is printed in a way that now we only print the name of the test function failing with the name of the test file in parenthesis. Can we add back the name of the test class to this list?

There are 2 reason I am asking for it:

  • To run only a specific test we have to specify the “-f” option to dotest.py and it takes the fully qualified function name as an argument. Before your change it was displayed in the test output (in a bit uncomfortable way) but after your change we have to open the test file and copy the class name from there to run only a single test suit.

  • With the new output format the output of the buildbot only displays the list of the failing test function names what isn’t too specific in a lot of case (e.g. we have several test method called test_dwarf). This point is less important as the file name can be added to the output from the buildbot perspective.

Thanks,
Tamas

Hi Tamas,

Can we have it tied to verbosity level? We have -t and -v, maybe one of those could trigger more detail in the summary view.

Sure, I can do that.

Tamas, okay to give more detail on -v? I’ll give it a shot to see what else comes out if we do that.

-Todd

Checked this in as r255310. Let me know if you find any issues with that, Tamas.

You will need ‘-v’ to enable it. Otherwise, it will just print the method name.

-Todd