From 3c302f2cf232b17573daf5b7e128113d28340aee Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Wed, 18 Jun 2025 17:14:21 +0200 Subject: [PATCH 1/8] commented tests with hard-coded hostname --- .../java/com/arangodb/ArangoDBAsyncTest.java | 46 ++++++------- .../test/java/com/arangodb/ArangoDBTest.java | 65 ++++++++++--------- 2 files changed, 58 insertions(+), 53 deletions(-) diff --git a/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java b/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java index 1598a7ca1..cbe2ee8c0 100644 --- a/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java +++ b/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java @@ -637,28 +637,30 @@ void arangoDBException(ArangoDBAsync arangoDB) { assertThat(e.getErrorNum()).isEqualTo(1228); } - @ParameterizedTest - @MethodSource("asyncArangos") - void fallbackHost() throws ExecutionException, InterruptedException { - final ArangoDBAsync arangoDB = new ArangoDB.Builder() - .loadProperties(config) - .host("not-accessible", 8529).host("172.28.0.1", 8529) - .build() - .async(); - final ArangoDBVersion version = arangoDB.getVersion().get(); - assertThat(version).isNotNull(); - } - - @ParameterizedTest - @MethodSource("asyncArangos") - void loadpropertiesWithPrefix() throws ExecutionException, InterruptedException { - ArangoDBAsync adb = new ArangoDB.Builder() - .loadProperties(ConfigUtils.loadConfig("arangodb-with-prefix.properties", "adb")) - .build() - .async(); - adb.getVersion().get(); - adb.shutdown(); - } +// FIXME: do not hard-code host address +// @ParameterizedTest +// @MethodSource("asyncArangos") +// void fallbackHost() throws ExecutionException, InterruptedException { +// final ArangoDBAsync arangoDB = new ArangoDB.Builder() +// .loadProperties(config) +// .host("not-accessible", 8529).host("172.28.0.1", 8529) +// .build() +// .async(); +// final ArangoDBVersion version = arangoDB.getVersion().get(); +// assertThat(version).isNotNull(); +// } + +// FIXME: do not hard-code host address +// @ParameterizedTest +// @MethodSource("asyncArangos") +// void loadpropertiesWithPrefix() throws ExecutionException, InterruptedException { +// ArangoDBAsync adb = new ArangoDB.Builder() +// .loadProperties(ConfigUtils.loadConfig("arangodb-with-prefix.properties", "adb")) +// .build() +// .async(); +// adb.getVersion().get(); +// adb.shutdown(); +// } @ParameterizedTest @MethodSource("asyncArangos") diff --git a/test-functional/src/test/java/com/arangodb/ArangoDBTest.java b/test-functional/src/test/java/com/arangodb/ArangoDBTest.java index 7085c7ae7..bd3ad581d 100644 --- a/test-functional/src/test/java/com/arangodb/ArangoDBTest.java +++ b/test-functional/src/test/java/com/arangodb/ArangoDBTest.java @@ -651,15 +651,16 @@ void arangoDBException(ArangoDB arangoDB) { assertThat(e.getErrorNum()).isEqualTo(1228); } - @ParameterizedTest - @MethodSource("arangos") - void fallbackHost() { - final ArangoDB arangoDB = new ArangoDB.Builder() - .loadProperties(config) - .host("not-accessible", 8529).host("172.28.0.1", 8529).build(); - final ArangoDBVersion version = arangoDB.getVersion(); - assertThat(version).isNotNull(); - } +// FIXME: do not hard-code host address +// @ParameterizedTest +// @MethodSource("arangos") +// void fallbackHost() { +// final ArangoDB arangoDB = new ArangoDB.Builder() +// .loadProperties(config) +// .host("not-accessible", 8529).host("172.28.0.1", 8529).build(); +// final ArangoDBVersion version = arangoDB.getVersion(); +// assertThat(version).isNotNull(); +// } @ParameterizedTest @MethodSource("arangos") @@ -670,28 +671,30 @@ void loadproperties() { assertThat(thrown).isInstanceOf(IllegalArgumentException.class); } - @ParameterizedTest - @MethodSource("arangos") - void loadPropertiesWithPrefix() { - ArangoDB adb = new ArangoDB.Builder() - .loadProperties(ConfigUtils.loadConfig("arangodb-with-prefix.properties", "adb")) - .build(); - adb.getVersion(); - adb.shutdown(); - } - - @ParameterizedTest - @MethodSource("arangos") - void loadConfigFromPropertiesWithPrefix() { - Properties props = new Properties(); - props.setProperty("adb.hosts", "172.28.0.1:8529"); - props.setProperty("adb.password", "test"); - ArangoDB adb = new ArangoDB.Builder() - .loadProperties(ConfigUtils.loadConfig(props, "adb")) - .build(); - adb.getVersion(); - adb.shutdown(); - } +// FIXME: do not hard-code host address +// @ParameterizedTest +// @MethodSource("arangos") +// void loadPropertiesWithPrefix() { +// ArangoDB adb = new ArangoDB.Builder() +// .loadProperties(ConfigUtils.loadConfig("arangodb-with-prefix.properties", "adb")) +// .build(); +// adb.getVersion(); +// adb.shutdown(); +// } + +// FIXME: do not hard-code host address +// @ParameterizedTest +// @MethodSource("arangos") +// void loadConfigFromPropertiesWithPrefix() { +// Properties props = new Properties(); +// props.setProperty("adb.hosts", "172.28.0.1:8529"); +// props.setProperty("adb.password", "test"); +// ArangoDB adb = new ArangoDB.Builder() +// .loadProperties(ConfigUtils.loadConfig(props, "adb")) +// .build(); +// adb.getVersion(); +// adb.shutdown(); +// } @ParameterizedTest @MethodSource("arangos") From 1c6eb6f4db354eeab7fc8473527fde146601c091 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Wed, 18 Jun 2025 17:41:19 +0200 Subject: [PATCH 2/8] commented classification analyzer models tests --- .../com/arangodb/ArangoSearchAsyncTest.java | 95 ++++++++++--------- .../java/com/arangodb/ArangoSearchTest.java | 94 +++++++++--------- 2 files changed, 96 insertions(+), 93 deletions(-) diff --git a/test-functional/src/test/java/com/arangodb/ArangoSearchAsyncTest.java b/test-functional/src/test/java/com/arangodb/ArangoSearchAsyncTest.java index 27cf4e31e..f06d34f1c 100644 --- a/test-functional/src/test/java/com/arangodb/ArangoSearchAsyncTest.java +++ b/test-functional/src/test/java/com/arangodb/ArangoSearchAsyncTest.java @@ -979,53 +979,54 @@ void collationAnalyzer(ArangoDatabaseAsync db) throws ExecutionException, Interr createGetAndDeleteTypedAnalyzer(db, collationAnalyzer); } - - @ParameterizedTest - @MethodSource("asyncDbs") - void classificationAnalyzer(ArangoDatabaseAsync db) throws ExecutionException, InterruptedException { - assumeTrue(isAtLeastVersion(3, 10)); - assumeTrue(isEnterprise()); - - ClassificationAnalyzerProperties properties = new ClassificationAnalyzerProperties(); - properties.setModelLocation("/tmp/foo.bin"); - properties.setTopK(2); - properties.setThreshold(.5); - - Set features = new HashSet<>(); - features.add(AnalyzerFeature.frequency); - features.add(AnalyzerFeature.norm); - features.add(AnalyzerFeature.position); - - ClassificationAnalyzer analyzer = new ClassificationAnalyzer(); - analyzer.setName("test-" + UUID.randomUUID()); - analyzer.setProperties(properties); - analyzer.setFeatures(features); - - createGetAndDeleteTypedAnalyzer(db, analyzer); - } - - @ParameterizedTest - @MethodSource("asyncDbs") - void nearestNeighborsAnalyzer(ArangoDatabaseAsync db) throws ExecutionException, InterruptedException { - assumeTrue(isAtLeastVersion(3, 10)); - assumeTrue(isEnterprise()); - - NearestNeighborsAnalyzerProperties properties = new NearestNeighborsAnalyzerProperties(); - properties.setModelLocation("/tmp/foo.bin"); - properties.setTopK(2); - - Set features = new HashSet<>(); - features.add(AnalyzerFeature.frequency); - features.add(AnalyzerFeature.norm); - features.add(AnalyzerFeature.position); - - NearestNeighborsAnalyzer analyzer = new NearestNeighborsAnalyzer(); - analyzer.setName("test-" + UUID.randomUUID()); - analyzer.setProperties(properties); - analyzer.setFeatures(features); - - createGetAndDeleteTypedAnalyzer(db, analyzer); - } +// FIXME: allow disable on QA tests +// @ParameterizedTest +// @MethodSource("asyncDbs") +// void classificationAnalyzer(ArangoDatabaseAsync db) throws ExecutionException, InterruptedException { +// assumeTrue(isAtLeastVersion(3, 10)); +// assumeTrue(isEnterprise()); +// +// ClassificationAnalyzerProperties properties = new ClassificationAnalyzerProperties(); +// properties.setModelLocation("/tmp/foo.bin"); +// properties.setTopK(2); +// properties.setThreshold(.5); +// +// Set features = new HashSet<>(); +// features.add(AnalyzerFeature.frequency); +// features.add(AnalyzerFeature.norm); +// features.add(AnalyzerFeature.position); +// +// ClassificationAnalyzer analyzer = new ClassificationAnalyzer(); +// analyzer.setName("test-" + UUID.randomUUID()); +// analyzer.setProperties(properties); +// analyzer.setFeatures(features); +// +// createGetAndDeleteTypedAnalyzer(db, analyzer); +// } + +// FIXME: allow disable on QA tests +// @ParameterizedTest +// @MethodSource("asyncDbs") +// void nearestNeighborsAnalyzer(ArangoDatabaseAsync db) throws ExecutionException, InterruptedException { +// assumeTrue(isAtLeastVersion(3, 10)); +// assumeTrue(isEnterprise()); +// +// NearestNeighborsAnalyzerProperties properties = new NearestNeighborsAnalyzerProperties(); +// properties.setModelLocation("/tmp/foo.bin"); +// properties.setTopK(2); +// +// Set features = new HashSet<>(); +// features.add(AnalyzerFeature.frequency); +// features.add(AnalyzerFeature.norm); +// features.add(AnalyzerFeature.position); +// +// NearestNeighborsAnalyzer analyzer = new NearestNeighborsAnalyzer(); +// analyzer.setName("test-" + UUID.randomUUID()); +// analyzer.setProperties(properties); +// analyzer.setFeatures(features); +// +// createGetAndDeleteTypedAnalyzer(db, analyzer); +// } @ParameterizedTest @MethodSource("asyncDbs") diff --git a/test-functional/src/test/java/com/arangodb/ArangoSearchTest.java b/test-functional/src/test/java/com/arangodb/ArangoSearchTest.java index 0af1e8941..59890c334 100644 --- a/test-functional/src/test/java/com/arangodb/ArangoSearchTest.java +++ b/test-functional/src/test/java/com/arangodb/ArangoSearchTest.java @@ -986,52 +986,54 @@ void collationAnalyzer(ArangoDatabase db) { } - @ParameterizedTest - @MethodSource("dbs") - void classificationAnalyzer(ArangoDatabase db) { - assumeTrue(isAtLeastVersion(3, 10)); - assumeTrue(isEnterprise()); - - ClassificationAnalyzerProperties properties = new ClassificationAnalyzerProperties(); - properties.setModelLocation("/tmp/foo.bin"); - properties.setTopK(2); - properties.setThreshold(.5); - - Set features = new HashSet<>(); - features.add(AnalyzerFeature.frequency); - features.add(AnalyzerFeature.norm); - features.add(AnalyzerFeature.position); - - ClassificationAnalyzer analyzer = new ClassificationAnalyzer(); - analyzer.setName("test-" + UUID.randomUUID()); - analyzer.setProperties(properties); - analyzer.setFeatures(features); - - createGetAndDeleteTypedAnalyzer(db, analyzer); - } - - @ParameterizedTest - @MethodSource("dbs") - void nearestNeighborsAnalyzer(ArangoDatabase db) { - assumeTrue(isAtLeastVersion(3, 10)); - assumeTrue(isEnterprise()); - - NearestNeighborsAnalyzerProperties properties = new NearestNeighborsAnalyzerProperties(); - properties.setModelLocation("/tmp/foo.bin"); - properties.setTopK(2); - - Set features = new HashSet<>(); - features.add(AnalyzerFeature.frequency); - features.add(AnalyzerFeature.norm); - features.add(AnalyzerFeature.position); - - NearestNeighborsAnalyzer analyzer = new NearestNeighborsAnalyzer(); - analyzer.setName("test-" + UUID.randomUUID()); - analyzer.setProperties(properties); - analyzer.setFeatures(features); - - createGetAndDeleteTypedAnalyzer(db, analyzer); - } +// FIXME: allow disable on QA tests +// @ParameterizedTest +// @MethodSource("dbs") +// void classificationAnalyzer(ArangoDatabase db) { +// assumeTrue(isAtLeastVersion(3, 10)); +// assumeTrue(isEnterprise()); +// +// ClassificationAnalyzerProperties properties = new ClassificationAnalyzerProperties(); +// properties.setModelLocation("/tmp/foo.bin"); +// properties.setTopK(2); +// properties.setThreshold(.5); +// +// Set features = new HashSet<>(); +// features.add(AnalyzerFeature.frequency); +// features.add(AnalyzerFeature.norm); +// features.add(AnalyzerFeature.position); +// +// ClassificationAnalyzer analyzer = new ClassificationAnalyzer(); +// analyzer.setName("test-" + UUID.randomUUID()); +// analyzer.setProperties(properties); +// analyzer.setFeatures(features); +// +// createGetAndDeleteTypedAnalyzer(db, analyzer); +// } + +// FIXME: allow disable on QA tests +// @ParameterizedTest +// @MethodSource("dbs") +// void nearestNeighborsAnalyzer(ArangoDatabase db) { +// assumeTrue(isAtLeastVersion(3, 10)); +// assumeTrue(isEnterprise()); +// +// NearestNeighborsAnalyzerProperties properties = new NearestNeighborsAnalyzerProperties(); +// properties.setModelLocation("/tmp/foo.bin"); +// properties.setTopK(2); +// +// Set features = new HashSet<>(); +// features.add(AnalyzerFeature.frequency); +// features.add(AnalyzerFeature.norm); +// features.add(AnalyzerFeature.position); +// +// NearestNeighborsAnalyzer analyzer = new NearestNeighborsAnalyzer(); +// analyzer.setName("test-" + UUID.randomUUID()); +// analyzer.setProperties(properties); +// analyzer.setFeatures(features); +// +// createGetAndDeleteTypedAnalyzer(db, analyzer); +// } @ParameterizedTest @MethodSource("dbs") From e1a8f48a7301af85cc86af87015d879c65a793a0 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Thu, 10 Jul 2025 18:25:16 +0200 Subject: [PATCH 3/8] moved configuration tests to test-non-functional module --- .../java/com/arangodb/ArangoDBAsyncTest.java | 26 ----- .../test/java/com/arangodb/ArangoDBTest.java | 36 ------- .../com/arangodb/ArangoSearchAsyncTest.java | 100 +++++++++--------- .../java/com/arangodb/ArangoSearchTest.java | 97 ++++++++--------- .../native-image/resource-config.json | 3 - .../src/test/java/ConfigurationTest.java | 49 +++++++++ .../resources/arangodb-with-prefix.properties | 0 7 files changed, 149 insertions(+), 162 deletions(-) create mode 100644 test-non-functional/src/test/java/ConfigurationTest.java rename {test-functional => test-non-functional}/src/test/resources/arangodb-with-prefix.properties (100%) diff --git a/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java b/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java index cbe2ee8c0..846e5c0d7 100644 --- a/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java +++ b/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java @@ -20,7 +20,6 @@ package com.arangodb; -import com.arangodb.config.ConfigUtils; import com.arangodb.entity.*; import com.arangodb.internal.ArangoRequestParam; import com.arangodb.internal.serde.SerdeUtils; @@ -637,31 +636,6 @@ void arangoDBException(ArangoDBAsync arangoDB) { assertThat(e.getErrorNum()).isEqualTo(1228); } -// FIXME: do not hard-code host address -// @ParameterizedTest -// @MethodSource("asyncArangos") -// void fallbackHost() throws ExecutionException, InterruptedException { -// final ArangoDBAsync arangoDB = new ArangoDB.Builder() -// .loadProperties(config) -// .host("not-accessible", 8529).host("172.28.0.1", 8529) -// .build() -// .async(); -// final ArangoDBVersion version = arangoDB.getVersion().get(); -// assertThat(version).isNotNull(); -// } - -// FIXME: do not hard-code host address -// @ParameterizedTest -// @MethodSource("asyncArangos") -// void loadpropertiesWithPrefix() throws ExecutionException, InterruptedException { -// ArangoDBAsync adb = new ArangoDB.Builder() -// .loadProperties(ConfigUtils.loadConfig("arangodb-with-prefix.properties", "adb")) -// .build() -// .async(); -// adb.getVersion().get(); -// adb.shutdown(); -// } - @ParameterizedTest @MethodSource("asyncArangos") void accessMultipleDatabases(ArangoDBAsync arangoDB) throws ExecutionException, InterruptedException { diff --git a/test-functional/src/test/java/com/arangodb/ArangoDBTest.java b/test-functional/src/test/java/com/arangodb/ArangoDBTest.java index bd3ad581d..b110cf475 100644 --- a/test-functional/src/test/java/com/arangodb/ArangoDBTest.java +++ b/test-functional/src/test/java/com/arangodb/ArangoDBTest.java @@ -651,17 +651,6 @@ void arangoDBException(ArangoDB arangoDB) { assertThat(e.getErrorNum()).isEqualTo(1228); } -// FIXME: do not hard-code host address -// @ParameterizedTest -// @MethodSource("arangos") -// void fallbackHost() { -// final ArangoDB arangoDB = new ArangoDB.Builder() -// .loadProperties(config) -// .host("not-accessible", 8529).host("172.28.0.1", 8529).build(); -// final ArangoDBVersion version = arangoDB.getVersion(); -// assertThat(version).isNotNull(); -// } - @ParameterizedTest @MethodSource("arangos") void loadproperties() { @@ -671,31 +660,6 @@ void loadproperties() { assertThat(thrown).isInstanceOf(IllegalArgumentException.class); } -// FIXME: do not hard-code host address -// @ParameterizedTest -// @MethodSource("arangos") -// void loadPropertiesWithPrefix() { -// ArangoDB adb = new ArangoDB.Builder() -// .loadProperties(ConfigUtils.loadConfig("arangodb-with-prefix.properties", "adb")) -// .build(); -// adb.getVersion(); -// adb.shutdown(); -// } - -// FIXME: do not hard-code host address -// @ParameterizedTest -// @MethodSource("arangos") -// void loadConfigFromPropertiesWithPrefix() { -// Properties props = new Properties(); -// props.setProperty("adb.hosts", "172.28.0.1:8529"); -// props.setProperty("adb.password", "test"); -// ArangoDB adb = new ArangoDB.Builder() -// .loadProperties(ConfigUtils.loadConfig(props, "adb")) -// .build(); -// adb.getVersion(); -// adb.shutdown(); -// } - @ParameterizedTest @MethodSource("arangos") void accessMultipleDatabases(ArangoDB arangoDB) { diff --git a/test-functional/src/test/java/com/arangodb/ArangoSearchAsyncTest.java b/test-functional/src/test/java/com/arangodb/ArangoSearchAsyncTest.java index f06d34f1c..6d5ab0a24 100644 --- a/test-functional/src/test/java/com/arangodb/ArangoSearchAsyncTest.java +++ b/test-functional/src/test/java/com/arangodb/ArangoSearchAsyncTest.java @@ -28,6 +28,7 @@ import com.arangodb.model.InvertedIndexOptions; import com.arangodb.model.arangosearch.*; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.condition.DisabledIfSystemProperty; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -740,7 +741,7 @@ void arangoSearchOptions(ArangoDatabaseAsync db) throws ExecutionException, Inte } if (isEnterprise() && isAtLeastVersion(3, 12)) { - assertThat(properties.getOptimizeTopK()).containsExactly(optimizeTopK); + assertThat(properties.getOptimizeTopK()).containsExactly(optimizeTopK); } } @@ -979,54 +980,55 @@ void collationAnalyzer(ArangoDatabaseAsync db) throws ExecutionException, Interr createGetAndDeleteTypedAnalyzer(db, collationAnalyzer); } -// FIXME: allow disable on QA tests -// @ParameterizedTest -// @MethodSource("asyncDbs") -// void classificationAnalyzer(ArangoDatabaseAsync db) throws ExecutionException, InterruptedException { -// assumeTrue(isAtLeastVersion(3, 10)); -// assumeTrue(isEnterprise()); -// -// ClassificationAnalyzerProperties properties = new ClassificationAnalyzerProperties(); -// properties.setModelLocation("/tmp/foo.bin"); -// properties.setTopK(2); -// properties.setThreshold(.5); -// -// Set features = new HashSet<>(); -// features.add(AnalyzerFeature.frequency); -// features.add(AnalyzerFeature.norm); -// features.add(AnalyzerFeature.position); -// -// ClassificationAnalyzer analyzer = new ClassificationAnalyzer(); -// analyzer.setName("test-" + UUID.randomUUID()); -// analyzer.setProperties(properties); -// analyzer.setFeatures(features); -// -// createGetAndDeleteTypedAnalyzer(db, analyzer); -// } - -// FIXME: allow disable on QA tests -// @ParameterizedTest -// @MethodSource("asyncDbs") -// void nearestNeighborsAnalyzer(ArangoDatabaseAsync db) throws ExecutionException, InterruptedException { -// assumeTrue(isAtLeastVersion(3, 10)); -// assumeTrue(isEnterprise()); -// -// NearestNeighborsAnalyzerProperties properties = new NearestNeighborsAnalyzerProperties(); -// properties.setModelLocation("/tmp/foo.bin"); -// properties.setTopK(2); -// -// Set features = new HashSet<>(); -// features.add(AnalyzerFeature.frequency); -// features.add(AnalyzerFeature.norm); -// features.add(AnalyzerFeature.position); -// -// NearestNeighborsAnalyzer analyzer = new NearestNeighborsAnalyzer(); -// analyzer.setName("test-" + UUID.randomUUID()); -// analyzer.setProperties(properties); -// analyzer.setFeatures(features); -// -// createGetAndDeleteTypedAnalyzer(db, analyzer); -// } + + @DisabledIfSystemProperty(named = "test.stateful.skip", matches = "^(|true|1)$", disabledReason = "Test requires server with analyzer model located at `/tmp/foo.bin`") + @ParameterizedTest + @MethodSource("asyncDbs") + void classificationAnalyzer(ArangoDatabaseAsync db) throws ExecutionException, InterruptedException { + assumeTrue(isAtLeastVersion(3, 10)); + assumeTrue(isEnterprise()); + + ClassificationAnalyzerProperties properties = new ClassificationAnalyzerProperties(); + properties.setModelLocation("/tmp/foo.bin"); + properties.setTopK(2); + properties.setThreshold(.5); + + Set features = new HashSet<>(); + features.add(AnalyzerFeature.frequency); + features.add(AnalyzerFeature.norm); + features.add(AnalyzerFeature.position); + + ClassificationAnalyzer analyzer = new ClassificationAnalyzer(); + analyzer.setName("test-" + UUID.randomUUID()); + analyzer.setProperties(properties); + analyzer.setFeatures(features); + + createGetAndDeleteTypedAnalyzer(db, analyzer); + } + + @DisabledIfSystemProperty(named = "test.stateful.skip", matches = "^(|true|1)$", disabledReason = "Test requires server with analyzer model located at `/tmp/foo.bin`") + @ParameterizedTest + @MethodSource("asyncDbs") + void nearestNeighborsAnalyzer(ArangoDatabaseAsync db) throws ExecutionException, InterruptedException { + assumeTrue(isAtLeastVersion(3, 10)); + assumeTrue(isEnterprise()); + + NearestNeighborsAnalyzerProperties properties = new NearestNeighborsAnalyzerProperties(); + properties.setModelLocation("/tmp/foo.bin"); + properties.setTopK(2); + + Set features = new HashSet<>(); + features.add(AnalyzerFeature.frequency); + features.add(AnalyzerFeature.norm); + features.add(AnalyzerFeature.position); + + NearestNeighborsAnalyzer analyzer = new NearestNeighborsAnalyzer(); + analyzer.setName("test-" + UUID.randomUUID()); + analyzer.setProperties(properties); + analyzer.setFeatures(features); + + createGetAndDeleteTypedAnalyzer(db, analyzer); + } @ParameterizedTest @MethodSource("asyncDbs") diff --git a/test-functional/src/test/java/com/arangodb/ArangoSearchTest.java b/test-functional/src/test/java/com/arangodb/ArangoSearchTest.java index 59890c334..60e139b5c 100644 --- a/test-functional/src/test/java/com/arangodb/ArangoSearchTest.java +++ b/test-functional/src/test/java/com/arangodb/ArangoSearchTest.java @@ -28,6 +28,7 @@ import com.arangodb.model.InvertedIndexOptions; import com.arangodb.model.arangosearch.*; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.condition.DisabledIfSystemProperty; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -986,54 +987,54 @@ void collationAnalyzer(ArangoDatabase db) { } -// FIXME: allow disable on QA tests -// @ParameterizedTest -// @MethodSource("dbs") -// void classificationAnalyzer(ArangoDatabase db) { -// assumeTrue(isAtLeastVersion(3, 10)); -// assumeTrue(isEnterprise()); -// -// ClassificationAnalyzerProperties properties = new ClassificationAnalyzerProperties(); -// properties.setModelLocation("/tmp/foo.bin"); -// properties.setTopK(2); -// properties.setThreshold(.5); -// -// Set features = new HashSet<>(); -// features.add(AnalyzerFeature.frequency); -// features.add(AnalyzerFeature.norm); -// features.add(AnalyzerFeature.position); -// -// ClassificationAnalyzer analyzer = new ClassificationAnalyzer(); -// analyzer.setName("test-" + UUID.randomUUID()); -// analyzer.setProperties(properties); -// analyzer.setFeatures(features); -// -// createGetAndDeleteTypedAnalyzer(db, analyzer); -// } - -// FIXME: allow disable on QA tests -// @ParameterizedTest -// @MethodSource("dbs") -// void nearestNeighborsAnalyzer(ArangoDatabase db) { -// assumeTrue(isAtLeastVersion(3, 10)); -// assumeTrue(isEnterprise()); -// -// NearestNeighborsAnalyzerProperties properties = new NearestNeighborsAnalyzerProperties(); -// properties.setModelLocation("/tmp/foo.bin"); -// properties.setTopK(2); -// -// Set features = new HashSet<>(); -// features.add(AnalyzerFeature.frequency); -// features.add(AnalyzerFeature.norm); -// features.add(AnalyzerFeature.position); -// -// NearestNeighborsAnalyzer analyzer = new NearestNeighborsAnalyzer(); -// analyzer.setName("test-" + UUID.randomUUID()); -// analyzer.setProperties(properties); -// analyzer.setFeatures(features); -// -// createGetAndDeleteTypedAnalyzer(db, analyzer); -// } + @DisabledIfSystemProperty(named = "test.stateful.skip", matches = "^(|true|1)$", disabledReason = "Test requires server with analyzer model located at `/tmp/foo.bin`") + @ParameterizedTest + @MethodSource("dbs") + void classificationAnalyzer(ArangoDatabase db) { + assumeTrue(isAtLeastVersion(3, 10)); + assumeTrue(isEnterprise()); + + ClassificationAnalyzerProperties properties = new ClassificationAnalyzerProperties(); + properties.setModelLocation("/tmp/foo.bin"); + properties.setTopK(2); + properties.setThreshold(.5); + + Set features = new HashSet<>(); + features.add(AnalyzerFeature.frequency); + features.add(AnalyzerFeature.norm); + features.add(AnalyzerFeature.position); + + ClassificationAnalyzer analyzer = new ClassificationAnalyzer(); + analyzer.setName("test-" + UUID.randomUUID()); + analyzer.setProperties(properties); + analyzer.setFeatures(features); + + createGetAndDeleteTypedAnalyzer(db, analyzer); + } + + @DisabledIfSystemProperty(named = "test.stateful.skip", matches = "^(|true|1)$", disabledReason = "Test requires server with analyzer model located at `/tmp/foo.bin`") + @ParameterizedTest + @MethodSource("dbs") + void nearestNeighborsAnalyzer(ArangoDatabase db) { + assumeTrue(isAtLeastVersion(3, 10)); + assumeTrue(isEnterprise()); + + NearestNeighborsAnalyzerProperties properties = new NearestNeighborsAnalyzerProperties(); + properties.setModelLocation("/tmp/foo.bin"); + properties.setTopK(2); + + Set features = new HashSet<>(); + features.add(AnalyzerFeature.frequency); + features.add(AnalyzerFeature.norm); + features.add(AnalyzerFeature.position); + + NearestNeighborsAnalyzer analyzer = new NearestNeighborsAnalyzer(); + analyzer.setName("test-" + UUID.randomUUID()); + analyzer.setProperties(properties); + analyzer.setFeatures(features); + + createGetAndDeleteTypedAnalyzer(db, analyzer); + } @ParameterizedTest @MethodSource("dbs") diff --git a/test-functional/src/test/resources/META-INF/native-image/resource-config.json b/test-functional/src/test/resources/META-INF/native-image/resource-config.json index a6eea307e..a603a885a 100644 --- a/test-functional/src/test/resources/META-INF/native-image/resource-config.json +++ b/test-functional/src/test/resources/META-INF/native-image/resource-config.json @@ -10,9 +10,6 @@ { "pattern": "\\Qarangodb-bad2.properties\\E" }, - { - "pattern":"\\Qarangodb-with-prefix.properties\\E" - }, { "pattern": "\\Qlogback-test.xml\\E" }, diff --git a/test-non-functional/src/test/java/ConfigurationTest.java b/test-non-functional/src/test/java/ConfigurationTest.java new file mode 100644 index 000000000..b004c9b38 --- /dev/null +++ b/test-non-functional/src/test/java/ConfigurationTest.java @@ -0,0 +1,49 @@ +import com.arangodb.ArangoDB; +import com.arangodb.ContentType; +import com.arangodb.config.ArangoConfigProperties; +import com.arangodb.entity.ArangoDBVersion; +import com.arangodb.serde.jackson.JacksonSerde; +import org.junit.jupiter.api.Test; + +import java.util.Properties; + +import static org.assertj.core.api.Assertions.assertThat; + +public class ConfigurationTest { + + @Test + void fallbackHost() { + final ArangoDB arangoDB = new ArangoDB.Builder() + .loadProperties(ArangoConfigProperties.fromFile()) + .serde(JacksonSerde.of(ContentType.JSON)) + .host("not-accessible", 8529) + .host("172.28.0.1", 8529) + .build(); + final ArangoDBVersion version = arangoDB.getVersion(); + assertThat(version).isNotNull(); + } + + @Test + void loadPropertiesWithPrefix() { + ArangoDB adb = new ArangoDB.Builder() + .loadProperties(ArangoConfigProperties.fromFile("arangodb-with-prefix.properties", "adb")) + .serde(JacksonSerde.of(ContentType.JSON)) + .build(); + adb.getVersion(); + adb.shutdown(); + } + + @Test + void loadConfigFromPropertiesWithPrefix() { + Properties props = new Properties(); + props.setProperty("adb.hosts", "172.28.0.1:8529"); + props.setProperty("adb.password", "test"); + ArangoDB adb = new ArangoDB.Builder() + .loadProperties(ArangoConfigProperties.fromProperties(props, "adb")) + .serde(JacksonSerde.of(ContentType.JSON)) + .build(); + adb.getVersion(); + adb.shutdown(); + } + +} diff --git a/test-functional/src/test/resources/arangodb-with-prefix.properties b/test-non-functional/src/test/resources/arangodb-with-prefix.properties similarity index 100% rename from test-functional/src/test/resources/arangodb-with-prefix.properties rename to test-non-functional/src/test/resources/arangodb-with-prefix.properties From c0fc880a5517c1a40f2e4ca7eee46d8b60b73ccd Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Thu, 10 Jul 2025 18:26:36 +0200 Subject: [PATCH 4/8] added skipStatefulTests system property --- .../src/test/java/com/arangodb/ArangoSearchAsyncTest.java | 4 ++-- .../src/test/java/com/arangodb/ArangoSearchTest.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test-functional/src/test/java/com/arangodb/ArangoSearchAsyncTest.java b/test-functional/src/test/java/com/arangodb/ArangoSearchAsyncTest.java index 6d5ab0a24..400c497ca 100644 --- a/test-functional/src/test/java/com/arangodb/ArangoSearchAsyncTest.java +++ b/test-functional/src/test/java/com/arangodb/ArangoSearchAsyncTest.java @@ -981,7 +981,7 @@ void collationAnalyzer(ArangoDatabaseAsync db) throws ExecutionException, Interr } - @DisabledIfSystemProperty(named = "test.stateful.skip", matches = "^(|true|1)$", disabledReason = "Test requires server with analyzer model located at `/tmp/foo.bin`") + @DisabledIfSystemProperty(named = "skipStatefulTests", matches = "^(|true|1)$", disabledReason = "Test requires server with analyzer model located at `/tmp/foo.bin`") @ParameterizedTest @MethodSource("asyncDbs") void classificationAnalyzer(ArangoDatabaseAsync db) throws ExecutionException, InterruptedException { @@ -1006,7 +1006,7 @@ void classificationAnalyzer(ArangoDatabaseAsync db) throws ExecutionException, I createGetAndDeleteTypedAnalyzer(db, analyzer); } - @DisabledIfSystemProperty(named = "test.stateful.skip", matches = "^(|true|1)$", disabledReason = "Test requires server with analyzer model located at `/tmp/foo.bin`") + @DisabledIfSystemProperty(named = "skipStatefulTests", matches = "^(|true|1)$", disabledReason = "Test requires server with analyzer model located at `/tmp/foo.bin`") @ParameterizedTest @MethodSource("asyncDbs") void nearestNeighborsAnalyzer(ArangoDatabaseAsync db) throws ExecutionException, InterruptedException { diff --git a/test-functional/src/test/java/com/arangodb/ArangoSearchTest.java b/test-functional/src/test/java/com/arangodb/ArangoSearchTest.java index 60e139b5c..e29a6907e 100644 --- a/test-functional/src/test/java/com/arangodb/ArangoSearchTest.java +++ b/test-functional/src/test/java/com/arangodb/ArangoSearchTest.java @@ -987,7 +987,7 @@ void collationAnalyzer(ArangoDatabase db) { } - @DisabledIfSystemProperty(named = "test.stateful.skip", matches = "^(|true|1)$", disabledReason = "Test requires server with analyzer model located at `/tmp/foo.bin`") + @DisabledIfSystemProperty(named = "skipStatefulTests", matches = "^(|true|1)$", disabledReason = "Test requires server with analyzer model located at `/tmp/foo.bin`") @ParameterizedTest @MethodSource("dbs") void classificationAnalyzer(ArangoDatabase db) { @@ -1012,7 +1012,7 @@ void classificationAnalyzer(ArangoDatabase db) { createGetAndDeleteTypedAnalyzer(db, analyzer); } - @DisabledIfSystemProperty(named = "test.stateful.skip", matches = "^(|true|1)$", disabledReason = "Test requires server with analyzer model located at `/tmp/foo.bin`") + @DisabledIfSystemProperty(named = "skipStatefulTests", matches = "^(|true|1)$", disabledReason = "Test requires server with analyzer model located at `/tmp/foo.bin`") @ParameterizedTest @MethodSource("dbs") void nearestNeighborsAnalyzer(ArangoDatabase db) { From c299fcd7e73a65f0c7e732350b6ebd1bee1b62bd Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Thu, 10 Jul 2025 19:04:28 +0200 Subject: [PATCH 5/8] remove users created in tests --- .../java/com/arangodb/ArangoDBAsyncTest.java | 116 +++++++++++------- .../test/java/com/arangodb/ArangoDBTest.java | 98 +++++++++------ .../com/arangodb/ArangoDatabaseAsyncTest.java | 66 +++++++--- .../java/com/arangodb/ArangoDatabaseTest.java | 42 +++++-- 4 files changed, 219 insertions(+), 103 deletions(-) diff --git a/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java b/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java index 846e5c0d7..f1b390104 100644 --- a/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java +++ b/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java @@ -236,7 +236,11 @@ void createUser(ArangoDBAsync arangoDB) throws ExecutionException, InterruptedEx assumeTrue(isSingleServer()); String username = "user-" + UUID.randomUUID(); final UserEntity result = arangoDB.createUser(username, PW, null).get(); - assertThat(result.getUser()).isEqualTo(username); + try { + assertThat(result.getUser()).isEqualTo(username); + } finally { + arangoDB.deleteUser(username).get(); + } } @ParameterizedTest @@ -260,7 +264,11 @@ void getUser(ArangoDBAsync arangoDB) throws ExecutionException, InterruptedExcep String username = "user-" + UUID.randomUUID(); arangoDB.createUser(username, PW, null).get(); final UserEntity user = arangoDB.getUser(username).get(); - assertThat(user.getUser()).isEqualTo(username); + try { + assertThat(user.getUser()).isEqualTo(username); + } finally { + arangoDB.deleteUser(username).get(); + } } @ParameterizedTest @@ -278,28 +286,36 @@ void getUsers(ArangoDBAsync arangoDB) throws ExecutionException, InterruptedExce final Collection initialUsers = arangoDB.getUsers().get(); arangoDB.createUser(username, PW, null).get(); - final Collection users = arangoDB.getUsers().get(); - assertThat(users).hasSize(initialUsers.size() + 1); + try { + final Collection users = arangoDB.getUsers().get(); + assertThat(users).hasSize(initialUsers.size() + 1); - final List expected = new ArrayList<>(users.size()); - // Add initial users, including root: - for (final UserEntity userEntity : initialUsers) { - expected.add(userEntity.getUser()); - } - // Add username: - expected.add(username); + final List expected = new ArrayList<>(users.size()); + // Add initial users, including root: + for (final UserEntity userEntity : initialUsers) { + expected.add(userEntity.getUser()); + } + // Add username: + expected.add(username); - for (final UserEntity user : users) { - assertThat(user.getUser()).isIn(expected); + for (final UserEntity user : users) { + assertThat(user.getUser()).isIn(expected); + } + } finally { + arangoDB.deleteUser(username).get(); } } @ParameterizedTest @MethodSource("asyncArangos") - void updateUserNoOptions(ArangoDBAsync arangoDB) { + void updateUserNoOptions(ArangoDBAsync arangoDB) throws ExecutionException, InterruptedException { String username = "user-" + UUID.randomUUID(); - arangoDB.createUser(username, PW, null); - arangoDB.updateUser(username, null); + arangoDB.createUser(username, PW, null).get(); + try { + arangoDB.updateUser(username, null); + } finally { + arangoDB.deleteUser(username).get(); + } } @ParameterizedTest @@ -309,16 +325,20 @@ void updateUser(ArangoDBAsync arangoDB) throws ExecutionException, InterruptedEx final Map extra = new HashMap<>(); extra.put("hund", false); arangoDB.createUser(username, PW, new UserCreateOptions().extra(extra)).get(); - extra.put("hund", true); - extra.put("mund", true); - final UserEntity user = arangoDB.updateUser(username, new UserUpdateOptions().extra(extra)).get(); - assertThat(user.getExtra()).hasSize(2); - assertThat(user.getExtra()).containsKey("hund"); - assertThat(Boolean.valueOf(String.valueOf(user.getExtra().get("hund")))).isTrue(); - final UserEntity user2 = arangoDB.getUser(username).get(); - assertThat(user2.getExtra()).hasSize(2); - assertThat(user2.getExtra()).containsKey("hund"); - assertThat(Boolean.valueOf(String.valueOf(user2.getExtra().get("hund")))).isTrue(); + try { + extra.put("hund", true); + extra.put("mund", true); + final UserEntity user = arangoDB.updateUser(username, new UserUpdateOptions().extra(extra)).get(); + assertThat(user.getExtra()).hasSize(2); + assertThat(user.getExtra()).containsKey("hund"); + assertThat(Boolean.valueOf(String.valueOf(user.getExtra().get("hund")))).isTrue(); + final UserEntity user2 = arangoDB.getUser(username).get(); + assertThat(user2.getExtra()).hasSize(2); + assertThat(user2.getExtra()).containsKey("hund"); + assertThat(Boolean.valueOf(String.valueOf(user2.getExtra().get("hund")))).isTrue(); + } finally { + arangoDB.deleteUser(username).get(); + } } @ParameterizedTest @@ -328,32 +348,44 @@ void replaceUser(ArangoDBAsync arangoDB) throws ExecutionException, InterruptedE final Map extra = new HashMap<>(); extra.put("hund", false); arangoDB.createUser(username, PW, new UserCreateOptions().extra(extra)).get(); - extra.remove("hund"); - extra.put("mund", true); - final UserEntity user = arangoDB.replaceUser(username, new UserUpdateOptions().extra(extra)).get(); - assertThat(user.getExtra()).hasSize(1); - assertThat(user.getExtra()).containsKey("mund"); - assertThat(Boolean.valueOf(String.valueOf(user.getExtra().get("mund")))).isTrue(); - final UserEntity user2 = arangoDB.getUser(username).get(); - assertThat(user2.getExtra()).hasSize(1); - assertThat(user2.getExtra()).containsKey("mund"); - assertThat(Boolean.valueOf(String.valueOf(user2.getExtra().get("mund")))).isTrue(); + try { + extra.remove("hund"); + extra.put("mund", true); + final UserEntity user = arangoDB.replaceUser(username, new UserUpdateOptions().extra(extra)).get(); + assertThat(user.getExtra()).hasSize(1); + assertThat(user.getExtra()).containsKey("mund"); + assertThat(Boolean.valueOf(String.valueOf(user.getExtra().get("mund")))).isTrue(); + final UserEntity user2 = arangoDB.getUser(username).get(); + assertThat(user2.getExtra()).hasSize(1); + assertThat(user2.getExtra()).containsKey("mund"); + assertThat(Boolean.valueOf(String.valueOf(user2.getExtra().get("mund")))).isTrue(); + } finally { + arangoDB.deleteUser(username).get(); + } } @ParameterizedTest @MethodSource("asyncArangos") - void updateUserDefaultDatabaseAccess(ArangoDBAsync arangoDB) { + void updateUserDefaultDatabaseAccess(ArangoDBAsync arangoDB) throws ExecutionException, InterruptedException { String username = "user-" + UUID.randomUUID(); - arangoDB.createUser(username, PW); - arangoDB.grantDefaultDatabaseAccess(username, Permissions.RW); + arangoDB.createUser(username, PW).get(); + try { + arangoDB.grantDefaultDatabaseAccess(username, Permissions.RW).get(); + } finally { + arangoDB.deleteUser(username).get(); + } } @ParameterizedTest @MethodSource("asyncArangos") - void updateUserDefaultCollectionAccess(ArangoDBAsync arangoDB) { + void updateUserDefaultCollectionAccess(ArangoDBAsync arangoDB) throws ExecutionException, InterruptedException { String username = "user-" + UUID.randomUUID(); - arangoDB.createUser(username, PW); - arangoDB.grantDefaultCollectionAccess(username, Permissions.RW); + arangoDB.createUser(username, PW).get(); + try { + arangoDB.grantDefaultCollectionAccess(username, Permissions.RW).get(); + } finally { + arangoDB.deleteUser(username).get(); + } } @ParameterizedTest diff --git a/test-functional/src/test/java/com/arangodb/ArangoDBTest.java b/test-functional/src/test/java/com/arangodb/ArangoDBTest.java index b110cf475..030d3d6a7 100644 --- a/test-functional/src/test/java/com/arangodb/ArangoDBTest.java +++ b/test-functional/src/test/java/com/arangodb/ArangoDBTest.java @@ -239,7 +239,11 @@ void getAccessibleDatabasesFor(ArangoDB arangoDB) { void createUser(ArangoDB arangoDB) { String username = "user-" + UUID.randomUUID(); final UserEntity result = arangoDB.createUser(username, PW, null); - assertThat(result.getUser()).isEqualTo(username); + try { + assertThat(result.getUser()).isEqualTo(username); + } finally { + arangoDB.deleteUser(username); + } } @ParameterizedTest @@ -281,19 +285,23 @@ void getUsers(ArangoDB arangoDB) { final Collection initialUsers = arangoDB.getUsers(); arangoDB.createUser(username, PW, null); - final Collection users = arangoDB.getUsers(); - assertThat(users).hasSize(initialUsers.size() + 1); + try { + final Collection users = arangoDB.getUsers(); + assertThat(users).hasSize(initialUsers.size() + 1); - final List expected = new ArrayList<>(users.size()); - // Add initial users, including root: - for (final UserEntity userEntity : initialUsers) { - expected.add(userEntity.getUser()); - } - // Add username: - expected.add(username); + final List expected = new ArrayList<>(users.size()); + // Add initial users, including root: + for (final UserEntity userEntity : initialUsers) { + expected.add(userEntity.getUser()); + } + // Add username: + expected.add(username); - for (final UserEntity user : users) { - assertThat(user.getUser()).isIn(expected); + for (final UserEntity user : users) { + assertThat(user.getUser()).isIn(expected); + } + } finally { + arangoDB.deleteUser(username); } } @@ -302,7 +310,11 @@ void getUsers(ArangoDB arangoDB) { void updateUserNoOptions(ArangoDB arangoDB) { String username = "user-" + UUID.randomUUID(); arangoDB.createUser(username, PW, null); - arangoDB.updateUser(username, null); + try { + arangoDB.updateUser(username, null); + } finally { + arangoDB.deleteUser(username); + } } @ParameterizedTest @@ -312,16 +324,20 @@ void updateUser(ArangoDB arangoDB) { final Map extra = new HashMap<>(); extra.put("hund", false); arangoDB.createUser(username, PW, new UserCreateOptions().extra(extra)); - extra.put("hund", true); - extra.put("mund", true); - final UserEntity user = arangoDB.updateUser(username, new UserUpdateOptions().extra(extra)); - assertThat(user.getExtra()).hasSize(2); - assertThat(user.getExtra()).containsKey("hund"); - assertThat(Boolean.valueOf(String.valueOf(user.getExtra().get("hund")))).isTrue(); - final UserEntity user2 = arangoDB.getUser(username); - assertThat(user2.getExtra()).hasSize(2); - assertThat(user2.getExtra()).containsKey("hund"); - assertThat(Boolean.valueOf(String.valueOf(user2.getExtra().get("hund")))).isTrue(); + try { + extra.put("hund", true); + extra.put("mund", true); + final UserEntity user = arangoDB.updateUser(username, new UserUpdateOptions().extra(extra)); + assertThat(user.getExtra()).hasSize(2); + assertThat(user.getExtra()).containsKey("hund"); + assertThat(Boolean.valueOf(String.valueOf(user.getExtra().get("hund")))).isTrue(); + final UserEntity user2 = arangoDB.getUser(username); + assertThat(user2.getExtra()).hasSize(2); + assertThat(user2.getExtra()).containsKey("hund"); + assertThat(Boolean.valueOf(String.valueOf(user2.getExtra().get("hund")))).isTrue(); + } finally { + arangoDB.deleteUser(username); + } } @ParameterizedTest @@ -331,16 +347,20 @@ void replaceUser(ArangoDB arangoDB) { final Map extra = new HashMap<>(); extra.put("hund", false); arangoDB.createUser(username, PW, new UserCreateOptions().extra(extra)); - extra.remove("hund"); - extra.put("mund", true); - final UserEntity user = arangoDB.replaceUser(username, new UserUpdateOptions().extra(extra)); - assertThat(user.getExtra()).hasSize(1); - assertThat(user.getExtra()).containsKey("mund"); - assertThat(Boolean.valueOf(String.valueOf(user.getExtra().get("mund")))).isTrue(); - final UserEntity user2 = arangoDB.getUser(username); - assertThat(user2.getExtra()).hasSize(1); - assertThat(user2.getExtra()).containsKey("mund"); - assertThat(Boolean.valueOf(String.valueOf(user2.getExtra().get("mund")))).isTrue(); + try { + extra.remove("hund"); + extra.put("mund", true); + final UserEntity user = arangoDB.replaceUser(username, new UserUpdateOptions().extra(extra)); + assertThat(user.getExtra()).hasSize(1); + assertThat(user.getExtra()).containsKey("mund"); + assertThat(Boolean.valueOf(String.valueOf(user.getExtra().get("mund")))).isTrue(); + final UserEntity user2 = arangoDB.getUser(username); + assertThat(user2.getExtra()).hasSize(1); + assertThat(user2.getExtra()).containsKey("mund"); + assertThat(Boolean.valueOf(String.valueOf(user2.getExtra().get("mund")))).isTrue(); + } finally { + arangoDB.deleteUser(username); + } } @ParameterizedTest @@ -348,7 +368,11 @@ void replaceUser(ArangoDB arangoDB) { void updateUserDefaultDatabaseAccess(ArangoDB arangoDB) { String username = "user-" + UUID.randomUUID(); arangoDB.createUser(username, PW); - arangoDB.grantDefaultDatabaseAccess(username, Permissions.RW); + try { + arangoDB.grantDefaultDatabaseAccess(username, Permissions.RW); + } finally { + arangoDB.deleteUser(username); + } } @ParameterizedTest @@ -356,7 +380,11 @@ void updateUserDefaultDatabaseAccess(ArangoDB arangoDB) { void updateUserDefaultCollectionAccess(ArangoDB arangoDB) { String username = "user-" + UUID.randomUUID(); arangoDB.createUser(username, PW); - arangoDB.grantDefaultCollectionAccess(username, Permissions.RW); + try { + arangoDB.grantDefaultCollectionAccess(username, Permissions.RW); + } finally { + arangoDB.deleteUser(username); + } } @ParameterizedTest diff --git a/test-functional/src/test/java/com/arangodb/ArangoDatabaseAsyncTest.java b/test-functional/src/test/java/com/arangodb/ArangoDatabaseAsyncTest.java index bd6f45a2b..2ce7aafe7 100644 --- a/test-functional/src/test/java/com/arangodb/ArangoDatabaseAsyncTest.java +++ b/test-functional/src/test/java/com/arangodb/ArangoDatabaseAsyncTest.java @@ -478,31 +478,47 @@ void getCollectionsExcludeSystem(ArangoDatabaseAsync db) throws ExecutionExcepti void grantAccess(ArangoDBAsync arangoDB) throws ExecutionException, InterruptedException { String user = "user-" + rnd(); arangoDB.createUser(user, "1234", null).get(); - arangoDB.db(getTestDb()).grantAccess(user).get(); + try { + arangoDB.db(getTestDb()).grantAccess(user).get(); + } finally { + arangoDB.deleteUser(user).get(); + } } @ParameterizedTest @MethodSource("asyncArangos") - void grantAccessRW(ArangoDBAsync arangoDB) { + void grantAccessRW(ArangoDBAsync arangoDB) throws ExecutionException, InterruptedException { String user = "user-" + rnd(); - arangoDB.createUser(user, "1234", null); - arangoDB.db(getTestDb()).grantAccess(user, Permissions.RW); + arangoDB.createUser(user, "1234", null).get(); + try { + arangoDB.db(getTestDb()).grantAccess(user, Permissions.RW).get(); + } finally { + arangoDB.deleteUser(user).get(); + } } @ParameterizedTest @MethodSource("asyncArangos") - void grantAccessRO(ArangoDBAsync arangoDB) { + void grantAccessRO(ArangoDBAsync arangoDB) throws ExecutionException, InterruptedException { String user = "user-" + rnd(); - arangoDB.createUser(user, "1234", null); - arangoDB.db(getTestDb()).grantAccess(user, Permissions.RO); + arangoDB.createUser(user, "1234", null).get(); + try { + arangoDB.db(getTestDb()).grantAccess(user, Permissions.RO).get(); + } finally { + arangoDB.deleteUser(user).get(); + } } @ParameterizedTest @MethodSource("asyncArangos") - void grantAccessNONE(ArangoDBAsync arangoDB) { + void grantAccessNONE(ArangoDBAsync arangoDB) throws ExecutionException, InterruptedException { String user = "user-" + rnd(); - arangoDB.createUser(user, "1234", null); - arangoDB.db(getTestDb()).grantAccess(user, Permissions.NONE); + arangoDB.createUser(user, "1234", null).get(); + try { + arangoDB.db(getTestDb()).grantAccess(user, Permissions.NONE).get(); + } finally { + arangoDB.deleteUser(user).get(); + } } @ParameterizedTest @@ -515,10 +531,14 @@ void grantAccessUserNotFound(ArangoDatabaseAsync db) { @ParameterizedTest @MethodSource("asyncArangos") - void revokeAccess(ArangoDBAsync arangoDB) { + void revokeAccess(ArangoDBAsync arangoDB) throws ExecutionException, InterruptedException { String user = "user-" + rnd(); - arangoDB.createUser(user, "1234", null); - arangoDB.db(getTestDb()).revokeAccess(user); + arangoDB.createUser(user, "1234", null).get(); + try { + arangoDB.db(getTestDb()).revokeAccess(user).get(); + } finally { + arangoDB.deleteUser(user).get(); + } } @ParameterizedTest @@ -531,10 +551,14 @@ void revokeAccessUserNotFound(ArangoDatabaseAsync db) { @ParameterizedTest @MethodSource("asyncArangos") - void resetAccess(ArangoDBAsync arangoDB) { + void resetAccess(ArangoDBAsync arangoDB) throws ExecutionException, InterruptedException { String user = "user-" + rnd(); - arangoDB.createUser(user, "1234", null); - arangoDB.db(getTestDb()).resetAccess(user); + arangoDB.createUser(user, "1234", null).get(); + try { + arangoDB.db(getTestDb()).resetAccess(user).get(); + } finally { + arangoDB.deleteUser(user).get(); + } } @ParameterizedTest @@ -547,10 +571,14 @@ void resetAccessUserNotFound(ArangoDatabaseAsync db) { @ParameterizedTest @MethodSource("asyncArangos") - void grantDefaultCollectionAccess(ArangoDBAsync arangoDB) { + void grantDefaultCollectionAccess(ArangoDBAsync arangoDB) throws ExecutionException, InterruptedException { String user = "user-" + rnd(); - arangoDB.createUser(user, "1234"); - arangoDB.db(getTestDb()).grantDefaultCollectionAccess(user, Permissions.RW); + arangoDB.createUser(user, "1234").get(); + try { + arangoDB.db(getTestDb()).grantDefaultCollectionAccess(user, Permissions.RW).get(); + } finally { + arangoDB.deleteUser(user).get(); + } } @ParameterizedTest diff --git a/test-functional/src/test/java/com/arangodb/ArangoDatabaseTest.java b/test-functional/src/test/java/com/arangodb/ArangoDatabaseTest.java index ea487e07c..ecf11d67a 100644 --- a/test-functional/src/test/java/com/arangodb/ArangoDatabaseTest.java +++ b/test-functional/src/test/java/com/arangodb/ArangoDatabaseTest.java @@ -490,7 +490,11 @@ void getCollectionsExcludeSystem(ArangoDatabase db) { void grantAccess(ArangoDB arangoDB) { String user = "user-" + rnd(); arangoDB.createUser(user, "1234", null); - arangoDB.db(getTestDb()).grantAccess(user); + try { + arangoDB.db(getTestDb()).grantAccess(user); + } finally { + arangoDB.deleteUser(user); + } } @ParameterizedTest @@ -498,7 +502,11 @@ void grantAccess(ArangoDB arangoDB) { void grantAccessRW(ArangoDB arangoDB) { String user = "user-" + rnd(); arangoDB.createUser(user, "1234", null); - arangoDB.db(getTestDb()).grantAccess(user, Permissions.RW); + try { + arangoDB.db(getTestDb()).grantAccess(user, Permissions.RW); + } finally { + arangoDB.deleteUser(user); + } } @ParameterizedTest @@ -506,7 +514,11 @@ void grantAccessRW(ArangoDB arangoDB) { void grantAccessRO(ArangoDB arangoDB) { String user = "user-" + rnd(); arangoDB.createUser(user, "1234", null); - arangoDB.db(getTestDb()).grantAccess(user, Permissions.RO); + try { + arangoDB.db(getTestDb()).grantAccess(user, Permissions.RO); + } finally { + arangoDB.deleteUser(user); + } } @ParameterizedTest @@ -514,7 +526,11 @@ void grantAccessRO(ArangoDB arangoDB) { void grantAccessNONE(ArangoDB arangoDB) { String user = "user-" + rnd(); arangoDB.createUser(user, "1234", null); - arangoDB.db(getTestDb()).grantAccess(user, Permissions.NONE); + try { + arangoDB.db(getTestDb()).grantAccess(user, Permissions.NONE); + } finally { + arangoDB.deleteUser(user); + } } @ParameterizedTest @@ -530,7 +546,11 @@ void grantAccessUserNotFound(ArangoDatabase db) { void revokeAccess(ArangoDB arangoDB) { String user = "user-" + rnd(); arangoDB.createUser(user, "1234", null); - arangoDB.db(getTestDb()).revokeAccess(user); + try { + arangoDB.db(getTestDb()).revokeAccess(user); + } finally { + arangoDB.deleteUser(user); + } } @ParameterizedTest @@ -546,7 +566,11 @@ void revokeAccessUserNotFound(ArangoDatabase db) { void resetAccess(ArangoDB arangoDB) { String user = "user-" + rnd(); arangoDB.createUser(user, "1234", null); - arangoDB.db(getTestDb()).resetAccess(user); + try { + arangoDB.db(getTestDb()).resetAccess(user); + } finally { + arangoDB.deleteUser(user); + } } @ParameterizedTest @@ -562,7 +586,11 @@ void resetAccessUserNotFound(ArangoDatabase db) { void grantDefaultCollectionAccess(ArangoDB arangoDB) { String user = "user-" + rnd(); arangoDB.createUser(user, "1234"); - arangoDB.db(getTestDb()).grantDefaultCollectionAccess(user, Permissions.RW); + try { + arangoDB.db(getTestDb()).grantDefaultCollectionAccess(user, Permissions.RW); + } finally { + arangoDB.deleteUser(user); + } } @ParameterizedTest From e245aca055f6663181782bbc6bc4b3b491e89a0d Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Wed, 16 Jul 2025 13:37:24 +0200 Subject: [PATCH 6/8] fix async test --- .../src/test/java/com/arangodb/ArangoDBAsyncTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java b/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java index f1b390104..02ac162a1 100644 --- a/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java +++ b/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java @@ -245,10 +245,10 @@ void createUser(ArangoDBAsync arangoDB) throws ExecutionException, InterruptedEx @ParameterizedTest @MethodSource("asyncArangos") - void deleteUser(ArangoDBAsync arangoDB) { + void deleteUser(ArangoDBAsync arangoDB) throws ExecutionException, InterruptedException { String username = "user-" + UUID.randomUUID(); - arangoDB.createUser(username, PW, null); - arangoDB.deleteUser(username); + arangoDB.createUser(username, PW, null).get(); + arangoDB.deleteUser(username).get(); } @ParameterizedTest From 15dbe5265e5975cf39cf94f6f374a7ed89ff3b5e Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Wed, 16 Jul 2025 14:10:55 +0200 Subject: [PATCH 7/8] fix async test --- .../src/test/java/com/arangodb/ArangoDBAsyncTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java b/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java index 02ac162a1..47ac152e8 100644 --- a/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java +++ b/test-functional/src/test/java/com/arangodb/ArangoDBAsyncTest.java @@ -312,7 +312,7 @@ void updateUserNoOptions(ArangoDBAsync arangoDB) throws ExecutionException, Inte String username = "user-" + UUID.randomUUID(); arangoDB.createUser(username, PW, null).get(); try { - arangoDB.updateUser(username, null); + arangoDB.updateUser(username, null).get(); } finally { arangoDB.deleteUser(username).get(); } From 0b113dde6c992ea545a524e3423b501cf5104971 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Wed, 16 Jul 2025 15:56:58 +0200 Subject: [PATCH 8/8] fix jwt tests --- .../src/test/java/com/arangodb/JwtAuthAsyncTest.java | 6 ++++-- test-functional/src/test/java/com/arangodb/JwtAuthTest.java | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/test-functional/src/test/java/com/arangodb/JwtAuthAsyncTest.java b/test-functional/src/test/java/com/arangodb/JwtAuthAsyncTest.java index 895dc8687..f4c63d7d0 100644 --- a/test-functional/src/test/java/com/arangodb/JwtAuthAsyncTest.java +++ b/test-functional/src/test/java/com/arangodb/JwtAuthAsyncTest.java @@ -1,5 +1,6 @@ package com.arangodb; +import com.arangodb.config.ArangoConfigProperties; import com.arangodb.config.ConfigUtils; import com.arangodb.internal.ArangoRequestParam; import org.junit.jupiter.api.BeforeAll; @@ -32,9 +33,10 @@ static void init() { } private static String getJwt(ArangoDB arangoDB) { + ArangoConfigProperties conf = ConfigUtils.loadConfig(); Map reqBody = new HashMap<>(); - reqBody.put("username", "root"); - reqBody.put("password", "test"); + reqBody.put("username", conf.getUser().orElse("root")); + reqBody.put("password", conf.getPassword().orElse(null)); Request req = Request.builder() .db(ArangoRequestParam.SYSTEM) diff --git a/test-functional/src/test/java/com/arangodb/JwtAuthTest.java b/test-functional/src/test/java/com/arangodb/JwtAuthTest.java index 1f9185430..b743db4a1 100644 --- a/test-functional/src/test/java/com/arangodb/JwtAuthTest.java +++ b/test-functional/src/test/java/com/arangodb/JwtAuthTest.java @@ -1,5 +1,6 @@ package com.arangodb; +import com.arangodb.config.ArangoConfigProperties; import com.arangodb.config.ConfigUtils; import com.arangodb.internal.ArangoRequestParam; import org.junit.jupiter.api.BeforeAll; @@ -31,9 +32,10 @@ static void init() { } private static String getJwt(ArangoDB arangoDB) { + ArangoConfigProperties conf = ConfigUtils.loadConfig(); Map reqBody = new HashMap<>(); - reqBody.put("username", "root"); - reqBody.put("password", "test"); + reqBody.put("username", conf.getUser().orElse("root")); + reqBody.put("password", conf.getPassword().orElse(null)); Request req = Request.builder() .db(ArangoRequestParam.SYSTEM)