33import io .kurrent .dbclient .*;
44import com .fasterxml .jackson .databind .json .JsonMapper ;
55import org .junit .jupiter .api .*;
6+ import org .junit .jupiter .api .extension .ExtensionContext ;
7+ import org .junit .jupiter .params .ParameterizedTest ;
8+ import org .junit .jupiter .params .provider .*;
69
710import java .util .List ;
811import java .util .Optional ;
912import java .util .concurrent .CompletableFuture ;
1013import java .util .concurrent .TimeUnit ;
14+ import java .util .stream .Stream ;
1115
1216@ TestMethodOrder (MethodOrderer .OrderAnnotation .class )
1317@ SuppressWarnings ("unchecked" )
@@ -29,7 +33,7 @@ default void testListPersistentSubscriptions() throws Throwable {
2933 List <PersistentSubscriptionInfo > subs = client .listAll ().get ();
3034
3135 int count = 0 ;
32- for (PersistentSubscriptionInfo info : subs ) {
36+ for (PersistentSubscriptionInfo info : subs ) {
3337 if (info .getEventSource ().equals (streamA ) || info .getEventSource ().equals (streamB )) {
3438 count ++;
3539 }
@@ -122,7 +126,7 @@ default void testGetPersistentSubscriptionInfoToAll() throws Throwable {
122126
123127 @ Test
124128 @ Order (6 )
125- default void testGetPersistentSubscriptionInfoNotExisting () throws Throwable {
129+ default void testGetPersistentSubscriptionInfoNotExisting () throws Throwable {
126130 KurrentDBPersistentSubscriptionsClient client = getDefaultPersistentSubscriptionClient ();
127131 Optional <PersistentSubscriptionToStreamInfo > result = client .getInfoToStream (generateName (), generateName ()).get ();
128132
@@ -147,6 +151,7 @@ default void testReplayParkedMessages() throws Throwable {
147151
148152 client .subscribeToStream (streamName , groupName , new PersistentSubscriptionListener () {
149153 int count = 0 ;
154+
150155 @ Override
151156 public void onEvent (PersistentSubscription subscription , int retryCount , ResolvedEvent event ) {
152157 if (count < 2 )
@@ -206,6 +211,7 @@ default void testReplayParkedMessagesToAll() throws Throwable {
206211
207212 client .subscribeToAll (groupName , new PersistentSubscriptionListener () {
208213 int count = 0 ;
214+
209215 @ Override
210216 public void onEvent (PersistentSubscription subscription , int retryCount , ResolvedEvent event ) {
211217 if (count < 2 && event .getOriginalEvent ().getStreamId ().equals (streamName ))
@@ -268,9 +274,9 @@ default void testEncoding() throws Throwable {
268274 break ;
269275 }
270276
271- Assertions .assertTrue (info .isPresent ());
272- Assertions .assertEquals (info .get ().getEventSource (), streamName );
273- Assertions .assertEquals (info .get ().getGroupName (), groupName );
277+ Assertions .assertTrue (info .isPresent ());
278+ Assertions .assertEquals (info .get ().getEventSource (), streamName );
279+ Assertions .assertEquals (info .get ().getGroupName (), groupName );
274280 }
275281
276282 @ Test
@@ -279,4 +285,53 @@ default void testRestartSubsystem() throws Throwable {
279285 KurrentDBPersistentSubscriptionsClient client = getDefaultPersistentSubscriptionClient ();
280286 client .restartSubsystem ().get ();
281287 }
288+
289+ @ ParameterizedTest
290+ @ ArgumentsSource (NamedConsumerStrategyProvider .class )
291+ default void testCreatePersistentSubscriptionToAllWithConsumerStrategies (NamedConsumerStrategy strategy ) throws Throwable {
292+ KurrentDBPersistentSubscriptionsClient client = getDefaultPersistentSubscriptionClient ();
293+ String groupName = String .format ("/foo/%s/group" , generateName ());
294+
295+ CreatePersistentSubscriptionToAllOptions options = CreatePersistentSubscriptionToAllOptions .get ()
296+ .namedConsumerStrategy (strategy );
297+
298+ client .createToAll (groupName , options ).get ();
299+
300+ Optional <PersistentSubscriptionToAllInfo > result = client .getInfoToAll (groupName ).get ();
301+ Assertions .assertTrue (result .isPresent (), "Subscription should be created" );
302+
303+ Assertions .assertEquals (groupName , result .get ().getGroupName ());
304+ Assertions .assertEquals (strategy .toString (), result .get ().getSettings ().getNamedConsumerStrategy ().toString ());
305+ }
306+
307+ @ ParameterizedTest
308+ @ ArgumentsSource (NamedConsumerStrategyProvider .class )
309+ default void testCreatePersistentSubscriptionToStreamWithConsumerStrategies (NamedConsumerStrategy strategy ) throws Throwable {
310+ KurrentDBPersistentSubscriptionsClient client = getDefaultPersistentSubscriptionClient ();
311+ String streamName = String .format ("/foo/%s/stream" , generateName ());
312+ String groupName = String .format ("/foo/%s/group" , generateName ());
313+
314+ CreatePersistentSubscriptionToStreamOptions options = CreatePersistentSubscriptionToStreamOptions .get ()
315+ .namedConsumerStrategy (strategy );
316+
317+ client .createToStream (streamName , groupName , options ).get ();
318+
319+ Optional <PersistentSubscriptionToStreamInfo > result = client .getInfoToStream (streamName , groupName ).get ();
320+ Assertions .assertTrue (result .isPresent (), "Subscription should be created" );
321+
322+ Assertions .assertEquals (groupName , result .get ().getGroupName ());
323+ Assertions .assertEquals (strategy .toString (), result .get ().getSettings ().getNamedConsumerStrategy ().toString ());
324+ }
282325}
326+
327+ class NamedConsumerStrategyProvider implements ArgumentsProvider {
328+ @ Override
329+ public Stream <? extends Arguments > provideArguments (ExtensionContext context ) {
330+ return Stream .of (
331+ Arguments .of (NamedConsumerStrategy .DISPATCH_TO_SINGLE ),
332+ Arguments .of (NamedConsumerStrategy .ROUND_ROBIN ),
333+ Arguments .of (NamedConsumerStrategy .PINNED ),
334+ Arguments .of (NamedConsumerStrategy .PINNED_BY_CORRELATION )
335+ );
336+ }
337+ }
0 commit comments