I will try to resopnd, but please keep in mind that all these terms are 
somewhat contextual. 

I think long and burn tests are somewhat synonymous. But most long/burn tests 
that we have in-tree aren't actually that long. They are just long compared to 
the unit tests. I personally would call the test long when it runs for hours at 
least, but realistically for days. 

Fuzz tests are randomised tests that attempt to find issues in the system under 
test. Most of fuzz tests we wrote using Harry are also property-based: they are 
using a model checker to simulate an internal state of the system and check its 
responses with a simplified representation.

Simulator tests are just tests that use our simulator framework, that executes 
a test against a cluster of nodes deterministically by fully serialising all of 
its operations. We also have a bunch of smaller simulations that simulate 
different scenarios: bounces, metadata changes, etc, without actually starting 
the cluster. Those are not simulator tests though. I have also used the word 
"simulate" in the context of model-checking, but also mostly to illustrate that 
it's all context-dependent. 

I personally believe that many tests, and test pipelines can (and probably 
should) be deprecated. But last time I brought this up, there was a bit of 
pushback, so I think before we can consider deprecation of tests that we think 
are redundant we will have to substantially improve adoption of the tools that 
allow better multiplexing.

As regards configurations, I do not think it is necessary to re-run an entire 
set of u/d/injvm tests with vnode/trie/etc configurations, and instead these 
scenarios should be exercised by config permuation using a fuzzer. As 
experience (and several recent issues particularly) show - some important 
settings are never touched by any of the tests at all, and since tests are 
static, a chance of finding any issues with some combination of those is slim. 

Apart from what we already have (data and schema generators and failure 
injection), we now need configuration generators that will find interesting 
configurations and run randomly generated workflows against those, expecting 
any configuration of Cassandra to behave the same. 

I do find our test matrix a bit convoluted, and in my experience you spend way 
more time tweaking tests to work for all configurations after some code 
changes, and they find legimitate issues rather infrequently. We would probably 
be better off with a quick "sanity check" for major configurations per commit 
which, again, would exercise a common set of operations, combined with a 
comprehensive test suite which will try to cover as much ground as possible.

Hope this helps.
--Alex


On Thu, Nov 30, 2023, at 10:25 AM, Jacek Lewandowski wrote:
> Hi,
> 
> I'm getting a bit lost - what are the exact differences between those test 
> scenarios? What are the criteria for qualifying a test to be part of a 
> certain scenario?
> 
> I'm working a little bit with tests and build scripts and the number of 
> different configurations for which we have a separate target in the build 
> starts to be problematic, I cannot imagine how problematic it is for a new 
> contributor.
> 
> It is not urgent, but we should at least have a plan on how to simplify and 
> unify things.
> 
> I'm in favour of reducing the number of test targets to the minimum - for 
> different configurations I think we should provide a parameter pointing to 
> jvm options file and maybe to cassandra.yaml. I know that we currently do 
> some super hacky things with cassandra yaml for different configs - like 
> concatenting parts of it. I presume it is not necessary - we can have a 
> default test config yaml and a directory with overriding yamls; while 
> building we could have a tool which is able to load the default 
> configuration, apply the override and save the resulting yaml somewhere in 
> the build/test/configs for example. That would allows us to easily use those 
> yamls in IDE as well - currently it is impossible.
> 
> What do you think?
> 
> Thank you and my apologize for bothering about lower priority stuff while we 
> have a 5.0 release headache...
> 
> Jacek
> 

Reply via email to