Skip to content

Commit d32b986

Browse files
committed
TEST: Only run management API tests on single-node clusters
Motivation ---------- Management API tests are sensitive to eventual consistency issues in multi-node clusters. Modifications ------------- Add a `ManagementApi` annotation that says the test requires exactly one node, and has JUnit tag (group) "ManagementApi". Apply the annotation to all management API integration tests. Modify the GHA integration test workflow: * Make the cluster size a matrix parameter ("nodes"). * Add a matrix entry that uses a single-node cluster and runs only the `ManagementApi` tests. Rejected Alternatives --------------------- We _could_ bend over backwards to ensure each management operation propagates to all nodes before making the next request. However, that approach is counterproductive because it still masks the underlying issue with the Management API, and has the additional disadvantage that it's harder to disable all those workarounds than it is to simply run the tests against a multi-node cluster. Change-Id: I4130252a1ed8ca7630345523415182d1e28e4c1d Reviewed-on: https://review.couchbase.org/c/couchbase-jvm-clients/+/230066 Reviewed-by: Graham Pople <[email protected]> Tested-by: Build Bot <[email protected]>
1 parent 5710535 commit d32b986

28 files changed

+110
-11
lines changed

.github/workflows/integration-test.yml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,33 @@ jobs:
2121
matrix:
2222
include:
2323
- server: '7.6.5'
24+
nodes: 3
2425
java-distribution: 'temurin'
2526
java-version: '21'
2627

2728
- server: 'community-7.6.2'
29+
nodes: 3
2830
java-distribution: 'temurin'
2931
java-version: '17'
3032

33+
- server: '7.6.5'
34+
nodes: 1 # Management API tests require single node
35+
mvn-test-args: -Dgroups=ManagementApi
36+
java-distribution: 'temurin'
37+
java-version: '21'
38+
3139
# - server: '7.2.7'
40+
# nodes: 3
3241
# java-distribution: 'temurin'
3342
# java-version: '8'
3443
#
3544
# - server: 'community-7.2.2'
45+
# nodes: 3
3646
# java-distribution: 'corretto'
3747
# java-version: '8'
3848
#
3949
# - server: '6.6.6'
50+
# nodes: 3
4051
# java-distribution: 'oracle'
4152
# java-version: '17'
4253

@@ -76,7 +87,7 @@ jobs:
7687
github-token: ${{ secrets.GITHUB_TOKEN }}
7788
def: |
7889
nodes:
79-
- count: 3
90+
- count: ${{ matrix.nodes }}
8091
version: ${{ matrix.server }}
8192
services: ${{ env.COUCHBASE_SERVICES }}
8293
docker:
@@ -104,7 +115,7 @@ jobs:
104115
timeout-minutes: 40
105116
run: |
106117
TEST_JAVA_HOME=$JAVA_HOME_${{ matrix.java-version }}_X64
107-
./mvnw --batch-mode -Dmaven.test.failure.ignore=true -Dmaven.javadoc.skip=true verify -Djvm=${TEST_JAVA_HOME}/bin/java
118+
./mvnw --batch-mode -Dmaven.test.failure.ignore=true -Dmaven.javadoc.skip=true verify -Djvm=${TEST_JAVA_HOME}/bin/java ${{ matrix.mvn-test-args }}
108119
109120
- name: Remove artifacts from Maven repo so they're not cached
110121
run: rm -rfv ~/.m2/repository/com/couchbase/client/

java-client/src/integrationTest/java/com/couchbase/client/java/manager/analytics/AnalyticsIndexManagerIntegrationTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import com.couchbase.client.java.util.JavaIntegrationTest;
3838
import com.couchbase.client.test.Flaky;
3939
import com.couchbase.client.test.IgnoreWhen;
40+
import com.couchbase.client.test.ManagementApiTest;
4041
import org.junit.jupiter.api.AfterAll;
4142
import org.junit.jupiter.api.AfterEach;
4243
import org.junit.jupiter.api.Assumptions;
@@ -85,6 +86,7 @@
8586
missesCapabilities = ANALYTICS,
8687
isProtostellar = true
8788
)
89+
@ManagementApiTest
8890
class AnalyticsIndexManagerIntegrationTest extends JavaIntegrationTest {
8991

9092
private static final String dataset = "myDataset";

java-client/src/integrationTest/java/com/couchbase/client/java/manager/bucket/BucketManagerIntegrationTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package com.couchbase.client.java.manager.bucket;
1818

19-
import com.couchbase.client.core.env.IoConfig;
2019
import com.couchbase.client.core.error.BucketExistsException;
2120
import com.couchbase.client.core.error.BucketNotFlushableException;
2221
import com.couchbase.client.core.error.BucketNotFoundException;
@@ -32,6 +31,7 @@
3231
import com.couchbase.client.test.Capabilities;
3332
import com.couchbase.client.test.ClusterType;
3433
import com.couchbase.client.test.IgnoreWhen;
34+
import com.couchbase.client.test.ManagementApiTest;
3535
import com.couchbase.client.test.Util;
3636
import org.junit.jupiter.api.AfterAll;
3737
import org.junit.jupiter.api.AfterEach;
@@ -61,6 +61,7 @@
6161
* Verifies the functionality of the bucket manager.
6262
*/
6363
@IgnoreWhen(clusterTypes = { ClusterType.MOCKED, ClusterType.CAPELLA })
64+
@ManagementApiTest
6465
@Execution(ExecutionMode.CONCURRENT)
6566
class BucketManagerIntegrationTest extends JavaIntegrationTest {
6667

java-client/src/integrationTest/java/com/couchbase/client/java/manager/collection/CollectionManagerIntegrationTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.couchbase.client.java.util.JavaIntegrationTest;
2828
import com.couchbase.client.test.Capabilities;
2929
import com.couchbase.client.test.IgnoreWhen;
30+
import com.couchbase.client.test.ManagementApiTest;
3031
import org.junit.jupiter.api.AfterAll;
3132
import org.junit.jupiter.api.BeforeAll;
3233
import org.junit.jupiter.api.Test;
@@ -44,6 +45,7 @@
4445
import static org.junit.jupiter.api.Assertions.assertThrows;
4546

4647
@IgnoreWhen(missesCapabilities = Capabilities.COLLECTIONS)
48+
@ManagementApiTest
4749
class CollectionManagerIntegrationTest extends JavaIntegrationTest {
4850

4951
private static Cluster cluster;

java-client/src/integrationTest/java/com/couchbase/client/java/manager/eventing/EventingFunctionManagerIntegrationTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.couchbase.client.test.Capabilities;
3333
import com.couchbase.client.test.ClusterType;
3434
import com.couchbase.client.test.IgnoreWhen;
35+
import com.couchbase.client.test.ManagementApiTest;
3536
import org.junit.jupiter.api.AfterAll;
3637
import org.junit.jupiter.api.BeforeAll;
3738
import org.junit.jupiter.api.Test;
@@ -51,6 +52,7 @@
5152
missesCapabilities = {Capabilities.COLLECTIONS, Capabilities.EVENTING},
5253
clusterVersionIsBelow = "7.1.2",
5354
isProtostellar = true) // MB-52649
55+
@ManagementApiTest
5456
public class EventingFunctionManagerIntegrationTest extends JavaIntegrationTest {
5557
private static Logger LOGGER = LoggerFactory.getLogger(EventingFunctionManagerIntegrationTest.class);
5658

java-client/src/integrationTest/java/com/couchbase/client/java/manager/query/QueryCollectionsIndexManagerIntegrationTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.couchbase.client.java.Cluster;
2626
import com.couchbase.client.java.util.JavaIntegrationTest;
2727
import com.couchbase.client.test.IgnoreWhen;
28+
import com.couchbase.client.test.ManagementApiTest;
2829
import com.couchbase.client.test.Util;
2930
import org.junit.jupiter.api.AfterAll;
3031
import org.junit.jupiter.api.BeforeAll;
@@ -69,6 +70,7 @@
6970
missesCapabilities = { QUERY, COLLECTIONS, CLUSTER_LEVEL_QUERY },
7071
clusterVersionIsBelow = REQUIRE_MB_50132
7172
)
73+
@ManagementApiTest
7274
public class QueryCollectionsIndexManagerIntegrationTest extends JavaIntegrationTest {
7375

7476
// time to allow for watch operations that are expected to succeed eventually

java-client/src/integrationTest/java/com/couchbase/client/java/manager/query/QueryIndexManagerIntegrationTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.couchbase.client.java.Cluster;
2525
import com.couchbase.client.java.util.JavaIntegrationTest;
2626
import com.couchbase.client.test.IgnoreWhen;
27+
import com.couchbase.client.test.ManagementApiTest;
2728
import com.couchbase.client.test.Util;
2829
import org.junit.jupiter.api.AfterAll;
2930
import org.junit.jupiter.api.BeforeAll;
@@ -65,6 +66,7 @@
6566
clusterVersionIsBelow = REQUIRE_MB_50132,
6667
isProtostellar = true
6768
)
69+
@ManagementApiTest
6870
public class QueryIndexManagerIntegrationTest extends JavaIntegrationTest {
6971
// Disabling against 5.5 as there appear to be several query bugs (SCBC-246, SCBC-251). Hardcoding 5.5.6 as that's
7072
// the current 5.5-release and it's unlikely to change.

java-client/src/integrationTest/java/com/couchbase/client/java/manager/raw/RawManagerIntegrationTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.couchbase.client.java.Cluster;
2525
import com.couchbase.client.java.util.JavaIntegrationTest;
2626
import com.couchbase.client.test.IgnoreWhen;
27+
import com.couchbase.client.test.ManagementApiTest;
2728
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
2829
import org.junit.jupiter.api.AfterAll;
2930
import org.junit.jupiter.api.BeforeAll;
@@ -40,6 +41,7 @@
4041

4142
@IgnoreWhen(clusterTypes = MOCKED,
4243
isProtostellar = true)
44+
@ManagementApiTest
4345
class RawManagerIntegrationTest extends JavaIntegrationTest {
4446

4547
private static Cluster cluster;

java-client/src/integrationTest/java/com/couchbase/client/java/manager/search/SearchIndexManagerIntegrationTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.couchbase.client.java.util.JavaIntegrationTest;
2626
import com.couchbase.client.test.Capabilities;
2727
import com.couchbase.client.test.IgnoreWhen;
28+
import com.couchbase.client.test.ManagementApiTest;
2829
import org.junit.jupiter.api.AfterAll;
2930
import org.junit.jupiter.api.BeforeAll;
3031
import org.junit.jupiter.api.Test;
@@ -45,6 +46,7 @@
4546
clusterVersionIsBelow = ConsistencyUtil.CLUSTER_VERSION_MB_50101,
4647
isProtostellar = true
4748
)
49+
@ManagementApiTest
4850
class SearchIndexManagerIntegrationTest extends JavaIntegrationTest {
4951

5052
private static final Logger LOGGER = LoggerFactory.getLogger(SearchIndexManagerIntegrationTest.class);

java-client/src/integrationTest/java/com/couchbase/client/java/manager/user/GroupManagerIntegrationTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.couchbase.client.test.Capabilities;
2424
import com.couchbase.client.test.ClusterType;
2525
import com.couchbase.client.test.IgnoreWhen;
26+
import com.couchbase.client.test.ManagementApiTest;
2627
import com.couchbase.client.test.Util;
2728
import org.junit.jupiter.api.AfterAll;
2829
import org.junit.jupiter.api.AfterEach;
@@ -54,6 +55,7 @@
5455
missesCapabilities = {Capabilities.USER_GROUPS, Capabilities.ENTERPRISE_EDITION},
5556
isProtostellar = true
5657
)
58+
@ManagementApiTest
5759
class GroupManagerIntegrationTest extends JavaIntegrationTest {
5860
private static final Logger LOGGER = LoggerFactory.getLogger(GroupManagerIntegrationTest.class);
5961

0 commit comments

Comments
 (0)