So to be clear, I don't really feel super strongly on this, I just thought Derek's suggestion seemed clean and elegant. Checkstyle to force a certain naming convention on things is fine enough; I certainly wouldn't stand in the way. Tooling like that self-educates users (see: Guardrails) so it's pretty low friction to the community IMO.
> Secondly, I still do not know how you want to practically implement what you > suggest without significantly breaking anything. It's unclear to me how the combination of "Has @Test, is not an abstract class top level matching file, and is inside the test folder" is going to significantly break anything. Maybe I'm missing something; would love to learn. > how to actually be sure that a developer knows that his test not only passed > but it was selected to be run Andres' changes to .circleci/generate.sh mean you're going to see a _repeat run of whatever tests you change or add. I think both approaches (heuristic to determine if a file contains tests to run vs. checkstyle enforced naming convention) are more or less comparable here. On Mon, Oct 31, 2022, at 12:26 PM, Miklosovic, Stefan wrote: > I think we are already adhering to them without any effort. Overwhelming > majority of devs are naming their tests "just right" and I do not think they > are doing that with any significant effort, probably none. We are only > re-enforcing the unspoken everybody implicitly agreed on. If somebody does > not name their tests like the rest, I think it would raise the red flags > already during a review. > > Secondly, I still do not know how you want to practically implement what you > suggest without significantly breaking anything. > > I think the crucial question we should ask is how to actually be sure that a > developer knows that his test not only passed but it was selected to be run > (now based on *Test). How did these tests which skipped as of now end up > there in the first place? Somebody just committed them, run the CI and "it > was green" so they proceed with the commit. But they did not check it was > actually run because "why not?". > > So, we are putting a kind of detector in place to signal that a test is not > going to be actually even run when the checkstyle fails. > > ________________________________________ > From: Josh McKenzie <jmcken...@apache.org> > Sent: Monday, October 31, 2022 17:16 > To: dev > Subject: Re: Some tests are never executed in CI due to their name > > NetApp Security WARNING: This is an external email. Do not click links or > open attachments unless you recognize the sender and know the content is safe. > > > > I do not think that having a test class called "SdsdakASsdadsada" which > happen to contain @Test and is not abstract should be considered to be a > valid file name / test class > I mean, I wouldn't recommend it certainly, but I'm not concerned about > whether a file is "TestThing" or "ThingTest" or "WeTestThing". The ordering > of names on those files adds very little IMO. > > I do not think we are actually winning anything with that approach. > Well, the name of this thread is "Some tests are never executed in CI due to > their name" and it fixes that in a robust way without asking of any behavior > changes of the project community to adhere to an arbitrary rigid naming > guideline for something. So there's that. :) > > On Mon, Oct 31, 2022, at 8:02 AM, Miklosovic, Stefan wrote: > I always hit "send" before realizing I have other points to add :) > > I was thinking we want to go with checkstyle and check the name. Not manually > parsing the file names. Do not we also want these test files to look > consistent? I do not think that having a test class called "SdsdakASsdadsada" > which happen to contain @Test and is not abstract should be considered to be > a valid file name / test class. Do not we also want to enforce some > regularity into this? > > Another point is that even we parsed we so it will be picked up while tests > are executed, that means that it will not be checked on the commit? > > Lastly, how do you actually want to do this if we currently have test.name > property which is a simple regexp (*Test)? -Dtest.name is pretty much how we > do this currently and I am not sure we want to break this in all CI scripts. > > I do not think we are actually winning anything with that approach. > > Regards > > ________________________________________ > From: Josh McKenzie <jmcken...@apache.org<mailto:jmcken...@apache.org>> > Sent: Monday, October 31, 2022 12:49 > To: dev > Subject: Re: Some tests are never executed in CI due to their name > > NetApp Security WARNING: This is an external email. Do not click links or > open attachments unless you recognize the sender and know the content is safe. > > > > To Derek's point, why not go with: > > Would it be sufficient to look for files that don't end in "Test.java" but > contain "@Test" annotations? > + exclude files that contain "abstract class" in them that matches the file > name? > > Combine that w/checking specific subdirectories and we relax the required > naming convention quite a bit; makes it easy to do the right thing and hard > to do the wrong thing. > > It's also very simple which is a feature. > > On Fri, Oct 28, 2022, at 4:17 AM, Miklosovic, Stefan wrote: > Hi Berenguer, > > I agree. We can always go heavy-weight anyway. I will dedicate more time to > that the next week. It would be nice if you tagged along and help with the > review. > > FYI the ticket is touching all branches we support (there are some skipped > tests in 3.0 too), we would just add checkstyle to 4.1 and trunk as > discussed, so I expect we fix all 5 branches at once. > > Regards > > Stefan > > ________________________________________ > From: Berenguer Blasi > <berenguerbl...@gmail.com<mailto:berenguerbl...@gmail.com><mailto:berenguerbl...@gmail.com<mailto:berenguerbl...@gmail.com>>> > Sent: Friday, October 28, 2022 9:43 > To: > dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>> > Subject: Re: Some tests are never executed in CI due to their name > > NetApp Security WARNING: This is an external email. Do not click links or > open attachments unless you recognize the sender and know the content is safe. > > > > > Hi Stefan, > > seems none of the 2 proposals are strongly opposed to. If you feel more > comfortable with option 1 I say we do that, which will always be a step in > the right direction. If we see it bites us again in the future then we do 2. > But at least we bring this benefit/ticket in. I would also be happy to drive > option 2 to completion if needed. > > wdyt? > > On 25/10/22 14:35, Berenguer Blasi wrote: > > Well examples lend themselves to many things. I am sure I could come up with > examples in the opposite direction. I'd rather talk in terms of the actual > files and tests we have. > > What I was trying to clarify is what I was misunderstanding as I had the > impression now we were saying option 1 would not leak again. > > So option 2, given ant and CI seem to rely on the *Test.java notation and > also prevents future leaks doesn't seem to me a bad idea. Renaming the > offending files seems a reasonable cost to me (Eclipse does it for me). > > My 2cts! But hey, I've been known to be wrong before :shrug: lol > > On 25/10/22 12:04, Andrés de la Peña wrote: > Note that the test multiplexer also searches for tests ending with "Test", so > it will also miss new or modified tests with nonstandard names. The > automatically detected tests are listed when running generate.sh, and they > are added to the repeated run jobs. That gives us another opportunity to > detect missed tests when we introduce something like "MyTestSplit1.java" and > see that it's not been included in the mandatory repeated runs. > > On Tue, 25 Oct 2022 at 10:31, Miklosovic, Stefan > <stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>>> > wrote: > Hi Berenguer, > > I am glad you asked. I was expecting this question. > > I think there is a fundamental difference in how we approach this problem. I > do not say mine is better, I just find it important to describe it clearly. > > Let's say we are on a ship which leaks. When I detect that, my course of > action is to fix the leakage with the biggest patches I can find around with > minimal effort necessary so we are not taking water anymore. There might > still be occasional leakages which are very rare but I have a crew who is > checking the ship constantly anyway (review) and the risk that big leakages > like we just fixed happen again are relatively very low. > > You spot a leakage and instead of fixing it with big patches and calling it a > day, you are trying to remodel the cabins so they are completely waterproof > but while doing so, you renamed them so everyone needs to get used to how > these cabins are called and where they are located, because there is this > minimal chance that some cadet comes around and starts to live in a cabin he > is not supposed to and we need to explain it to him. Thousands of cadets > found their cabins just fine. Occasionally, there are few people who just > miss the right board completely (Test at start, Tests at the end) and they > are automatically navigated around (checkstyle) but once in five years there > is this guy who just completely missed it. > > I believe we can just navigate him when that happens. You want to cover that > guy too. > > I just find my approach easier. > > You can remodel it all, for sure but I am afraid I will not be a part of > that. I just do not find it necessary to do that. > > ________________________________________ > From: Berenguer Blasi > <berenguerbl...@gmail.com<mailto:berenguerbl...@gmail.com><mailto:berenguerbl...@gmail.com<mailto:berenguerbl...@gmail.com>><mailto:berenguerbl...@gmail.com<mailto:berenguerbl...@gmail.com><mailto:berenguerbl...@gmail.com<mailto:berenguerbl...@gmail.com>>>> > Sent: Tuesday, October 25, 2022 11:08 > To: > dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>>> > Subject: Re: Some tests are never executed in CI due to their name > > NetApp Security WARNING: This is an external email. Do not click links or > open attachments unless you recognize the sender and know the content is safe. > > > > > IIUC we're relying on catching the word 'Split' in the file name for option > 1. If somebody named his test i.e. 'MyTestGroup1', 'MyTestGroup2', > 'TTLTestPre2038', 'TTLTestPost2038',... I think we would leak tests again? or > any other word that is not specifically accounted for. Unless I am missing > sthg ofc! :-) > > On 25/10/22 10:39, Miklosovic, Stefan wrote: > > I think that what you wrote is not entirely correct. It will prevent it > > from happening again when there are tests ending on "Tests" or starting on > > "Test". The only case it will not cover is "SplitN" issue we plan to cover > > with relaxed test.name<http://test.name> property. > > > > It seems like what you wrote means that we will fix it and tests will leak > > again. That is not true. > > > > ________________________________________ > > From: Berenguer Blasi > > <berenguerbl...@gmail.com<mailto:berenguerbl...@gmail.com><mailto:berenguerbl...@gmail.com<mailto:berenguerbl...@gmail.com>><mailto:berenguerbl...@gmail.com<mailto:berenguerbl...@gmail.com><mailto:berenguerbl...@gmail.com<mailto:berenguerbl...@gmail.com>>>> > > Sent: Tuesday, October 25, 2022 7:26 > > To: > > dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>>> > > Subject: Re: Some tests are never executed in CI due to their name > > > > NetApp Security WARNING: This is an external email. Do not click links or > > open attachments unless you recognize the sender and know the content is > > safe. > > > > > > > > > > The problem with using the first approach is that it fixes the current > > situation but it doesn't prevent it from happening again. The second > > proposal prevents it from happening again but at the cost of a bigger > > rename I'd volunteer to if needed. > > > > Regards > > > > On 24/10/22 20:38, Miklosovic, Stefan wrote: > >> Yeah, that is what the branch in my original email actually already > >> solved. I mean ... > >> > >> CassandraAuthorizerTruncatingTests > >> BatchTests > >> UUIDTests > >> > >> these are ending on Tests which is illegal and they are fixed there. > >> > >> Other cases are either "TestBase" or "Tester" which should be legal. > >> > >> I think using the first approach and fixing all "SplitN" PLUS adding > >> Split* to test.name<http://test.name> regexp should do it. > >> > >> I think we can "automate" at most like you suggest and scan it manually, > >> fix the stuff and from then incorporate checkstyle to take care of that. > >> > >> There are also some classes which do include @Test methods but I think > >> they are abstract as they are meant to be extended as the real test is > >> just wrapping that. This might happen when there are slight variations > >> across test classes. This is fine as well. > >> > >> ________________________________________ > >> From: Derek Chen-Becker > >> <de...@chen-becker.org<mailto:de...@chen-becker.org><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org>><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org>>>> > >> Sent: Monday, October 24, 2022 19:18 > >> To: > >> dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>>> > >> Subject: Re: Some tests are never executed in CI due to their name > >> > >> NetApp Security WARNING: This is an external email. Do not click links or > >> open attachments unless you recognize the sender and know the content is > >> safe. > >> > >> > >> > >> OK, I think the approach you're proposing is fine. As an orthogonal idea, > >> is there any way to do a one-time audit to narrow down files that we need > >> to inspect, or any way to automate confirmation of a file containing > >> tests? For example: > >> > >> * Start with all of the files under the `test` directory (is it safe to > >> assume that this is the only location for test classes?) => 1457 files > >> * Remove any files that already end in "Test.java" => down to 396 files > >> * Is it safe to assume that only files having "Test" somewhere in their > >> name are test classes? That reduces the list down to 60 files > >> > >> Alternatively, are we only talking about unit tests? Would it be > >> sufficient to look for files that don't end in "Test.java" but contain > >> "@Test" annotations? That's a significantly smaller set, so maybe we could > >> fix unit tests first: > >> > >> ❯❯❯ for fl in test/unit/**/*.java; do if [[ $fl != *Test.java ]]; then if > >> grep -qF '@Test' $fl; then print $fl; fi; fi; done > >> > >> circleci-parity > >> ✱ ◼ > >> test/unit/org/apache/cassandra/auth/CassandraAuthorizerTruncatingTests.java > >> test/unit/org/apache/cassandra/cql3/BatchTests.java > >> test/unit/org/apache/cassandra/cql3/KeywordTestBase.java > >> test/unit/org/apache/cassandra/db/guardrails/GuardrailAllowUncompressedTables.java > >> test/unit/org/apache/cassandra/db/guardrails/GuardrailConsistencyLevelsTester.java > >> test/unit/org/apache/cassandra/db/guardrails/GuardrailSecondaryIndexTester.java > >> test/unit/org/apache/cassandra/db/guardrails/GuardrailSecondaryIndexesPerTable.java > >> test/unit/org/apache/cassandra/db/guardrails/ThresholdTester.java > >> test/unit/org/apache/cassandra/dht/PartitionerTestCase.java > >> test/unit/org/apache/cassandra/utils/UUIDTests.java > >> > >> Cheers, > >> > >> Derek > >> > >> > >> On Mon, Oct 24, 2022 at 9:00 AM Miklosovic, Stefan > >> <stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>>>> > >> wrote: > >> One more point as I was reading your email in a hurry. The ultimate goal > >> is to run all tests. So even if we apply the proposed regexp in checkstyle > >> and there is an unfortunate case that MyTestSplit1 would slip through on a > >> review and it would not be executed in CI, if we do not figure out some > >> better regexp, we might relax > >> "test.name<http://test.name><http://test.name>" property to include > >> Split*.java as well. Yes, this might be also done. > >> > >> Enforcing "all tests to end on "Test" " means that we would need to know > >> which .java files contain tests and which not without looking into them. I > >> do not think that is possible under circumstances we have where > >> (checkstyle module). > >> > >> ________________________________________ > >> From: Derek Chen-Becker > >> <de...@chen-becker.org<mailto:de...@chen-becker.org><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org>><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org>>><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org>><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org>>>>> > >> Sent: Monday, October 24, 2022 15:53 > >> To: > >> dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>>><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>>>> > >> Subject: Re: Some tests are never executed in CI due to their name > >> > >> NetApp Security WARNING: This is an external email. Do not click links or > >> open attachments unless you recognize the sender and know the content is > >> safe. > >> > >> > >> > >> OK, that makes sense, and I missed the rename of "TestBaseImpl" (which I > >> agree is in need of fixing). When you say: > >> > >>> What we are trying to achieve by that is to have a test which ends on > >>> "Test" and nothing else and it may contain "Test" only in case it does > >>> not start with it. > >> Should the regex enforce the "which ends on Test" part? Otherwise, if we > >> want to allow tests like MyTestSplit1, do we need to update the > >> "test.name<http://test.name><http://test.name><http://test.name>" > >> parameter to allow that in the test runner? > >> > >> Thanks, > >> > >> Derek > >> > >> > >> On Mon, Oct 24, 2022 at 7:27 AM Miklosovic, Stefan > >> <stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>>>>> > >> wrote: > >> Hi Derek, > >> > >> yes, the regexp is ^(?!(?:Test))(?!.*?(?:Tests)).*$ > >> > >> What we are trying to achieve by that is to have a test which ends on > >> "Test" and nothing else and it may contain "Test" only in case it does not > >> start with it. > >> > >> To your second paragraph, I do not think we have any *Base files which are > >> tests (that would be a bug) nor they are standalone (not inherited). By > >> first approach, TestBaseImpl (which we do have) would start to be invalid, > >> we would have to rename it to "DistributedTestBaseImpl" because it was > >> starting on "Test" which is no-no. I agree that "TestBaseImpl" is rather > >> unfortunate name. Currently, TestBaseImpl itself extends > >> "DistributedTestBase" so in the end we would have "DistributedTestBaseImpl > >> -> TestBaseImpl -> DistributedTestBase". Please keep in mind that > >> "DistributedTestBase" is located in dtest jar (separate project) and that > >> is rather inconvenient to rename. > >> > >> Regards > >> > >> ________________________________________ > >> From: Derek Chen-Becker > >> <de...@chen-becker.org<mailto:de...@chen-becker.org><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org>><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org>>><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org>><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org>>>><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org>><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org>>><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org>><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org><mailto:de...@chen-becker.org<mailto:de...@chen-becker.org>>>>>> > >> Sent: Monday, October 24, 2022 15:09 > >> To: > >> dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>>><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>>>><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>>><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>>>>> > >> Subject: Re: Some tests are never executed in CI due to their name > >> > >> NetApp Security WARNING: This is an external email. Do not click links or > >> open attachments unless you recognize the sender and know the content is > >> safe. > >> > >> > >> > >> For clarity, what is the final regex you've landed on for the first > >> approach? Is it "^(?!(?:Test))(?!.*?(?:Tests)).*$" ? Are we just trying to > >> reject anything that *starts* with "Test" or contains "Tests" somewhere in > >> the name? It might be more clear to state what we think a valid test name > >> should be, not in regex form. > >> > >> When it comes to "TestBase" files, are there any of these that are > >> actually intended to be run as a test? The "Base" would indicate to me > >> that it's intended to be inherited, not run directly. Do we have some > >> "TestBase" classes somewhere that aren't inherited and are meant to be run > >> directly, because that definitely seems like a misleading name that should > >> be fixed, invasive or not. I would lean toward the principle of least > >> surprise here, even if it means an involved one-time cleanup. > >> > >> Cheers, > >> > >> Derek > >> > >> On Mon, Oct 24, 2022 at 3:02 AM Miklosovic, Stefan > >> <stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>>>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>>>>>> > >> wrote: > >> Hi list, > >> > >> it was reported that some tests are not executed as part of CI because of > >> their name (1). There is (2) and (3) so right now it runs only > >> "*Test.java" files. > >> > >> Except of us renaming the affected classes, we should fix this in a more > >> robust way - via checkstyle - so we enforce how test files have to be > >> called. > >> > >> We came up with two approaches and we do not know which one to choose so > >> we want to gather more feedback / opinions. > >> > >> The first approach would make this happen (implemented here (4)) > >> > >> class name - passes / fails the checkstyle > >> > >> TestIt - fails > >> TestsThatFeature - fails > >> ThisTestsMyFeature - fails > >> SomeTests - fails > >> > >> SomeHelperClassForTesting - passes > >> SomeTest - passes > >> DistributedTestBase - passes > >> > >> MyTestSplit1 - passes > >> > >> We would fix "SplitN" test files by hand (I think they are not executed > >> right now in CI either) to something like MySplit1Test and MySplit2Test > >> but the regexp we would eventually use would not prevent this from > >> happening in the future. I do not know how to construct such a complex > >> regexp yet which would cover all cases above plus this splitting one. Feel > >> free to look into the ticket where details are discussed. > >> > >> The second approach would forbid to have any occurrence of "test" in the > >> file name but at the end. For example, it would fail on classes like these > >> > >> MyTestSplit1 > >> TestHelper > >> BurnTestUtil > >> FuzzTestBase > >> DistributedTestSnitch > >> CASCommonTestCases > >> ServerTestUtils > >> AuthTestUtils > >> TestMemtable > >> > >> While this would also fix "MyTestSplitN" cases, I consider this to be way > >> more invasive to the current codebase because we would have to rename a > >> lot of files (like, hundreds, plus a lot of places they are referenced / > >> used at) and I do not even think this is necessary and desirable. Like, > >> how would we call "FuzzTestBase" to not contain "Test" in it? I think > >> having "test" string in the middle is just fine, specifically for helper > >> classes. One possible fix would be to replace "Test" with "Tester" so we > >> would have "TesterMemtable", "AuthTesterUtils", "TesterHelper", > >> "DistributedTesterSnitch" ... Word "Tester" would be explicitly allowed. > >> > >> I personally lean to the first approach even though cases like > >> "MyTestSplit1" will not be spotted in compile time, but hey, we still do > >> have a review process on top of this. The obvious violations like > >> "TestThisFeature" and "MySuperTests" would be evaluated as violations > >> which I would argue happens the most often. > >> > >> Please keep in mind that we have checkstyle only in 4.1 and trunk. So, > >> while we would fix names of classes in all branches we support so they are > >> picked up by CI, checkstyle for this would be introduced in 4.1 and trunk > >> only. > >> > >> (1) https://issues.apache.org/jira/browse/CASSANDRA-17964 > >> (2) https://github.com/apache/cassandra/blob/trunk/build.xml#L61 > >> (3) https://github.com/apache/cassandra/blob/trunk/build.xml#L1033 > >> (4) https://github.com/instaclustr/cassandra/commits/CASSANDRA-17964-4.1-2 > >> > >> > >> -- > >> +---------------------------------------------------------------+ > >> | Derek Chen-Becker | > >> | GPG Key available at https://keybase.io/dchenbecker and | > >> | https://pgp.mit.edu/pks/lookup?search=derek%40chen-becker.org | > >> | Fngrprnt: EB8A 6480 F0A3 C8EB C1E7 7F42 AFC5 AFEE 96E4 6ACC | > >> +---------------------------------------------------------------+ > >> > >> > >> > >> -- > >> +---------------------------------------------------------------+ > >> | Derek Chen-Becker | > >> | GPG Key available at https://keybase.io/dchenbecker and | > >> | https://pgp.mit.edu/pks/lookup?search=derek%40chen-becker.org | > >> | Fngrprnt: EB8A 6480 F0A3 C8EB C1E7 7F42 AFC5 AFEE 96E4 6ACC | > >> +---------------------------------------------------------------+ > >> > >> > >> > >> -- > >> +---------------------------------------------------------------+ > >> | Derek Chen-Becker | > >> | GPG Key available at https://keybase.io/dchenbecker and | > >> | https://pgp.mit.edu/pks/lookup?search=derek%40chen-becker.org | > >> | Fngrprnt: EB8A 6480 F0A3 C8EB C1E7 7F42 AFC5 AFEE 96E4 6ACC | > >> +---------------------------------------------------------------+ > >> > > > > >