3131import java .util .concurrent .TimeUnit ;
3232import java .util .concurrent .TimeoutException ;
3333import java .util .stream .Stream ;
34+ import org .junit .jupiter .api .AfterAll ;
35+ import org .junit .jupiter .api .BeforeAll ;
3436import org .junit .jupiter .api .Test ;
3537import org .junit .jupiter .api .extension .RegisterExtension ;
3638import org .junit .jupiter .params .ParameterizedTest ;
@@ -47,28 +49,51 @@ public abstract class AbstractCouchbaseAsyncClientTest extends AbstractCouchbase
4749
4850 @ RegisterExtension static final AutoCleanupExtension cleanup = AutoCleanupExtension .create ();
4951
52+ private CouchbaseEnvironment environmentCouchbase ;
53+ private CouchbaseEnvironment environmentMemcache ;
54+ private CouchbaseAsyncCluster clusterCouchbase ;
55+ private CouchbaseAsyncCluster clusterMemcache ;
56+
5057 private static Stream <Arguments > bucketSettings () {
5158 return Stream .of (
5259 Arguments .of (named (bucketCouchbase .type ().name (), bucketCouchbase )),
5360 Arguments .of (named (bucketMemcache .type ().name (), bucketMemcache )));
5461 }
5562
56- private CouchbaseAsyncCluster prepareCluster (BucketSettings bucketSettings ) {
57- CouchbaseEnvironment environment = envBuilder (bucketSettings ).build ();
58- CouchbaseAsyncCluster cluster =
59- CouchbaseAsyncCluster .create (environment , Collections .singletonList ("127.0.0.1" ));
60- cleanup .deferCleanup (
61- () -> cluster .disconnect ().timeout (10 , TimeUnit .SECONDS ).toBlocking ().single ());
62- cleanup .deferCleanup (environment ::shutdown );
63+ @ BeforeAll
64+ void setUpClusters () {
65+ environmentCouchbase = envBuilder (bucketCouchbase ).build ();
66+ clusterCouchbase =
67+ CouchbaseAsyncCluster .create (environmentCouchbase , Collections .singletonList ("127.0.0.1" ));
68+
69+ environmentMemcache = envBuilder (bucketMemcache ).build ();
70+ clusterMemcache =
71+ CouchbaseAsyncCluster .create (environmentMemcache , Collections .singletonList ("127.0.0.1" ));
72+ }
73+
74+ @ AfterAll
75+ void cleanUpClusters () {
76+ clusterCouchbase .disconnect ().timeout (10 , TimeUnit .SECONDS ).toBlocking ().single ();
77+ environmentCouchbase .shutdown ();
78+
79+ clusterMemcache .disconnect ().timeout (10 , TimeUnit .SECONDS ).toBlocking ().single ();
80+ environmentMemcache .shutdown ();
81+ }
6382
64- return cluster ;
83+ private CouchbaseAsyncCluster getCluster (BucketSettings bucketSettings ) {
84+ if (bucketSettings == bucketCouchbase ) {
85+ return clusterCouchbase ;
86+ } else if (bucketSettings == bucketMemcache ) {
87+ return clusterMemcache ;
88+ }
89+ throw new IllegalArgumentException ("unknown setting " + bucketSettings .name ());
6590 }
6691
6792 @ ParameterizedTest
6893 @ MethodSource ("bucketSettings" )
6994 void hasBucket (BucketSettings bucketSettings )
7095 throws ExecutionException , InterruptedException , TimeoutException {
71- CouchbaseAsyncCluster cluster = prepareCluster (bucketSettings );
96+ CouchbaseAsyncCluster cluster = getCluster (bucketSettings );
7297 AsyncClusterManager manager = cluster .clusterManager (USERNAME , PASSWORD ).toBlocking ().single ();
7398
7499 testing .waitForTraces (1 );
@@ -103,7 +128,7 @@ void hasBucket(BucketSettings bucketSettings)
103128 @ MethodSource ("bucketSettings" )
104129 void upsert (BucketSettings bucketSettings )
105130 throws ExecutionException , InterruptedException , TimeoutException {
106- CouchbaseAsyncCluster cluster = prepareCluster (bucketSettings );
131+ CouchbaseAsyncCluster cluster = getCluster (bucketSettings );
107132
108133 JsonObject content = JsonObject .create ().put ("hello" , "world" );
109134 CompletableFuture <JsonDocument > inserted = new CompletableFuture <>();
@@ -144,7 +169,7 @@ void upsert(BucketSettings bucketSettings)
144169 @ MethodSource ("bucketSettings" )
145170 void upsertAndGet (BucketSettings bucketSettings )
146171 throws ExecutionException , InterruptedException , TimeoutException {
147- CouchbaseAsyncCluster cluster = prepareCluster (bucketSettings );
172+ CouchbaseAsyncCluster cluster = getCluster (bucketSettings );
148173
149174 JsonObject content = JsonObject .create ().put ("hello" , "world" );
150175 CompletableFuture <JsonDocument > inserted = new CompletableFuture <>();
@@ -194,7 +219,7 @@ void upsertAndGet(BucketSettings bucketSettings)
194219 @ Test
195220 void query () throws ExecutionException , InterruptedException , TimeoutException {
196221 // Only couchbase buckets support queries.
197- CouchbaseAsyncCluster cluster = prepareCluster (bucketCouchbase );
222+ CouchbaseAsyncCluster cluster = getCluster (bucketCouchbase );
198223
199224 CompletableFuture <JsonObject > queryResult = new CompletableFuture <>();
200225 // Mock expects this specific query.
0 commit comments