Hi, Petr!
Actually these tests do not behave exactly as one test, but they behave
mostly as one test. Often this is expressed in the following: we have a
feature to test (i.e. transaction isolation) and different sets of
parameters to be tested with this feature: cache mode, backups number,
cluster size, persistence enabled/disabled, etc. And we have a list of
tests with different combinations of these parameters:
testTxIsolation(Replicated, 0 backups, 1 severs 0 clients, persistence
disabled)
testTxIsolation(Replicated, 0 backups, 2 severs 1 clients, persistence
disabled)
testTxIsolation(Replicated, 0 backups, 4 severs 2 clients, persistence
disabled)
testTxIsolation(Replicated, 0 backups, 1 severs 0 clients, persistence
enabled)
testTxIsolation(Replicated, 0 backups, 2 severs 1 clients, persistence
enabled)
testTxIsolation(Replicated, 0 backups, 4 severs 2 clients, persistence
enabled)
testTxIsolation(Partitioned, 0 backups, 1 severs 0 clients,
persistence disabled)
testTxIsolation(Partitioned, 1 backups, 2 severs 1 clients,
persistence disabled)
testTxIsolation(Partitioned, 2 backups, 4 severs 2 clients,
persistence disabled)
testTxIsolation(Partitioned, 0 backups, 1 severs 0 clients,
persistence enabled)
testTxIsolation(Partitioned, 1 backups, 2 severs 1 clients,
persistence enabled)
testTxIsolation(Partitioned, 2 backups, 4 severs 2 clients,
persistence enabled)
Each test in this list represents a special case which should be tested.
If the key functionality of Tx isolation is broken by developer - all
tests will be failed. But there are a very rare cases when only a subset
of this tests is failed when others are green. In my opinion for "fast"
runs we should trigger only one or two tests from this group - it should
be enough to detect the most of bugs. But for night runs, of course, all
cases should be checked.
--
Kind Regards
Roman Kondakov
On 26.11.2018 11:11, Petr Ivanov wrote:
Hi, Roman.
On 25 Nov 2018, at 21:26, Roman Kondakov <[email protected]> wrote:
Hi Dmitriy!
We have over 50 000 test in our tests base. And this number will be noticeably
increased soon by MVCC tests coverage activity. This means that it is very
difficult to rework and rewrite these test manually to make it run faster. But
we can choose another way. Do we have an ability to perform a statistical
analysis over a considerable number of last tests runs? If we do, let's
consider two points:
1. After careful consideration in terms of statistics it may turnout that significant
number of these test are "evergreen" tests. It means that these tests check
cases which are very difficult to break. If so, why should we run these tests each time?
They are great candidates for night runs.
2. After dropping "evergreen" tests there are may be a number of tests with correlated
results. There could be a lot of test groups with a some number of tests in each group, where
either all tests are red or all tests are green. In this case in "fast" runs we can
launch only one test from each group instead of entire group. Other tests in group can be launched
at night build.
What’s the point of having all this tests if they behave as one and will never
fail exclusively?
Maybe such tests require optimisation and shrinking into one?
Having a list of "good" tests (good tests = all tests - evergreen tests -
groups (except chosen represenative from each group)), we can mark these tests with
annotation @Category (or @Tag in junit 5). For fast tests runs we can run only annotated
tests, for night runs - all tests as usual.
When new test is added developers could decide to add or not to add this
annotation.
Annotated tests list should be reviewed monthly or weekly. Or, if possible,
automate this procedure.
--
Kind Regards
Roman Kondakov
On 15.11.2018 13:34, Dmitriy Pavlov wrote:
Hi Igniters,
Some of us started to use the Bot to get an approval of PRs. It helps to
protect master from new failures, but this requires to run RunAll tests set
for each commit and this makes markable pressure to TC infra.
I would like to ask you to share your ideas on how to make runAll faster,
maybe you can share any of your measurements and any other info about
(possible) bottlenecks.
Sincerely,
Dmitriy Pavlov