-1 to making StressNew not required

+1 to eliminating the current loophole — StressNew should never give a free 
pass.  

Any time your PR is having trouble passing StressNew, please bring it up on the 
dev list. We can review on a case-by-case basis and decide whether to try 
increasing the timeout, changing the repeat count, refactoring the PR, or as an 
absolute last resort requesting authorization for an override (for example, a 
change to spotless rules might touch a huge number of files but carry no risk).

One bug we should fix is that StressNew sometimes counts more files touched 
than really were, especially if you had many commits or merges or rebases on 
your PR branch.  Possible workarounds there include squashing and/or creating a 
new PR and/or splitting into multiple PRs.  I’ve spent some time trying to 
reproduce why files are mis-counted, with no success, but perhaps someone 
cleverer with git could provide a fix.

Another issue is that StressNew is only in the PR pipeline, not the main 
develop pipeline.  This feels like an asymmetry where PRs must pass a “higher” 
standard.  We should consider adding some form of StressNew to the main 
pipeline as well (maybe compare to the previous SHA that passed?).

The original motivation for the 25-file limit was an attempt to limit how long 
StressNew might run for.  Since concourse already applies a timeout, that check 
is unnecessary.  However, a compromise solution might be to use the number of 
files changed to dial back the number of repeats, e.g. stay with 50 repeats if 
fewer than 25 files changed, otherwise compute 1250 / <#-files-changed> and do 
only that many repeats (e.g. if 50 files changed, run all tests 25x instead of 
50x).

While StressNew is intended to catch new flaky tests, it can also catch 
poorly-designed tests that fail just by running twice in the same VM.  This may 
be a sign that the test does not clean up properly and could be polluting other 
tests in unexpected ways?  It might be useful to run a “StressNew” with 
repeats=2 over a much broader scope, maybe even all tests, at least once in a 
while?


> On Feb 28, 2020, at 9:51 AM, Mark Hanson <mhan...@pivotal.io> wrote:
> 
> Hi All,
> 
> Proposal: Force StressNewTest to fail a change with 25 or more files rather 
> than pass it without running it.
> 
> Currently, the StressNewTest job in the pipeline will just pass a job that 
> has more than 25 files changed. It will be marked as green with no work done. 
> There are reasons, relating to run time being too long to be tracked by 
> concourse, so we just let it through as a pass. I think this is a bad signal. 
> I think that this should automatically be a failure in the short term. As a 
> result, I also think it should not be required. It is a bad signal, and I 
> think that by making it a fail, this will at least not give us a false sense 
> of security. I understand that this opens the flood gates so to speak, but I 
> don’t think as a community it is a big problem because we can still say that 
> you should not merge if the StressNewTest fails because of your test.
> 
> I personally find the false sense of security more troubling than anything. 
> Hence the reason, I would like this to be
> 
> Let me know what you think..
> 
> Thanks,
> Mark

Reply via email to