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