I checked, and 1% of our last 500 commits touched more than 30 tests. Of those 1%, over half touched more than 100 tests. So I'd guess somewhere around .5% of prs will fall under the proposed changes.
My preference would be to just raise the threshold given that we already raised the timeout. That'll catch 99% of prs without making test refactoring and cleanups that touch many tests hard. But, I'm ok with removing the limit if people really feel that a manual override process is better for that 1%. -Dan On Tue, Mar 10, 2020, 4:33 PM Owen Nichols <onich...@pivotal.io> wrote: > To recap, the original question was: should we change StressNewTest to > pass ONLY if it is able to successfully run all new/changed tests 50 times > (eliminating the existing loophole exempting PRs that touch 25 or more > files)? > > So far a handful of people have expressed support, but many have > questions/concerns: > - One concern was mis-counting of test files touched. As of today this is > now fixed. > - A big concern was that it might become more difficult to pass all > required PR checks. > - Another concern was that the current timeout of 6 hours might be too > high / too low. > - An alternative was suggested to keep the loophole but maybe increase the > threshold required to get the free pass. > - If we’re going to raise the bar on any required PR check, maybe we > should consider making it non-required. > > Let’s extend the comment period until the end of next week (Friday Mar 20) > in hopes of converging on a solution everybody is happy with (even if it > isn’t what was originally proposed). > > > > On Mar 6, 2020, at 4:51 PM, Donal Evans <doev...@pivotal.io> wrote: > > > > With fairly apt timing, we've recently had a PR merged ( > > https://github.com/apache/geode/pull/4745) that introduced a test that > has > > resulted in fairly consistently flaky failures in the pipeline (JIRA > > ticket: https://issues.apache.org/jira/projects/GEODE/issues/GEODE-7843 > ). > > The PR was quite large and touched/created a lot of tests, so > StressNewTest > > never ran on it: > > https://concourse.apachegeode-ci.info/builds/136784#L5e3ac3fc:2. Given > how > > frequently the test is failing in the pipeline (11 failures on various > > IntegrationTest jobs over the past 6 commits), it seems very likely that > > had StressNewTest been allowed to run, this issue would have been caught > at > > the PR stage and could have been remedied then, instead of resulting in a > > nearly constantly red pipeline. > > > > I've already given my +1 to this proposal, but this situation has > prompted > > me to make it a +2. > > > > On Fri, Mar 6, 2020 at 1:46 PM Donal Evans <doev...@pivotal.io> wrote: > > > >> With fairly apt timing, we've recently had a PR merged ( > >> https://github.com/apache/geode/pull/4745) that introduced a test that > >> has resulted in fairly consistently flaky failures in the pipeline (JIRA > >> ticket: https://issues.apache.org/jira/projects/GEODE/issues/GEODE-7843 > ). > >> The PR was quite large and touched/created a lot of tests, so > StressNewTest > >> never ran on it: > >> https://concourse.apachegeode-ci.info/builds/136784#L5e3ac3fc:2. Given > >> how frequently the test is failing in the pipeline (11 failures on > various > >> IntegrationTest jobs over the past 6 commits), it seems very likely that > >> had StressNewTest been allowed to run, this issue would have been > caught at > >> the PR stage and could have been remedied then, instead of resulting in > a > >> nearly constantly red pipeline. > >> > >> I've already given my +1 to this proposal, but this situation has > prompted > >> me to make it a *+1*. > >> > >> On Tue, Mar 3, 2020 at 2:08 PM Anilkumar Gingade <aging...@pivotal.io> > >> wrote: > >> > >>> The stress test is to identify the flaky-ness within the test; and > >>> assuming > >>> any changes to the test may have introduced the flaky-ness. > >>> It's about paying the cost upfront or later when the test is > determined to > >>> be flaky. > >>> If 25+ tests have been changed in a PR, the cost of running stress test > >>> for > >>> those; and gating the PR for so long. > >>> Knowing how much pain it causes to fix a flaky test after a > certain/long > >>> duration of time; I am +1 for doing this change. > >>> > >>> On Tue, Mar 3, 2020 at 10:06 AM Dan Smith <dsm...@pivotal.io> wrote: > >>> > >>>> What's the current timeout for StressNewTest? Maybe if we just up the > >>>> threshold to 100 tests or so and up the timeout to match we can catch > >>>> pretty much all PRs. > >>>> > >>>> I'm not sure why the job is flagging more tests than it should. It > looks > >>>> like at some point @rhoughon changed it to read the merge base from > some > >>>> file created by concourse as an optimization [1] - I suspect maybe > that > >>>> file is inaccurate? > >>>> > >>>> I originally wrote this job. It's definitely not a panacea, it will > only > >>>> catch a new flaky test if > >>>> - the test is really flaky (likely to fail more than 1/50 times) > >>>> - the change actually happened in the test file itself, and not the > >>>> product or some other test file. > >>>> > >>>> [1] > >>>> > >>>> > >>> > https://github.com/apache/geode/commit/4c06ba4625e69d44a5165aa9f2fccddfc064de87 > >>>> > >>>> -Dan > >>>> > >>>> On Sun, Mar 1, 2020 at 9:00 PM Owen Nichols <onich...@pivotal.io> > >>> wrote: > >>>> > >>>>> We don’t tend to look too closely at successful PR checks to see > >>> whether > >>>>> they actually checked anything at all. > >>>>> > >>>>> One example I found is > >>>>> > >>>> > >>> > https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-develop-pr/jobs/StressNewTestOpenJDK11/builds/5957 > >>>>> < > >>>>> > >>>> > >>> > https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-develop-pr/jobs/StressNewTestOpenJDK11/builds/5957 > >>>>>> : > >>>>> 32 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. > >>>>> > >>>>> Here are 92 more examples (url’s omitted for brevity — use the > example > >>>>> above as a template and just replace the last 4 digits): > >>>>> 26 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6243) > >>>>> 26 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6249) > >>>>> 26 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6402) > >>>>> 27 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6262) > >>>>> 27 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6430) > >>>>> 27 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6439) > >>>>> 27 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6449) > >>>>> 27 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6454) > >>>>> 27 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6458) > >>>>> 27 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6459) > >>>>> 28 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6224) > >>>>> 28 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6441) > >>>>> 28 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6448) > >>>>> 28 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6452) > >>>>> 29 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6102) > >>>>> 29 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6177) > >>>>> 30 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 5939) > >>>>> 30 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 5940) > >>>>> 30 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 5949) > >>>>> 30 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6473) > >>>>> 31 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 5953) > >>>>> 31 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6187) > >>>>> 31 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6470) > >>>>> 31 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6471) > >>>>> 31 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6474) > >>>>> 31 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6475) > >>>>> 32 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 5958) > >>>>> 32 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6173) > >>>>> 32 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6236) > >>>>> 32 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6237) > >>>>> 32 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6242) > >>>>> 33 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6246) > >>>>> 33 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6248) > >>>>> 33 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6250) > >>>>> 33 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6251) > >>>>> 33 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6254) > >>>>> 33 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6255) > >>>>> 34 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6139) > >>>>> 34 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6141) > >>>>> 34 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6264) > >>>>> 34 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6266) > >>>>> 34 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6271) > >>>>> 35 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6142) > >>>>> 35 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6143) > >>>>> 35 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6277) > >>>>> 35 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6309) > >>>>> 35 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6413) > >>>>> 35 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6414) > >>>>> 35 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6419) > >>>>> 35 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6420) > >>>>> 36 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6144) > >>>>> 36 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6146) > >>>>> 36 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6147) > >>>>> 36 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6310) > >>>>> 36 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6326) > >>>>> 36 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6329) > >>>>> 36 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6330) > >>>>> 40 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6159) > >>>>> 40 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6160) > >>>>> 40 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6188) > >>>>> 41 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6440) > >>>>> 41 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6480) > >>>>> 41 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6483) > >>>>> 43 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6190) > >>>>> 44 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 5768) > >>>>> 44 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 5772) > >>>>> 46 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6191) > >>>>> 46 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6218) > >>>>> 46 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6219) > >>>>> 46 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6225) > >>>>> 46 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6244) > >>>>> 46 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6245) > >>>>> 48 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6129) > >>>>> 49 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 5804) > >>>>> 51 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 5877) > >>>>> 53 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 5742) > >>>>> 54 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 5757) > >>>>> 66 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6232) > >>>>> 66 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6233) > >>>>> 66 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6234) > >>>>> 66 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6259) > >>>>> 66 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6260) > >>>>> 66 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6278) > >>>>> 79 is too many changed tests to stress test. Allowing this job to > pass > >>>>> without stress testing. (build 6481) > >>>>> 103 is too many changed tests to stress test. Allowing this job to > >>> pass > >>>>> without stress testing. (build 6493) > >>>>> 106 is too many changed tests to stress test. Allowing this job to > >>> pass > >>>>> without stress testing. (build 6206) > >>>>> 106 is too many changed tests to stress test. Allowing this job to > >>> pass > >>>>> without stress testing. (build 6207) > >>>>> 115 is too many changed tests to stress test. Allowing this job to > >>> pass > >>>>> without stress testing. (build 5769) > >>>>> 118 is too many changed tests to stress test. Allowing this job to > >>> pass > >>>>> without stress testing. (build 6226) > >>>>> 721 is too many changed tests to stress test. Allowing this job to > >>> pass > >>>>> without stress testing. (build 6197) > >>>>> 722 is too many changed tests to stress test. Allowing this job to > >>> pass > >>>>> without stress testing. (build 6217) > >>>>> 722 is too many changed tests to stress test. Allowing this job to > >>> pass > >>>>> without stress testing. (build 6221) > >>>>> > >>>>> Please note, sometimes the number of files reported seems to be way > >>>> higher > >>>>> than it should be. For example > >>>> https://github.com/apache/geode/pull/4691 > >>>>> <https://github.com/apache/geode/pull/4691> shows exactly 1 test > file > >>>>> touched, but > >>>>> > >>>> > >>> > https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-develop-pr/jobs/StressNewTestOpenJDK11/builds/6278 > >>>>> < > >>>>> > >>>> > >>> > https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-develop-pr/jobs/StressNewTestOpenJDK11/builds/6278 > >>>>> > >>>>> thinks it touched 66 test files. > >>>>> > >>>>> There’s currently no good data to predict how long StressNew will > >>> take, > >>>> it > >>>>> just depends on the mix of tests touched. I am aware of at least 4 > >>> cases > >>>>> (with less than 25 files) where the timeout was hit. In two of those > >>>> cases > >>>>> we re-ran with a longer timeout, and in two cases the PR author split > >>> up > >>>>> the PR into half a dozen smaller PRs to get around it. > >>>>> > >>>>> > >>>>>> On Mar 1, 2020, at 7:52 PM, Anthony Baker <aba...@pivotal.io> > >>> wrote: > >>>>>> > >>>>>> What percentage of PR’s are currently subject to the 25 test file > >>> rule? > >>>>> How many would be subject to the concourse timeout? > >>>>>> > >>>>>> I’d like to understand the scope of the impact for this change. > >>>>>> > >>>>>> Anthony > >>>>>> > >>>>>> > >>>>>>> On Mar 1, 2020, at 8:58 AM, Owen Nichols <onich...@pivotal.io> > >>> wrote: > >>>>>>> > >>>>>>> Impossible, no. Inconvenient, perhaps, but a small price to pay for > >>>>> being > >>>>>>> able to trust that green means green. > >>>>>>> > >>>>>>> With or without this proposed change, if anyone is having trouble > >>>>> getting > >>>>>>> their PR to pass StressNew, please bring it up on the dev list and > >>> we > >>>>> can > >>>>>>> discuss the appropriate solution on a case-by-case basis (e.g. > >>>>> increasing > >>>>>>> timeout, fixing the logic that identifies changed test files, > >>>> splitting > >>>>>>> into multiple PRs, authorizing an override, etc). > >>>>>>> > >>>>>>> On Sun, Mar 1, 2020 at 8:56 AM Dan Smith <dsm...@pivotal.io> > >>> wrote: > >>>>>>> > >>>>>>>> Won't this make it impossible to merge refactoring changes that > >>> touch > >>>>> a lot > >>>>>>>> of tests? > >>>>>>>> > >>>>>>>> -Dan > >>>>>>>> > >>>>>>>> On Sat, Feb 29, 2020, 12:37 PM Robert Houghton < > >>> rhough...@pivotal.io > >>>>> > >>>>>>>> wrote: > >>>>>>>> > >>>>>>>>> Yes, as it should > >>>>>>>>> > >>>>>>>>> On Sat, Feb 29, 2020, 12:25 Dan Smith <dsm...@pivotal.io> wrote: > >>>>>>>>> > >>>>>>>>>> Doesn't the build fail when concourse times out? > >>>>>>>>> > >>>>>>>>> > >>>>>>>> > >>>>>> > >>>>> > >>>>> > >>>> > >>> > >> > >