You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jacek Lewandowski (Jira)" <ji...@apache.org> on 2022/11/22 14:33:00 UTC
[jira] [Created] (CASSANDRA-18066) Server should be started in @Before rather than @BeforeClass in CQLTester
Jacek Lewandowski created CASSANDRA-18066:
---------------------------------------------
Summary: Server should be started in @Before rather than @BeforeClass in CQLTester
Key: CASSANDRA-18066
URL: https://issues.apache.org/jira/browse/CASSANDRA-18066
Project: Cassandra
Issue Type: Bug
Components: Test/unit
Reporter: Jacek Lewandowski
I can see that there is some misunderstanding in the project of {{@BeforeClass}} annotated methods.
Given we have a static method {{@BeforeClass static void initA()}} in {{CQLTester}} and {{@BeforeClass static void initB()}} in {{SomeTestClass extends CQLTester}}, it will run like the following:
1. static initializer of {{CQLTester}}
2. {{initA()}}
3. static initializer of {{SomeTestClass}}
4. {{initB()}}
Since the server is started in (2), there is essentially no way to consistently set startup properties or configuration of {{DatabaseDescriptor}} in {{SomeTestClass}} so that the starting server can pick it consistently. That is, if something works, it is just because some server class has not been used yet, but this actually cannot be guaranteed.
When I look in the code, it seems like the understanding of JUnit was that if {{initB()}} is defined, then {{initA()}} is not called, but this is not true.
Therefore, I propose to move the server initialization from {{initA()}} (call to {{SchemaLoader.prepareServer()}} to a method annotated with {{@Before}} in {{CQLTester}} so that the server is started with the first test case. Then, we will be sure that call to {{initB()}} will happen before the server is initialized and we will be able to set configuration consistently.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org