Skip to content

Commit 439b299

Browse files
gdanielAxelRICHARD
authored andcommitted
[1988] Extract Elasticsearch initialization in an abstract test class
Bug: #1988 Signed-off-by: Gwendal Daniel <gwendal.daniel@obeosoft.com>
1 parent c1b99da commit 439b299

File tree

6 files changed

+27
-76
lines changed

6 files changed

+27
-76
lines changed

CHANGELOG.adoc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ The following methods have been added:
2020
+
2121
** List<EObject> getAllReachableType(EObject eObject, EClass eClass)` in `UtilService`
2222

23+
- https://github.com/eclipse-syson/syson/issues/1988[#1988] [syson] Extract Elasticsearch container initialization in a dedicated abstract test class.
24+
The property `SysONTestsProperties#ELASTICSEARCH` has been removed, tests that require Elasticsearch should extend `AbstractIntegrationTestsWithElasticsearch`.
25+
2326
=== Dependency update
2427

2528
- [releng] Update to https://github.com/eclipse-sirius/sirius-web[Sirius Web 2026.1.2]
@@ -56,6 +59,8 @@ Publishing a project that contains representations now produces libraries that a
5659
Also add a _New Satisfy Requirement_ graphical edge tool between `Feature` graphical nodes and `RequirementUsage` graphical nodes.
5760
- https://github.com/eclipse-syson/syson/issues/1986[#1986] [services] Make `ServiceMethod#aql` and `ServiceMethod#aqlSelf` throw an exception if the provided parameters don't match the service method arity.
5861
As a result, the application won't start if a service call is constructed with an invalid number of arguments.
62+
- https://github.com/eclipse-syson/syson/issues/1988[#1988] [syson] Extract Elasticsearch container initialization in a dedicated abstract test class.
63+
Integration tests that require Elasticsearch now need to extend `AbstractIntegrationTestsWithElasticsearch`.
5964

6065
=== New features
6166

backend/application/syson-application/src/test/java/org/eclipse/syson/ElasticsearchDynamicPropertyRegistrar.java renamed to backend/application/syson-application/src/test/java/org/eclipse/syson/AbstractIntegrationTestWithElasticsearch.java

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,30 @@
1212
*******************************************************************************/
1313
package org.eclipse.syson;
1414

15-
import org.springframework.context.annotation.Conditional;
16-
import org.springframework.context.annotation.Configuration;
17-
import org.springframework.test.context.DynamicPropertyRegistrar;
1815
import org.springframework.test.context.DynamicPropertyRegistry;
16+
import org.springframework.test.context.DynamicPropertySource;
1917
import org.testcontainers.elasticsearch.ElasticsearchContainer;
2018

2119
/**
22-
* Test configuration to register Elasticsearch properties for tests that require Elasticsearch.
23-
* <p>
24-
* Use {@link SysONTestsProperties#ELASTICSEARCH_PROPERTY} in the test configuration to enable Elasticsearch.
25-
* </p>
20+
* Superclass of all the integration tests used to setup the test environment with SysON's Elasticsearch integration.
2621
*
2722
* @author gdaniel
2823
*/
29-
@Configuration
30-
@Conditional(OnElasticsearchEnabledTests.class)
31-
public class ElasticsearchDynamicPropertyRegistrar implements DynamicPropertyRegistrar {
24+
public class AbstractIntegrationTestWithElasticsearch extends AbstractIntegrationTests {
3225

33-
@Override
34-
public void accept(DynamicPropertyRegistry registry) {
35-
registry.add("spring.elasticsearch.uris", AbstractIntegrationTests.ELASTICSEARCH_CONTAINER::getHttpHostAddress);
26+
public static final ElasticsearchContainer ELASTICSEARCH_CONTAINER;
27+
28+
static {
29+
ELASTICSEARCH_CONTAINER = new ElasticsearchContainer("elasticsearch:9.2.1")
30+
.withEnv("xpack.security.transport.ssl.enabled", "false")
31+
.withEnv("xpack.security.http.ssl.enabled", "false")
32+
.withReuse(true);
33+
ELASTICSEARCH_CONTAINER.start();
34+
}
35+
36+
@DynamicPropertySource
37+
public static void registerProperties(DynamicPropertyRegistry registry) {
38+
registry.add("spring.elasticsearch.uris", AbstractIntegrationTestWithElasticsearch.ELASTICSEARCH_CONTAINER::getHttpHostAddress);
3639
registry.add("spring.elasticsearch.username", () -> "elastic");
3740
registry.add("spring.elasticsearch.password", () -> ElasticsearchContainer.ELASTICSEARCH_DEFAULT_PASSWORD);
3841
}

backend/application/syson-application/src/test/java/org/eclipse/syson/AbstractIntegrationTests.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,28 +18,22 @@
1818
import org.springframework.test.context.DynamicPropertySource;
1919
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
2020
import org.testcontainers.containers.PostgreSQLContainer;
21-
import org.testcontainers.elasticsearch.ElasticsearchContainer;
2221

2322
/**
2423
* Superclass of all the integration tests used to setup the test environment.
24+
* <p>
25+
* Note that this class doesn't initialize SysON's Elasticsearch integration, use {@link AbstractIntegrationTestWithElasticsearch} if your integration tests require Elasticsearch.
26+
* </p>
2527
*
2628
* @author sbegaudeau
2729
*/
2830
@SpringJUnitConfig(classes = { SiriusWebStarterConfiguration.class, JDBCConfiguration.class, IntegrationTestConfiguration.class })
2931
public abstract class AbstractIntegrationTests {
3032
public static final PostgreSQLContainer<?> POSTGRESQL_CONTAINER;
3133

32-
public static final ElasticsearchContainer ELASTICSEARCH_CONTAINER;
33-
34-
3534
static {
3635
POSTGRESQL_CONTAINER = new PostgreSQLContainer<>("postgres:latest").withReuse(true);
3736
POSTGRESQL_CONTAINER.start();
38-
ELASTICSEARCH_CONTAINER = new ElasticsearchContainer("elasticsearch:9.2.1")
39-
.withEnv("xpack.security.transport.ssl.enabled", "false")
40-
.withEnv("xpack.security.http.ssl.enabled", "false")
41-
.withReuse(true);
42-
ELASTICSEARCH_CONTAINER.start();
4337
}
4438

4539
@DynamicPropertySource

backend/application/syson-application/src/test/java/org/eclipse/syson/OnElasticsearchEnabledTests.java

Lines changed: 0 additions & 46 deletions
This file was deleted.

backend/application/syson-application/src/test/java/org/eclipse/syson/SysONTestsProperties.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,4 @@ public class SysONTestsProperties {
2424
public static final String NO_DEFAULT_LIBRARIES = "no-default-libraries";
2525

2626
public static final String NO_DEFAULT_LIBRARIES_PROPERTY = SYSON_TEST_ENABLED + "=" + NO_DEFAULT_LIBRARIES;
27-
28-
public static final String ELASTICSEARCH = "elastic-search";
29-
30-
public static final String ELASTICSEARCH_PROPERTY = SYSON_TEST_ENABLED + "=" + ELASTICSEARCH;
31-
3227
}

backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/omnibox/ProjectsOmniboxControllerIntegrationTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import org.eclipse.sirius.components.core.api.IEditingContextSearchService;
2626
import org.eclipse.sirius.web.infrastructure.elasticsearch.services.api.IIndexUpdateService;
2727
import org.eclipse.sirius.web.tests.graphql.ProjectsOmniboxSearchQueryRunner;
28-
import org.eclipse.syson.AbstractIntegrationTests;
28+
import org.eclipse.syson.AbstractIntegrationTestWithElasticsearch;
2929
import org.eclipse.syson.SysONTestsProperties;
3030
import org.eclipse.syson.application.data.SimpleProjectElementsTestProjectData;
3131
import org.junit.jupiter.api.DisplayName;
@@ -45,8 +45,8 @@
4545
*/
4646
@Transactional
4747
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
48-
properties = { SysONTestsProperties.SYSON_TEST_ENABLED + "=" + SysONTestsProperties.NO_DEFAULT_LIBRARIES + ", " + SysONTestsProperties.ELASTICSEARCH })
49-
public class ProjectsOmniboxControllerIntegrationTests extends AbstractIntegrationTests {
48+
properties = { SysONTestsProperties.SYSON_TEST_ENABLED + "=" + SysONTestsProperties.NO_DEFAULT_LIBRARIES })
49+
public class ProjectsOmniboxControllerIntegrationTests extends AbstractIntegrationTestWithElasticsearch {
5050

5151
@Autowired
5252
private ProjectsOmniboxSearchQueryRunner projectsOmniboxSearchQueryRunner;

0 commit comments

Comments
 (0)