@@ -83,6 +83,7 @@ public class LettuceClusterConnectionTests implements ClusterConnectionTests {
83
83
private static final byte [] KEY_1_BYTES = LettuceConverters .toBytes (KEY_1 );
84
84
private static final byte [] KEY_2_BYTES = LettuceConverters .toBytes (KEY_2 );
85
85
private static final byte [] KEY_3_BYTES = LettuceConverters .toBytes (KEY_3 );
86
+ private static final byte [] KEY_4_BYTES = LettuceConverters .toBytes (KEY_4 );
86
87
87
88
private static final byte [] SAME_SLOT_KEY_1_BYTES = LettuceConverters .toBytes (SAME_SLOT_KEY_1 );
88
89
private static final byte [] SAME_SLOT_KEY_2_BYTES = LettuceConverters .toBytes (SAME_SLOT_KEY_2 );
@@ -91,6 +92,7 @@ public class LettuceClusterConnectionTests implements ClusterConnectionTests {
91
92
private static final byte [] VALUE_1_BYTES = LettuceConverters .toBytes (VALUE_1 );
92
93
private static final byte [] VALUE_2_BYTES = LettuceConverters .toBytes (VALUE_2 );
93
94
private static final byte [] VALUE_3_BYTES = LettuceConverters .toBytes (VALUE_3 );
95
+ private static final byte [] VALUE_4_BYTES = LettuceConverters .toBytes (VALUE_4 );
94
96
95
97
private static final GeoLocation <String > ARIGENTO = new GeoLocation <>("arigento" , POINT_ARIGENTO );
96
98
private static final GeoLocation <String > CATANIA = new GeoLocation <>("catania" , POINT_CATANIA );
@@ -179,7 +181,32 @@ void shouldCreateClusterConnectionWithPooling() {
179
181
} finally {
180
182
factory .destroy ();
181
183
}
184
+ }
185
+
186
+ @ Test // GH-2888
187
+ void shouldPipelineAdvancedClusterApi () {
188
+
189
+ LettuceConnectionFactory factory = createConnectionFactory ();
190
+
191
+ ConnectionVerifier .create (factory ) //
192
+ .execute (connection -> {
193
+
194
+ connection .set (KEY_1_BYTES , VALUE_1_BYTES );
195
+ connection .set (KEY_2_BYTES , VALUE_2_BYTES );
196
+ connection .set (KEY_4_BYTES , VALUE_4_BYTES );
197
+
198
+ connection .openPipeline ();
199
+ connection .keyCommands ().randomKey ();
200
+ connection .stringCommands ().mGet (KEY_1_BYTES , KEY_2_BYTES );
182
201
202
+ List <Object > objects = connection .closePipeline ();
203
+
204
+ assertThat (objects ).hasSize (1 );
205
+ assertThat (objects ).element (0 ).isInstanceOf (List .class );
206
+
207
+ List <Object > mget = (List <Object >) objects .get (0 );
208
+ assertThat (mget ).containsExactly (VALUE_1_BYTES , VALUE_2_BYTES );
209
+ }).verifyAndClose ();
183
210
}
184
211
185
212
@ Test // DATAREDIS-315
@@ -2821,13 +2848,13 @@ void bitFieldIncrByWithOverflowShouldWorkCorrectly() {
2821
2848
2822
2849
assertThat (clusterConnection .stringCommands ().bitField (LettuceConverters .toBytes (KEY_1 ),
2823
2850
create ().incr (unsigned (2 )).valueAt (BitFieldSubCommands .Offset .offset (102L )).overflow (FAIL ).by (1L )))
2824
- .containsExactly (1L );
2851
+ .containsExactly (1L );
2825
2852
assertThat (clusterConnection .stringCommands ().bitField (LettuceConverters .toBytes (KEY_1 ),
2826
2853
create ().incr (unsigned (2 )).valueAt (BitFieldSubCommands .Offset .offset (102L )).overflow (FAIL ).by (1L )))
2827
- .containsExactly (2L );
2854
+ .containsExactly (2L );
2828
2855
assertThat (clusterConnection .stringCommands ().bitField (LettuceConverters .toBytes (KEY_1 ),
2829
2856
create ().incr (unsigned (2 )).valueAt (BitFieldSubCommands .Offset .offset (102L )).overflow (FAIL ).by (1L )))
2830
- .containsExactly (3L );
2857
+ .containsExactly (3L );
2831
2858
assertThat (clusterConnection .stringCommands ().bitField (LettuceConverters .toBytes (KEY_1 ),
2832
2859
create ().incr (unsigned (2 )).valueAt (BitFieldSubCommands .Offset .offset (102L )).overflow (FAIL ).by (1L ))).isNotNull ();
2833
2860
}
@@ -2837,7 +2864,7 @@ void bitfieldShouldAllowMultipleSubcommands() {
2837
2864
2838
2865
assertThat (clusterConnection .stringCommands ().bitField (LettuceConverters .toBytes (KEY_1 ),
2839
2866
create ().incr (signed (5 )).valueAt (BitFieldSubCommands .Offset .offset (100L )).by (1L ).get (unsigned (4 )).valueAt (0L )))
2840
- .containsExactly (1L , 0L );
2867
+ .containsExactly (1L , 0L );
2841
2868
}
2842
2869
2843
2870
@ Test // DATAREDIS-562
@@ -2847,13 +2874,13 @@ void bitfieldShouldWorkUsingNonZeroBasedOffset() {
2847
2874
clusterConnection .stringCommands ().bitField (LettuceConverters .toBytes (KEY_1 ),
2848
2875
create ().set (INT_8 ).valueAt (BitFieldSubCommands .Offset .offset (0L ).multipliedByTypeLength ()).to (100L )
2849
2876
.set (INT_8 ).valueAt (BitFieldSubCommands .Offset .offset (1L ).multipliedByTypeLength ()).to (200L )))
2850
- .containsExactly (0L , 0L );
2877
+ .containsExactly (0L , 0L );
2851
2878
assertThat (
2852
2879
clusterConnection .stringCommands ()
2853
2880
.bitField (LettuceConverters .toBytes (KEY_1 ),
2854
2881
create ().get (INT_8 ).valueAt (BitFieldSubCommands .Offset .offset (0L ).multipliedByTypeLength ()).get (INT_8 )
2855
- .valueAt (BitFieldSubCommands .Offset .offset (1L ).multipliedByTypeLength ()))). containsExactly ( 100L ,
2856
- -56L );
2882
+ .valueAt (BitFieldSubCommands .Offset .offset (1L ).multipliedByTypeLength ())))
2883
+ . containsExactly ( 100L , -56L );
2857
2884
}
2858
2885
2859
2886
@ Test // DATAREDIS-1103
@@ -2864,7 +2891,7 @@ void setKeepTTL() {
2864
2891
2865
2892
assertThat (
2866
2893
clusterConnection .stringCommands ().set (KEY_1_BYTES , VALUE_2_BYTES , Expiration .keepTtl (), SetOption .upsert ()))
2867
- .isTrue ();
2894
+ .isTrue ();
2868
2895
2869
2896
assertThat (nativeConnection .ttl (KEY_1 )).isCloseTo (expireSeconds , Offset .offset (5L ));
2870
2897
assertThat (nativeConnection .get (KEY_1 )).isEqualTo (VALUE_2 );
0 commit comments