diff --git a/docs/devguide/running/deploy.md b/docs/devguide/running/deploy.md index 6c18ccab7a..621655c37f 100644 --- a/docs/devguide/running/deploy.md +++ b/docs/devguide/running/deploy.md @@ -206,6 +206,7 @@ conductor.elasticsearch.version=0 ```properties conductor.indexing.enabled=true +conductor.indexing.type=elasticsearch conductor.elasticsearch.url=http://es-host:9200 conductor.elasticsearch.version=7 conductor.elasticsearch.indexName=conductor diff --git a/es7-persistence/src/test/java/com/netflix/conductor/es7/config/ElasticSearchConditionsTest.java b/es7-persistence/src/test/java/com/netflix/conductor/es7/config/ElasticSearchConditionsTest.java new file mode 100644 index 0000000000..ff8330730e --- /dev/null +++ b/es7-persistence/src/test/java/com/netflix/conductor/es7/config/ElasticSearchConditionsTest.java @@ -0,0 +1,86 @@ +/* + * Copyright 2026 Conductor Authors. + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package com.netflix.conductor.es7.config; + +import org.junit.Test; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Conditional; +import org.springframework.context.annotation.Configuration; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class ElasticSearchConditionsTest { + + private final ApplicationContextRunner contextRunner = + new ApplicationContextRunner() + .withUserConfiguration(ConditionalTestConfiguration.class); + + @Test + public void shouldActivateForElasticsearchV7Selector() { + contextRunner + .withPropertyValues( + "conductor.indexing.enabled=true", + "conductor.indexing.type=elasticsearch", + "conductor.elasticsearch.version=7") + .run(context -> assertTrue(context.containsBean("es7Marker"))); + } + + @Test + public void shouldActivateWhenVersionIsImplicit() { + // The ES7 condition treats conductor.elasticsearch.version as version 7 when omitted. + contextRunner + .withPropertyValues( + "conductor.indexing.enabled=true", "conductor.indexing.type=elasticsearch") + .run(context -> assertTrue(context.containsBean("es7Marker"))); + } + + @Test + public void shouldNotActivateWhenIndexingIsDisabled() { + contextRunner + .withPropertyValues( + "conductor.indexing.enabled=false", + "conductor.indexing.type=elasticsearch", + "conductor.elasticsearch.version=7") + .run(context -> assertFalse(context.containsBean("es7Marker"))); + } + + @Test + public void shouldNotActivateForLegacyVersionPropertyOnly() { + contextRunner + .withPropertyValues( + "conductor.indexing.enabled=true", "conductor.elasticsearch.version=7") + .run(context -> assertFalse(context.containsBean("es7Marker"))); + } + + @Test + public void shouldNotActivateForElasticsearch8Selector() { + contextRunner + .withPropertyValues( + "conductor.indexing.enabled=true", "conductor.indexing.type=elasticsearch8") + .run(context -> assertFalse(context.containsBean("es7Marker"))); + } + + @Configuration(proxyBeanMethods = false) + @Conditional(ElasticSearchConditions.ElasticSearchV7Enabled.class) + static class ConditionalTestConfiguration { + + @Bean + Es7Marker es7Marker() { + return new Es7Marker(); + } + } + + static class Es7Marker {} +}