diff --git a/src/main/java/redis/clients/jedis/CommandObjects.java b/src/main/java/redis/clients/jedis/CommandObjects.java index 36cbebfb68..7473d91ca9 100644 --- a/src/main/java/redis/clients/jedis/CommandObjects.java +++ b/src/main/java/redis/clients/jedis/CommandObjects.java @@ -3531,19 +3531,23 @@ public final CommandObject> ftTagVals(String indexName, String field .add(fieldName), BuilderFactory.STRING_SET); } + @Deprecated public final CommandObject> ftConfigGet(String option) { return new CommandObject<>(commandArguments(SearchCommand.CONFIG).add(SearchKeyword.GET).add(option), protocol == RedisProtocol.RESP3 ? BuilderFactory.AGGRESSIVE_ENCODED_OBJECT_MAP : BuilderFactory.ENCODED_OBJECT_MAP_FROM_PAIRS); } + @Deprecated public final CommandObject> ftConfigGet(String indexName, String option) { return directSearchCommand(ftConfigGet(option), indexName); } + @Deprecated public final CommandObject ftConfigSet(String option, String value) { return new CommandObject<>(commandArguments(SearchCommand.CONFIG).add(SearchKeyword.SET).add(option).add(value), BuilderFactory.STRING); } + @Deprecated public final CommandObject ftConfigSet(String indexName, String option, String value) { return directSearchCommand(ftConfigSet(option, value), indexName); } diff --git a/src/main/java/redis/clients/jedis/PipeliningBase.java b/src/main/java/redis/clients/jedis/PipeliningBase.java index ffe1c2a31c..593f740c17 100644 --- a/src/main/java/redis/clients/jedis/PipeliningBase.java +++ b/src/main/java/redis/clients/jedis/PipeliningBase.java @@ -3565,21 +3565,25 @@ public Response> ftTagVals(String indexName, String fieldName) { } @Override + @Deprecated public Response> ftConfigGet(String option) { return appendCommand(commandObjects.ftConfigGet(option)); } @Override + @Deprecated public Response> ftConfigGet(String indexName, String option) { return appendCommand(commandObjects.ftConfigGet(indexName, option)); } @Override + @Deprecated public Response ftConfigSet(String option, String value) { return appendCommand(commandObjects.ftConfigSet(option, value)); } @Override + @Deprecated public Response ftConfigSet(String indexName, String option, String value) { return appendCommand(commandObjects.ftConfigSet(indexName, option, value)); } diff --git a/src/main/java/redis/clients/jedis/UnifiedJedis.java b/src/main/java/redis/clients/jedis/UnifiedJedis.java index f1dc895ee7..ed80f9f0eb 100644 --- a/src/main/java/redis/clients/jedis/UnifiedJedis.java +++ b/src/main/java/redis/clients/jedis/UnifiedJedis.java @@ -4067,21 +4067,25 @@ public Set ftTagVals(String indexName, String fieldName) { } @Override + @Deprecated public Map ftConfigGet(String option) { return executeCommand(commandObjects.ftConfigGet(option)); } @Override + @Deprecated public Map ftConfigGet(String indexName, String option) { return executeCommand(commandObjects.ftConfigGet(indexName, option)); } @Override + @Deprecated public String ftConfigSet(String option, String value) { return executeCommand(commandObjects.ftConfigSet(option, value)); } @Override + @Deprecated public String ftConfigSet(String indexName, String option, String value) { return executeCommand(commandObjects.ftConfigSet(indexName, option, value)); } diff --git a/src/main/java/redis/clients/jedis/search/RediSearchCommands.java b/src/main/java/redis/clients/jedis/search/RediSearchCommands.java index f361689aea..588a47b768 100644 --- a/src/main/java/redis/clients/jedis/search/RediSearchCommands.java +++ b/src/main/java/redis/clients/jedis/search/RediSearchCommands.java @@ -5,6 +5,7 @@ import java.util.Map; import java.util.Set; +import redis.clients.jedis.commands.ConfigCommands; import redis.clients.jedis.resps.Tuple; import redis.clients.jedis.search.aggr.AggregationBuilder; import redis.clients.jedis.search.aggr.AggregationResult; @@ -107,12 +108,22 @@ Map> ftSpellCheck(String index, String query, Set ftTagVals(String indexName, String fieldName); + /** + * @deprecated {@link ConfigCommands#configGet(java.lang.String)} is used since Redis 8. + */ + @Deprecated Map ftConfigGet(String option); + @Deprecated Map ftConfigGet(String indexName, String option); + /** + * @deprecated {@link ConfigCommands#configSet(java.lang.String, java.lang.String)} is used since Redis 8. + */ + @Deprecated String ftConfigSet(String option, String value); + @Deprecated String ftConfigSet(String indexName, String option, String value); long ftSugAdd(String key, String string, double score); diff --git a/src/main/java/redis/clients/jedis/search/RediSearchPipelineCommands.java b/src/main/java/redis/clients/jedis/search/RediSearchPipelineCommands.java index c5765a6f31..55f3e02bf0 100644 --- a/src/main/java/redis/clients/jedis/search/RediSearchPipelineCommands.java +++ b/src/main/java/redis/clients/jedis/search/RediSearchPipelineCommands.java @@ -95,12 +95,16 @@ Response>> ftSpellCheck(String index, String que Response> ftTagVals(String indexName, String fieldName); + @Deprecated Response> ftConfigGet(String option); + @Deprecated Response> ftConfigGet(String indexName, String option); + @Deprecated Response ftConfigSet(String option, String value); + @Deprecated Response ftConfigSet(String indexName, String option, String value); Response ftSugAdd(String key, String string, double score); diff --git a/src/main/java/redis/clients/jedis/search/SearchProtocol.java b/src/main/java/redis/clients/jedis/search/SearchProtocol.java index 17f5df1349..b1a6e88c7a 100644 --- a/src/main/java/redis/clients/jedis/search/SearchProtocol.java +++ b/src/main/java/redis/clients/jedis/search/SearchProtocol.java @@ -16,7 +16,7 @@ public enum SearchCommand implements ProtocolCommand { EXPLAINCLI("FT.EXPLAINCLI"), AGGREGATE("FT.AGGREGATE"), CURSOR("FT.CURSOR"), - CONFIG("FT.CONFIG"), + @Deprecated CONFIG("FT.CONFIG"), ALIASADD("FT.ALIASADD"), ALIASUPDATE("FT.ALIASUPDATE"), ALIASDEL("FT.ALIASDEL"), @@ -52,11 +52,12 @@ public enum SearchKeyword implements Rawable { SCHEMA, TEXT, TAG, NUMERIC, GEO, GEOSHAPE, VECTOR, VERBATIM, NOCONTENT, NOSTOPWORDS, WITHSCORES, LANGUAGE, INFIELDS, SORTBY, ASC, DESC, LIMIT, HIGHLIGHT, FIELDS, TAGS, SUMMARIZE, FRAGS, LEN, SEPARATOR, INKEYS, RETURN, FILTER, GEOFILTER, ADD, INCR, MAX, FUZZY, READ, DEL, DD, TEMPORARY, - STOPWORDS, NOFREQS, NOFIELDS, NOOFFSETS, NOHL, SET, GET, ON, SORTABLE, UNF, PREFIX, + STOPWORDS, NOFREQS, NOFIELDS, NOOFFSETS, NOHL, ON, SORTABLE, UNF, PREFIX, LANGUAGE_FIELD, SCORE, SCORE_FIELD, SCORER, PARAMS, AS, DIALECT, SLOP, TIMEOUT, INORDER, EXPANDER, MAXTEXTFIELDS, SKIPINITIALSCAN, WITHSUFFIXTRIE, NOSTEM, NOINDEX, PHONETIC, WEIGHT, CASESENSITIVE, LOAD, APPLY, GROUPBY, MAXIDLE, WITHCURSOR, DISTANCE, TERMS, INCLUDE, EXCLUDE, - SEARCH, AGGREGATE, QUERY, LIMITED, COUNT, REDUCE, INDEXMISSING, INDEXEMPTY, ADDSCORES; + SEARCH, AGGREGATE, QUERY, LIMITED, COUNT, REDUCE, INDEXMISSING, INDEXEMPTY, ADDSCORES, + @Deprecated SET, @Deprecated GET; private final byte[] raw; diff --git a/src/test/java/redis/clients/jedis/commands/jedis/JedisCommandsTestBase.java b/src/test/java/redis/clients/jedis/commands/jedis/JedisCommandsTestBase.java index d3951f0638..6613d6646e 100644 --- a/src/test/java/redis/clients/jedis/commands/jedis/JedisCommandsTestBase.java +++ b/src/test/java/redis/clients/jedis/commands/jedis/JedisCommandsTestBase.java @@ -15,11 +15,9 @@ public abstract class JedisCommandsTestBase { @Rule - public RedisVersionRule versionRule = new RedisVersionRule( - HostAndPorts.getRedisEndpoint("standalone0")); + public RedisVersionRule versionRule = new RedisVersionRule(endpoint); @Rule - public EnabledOnCommandRule enabledOnCommandRule = new EnabledOnCommandRule( - HostAndPorts.getRedisEndpoint("standalone0")); + public EnabledOnCommandRule enabledOnCommandRule = new EnabledOnCommandRule(endpoint); /** * Input data for parameterized tests. In principle all subclasses of this diff --git a/src/test/java/redis/clients/jedis/modules/ConsolidatedConfigurationCommandsTest.java b/src/test/java/redis/clients/jedis/modules/ConsolidatedConfigurationCommandsTest.java new file mode 100644 index 0000000000..741e719f26 --- /dev/null +++ b/src/test/java/redis/clients/jedis/modules/ConsolidatedConfigurationCommandsTest.java @@ -0,0 +1,71 @@ +package redis.clients.jedis.modules; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.aMapWithSize; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThrows; + +import io.redis.test.annotations.SinceRedisVersion; +import java.util.Collections; +import org.hamcrest.Matchers; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import redis.clients.jedis.RedisProtocol; +import redis.clients.jedis.exceptions.JedisDataException; + +@SinceRedisVersion(value = "7.9.0") +@RunWith(Parameterized.class) +public class ConsolidatedConfigurationCommandsTest extends RedisModuleCommandsTestBase { + + public ConsolidatedConfigurationCommandsTest(RedisProtocol redisProtocol) { + super(redisProtocol); + } + + @Test + public void setSearchConfigGloballyTest() { + final String configParam = "search-default-dialect"; + // confirm default + assertEquals(Collections.singletonMap(configParam, "1"), jedis.configGet(configParam)); + + try { + assertEquals("OK", jedis.configSet(configParam, "2")); + assertEquals(Collections.singletonMap(configParam, "2"), jedis.configGet(configParam)); + + } finally { + // restore to default + assertEquals("OK", jedis.configSet(configParam, "1")); + } + } + + @Test + public void setReadOnlySearchConfigTest() { + JedisDataException de = assertThrows(JedisDataException.class, () -> jedis.configSet("search-max-doctablesize", "10")); + assertThat(de.getMessage(), Matchers.not(Matchers.emptyOrNullString())); + } + + @Test + public void getSearchConfigSettingTest() { + assertThat(jedis.configGet("search-timeout"), aMapWithSize(1)); + } + + @Test + public void getTSConfigSettingTest() { + assertThat(jedis.configGet("ts-retention-policy"), aMapWithSize(1)); + } + + @Test + public void getBFConfigSettingTest() { + assertThat(jedis.configGet("bf-error-rate"), aMapWithSize(1)); + } + + @Test + public void getCFConfigSettingTest() { + assertThat(jedis.configGet("cf-initial-size"), aMapWithSize(1)); + } + + @Test + public void getAllConfigSettings() { + assertThat(jedis.configGet("*").size(), Matchers.greaterThan(0)); + } +} diff --git a/src/test/java/redis/clients/jedis/modules/RedisModuleCommandsTestBase.java b/src/test/java/redis/clients/jedis/modules/RedisModuleCommandsTestBase.java index 7e0e085c17..cfe2f7910b 100644 --- a/src/test/java/redis/clients/jedis/modules/RedisModuleCommandsTestBase.java +++ b/src/test/java/redis/clients/jedis/modules/RedisModuleCommandsTestBase.java @@ -22,7 +22,7 @@ public abstract class RedisModuleCommandsTestBase { @Rule - public RedisVersionRule versionRule = new RedisVersionRule(hnp,DefaultJedisClientConfig.builder().build() ); + public RedisVersionRule versionRule = new RedisVersionRule(hnp, DefaultJedisClientConfig.builder().build()); /** * Input data for parameterized tests. In principle all subclasses of this @@ -39,6 +39,7 @@ public static Collection data() { protected static final HostAndPort hnp = HostAndPort.from(address); protected final RedisProtocol protocol; + protected Jedis jedis; protected UnifiedJedis client; /** @@ -65,15 +66,15 @@ public static void prepare() { @Before public void setUp() { - try (Jedis jedis = new Jedis(hnp)) { - jedis.flushAll(); - } + jedis = new Jedis(hnp, DefaultJedisClientConfig.builder().protocol(protocol).build()); + jedis.flushAll(); client = new UnifiedJedis(hnp, DefaultJedisClientConfig.builder().protocol(protocol).build()); } @After public void tearDown() throws Exception { client.close(); + jedis.close(); } }