From de881d5142a7f918f52877892013b52e964dbbdf Mon Sep 17 00:00:00 2001 From: Roman Osadchuk Date: Fri, 10 May 2024 18:00:39 +0300 Subject: [PATCH 1/4] fixed lettuce incrby subcommand build logic when multipliedByTypeLength offset is used --- .../connection/lettuce/LettuceConverters.java | 2 +- .../AbstractConnectionIntegrationTests.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConverters.java b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConverters.java index d4aa2d9cc8..1b013a1dcd 100644 --- a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConverters.java +++ b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConverters.java @@ -720,7 +720,7 @@ public static BitFieldArgs toBitFieldArgs(BitFieldSubCommands subCommands) { args = args.overflow(type); } - args = args.incrBy(bitFieldType, (int) subCommand.getOffset().getValue(), ((BitFieldIncrBy) subCommand).getValue()); + args = args.incrBy(bitFieldType, offset, ((BitFieldIncrBy) subCommand).getValue()); } } diff --git a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java index 1d96b83a2f..77a08ae149 100644 --- a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java @@ -45,6 +45,8 @@ import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledOnOs; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.data.domain.Range; @@ -3577,6 +3579,23 @@ void bitFieldIncrByWithOverflowShouldWorkCorrectly() { assertThat(results.get(3)).isNotNull(); } + @ParameterizedTest + @ValueSource(booleans = {false, true}) + void bitFieldIncrByAndThenGetShouldWorkCorrectly(boolean isMultipliedByTypeLengthOffset) { + var offset = isMultipliedByTypeLengthOffset + ? BitFieldSubCommands.Offset.offset(300L).multipliedByTypeLength() + : BitFieldSubCommands.Offset.offset(400L); + + actual.add(connection.bitfield(KEY_1, create().incr(INT_8).valueAt(offset).by(1L))); + actual.add(connection.bitfield(KEY_1, create().get(INT_8).valueAt(offset))); + + List results = getResults(); + + assertThat(results).hasSize(2) + // should return same results after INCRBY and GET operations for bitfield with same offset + .containsExactly(List.of(1L), List.of(1L)); + } + @Test // DATAREDIS-562 void bitfieldShouldAllowMultipleSubcommands() { From 79fe8e29631164bf0e12db3eac50fb9b1c3a0510 Mon Sep 17 00:00:00 2001 From: Roman Osadchuk Date: Fri, 10 May 2024 18:03:39 +0300 Subject: [PATCH 2/4] added myself as an author --- .../redis/connection/AbstractConnectionIntegrationTests.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java index 77a08ae149..2c64ab7d2c 100644 --- a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java @@ -112,6 +112,7 @@ * @author Andrey Shlykov * @author Hendrik Duerkop * @author Shyngys Sapraliyev + * @author Roman Osadchuk */ public abstract class AbstractConnectionIntegrationTests { From fd02af0711ca4c761ddaee6e720bcb23de4ea9c4 Mon Sep 17 00:00:00 2001 From: Roman Osadchuk Date: Fri, 10 May 2024 18:13:45 +0300 Subject: [PATCH 3/4] added issue ticket to test javadoc --- .../redis/connection/AbstractConnectionIntegrationTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java index 2c64ab7d2c..d6de0e360b 100644 --- a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java @@ -3580,7 +3580,7 @@ void bitFieldIncrByWithOverflowShouldWorkCorrectly() { assertThat(results.get(3)).isNotNull(); } - @ParameterizedTest + @ParameterizedTest // DATAREDIS-2903 @ValueSource(booleans = {false, true}) void bitFieldIncrByAndThenGetShouldWorkCorrectly(boolean isMultipliedByTypeLengthOffset) { var offset = isMultipliedByTypeLengthOffset From 0f5f30c809ce16f1f6d3123cfc44c5c5f4d9a4bf Mon Sep 17 00:00:00 2001 From: Roman Osadchuk Date: Mon, 13 May 2024 09:44:57 +0300 Subject: [PATCH 4/4] added authority --- .../data/redis/connection/lettuce/LettuceConverters.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConverters.java b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConverters.java index 1b013a1dcd..354217c548 100644 --- a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConverters.java +++ b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConverters.java @@ -79,6 +79,7 @@ * @author Chris Bono * @author Vikas Garg * @author John Blum + * @author Roman Osadchuk */ @SuppressWarnings("ConstantConditions") public abstract class LettuceConverters extends Converters {